; PlatformIO Project Configuration File
;
;   Build options: build flags, source filter
;   Upload options: custom upload port, speed and extra flags
;   Library options: dependencies, extra library storages
;   Advanced options: extra scripting
;
; Please visit documentation for the other options and examples
; https://docs.platformio.org/page/projectconf.html

[platformio]
extra_configs =
	variants/*/platformio.ini

[arduino_base]
framework = arduino
monitor_speed = 115200
lib_deps =
  SPI
  Wire
  jgromes/RadioLib @ ^7.3.0
  rweather/Crypto @ ^0.4.0
  adafruit/RTClib @ ^2.1.3
  melopero/Melopero RV3028 @ ^1.1.0
  electroniccats/CayenneLPP @ 1.6.1
build_flags = -w -DNDEBUG -DRADIOLIB_STATIC_ONLY=1 -DRADIOLIB_GODMODE=1
  -D LORA_FREQ=869.618
  -D LORA_BW=62.5
  -D LORA_SF=8
  -D ENABLE_ADVERT_ON_BOOT=1
  -D ENABLE_PRIVATE_KEY_IMPORT=1   ; NOTE: comment these out for more secure firmware
  -D ENABLE_PRIVATE_KEY_EXPORT=1
  -D RADIOLIB_EXCLUDE_CC1101=1
  -D RADIOLIB_EXCLUDE_RF69=1
  -D RADIOLIB_EXCLUDE_SX1231=1
  -D RADIOLIB_EXCLUDE_SI443X=1
  -D RADIOLIB_EXCLUDE_RFM2X=1
  -D RADIOLIB_EXCLUDE_SX128X=1
  -D RADIOLIB_EXCLUDE_AFSK=1
  -D RADIOLIB_EXCLUDE_AX25=1
  -D RADIOLIB_EXCLUDE_HELLSCHREIBER=1
  -D RADIOLIB_EXCLUDE_MORSE=1
  -D RADIOLIB_EXCLUDE_APRS=1
  -D RADIOLIB_EXCLUDE_BELL=1
  -D RADIOLIB_EXCLUDE_RTTY=1
  -D RADIOLIB_EXCLUDE_SSTV=1
build_src_filter =
  +<*.cpp>
  +<helpers/*.cpp>
  +<helpers/radiolib/*.cpp>
  +<helpers/bridges/BridgeBase.cpp>
  +<helpers/ui/MomentaryButton.cpp>

; ----------------- ESP32 ---------------------

[esp32_base]
extends = arduino_base
platform = platformio/espressif32@6.11.0
monitor_filters = esp32_exception_decoder
extra_scripts = merge-bin.py
build_flags = ${arduino_base.build_flags}
  -D ESP32_PLATFORM
;  -D ESP32_CPU_FREQ=80          ; change it to your need
build_src_filter = ${arduino_base.build_src_filter}

[esp32_ota]
lib_deps =
  me-no-dev/ESPAsyncWebServer @ ^3.6.0
  file://arch/esp32/AsyncElegantOTA

; esp32c6 uses arduino framework 3.x
; WARNING: experimental. May not work as stable as other platforms.
[esp32c6_base]
extends = esp32_base
platform = https://github.com/pioarduino/platform-espressif32/releases/download/53.03.13-1/platform-espressif32.zip

; ----------------- NRF52 ---------------------

[nrf52_base]
extends = arduino_base
platform = nordicnrf52
platform_packages =
  framework-arduinoadafruitnrf52 @ 1.10700.0
extra_scripts =
  create-uf2.py
  arch/nrf52/extra_scripts/patch_bluefruit.py
build_flags = ${arduino_base.build_flags}
  -D NRF52_PLATFORM
  -D LFS_NO_ASSERT=1
  -D EXTRAFS=1
lib_deps =
  ${arduino_base.lib_deps}
  https://github.com/oltaco/CustomLFS @ 0.2.1
; ----------------- RP2040 ---------------------

[rp2040_base]
extends = arduino_base
upload_protocol = picotool
board_build.core = earlephilhower
platform = https://github.com/maxgerhardt/platform-raspberrypi.git
build_flags = ${arduino_base.build_flags}
  -D RP2040_PLATFORM

; ----------------- STM32 ----------------------

[stm32_base]
extends = arduino_base
platform = platformio/ststm32@19.1.0
platform_packages = platformio/framework-arduinoststm32@https://github.com/stm32duino/Arduino_Core_STM32/archive/2.10.1.zip
extra_scripts = post:arch/stm32/build_hex.py
build_flags = ${arduino_base.build_flags}
  -D STM32_PLATFORM
  -I src/helpers/stm32
build_src_filter = ${arduino_base.build_src_filter}
  +<helpers/stm32>
lib_deps = ${arduino_base.lib_deps}
  file://arch/stm32/Adafruit_LittleFS_stm32
  adafruit/Adafruit BusIO @ 1.17.2

[sensor_base]
build_flags =
  -D ENV_INCLUDE_GPS=1
  -D ENV_INCLUDE_AHTX0=1
  -D ENV_INCLUDE_BME280=1
  -D ENV_INCLUDE_BMP280=1
  -D ENV_INCLUDE_SHTC3=1
  -D ENV_INCLUDE_SHT4X=1
  -D ENV_INCLUDE_LPS22HB=1
  -D ENV_INCLUDE_INA3221=1
  -D ENV_INCLUDE_INA219=1
  -D ENV_INCLUDE_INA226=1
  -D ENV_INCLUDE_INA260=1
  -D ENV_INCLUDE_MLX90614=1
  -D ENV_INCLUDE_VL53L0X=1
  -D ENV_INCLUDE_BME680=1
  -D ENV_INCLUDE_BMP085=1
lib_deps =
  adafruit/Adafruit INA3221 Library @ ^1.0.1
  adafruit/Adafruit INA219 @ ^1.2.3
  robtillaart/INA226 @ ^0.6.4
  adafruit/Adafruit INA260 Library @ ^1.5.3
  adafruit/Adafruit AHTX0 @ ^2.0.5
  adafruit/Adafruit BME280 Library @ ^2.3.0
  adafruit/Adafruit BMP280 Library @ ^2.6.8
  adafruit/Adafruit SHTC3 Library @ ^1.0.1
  sensirion/Sensirion I2C SHT4x @ ^1.1.2
  arduino-libraries/Arduino_LPS22HB @ ^1.0.2
  adafruit/Adafruit MLX90614 Library @ ^2.1.5
  adafruit/Adafruit_VL53L0X @ ^1.2.4
  stevemarple/MicroNMEA @ ^2.0.6
  adafruit/Adafruit BME680 Library @ ^2.0.4
  adafruit/Adafruit BMP085 Library @ ^1.2.4
