; MIT License - Copyright (c) 2020 Francis Van Roie
; For full license information read the LICENSE file in the project folder
;
; PlatformIO Project Configuration File
;
; Please visit documentation for the other options and examples
; http://docs.platformio.org/page/projectconf.html


;**************************************************************
;          Common project settings
;**************************************************************
[platformio]
extra_configs =
    user_setups/lcd_config.ini
    ; --  Put active [env] files in this dir to be included in the build menu
    user_setups/active/*.ini
    ; --  Add customizations to this file only:
    platformio_override.ini

default_envs =
    ; Uncomment the needed environments in platformio_override.ini
    ; You can also create new environments in in platformio_override.ini
    ${override.extra_default_envs}

[override]
; -- By default there are no ${override.build_flags} set
; -- to use it, copy the platformio_override.ini file from the template
build_flags =
extra_default_envs =


;***************************************************
;          Common environment settings
;***************************************************
[env]
upload_speed = 921600
monitor_speed = 115200

build_flags =
	-D PIOENV=\"${PIOENV}\"
    -Os          ; Code Size Optimization
    ;-Og           ; Code Debug Optimization
    ;-w           ; Suppress warnings
    -D CORE_DEBUG_LEVEL=0           ; 0=Silent, 1=Errors, 2=Warnings
    -I include    ; include lv_conf.h and hasp_conf.h
    ; -- littlevgl build options ------------------------------
    -D LV_CONF_INCLUDE_SIMPLE       ; for lvgl
    -D LV_LVGL_H_INCLUDE_SIMPLE     ; for lv_drivers
    -D LV_COMP_CONF_INCLUDE_SIMPLE  ; for components
    -D LV_SYMBOL_DEF_H              ; don't load default symbol defines
    ; -- ESP build options ------------------------------------
    -D SPIFFS_TEMPORAL_FD_CACHE     ; speedup opening recent files
    ; -- ArduinoJson build options ----------------------------
    -D ARDUINOJSON_DECODE_UNICODE=1 ; for utf-8 symbols
    
    ; -- StreamUtils build options ----------------------------
    -D STREAMUTILS_ENABLE_EEPROM=1  ; for STM32, it also supports EEPROM

    ; -- Hasp build options ----------------------------
    -D HASP_VER_MAJ=0
    -D HASP_VER_MIN=6
    -D HASP_VER_REV=1
    ${override.build_flags}

; -- Shared library dependencies in all environments
; Warning : don't put comments after github links => causes infinite download loop
lib_deps =
    bxparks/AceButton@^1.8.3         ; GPIO button library
    bblanchon/ArduinoJson@^6.18.0    ; Json(l) parser
    bblanchon/StreamUtils@1.6.1      ; for EEPromStream
    knolleary/PubSubClient@^2.8.0    ; MQTT client
    git+https://github.com/fvanroie/ConsoleInput.git
    ;git+https://github.com/andrethomas/TasmotaSlave.git
    ;git+https://github.com/lvgl/lvgl.git
    ;Needed for touch rotation:
    git+https://github.com/lvgl/lvgl.git#release/v7
    ;lvgl/lvgl@^7.11.0                ; from PIO library
    bodmer/TFT_eSPI@^2.3.70
    ;git+https://github.com/Bodmer/TFT_eSPI.git
    ; ------ Unused / Test libraries
    ;https://github.com/netwizeBE/TFT_eSPI.git
    ;Syslog@^2.0.0       ; Obsoleted
    ;AsyncTCP
    ;https://github.com/me-no-dev/ESPAsyncWebServer/archive/master.zip
    ;https://github.com/me-no-dev/ESPAsyncTCP/archive/master.zip

src_filter = +<*> -<.git/> -<examples/> -<test/> -<tests/> -<stm32f4/> -<lv_font_montserrat_*.c>


; -- Platform specific build flags
[esp32]
framework = arduino
platform = espressif32@^3.2.1

board_upload.flash_size=4MB
board_upload.maximum_size = 4194304
board_build.partitions = user_setups/esp32/partitions_4MB.csv
board_build.filesystem = littlefs
board_build.embed_files =
    data/edit.htm.gz

; ----- crash reporter
monitor_filters = esp32_exception_decoder

; ----- debugger
check_tool = cppcheck
check_flags = --enable=all
debug_tool = esp-prog
debug_init_break = tbreak setup

build_flags =
    ${env.build_flags}
    -D HTTP_UPLOAD_BUFLEN=1024      ; lower http upload buffer
    -D MQTT_MAX_PACKET_SIZE=2048    ; longer PubSubClient messages
    -D HASP_CONSOLE_BUFFER=256      ; maximum length of a console/telnet command
    -D NO_GLOBAL_HTTPUPDATE         ; dont instantiate httpUpdate
; -- lvgl build options -----------------------------
    -D LV_MEM_SIZE=49152U           ; 48 kB lvgl memory
    -D LV_ATTRIBUTE_FAST_MEM=IRAM_ATTR
    -D LV_ATTRIBUTE_TASK_HANDLER=IRAM_ATTR
    ;-D LV_FS_PC_PATH="//littlefs"   ; this needs to match the vfs mount pount
    -D LODEPNG_NO_COMPILE_ALLOCATORS ; use PSram functions
; -- ArduinoJson build options ----------------------------
    -D ARDUINOJSON_ENABLE_PROGMEM=1 ; for PROGMEM arguments
; -- tft_espi build options ------------------------
    ;-D USE_DMA_TO_TFT
; -- openHASP build options ------------------------
    -D HASP_ATTRIBUTE_FAST_MEM=IRAM_ATTR
    -D HASP_USE_TELNET=1
    ;-D HASP_USE_SPIFFS=1
    -D HASP_USE_LITTLEFS=1
    ;-D HASP_USE_EEPROM=1
    -D HASP_USE_CONFIG=1            ; Native application, not library
    -D LV_LOG_TRACE_TIMER=1
    -D HASP_USE_PNGDECODE=1
; -- LittleFS build options ------------------------
	;-D CONFIG_LITTLEFS_FOR_IDF_3_2  ; obsolete in IDF 3.3

lib_ignore =
    GxTFT
    XPT2046_Touchscreen
    Adafruit TouchScreen
    Adafruit BusIO
    Adafruit GFX Library
    sstaub/Ticker
    lv_drv_fsmc_ili9341
    lv_drivers
    AXP192

lib_deps =
    LittleFS_esp32
    git+https://github.com/lvgl/lv_lib_png.git#release/v7

ps_ram =
    -DBOARD_HAS_PSRAM
    -mfix-esp32-psram-cache-issue

extra_scripts =
    tools/littlefsbuilder.py
    tools/esp_merge_bin.py
    tools/analyze_elf.py
;    ${env.extra_scripts}
;    tools/copy_partitions.py

; -- The ESP32 has 2 SPI Hardware Busses available to use:
vspi =
    -D TFT_MISO=19
    -D TFT_MOSI=23
    -D TFT_SCLK=18
hspi =
    -D TFT_MISO=12
    -D TFT_MOSI=13
    -D TFT_SCLK=14

[esp8266]
framework = arduino
platform = espressif8266

board_build.f_flash = 40000000L
board_build.flash_mode = dout
board_build.ldscript = eagle.flash.4m2m.ld  ; 2Mb Spiffs
board_build.f_cpu = 160000000L ; set frequency to 160MHz

; ----- crash reporter
monitor_filters = esp8266_exception_decoder

build_flags=
    -D HTTP_UPLOAD_BUFLEN=512          ; lower http upload buffer
    -D MQTT_MAX_PACKET_SIZE=1024       ; longer PubSubClient messages
    -D HASP_CONSOLE_BUFFER=160         ; maximum length of a console/telnet command
    -D ATOMIC_FS_UPDATE                ; enabled compressed ota updates
    -D NO_GLOBAL_HTTPUPDATE            ; dont instantiate httpUpdate
; -- lwIP Variant -----------------------------------
    ;-D PIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH
    -D PIO_FRAMEWORK_ARDUINO_LWIP2_LOW_MEMORY
; -- lvgl build options -----------------------------
    -D LV_MEM_SIZE=12288U              ; 12kB lvgl memory
    -D LV_ATTRIBUTE_FAST_MEM=
    -D LV_ATTRIBUTE_TASK_HANDLER=
; -- ArduinoJson build options ----------------------------
    -D ARDUINOJSON_ENABLE_PROGMEM=1    ; for PROGMEM arguments
    -D ARDUINOJSON_ENABLE_STD_STRING=1 ; for std::string
; -- openHASP build options -------------------------
    -D HASP_ATTRIBUTE_FAST_MEM=
    -D HASP_USE_TELNET=1
    ;-D HASP_USE_SPIFFS=1
    -D HASP_USE_LITTLEFS=1
    -D HASP_USE_EEPROM=1
    -D HASP_USE_ETHERNET=0
    -D HASP_USE_CONFIG=1               ; Native application, not library

extra_scripts = tools/copy_fw.py    ; tools/pre:extra_script.py

lib_ignore =
    ESP32 BLE Arduino
    GxTFT
    sstaub/Ticker
    lv_drv_fsmc_ili9341
    AXP192

lib_deps =


[stm32f4]
framework = arduino
platform = ststm32
build_flags=
    -I include/stm32f4
    -D MQTT_MAX_PACKET_SIZE=2048       ; longer PubSubClient messages
    -D HASP_CONSOLE_BUFFER=220         ; maximum length of a console/telnet command
    -D IRAM_ATTR=                      ; No IRAM_ATTR available on STM32
    -D ICACHE_RAM_ATTR=
    -D STM32
    -D ARDUINOJSON_DECODE_UNICODE=1 ; for utf-8 symbols
    -D ARDUINOJSON_ENABLE_PROGMEM=1 ; for PROGMEM arguments
    -D STREAMUTILS_USE_EEPROM_UPDATE=1  ; update cell only when changed
; -- lvgl build options -----------------------------
    -D LV_MEM_SIZE=20480U              ; 20kB lvgl memory
    -D HASP_USE_SYSLOG=0               ; Needs UDP
    -D HASP_USE_SPIFFS=0
    -D HASP_USE_LITTLEFS=0
    -D HASP_USE_CONFIG=1               ; Native application, not library

lib_deps =
    ; sstaub/Ticker @ ^3.2.0
    stm32duino/STM32duino LwIP @ ^2.1.2
    ;https://github.com/stm32duino/LwIP.git
