; PlatformIO Project Configuration File
; https://docs.platformio.org/page/projectconf.html

[platformio]
default_envs = tbeam
;default_envs = tbeam0.7
;default_envs = heltec-v1
;default_envs = heltec-v2.0
;default_envs = heltec-v2.1
;default_envs = tlora-v1
;default_envs = tlora-v1
;default_envs = tlora_v1_3
;default_envs = tlora-v2
;default_envs = tlora-v2-1-1.6
;default_envs = lora-relay-v1 # nrf board
;default_envs = t-echo
;default_envs = nrf52840dk-geeksville
;default_envs = native # lora-relay-v1 # nrf52840dk-geeksville # linux # or if you'd like to change the default to something like lora-relay-v1 put that here
;default_envs = rak4631_5005
;default_envs = rak4631_5005_eink
;default_envs = rak4631_19003
;default_envs = nano-g1
;default_envs = pca10059_diy_eink
;default_envs = meshtastic-diy-v1
;default_envs = meshtastic-diy-v1.1

extra_configs = variants/*/platformio.ini

[env]
extra_scripts = bin/platformio-custom.py 

; note: we add src to our include search path so that lmic_project_config can override
; note: TINYGPS_OPTION_NO_CUSTOM_FIELDS is VERY important.  We don't use custom fields and somewhere in that pile
; of code is a heap corruption bug!
; FIXME: fix lib/BluetoothOTA dependency back on src/ so we can remove -Isrc
build_flags = -Wno-missing-field-initializers
  -Wno-format 
  -Isrc -Isrc/mesh -Isrc/gps -Isrc/buzz -Wl,-Map,.pio/build/output.map 
  -DUSE_THREAD_NAMES
  -DTINYGPS_OPTION_NO_CUSTOM_FIELDS

monitor_speed = 921600

lib_deps =
  https://github.com/meshtastic/esp8266-oled-ssd1306.git#53580644255b48ebb7a737343c6b4e71c7e11cf2 ; ESP8266_SSD1306 
  mathertel/OneButton@^2.0.3 ; OneButton library for non-blocking button debounce
  1202 ; CRC32, explicitly needed because dependency is missing in the ble ota update lib
  https://github.com/meshtastic/arduino-fsm.git
  https://github.com/meshtastic/SparkFun_Ublox_Arduino_Library.git#31015a55e630a2df77d9d714669c621a5bf355ad
  https://github.com/meshtastic/RadioLib.git#5582ac30578ff3f53f20630a00b2a8a4b8f92c74
  https://github.com/meshtastic/TinyGPSPlus.git
  https://github.com/meshtastic/AXP202X_Library.git#8404abb6d4b486748636bc6ad72d2a47baaf5460
  Wire ; explicitly needed here because the AXP202 library forgets to add it
  SPI
  https://github.com/geeksville/ArduinoThread.git#72921ac222eed6f526ba1682023cee290d9aa1b3
  PubSubClient
  nanopb/Nanopb@^0.4.6
  meshtastic/json11@^1.0.2

; Used for the code analysis in PIO Home / Inspect
check_tool = cppcheck
check_skip_packages = yes

; Common settings for conventional (non Portduino) Arduino targets
[arduino_base]
framework = arduino
lib_deps =
  ${env.lib_deps}
build_flags = ${env.build_flags} -Os 
# -DRADIOLIB_GODMODE
src_filter = ${env.src_filter} -<portduino/>

; Common libs for environmental measurements (not included in native / portduino)
[environmental]
lib_deps =
  adafruit/DHT sensor library@^1.4.1
  adafruit/Adafruit Unified Sensor@^1.1.4
  paulstoffregen/OneWire@^2.3.5
  robtillaart/DS18B20@^0.1.11
  adafruit/Adafruit BME280 Library@^2.2.2
  adafruit/Adafruit BME680 Library@^2.0.1
  adafruit/Adafruit MCP9808 Library@^2.0.0

; Common settings for ESP targes, mixin with extends = esp32_base
[esp32_base]
extends = arduino_base
platform = espressif32
src_filter = 
  ${arduino_base.src_filter} -<nrf52/>
upload_speed = 921600
debug_init_break = tbreak setup
# Remove -DMYNEWT_VAL_BLE_HS_LOG_LVL=LOG_LEVEL_CRITICAL for low level BLE logging.
# See library directory for BLE logging possible values: .pio/libdeps/tbeam/NimBLE-Arduino/src/log_common/log_common.h
# This overrides the BLE logging default of LOG_LEVEL_INFO (1) from: .pio/libdeps/tbeam/NimBLE-Arduino/src/esp_nimble_cfg.h
# -DUSE_NEW_ESP32_BLUETOOTH will enable the new NimBLE C++ api
build_flags =
  ${arduino_base.build_flags} -Wall -Wextra -Isrc/esp32 -Isrc/esp32-mfix-esp32-psram-cache-issue -lnimble -std=c++11 
  -DLOG_LOCAL_LEVEL=ESP_LOG_DEBUG -DCORE_DEBUG_LEVEL=ARDUHAL_LOG_LEVEL_DEBUG -DMYNEWT_VAL_BLE_HS_LOG_LVL=LOG_LEVEL_CRITICAL
  -DAXP_DEBUG_PORT=Serial -DUSE_NEW_ESP32_BLUETOOTH
lib_deps =
  ${arduino_base.lib_deps}
  ${environmental.lib_deps}
  https://github.com/meshtastic/esp32_https_server.git
  h2zero/NimBLE-Arduino@1.3.7
  tobozo/ESP32-targz@^1.1.4
  arduino-libraries/NTPClient@^3.1.0
  lorol/LittleFS_esp32@^1.0.6
lib_ignore = 
  segger_rtt
  ESP32 BLE Arduino
platform_packages =
    framework-arduinoespressif32@https://github.com/meshtastic/arduino-esp32.git#4cde0f5d412d2695184f32e8a47e9bea57b45276
; leave this commented out to avoid breaking Windows

;upload_port = /dev/ttyUSB0
;monitor_port = /dev/ttyUSB0

; customize the partition table
; http://docs.platformio.org/en/latest/platforms/espressif32.html#partition-tables
board_build.partitions = partition-table.csv

[nrf52_base]
; Instead of the standard nordicnrf52 platform, we use our fork which has our added variant files
; platform = nordicnrf52 ;pending https://github.com/platformio/builder-framework-arduino-nrf5/pull/7
platform = https://github.com/meshtastic/platform-nordicnrf52.git#merge

extends = arduino_base
build_type = debug ; I'm debugging with ICE a lot now
; note: liboberon provides the AES256 implementation for NRF52 (though not using the hardware acceleration of the NRF52840 - FIXME)
build_flags = 
  ${arduino_base.build_flags} -Wno-unused-variable 
  -Isrc/nrf52 
  -Isdk-nrfxlib/crypto/nrf_oberon/include -Lsdk-nrfxlib/crypto/nrf_oberon/lib/cortex-m4/hard-float/ -lliboberon_3.0.7 
src_filter = 
  ${arduino_base.src_filter} -<esp32/> -<nimble/> -<mesh/wifi/> -<mesh/http/> -<modules/esp32> -<mqtt/>
lib_ignore =
  BluetoothOTA

[nrf52840_base]
extends = nrf52_base
build_flags = ${nrf52_base.build_flags} 
lib_deps =
  ${arduino_base.lib_deps}
  ${environmental.lib_deps}
  Adafruit nRFCrypto

; Note: By default no lora device is created for this build - it uses a simulated interface
[env:nrf52840dk]
extends = nrf52840_base
board = nrf52840_dk

; Note: By default no lora device is created for this build - it uses a simulated interface
[env:feather_nrf52832]
extends = nrf52_base
board = adafruit_feather_nrf52832

[env:rak815]
extends = nrf52_base
board = rak815
debug_tool = jlink
upload_protocol = jlink
monitor_speed = 115200