[platformio] default_envs = esp8266 [common] framework = arduino lib_ldf_mode = deep+ lib_deps = WiFiManager=symlink://../.. [env:esp8266] extends = common platform = espressif8266 board = d1_mini platform_packages = platformio/framework-arduinoespressif8266 @ https://github.com/esp8266/Arduino.git#521ae60a89e64bb0d1eb7a0b7addf620ced5cad3 build_flags = -DWM_LOG_LEVEL=4 [env:esp32] extends = common platform = https://github.com/pioarduino/platform-espressif32/releases/download/51.03.05/platform-espressif32.zip board = esp32dev build_unflags = -std=gnu++11 build_flags = -std=gnu++14 -DSOC_WIFI_SUPPORTED=1 -I${platformio.packages_dir}/framework-arduinoespressif32/libraries/Network/src -DWM_LOG_LEVEL=4 ; The maintained ESP32 validation lane. Keep this named rather than relying on ; whatever framework/toolchain pair happens to be installed in PlatformIO's ; global package cache. [env:esp32_core_3_3_11] extends = env:esp32 platform = https://github.com/pioarduino/platform-espressif32/releases/download/55.03.311/platform-espressif32.zip ; OTA contract images deliberately differ only by their compile-time marker. ; ESP8266 needs an OTA-capable linker layout; ESP32 needs a tracked two-slot ; partition table. The hardware runner always flashes A over serial then ; uploads B through the real portal form. [env:esp8266_ota_a] extends = env:esp8266 board_build.ldscript = eagle.flash.4m1m.ld build_flags = ${env:esp8266.build_flags} -DWM_OTA_TEST_IMAGE=\"A\" [env:esp8266_ota_b] extends = env:esp8266 board_build.ldscript = eagle.flash.4m1m.ld build_flags = ${env:esp8266.build_flags} -DWM_OTA_TEST_IMAGE=\"B\" [env:esp32_ota_a] extends = env:esp32_core_3_3_11 board_build.partitions = partitions/esp32_ota_4m_no_fs.csv build_flags = ${env:esp32_core_3_3_11.build_flags} -DWM_OTA_TEST_IMAGE=\"A\" [env:esp32_ota_b] extends = env:esp32_core_3_3_11 board_build.partitions = partitions/esp32_ota_4m_no_fs.csv build_flags = ${env:esp32_core_3_3_11.build_flags} -DWM_OTA_TEST_IMAGE=\"B\"