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

[platformio]
src_dir = ./wled00
data_dir = ./wled00/data
;lib_extra_dirs = ./wled00/src
lib_dir = ./wled00/src
; Please uncomment one of the 5 lines below to select your board
default_envs = nodemcuv2
; default_envs = esp01
; default_envs = esp01_1m
; default_envs = esp07
; default_envs = d1_mini
; default_envs = esp32dev
; default_envs = esp8285_4CH_MagicHome
; default_envs = esp8285_4CH_H801
; default_envs = esp8285_5CH_H801

[common]
framework = arduino
monitor_speed = 115200
board_build.flash_mode = dout
upload_speed = 115200
upload_speed_fast = 921600
build_flags =
  -w ; supresses all C/C++ warnings
  ; -D VERSION=0.8.5
  ; -D DEBUG
  #build_flags for the IRremoteESP8266 library (enabled decoders have to appear here)
  -D _IR_ENABLE_DEFAULT_=false 
  -D DECODE_HASH=true 
  -D DECODE_NEC=true
  -D DECODE_SONY=true 
  -D DECODE_SAMSUNG=true
  -D DECODE_LG=true

# TODO replace libs in /lib with managed libs in here if possible.
# If they are not changed it's just a matter of setting the correct version and change the import statement
lib_deps_external =
  #Blynk@0.5.4(changed)
  #E131@1.0.0(changed)
  FastLED@3.3.2
  NeoPixelBus@2.5.6
  ESPAsyncTCP@1.2.0
  ESPAsyncUDP@697c75a025
  AsyncTCP@1.0.3
  Esp Async WebServer@1.2.0
  #ArduinoJson@5.13.5
  #IRremoteESP8266@2.7.2
  https://github.com/crankyoldgit/IRremoteESP8266.git
  #Time@1.5
  #Timezone@1.2.1
  #For use SSD1306 OLED display uncomment following
  #U8g2@~2.27.2
  #For Dallas sensor uncomment following 2 lines
  #DallasTemperature@~3.8.0
  #OneWire@~2.3.5
[common:esp8266]
# ------------------------------------------------------------------------------
# PLATFORM:
#   !! DO NOT confuse platformio's ESP8266 development platform with Arduino core for ESP8266
#   We use Arduino Core 2.5.0 (platformIO 2.0.4) as default
#
#   arduino core 2.3.0 = platformIO 1.5.0
#   arduino core 2.4.0 = platformIO 1.6.0
#   arduino core 2.4.1 = platformIO 1.7.3
#   arduino core 2.4.2 = platformIO 1.8.0
#   arduino core 2.5.0 = platformIO 2.0.4
#   arduino core stage = platformIO feature#stage
# ------------------------------------------------------------------------------
arduino_core_2_3_0 = espressif8266@1.5.0
arduino_core_2_4_0 = espressif8266@1.6.0
arduino_core_2_4_1 = espressif8266@1.7.3
arduino_core_2_4_2 = espressif8266@1.8.0
arduino_core_2_5_0 = espressif8266@2.0.4
arduino_core_2_5_2 = espressif8266@2.2.3
arduino_core_2_6_1 = espressif8266@2.3.0
arduino_core_2_6_2 = espressif8266@2.3.1
arduino_core_2_6_3 = espressif8266@2.3.3
arduino_core_stage = https://github.com/platformio/platform-espressif8266.git#feature/stage
platform = ${common:esp8266.arduino_core_2_6_3}
build_flags =
  -D ESP8266
  -D PIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH
  -Wl,-Teagle.flash.4m1m.ld  ;;;; Required for core > v2.5.0 or staging version 4MB Flash 3MB SPIFFs
lib_ignore = AsyncTCP

[common:esp8266_1M]
platform = espressif8266@1.8.0
build_flags =
  -D PIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH_LOW_FLASH
  -Wl,-Teagle.flash.1m0.ld  ;;;; Compile with no SPIFFS to leave space for OTA
  ; -D WLED_DISABLE_MOBILE_UI
  ; -D WLED_DISABLE_OTA
  ; -D WLED_DISABLE_ALEXA
  -D WLED_DISABLE_BLYNK
  -D WLED_DISABLE_CRONIXIE
  ; -D WLED_DISABLE_HUESYNC
  ; -D WLED_DISABLE_INFRARED
lib_ignore = ${common:esp8266.lib_ignore}

[common:esp8266_512k]
platform = espressif8266@1.8.0
build_flags =
  -D PIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH_LOW_FLASH
  -Wl,-Teagle.flash.512k0.ld  ;;;; Compile with no SPIFFS
  ; -D WLED_DISABLE_MOBILE_UI
  -D WLED_DISABLE_OTA
  ; -D WLED_DISABLE_ALEXA
  -D WLED_DISABLE_BLYNK
  -D WLED_DISABLE_CRONIXIE
  -D WLED_DISABLE_HUESYNC
  ; -D WLED_DISABLE_INFRARED
lib_ignore = ${common:esp8266.lib_ignore}

[common:esp32]
platform = espressif32@1.11.2
build_flags =
  -D PIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH
  -D ARDUINO_ARCH_ESP32
lib_ignore = 
  ESPAsyncTCP
  ESPAsyncUDP

# see: http://docs.platformio.org/en/latest/platforms/espressif8266.html
[env:nodemcuv2]
board = nodemcuv2
platform = ${common:esp8266.platform}
monitor_speed = ${common.monitor_speed}
upload_speed = ${common.upload_speed}
framework = ${common.framework}
build_flags =
  ${common.build_flags}
  ${common:esp8266.build_flags}
lib_deps =
  ${common.lib_deps_external}
lib_compat_mode = strict
lib_ignore = ${common:esp8266.lib_ignore}

[env:d1_mini]
board = d1_mini
platform = ${common:esp8266.platform}
monitor_speed = ${common.monitor_speed}
upload_speed = ${common.upload_speed}
framework = ${common.framework}
build_flags =
  ${common.build_flags}
  ${common:esp8266.build_flags}
lib_deps =
  ${common.lib_deps_external}
lib_compat_mode = strict
lib_ignore = ${common:esp8266.lib_ignore}

[env:esp01_1m]
board = esp01_1m
platform = ${common:esp8266_1M.platform}
monitor_speed = ${common.monitor_speed}
upload_speed = ${common.upload_speed}
framework = ${common.framework}
build_flags =
  ${common.build_flags}
  ${common:esp8266_1M.build_flags}
  # disable IR because there is no pin for it
  -D WLED_DISABLE_INFRARED
lib_deps =
  ${common.lib_deps_external}
lib_compat_mode = strict
lib_ignore = ${common:esp8266.lib_ignore}

[env:esp01]
board = esp01
platform = ${common:esp8266_512k.platform}
monitor_speed = ${common.monitor_speed}
upload_speed = ${common.upload_speed}
framework = ${common.framework}
build_flags =
  ${common.build_flags}
  ${common:esp8266_512k.build_flags}
  -D WLED_DISABLE_INFRARED
lib_deps =
  ${common.lib_deps_external}
lib_compat_mode = strict
lib_ignore = ${common:esp8266.lib_ignore}

[env:esp07]
board = esp07
platform = ${common:esp8266.platform}
monitor_speed = ${common.monitor_speed}
upload_speed = ${common.upload_speed}
framework = ${common.framework}
build_flags =
  ${common.build_flags}
  ${common:esp8266.build_flags}
lib_deps =
  ${common.lib_deps_external}
lib_compat_mode = strict
lib_ignore = ${common:esp8266.lib_ignore}

# see: http://docs.platformio.org/en/latest/platforms/espressif32.html
[env:esp32dev]
board = esp32dev
platform = ${common:esp32.platform}
monitor_speed = ${common.monitor_speed}
upload_speed = ${common.upload_speed_fast}
framework = ${common.framework}
build_flags =
  ${common.build_flags}
  ${common:esp32.build_flags}
lib_deps =
  ${common.lib_deps_external}
lib_ignore = ${common:esp32.lib_ignore}
lib_compat_mode = strict

[env:esp8285_4CH_MagicHome]
board = esp8285
platform = ${common:esp8266_1M.platform}
monitor_speed = ${common.monitor_speed}
upload_speed = ${common.upload_speed}
framework = ${common.framework}
build_flags =
  ${common.build_flags}
  ${common:esp8266_1M.build_flags}
  -D WLED_DISABLE_HUESYNC
  -D WLED_USE_ANALOG_LEDS
lib_deps =
  ${common.lib_deps_external}
lib_compat_mode = strict
lib_ignore = ${common:esp8266.lib_ignore}

[env:esp8285_4CH_H801]
board = esp8285
platform = ${common:esp8266_1M.platform}
monitor_speed = ${common.monitor_speed}
upload_speed = ${common.upload_speed}
framework = ${common.framework}
build_flags =
  ${common.build_flags}
  ${common:esp8266_1M.build_flags}
  -D WLED_DISABLE_HUESYNC
  -D WLED_USE_ANALOG_LEDS
  -D WLED_USE_H801
lib_deps =
  ${common.lib_deps_external}
lib_compat_mode = strict
lib_ignore = ${common:esp8266.lib_ignore}

[env:esp8285_5CH_H801]
board = esp8285
platform = ${common:esp8266_1M.platform}
monitor_speed = ${common.monitor_speed}
upload_speed = ${common.upload_speed}
framework = ${common.framework}
build_flags =
  ${common.build_flags}
  ${common:esp8266_1M.build_flags}
  -D WLED_DISABLE_HUESYNC
  -D WLED_USE_ANALOG_LEDS
  -D WLED_USE_H801
  -D WLED_ENABLE_5CH_LEDS 
lib_deps =
  ${common.lib_deps_external}
lib_compat_mode = strict
lib_ignore = ${common:esp8266.lib_ignore}