; 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]
src_dir = .
include_dir = .

[env]
framework = arduino
board_build.filesystem = littlefs
upload_speed = 921600
monitor_speed = 115200

extra_scripts =
    pre:../scripts/auto_firmware_version.py
    pre:../scripts/convertHtml.py
    pre:../scripts/applyPatches.py
    pre:../scripts/reduceGxEPD2.py
    post:../scripts/add_littlefs_binary.py

lib_deps =
    https://github.com/esphome/ESPAsyncWebServer @ ^3.2.2
    https://github.com/nRF24/RF24.git#v1.4.8
    paulstoffregen/Time @ ^1.6.1
    https://github.com/bertmelis/espMqttClient#v1.7.0
    bblanchon/ArduinoJson @ ^6.21.3
    https://github.com/JChristensen/Timezone @ ^1.2.4
    olikraus/U8g2 @ ^2.35.9
    https://github.com/zinggjm/GxEPD2#1.5.3

build_flags =
    -std=c++17
    -std=gnu++17
build_unflags =
    -std=gnu++11


[env:esp8266-minimal]
platform = espressif8266
board = esp12e
board_build.f_cpu = 80000000L
lib_deps =
    ${env.lib_deps}
    https://github.com/me-no-dev/ESPAsyncUDP
build_flags = ${env.build_flags}
    -DEMC_MIN_FREE_MEMORY=4096
    ;-Wl,-Map,output.map
monitor_filters =
    esp8266_exception_decoder

[env:esp8266]
platform = espressif8266
board = esp12e
board_build.f_cpu = 80000000L
lib_deps = ${env:esp8266-minimal.lib_deps}
    https://github.com/me-no-dev/ESPAsyncUDP
build_flags = ${env:esp8266-minimal.build_flags}
    -DENABLE_MQTT
monitor_filters =
    esp8266_exception_decoder

[env:esp8266-de]
platform = espressif8266
board = esp12e
board_build.f_cpu = 80000000L
lib_deps = ${env:esp8266.lib_deps}
build_flags = ${env:esp8266.build_flags}
    -DLANG_DE
monitor_filters =
    esp8266_exception_decoder

[env:esp8266-all]
platform = espressif8266
board = esp12e
board_build.f_cpu = 80000000L
lib_deps = ${env:esp8266.lib_deps}
build_flags = ${env:esp8266.build_flags}
    -DPLUGIN_DISPLAY
    -DENABLE_HISTORY
monitor_filters =
    esp8266_exception_decoder

[env:esp8266-all-de]
platform = espressif8266
board = esp12e
board_build.f_cpu = 80000000L
lib_deps = ${env:esp8266.lib_deps}
build_flags = ${env:esp8266-all.build_flags}
    -DLANG_DE
monitor_filters =
    esp8266_exception_decoder

[env:esp8266-prometheus]
platform = espressif8266
board = esp12e
board_build.f_cpu = 80000000L
lib_deps = ${env:esp8266.lib_deps}
build_flags = ${env:esp8266-all.build_flags}
    -DENABLE_PROMETHEUS_EP
monitor_filters =
    esp8266_exception_decoder

[env:esp8266-prometheus-de]
platform = espressif8266
board = esp12e
board_build.f_cpu = 80000000L
lib_deps = ${env:esp8266.lib_deps}
build_flags = ${env:esp8266-prometheus.build_flags}
    -DLANG_DE
monitor_filters =
    esp8266_exception_decoder



[env:esp8285]
platform = espressif8266
board = esp8285
board_build.ldscript = eagle.flash.1m64.ld
board_build.f_cpu = 80000000L
lib_deps = ${env:esp8266.lib_deps}
build_flags = ${env.build_flags}
    -DEMC_MIN_FREE_MEMORY=4096
    -DENABLE_MQTT
    -DPLUGIN_DISPLAY
    -DENABLE_HISTORY
monitor_filters =
    esp8266_exception_decoder

[env:esp8285-de]
platform = espressif8266
board = esp8285
board_build.ldscript = eagle.flash.1m64.ld
board_build.f_cpu = 80000000L
lib_deps = ${env:esp8266.lib_deps}
build_flags = ${env.build_flags}
    -DEMC_MIN_FREE_MEMORY=4096
    -DLANG_DE
    -DENABLE_MQTT
    -DPLUGIN_DISPLAY
    -DENABLE_HISTORY
monitor_filters =
    esp8266_exception_decoder

[env:esp32-wroom32-minimal]
platform = espressif32@6.6.0
board = lolin_d32
build_flags = ${env.build_flags}
    -DSPI_HAL
monitor_filters =
    esp32_exception_decoder

[env:esp32-wroom32]
platform = espressif32@6.6.0
board = lolin_d32
build_flags = ${env:esp32-wroom32-minimal.build_flags}
    -DUSE_HSPI_FOR_EPD
    -DENABLE_MQTT
    -DPLUGIN_DISPLAY
    -DENABLE_HISTORY
monitor_filters =
    esp32_exception_decoder

[env:esp32-wroom32-de]
platform = espressif32@6.6.0
board = lolin_d32
build_flags = ${env:esp32-wroom32.build_flags}
    -DLANG_DE
monitor_filters =
    esp32_exception_decoder

[env:esp32-wroom32-prometheus]
platform = espressif32@6.6.0
board = lolin_d32
build_flags = ${env:esp32-wroom32.build_flags}
    -DENABLE_PROMETHEUS_EP
monitor_filters =
    esp32_exception_decoder

[env:esp32-wroom32-prometheus-de]
platform = espressif32@6.6.0
board = lolin_d32
build_flags = ${env:esp32-wroom32-prometheus.build_flags}
    -DLANG_DE
monitor_filters =
    esp32_exception_decoder

[env:esp32-wroom32-ethernet]
platform = espressif32
board = lolin_d32
build_flags = ${env:esp32-wroom32.build_flags}
    -DETHERNET
    -DDEF_ETH_CS_PIN=15
    -DDEF_ETH_SCK_PIN=14
    -DDEF_ETH_MISO_PIN=12
    -DDEF_ETH_MOSI_PIN=13
    -DDEF_ETH_IRQ_PIN=4
    -DDEF_ETH_RST_PIN=255
    -DDEF_NRF_CS_PIN=5
    -DDEF_NRF_CE_PIN=17
    -DDEF_NRF_IRQ_PIN=16
    -DDEF_NRF_MISO_PIN=19
    -DDEF_NRF_MOSI_PIN=23
    -DDEF_NRF_SCLK_PIN=18
monitor_filters =
    esp32_exception_decoder

[env:esp32-wroom32-ethernet-de]
platform = espressif32
board = lolin_d32
build_flags = ${env:esp32-wroom32-ethernet.build_flags}
    -DLANG_DE
monitor_filters =
    esp32_exception_decoder

[env:esp32-s2-mini]
platform = espressif32@6.6.0
board = lolin_s2_mini
build_flags = ${env.build_flags}
    -DUSE_HSPI_FOR_EPD
    -DSPI_HAL
    -DENABLE_MQTT
    -DPLUGIN_DISPLAY
    -DENABLE_HISTORY
    -DDEF_NRF_CS_PIN=12
    -DDEF_NRF_CE_PIN=3
    -DDEF_NRF_IRQ_PIN=5
    -DDEF_NRF_MISO_PIN=9
    -DDEF_NRF_MOSI_PIN=11
    -DDEF_NRF_SCLK_PIN=7
    -DDEF_CMT_CSB=16
    -DDEF_CMT_FCSB=18
    -DDEF_CMT_IRQ=33
    -DDEF_CMT_SDIO=35
    -DDEF_CMT_SCLK=37
monitor_filters =
    esp32_exception_decoder

[env:esp32-s2-mini-de]
platform = espressif32@6.6.0
board = lolin_s2_mini
build_flags = ${env:esp32-s2-mini.build_flags}
    -DLANG_DE
monitor_filters =
    esp32_exception_decoder

[env:esp32-c3-mini]
platform = espressif32@6.6.0
board = lolin_c3_mini
build_flags = ${env.build_flags}
    -DUSE_HSPI_FOR_EPD
    -DSPI_HAL
    -DENABLE_MQTT
    -DPLUGIN_DISPLAY
    -DENABLE_HISTORY
    -DDEF_NRF_CS_PIN=5
    -DDEF_NRF_CE_PIN=0
    -DDEF_NRF_IRQ_PIN=1
    -DDEF_NRF_MISO_PIN=3
    -DDEF_NRF_MOSI_PIN=4
    -DDEF_NRF_SCLK_PIN=2
    -DDEF_CMT_CSB=255
    -DDEF_CMT_FCSB=255
    -DDEF_CMT_IRQ=255
    -DDEF_CMT_SDIO=255
    -DDEF_CMT_SCLK=255
monitor_filters =
    esp32_exception_decoder

[env:esp32-c3-mini-de]
platform = espressif32@6.6.0
board = lolin_c3_mini
build_flags = ${env:esp32-c3-mini.build_flags}
    -DLANG_DE
monitor_filters =
    esp32_exception_decoder

[env:opendtufusion-minimal]
platform = espressif32@6.6.0
board = esp32-s3-devkitc-1
upload_protocol = esp-builtin
build_flags = ${env.build_flags}
    -DSPI_HAL
    -DDEF_NRF_CS_PIN=37
    -DDEF_NRF_CE_PIN=38
    -DDEF_NRF_IRQ_PIN=47
    -DDEF_NRF_MISO_PIN=48
    -DDEF_NRF_MOSI_PIN=35
    -DDEF_NRF_SCLK_PIN=36
    -DDEF_CMT_CSB=4
    -DDEF_CMT_FCSB=21
    -DDEF_CMT_IRQ=8
    -DDEF_CMT_SDIO=5
    -DDEF_CMT_SCLK=6
    -DDEF_LED0=18
    -DDEF_LED1=17
    -DLED_ACTIVE_HIGH
    -DARDUINO_USB_MODE=1
    #-DARDUINO_USB_CDC_ON_BOOT=1
monitor_filters =
    esp32_exception_decoder, colorize

[env:opendtufusion]
platform = espressif32@6.6.0
board = esp32-s3-devkitc-1
upload_protocol = esp-builtin
build_flags = ${env:opendtufusion-minimal.build_flags}
    -DENABLE_MQTT
    -DPLUGIN_DISPLAY
    -DENABLE_HISTORY
monitor_filters =
    esp32_exception_decoder, colorize

[env:opendtufusion-de]
platform = espressif32@6.6.0
board = esp32-s3-devkitc-1
upload_protocol = esp-builtin
build_flags = ${env:opendtufusion.build_flags}
    -DLANG_DE
monitor_filters =
    esp32_exception_decoder, colorize

[env:opendtufusion-ethernet]
platform = espressif32@6.6.0
board = esp32-s3-devkitc-1
upload_protocol = esp-builtin
build_flags = ${env:opendtufusion-minimal.build_flags}
    -DETHERNET
    -DENABLE_MQTT
    -DPLUGIN_DISPLAY
    -DENABLE_HISTORY
    -DDEF_ETH_CS_PIN=42
    -DDEF_ETH_SCK_PIN=39
    -DDEF_ETH_MISO_PIN=41
    -DDEF_ETH_MOSI_PIN=40
    -DDEF_ETH_IRQ_PIN=44
    -DDEF_ETH_RST_PIN=43
    -DDEF_ETH_ENABLED
monitor_filters =
    esp32_exception_decoder, colorize

[env:opendtufusion-ethernet-de]
platform = espressif32@6.6.0
board = esp32-s3-devkitc-1
upload_protocol = esp-builtin
build_flags = ${env:opendtufusion-ethernet.build_flags}
    -DLANG_DE
monitor_filters =
    esp32_exception_decoder, colorize