[env:ratdeck_915]
platform = espressif32@6.7.0
board = esp32-s3-devkitc-1
framework = arduino

board_build.flash_size = 16MB
board_build.partitions = partitions_16MB.csv
board_upload.flash_size = 16MB
board_build.arduino.memory_type = qio_opi

build_flags =
    -std=gnu++17
    -fexceptions
    -O2
    -DRATDECK=1
    -DARDUINO_USB_CDC_ON_BOOT=1
    -DARDUINO_USB_MODE=1
    -DRNS_USE_FS
    -DRNS_PERSIST_PATHS
    -DMSGPACK_USE_BOOST=OFF
    -DBOARD_HAS_PSRAM
    -mfix-esp32-psram-cache-issue
    -DRNS_DEFAULT_ALLOCATOR=RNS_PSRAM_ALLOCATOR
    -DRNS_CONTAINER_ALLOCATOR=RNS_PSRAM_POOL_ALLOCATOR
    -DRNS_PSRAM_POOL_BUFFER_SIZE=2048000
    ; microReticulum table caps — sized for client device, not transport node
    -DRNS_KNOWN_DESTINATIONS_MAX=128
    -DRNS_HASHLIST_MAX=128
    -DRNS_PATH_TABLE_MAX=64
    -DRNS_ANNOUNCE_TABLE_MAX=48
    -DRNS_RECEIPTS_MAX=32
    -DRNS_QUEUED_ANNOUNCES_MAX=16
    -DRNS_RANDOM_BLOBS_MAX=32
    -DRNS_RANDOM_BLOBS_PERSIST_MAX=16
    -DRNS_RATE_TIMESTAMPS_MAX=32
    -DRNS_PR_TAGS_MAX=128
    -DDISPLAY_WIDTH=320
    -DDISPLAY_HEIGHT=240
    -DLV_CONF_INCLUDE_SIMPLE
    "-I${PROJECT_DIR}"
    ; Task watchdog is already enabled by ESP-IDF defaults (5s timeout)

build_unflags =
    -fno-exceptions
    -std=gnu++11

lib_deps =
    https://github.com/ratspeak/microReticulum.git
    https://github.com/attermann/Crypto.git
    bblanchon/ArduinoJson@^7.4.2
    lovyan03/LovyanGFX@^1.1.16
    h2zero/NimBLE-Arduino@^2.1
    lvgl/lvgl@^8.3.4

lib_archive = false

extra_scripts = post:merge_firmware.py

monitor_speed = 115200
upload_speed = 460800
upload_flags = --no-stub
