; Для компиляции скопируйте secrets.ini.template в secrets.ini файл

; Если у вас в Windows имя пользователя содержит кириллицу, измените home_dir
; [platformio]
; home_dir = C:\platformio

[platformio]
src_dir = src
default_envs = esp32s2
;extra_configs = secrets.ini  

[env]
firmware_version = "\"1.1.1\""

[libraries]
arduinojson = ArduinoJson@6.21.4
pubsubclient = PubSubClient@2.8
espasyncwebserver = https://github.com/waterius/ESPAsyncWebServer.git#20230926   
esp32-arduino-lib-builder = https://github.com/espressif/esp32-arduino-lib-builder.git
ada_tinyusb = adafruit/Adafruit TinyUSB Library @ ^3.3.1
hathach_tinyusb = https://github.com/hathach/tinyusb.git#0.17.0
espressif_tinyusb = https://github.com/espressif/tinyusb.git
espressif_esp_tinyusb = https://github.com/espressif/esp-usb.git
espasyncwebserver_124 = https://github.com/me-no-dev/ESPAsyncWebServer.git
                              
[env:esp32s2]
;platform = platformio/espressif32 @ ^6.8.1
platform = https://github.com/Jason2866/platform-espressif32.git#Arduino/IDF5
framework = espidf, arduino
board = esp32-s2-saola-1

;upload_port = /dev/cu.usbmodem01
upload_port = COM15
upload_speed = 921800

board_build.flash_mode = qio    ; dio если проблемы с памятью
board_build.filesystem = littlefs
board_build.partitions = partitions.csv

monitor_speed = 115200
monitor_filters = log2file, default

lib_ldf_mode = chain+
lib_archive = no
lib_deps =
  ${libraries.pubsubclient}
  ${libraries.arduinojson}
  ${libraries.espressif_tinyusb}
  ${libraries.espressif_esp_tinyusb}
  ESP Async WebServer
lib_ignore =
  AsyncTCP_RP2040W

build_flags = 
  -DLOGLEVEL=2 ;если нужно логирование в Serial
  -DFIRMWARE_VERSION=${this.firmware_version}
  -DCONFIG_TINYUSB_ENABLED=1
  -DCONFIG_TINYUSB_CDC_ENABLED=1
  -DCONFIG_USB_ENABLED=1
  -DCONFIG_USB_CDC_ENABLED=1
  -DCONFIG_TINYUSB_CDC_RX_BUFSIZE=512
  -DCFG_TUSB_MCU=OPT_MCU_ESP32S2
  -DCFG_TUSB_OS_INC_PATH=freertos/
  -DARDUINO_USB_CDC_ON_BOOT=1
  -DARDUINO_USB_MODE=0
  -DCONFIG_AUTOSTART_ARDUINO=1

[env:esp32s3]
platform = https://github.com/Jason2866/platform-espressif32.git#Arduino/IDF5
framework = espidf, arduino
board = esp32-s3-devkitc-1

;upload_port = /dev/cu.usbmodem01
upload_port = COM15
upload_speed = 921800

board_build.filesystem = littlefs
board_build.partitions = partitions.csv

monitor_speed = 115200
monitor_filters = log2file, default

lib_ldf_mode = chain+
lib_compat_mode = strict
lib_archive = no
lib_deps =
  ${libraries.pubsubclient}
  ${libraries.arduinojson}
  ${libraries.espressif_tinyusb}
  ${libraries.espressif_esp_tinyusb}
#  ESP32Async/AsyncTCP
  ESP32Async/ESPAsyncWebServer
lib_ignore =
  AsyncTCP_RP2040W

#build_unflags =
#  -DARDUINO_USB_MODE
build_flags = 
  -DLOGLEVEL=2 ;если нужно логирование в Serial
  -DFIRMWARE_VERSION=${this.firmware_version}

; Travis-CI
; platformio ci --project-conf=./platformio.ini -v .

; ========================================
; ESPTOOL Полезные команды python пакета esptool
; ========================================
;
; Загрузить прошивку
; -------------------
; Две команды - прошивка и файловая система
;
; platformio run --target upload --environment esp01_1m 
; platformio run --target uploadfs --environment esp01_1m
;
;
; Очистить память ESP
; -------------------
; python -m esptool --port /dev/cu.wchusbserial1420 --baud 115200 erase_flash
;
; Записать скомпилированную прошивку 
; -------------------
; python -m esptool --port /dev/cu.wchusbserial1420 --baud 115200 write_flash 0x0 esp8266.bin
;
; Просмотр стэка при падении прошивки
; -------------------
; 
; /waterius/ESP8266/.pio/build/esp01_1m/firmware.elf


;
; cp .pio/build/esp01_1m/firmware.elf ./../esp8266-1.0.1.elf
; cp .pio/build/esp01_1m/firmware.bin ./../esp8266-1.0.1.bin
; cp .pio/build/esp01_1m/littlefs.bin ./../esp8266-1.0.1-fs.bin
