microReticulum/platformio.ini
Chad Attermann 4d6f0b9de2 Added dual-class PSRAM/TLSF allocator system and refactored memory management
Introduces a flexible two-class allocator architecture (RNS_DEFAULT_ALLOCATOR and RNS_CONTAINER_ALLOCATOR) supporting heap, PSRAM, and TLSF pool variants for fine-grained control over embedded memory layout.

- New Memory.h/cpp with ContainerAllocator<T>, heap/PSRAM/pool allocator types, and heap stats reporting
- IdentityTable and PathTable now use ContainerAllocator
- Replaced RNS_USE_TLSF/RNS_USE_ALLOCATOR/RNS_USE_PSRAM flags with per-class allocator flags (RNS_DEFAULT_ALLOCATOR, RNS_CONTAINER_ALLOCATOR)
- Added ESP32 PSRAM allocator support (RNS_PSRAM_ALLOCATOR, RNS_PSRAM_POOL_ALLOCATOR)
- Added Transport::get_path()/remove_path() helpers
- Added loop callback (set_loop_callback) to enable more responsive app during long operations (like clean_cache)
- Aded guard against re-entrancy to clean_cache()
- Added callback option to list_directory() to avoid heap allocation
- Added OOM auto-restart (ESP.restart/NVIC_SystemReset) in Interface send/receive and Reticulum loop.
- Renamed setLogCallback to set_log_callback
- Made Link/Identity static members private
- Added native14 env to CI and platformio.ini
- Bumped version to 0.2.10
2026-03-06 16:43:04 -07:00

228 lines
4.8 KiB
INI

; PlatformIO Project Configuration File
;
; Build options: build flags, source filter
; Upload options: custom upload port, speed and extra flags
; Library options: dependencies, extra library storages
; Advanced options: extra scripting
;
; Please visit documentation for the other options and examples
; https://docs.platformio.org/page/projectconf.html
[platformio]
default_envs = native17
[env]
monitor_speed = 115200
build_unflags =
-fno-exceptions
build_flags =
-fexceptions
-Wall
;-Wextra
-Wno-missing-field-initializers
-Wno-format
-Wno-unused-parameter
-Isrc
-DLIBRARY_TEST
;-DNDEBUG
-DRNS_USE_FS
-DRNS_PERSIST_PATHS
lib_deps =
ArduinoJson@^7.4.2
MsgPack@^0.4.2
https://github.com/attermann/Crypto.git
test_framework = unity
; Following property enables Unity integration testing
test_build_src = true
[env:native]
platform = native
build_flags =
${env.build_flags}
-std=gnu++11
-DNATIVE
lib_deps =
${env.lib_deps}
lib_compat_mode = off
[env:native14]
platform = native
build_unflags =
${env.build_unflags}
-std=gnu++11
build_flags =
${env.build_flags}
-std=gnu++14
-DNATIVE
lib_deps =
${env.lib_deps}
lib_compat_mode = off
[env:native17]
platform = native
build_unflags =
${env.build_unflags}
-std=gnu++11
build_flags =
${env.build_flags}
-std=gnu++17
-DNATIVE
lib_deps =
${env.lib_deps}
lib_compat_mode = off
[env:native20]
platform = native
build_unflags =
${env.build_unflags}
-std=gnu++11
build_flags =
${env.build_flags}
-std=gnu++20
-DNATIVE
lib_deps =
${env.lib_deps}
lib_compat_mode = off
[env:native_debug]
platform = native
build_unflags =
${env.build_unflags}
-std=gnu++11
build_flags =
${env.build_flags}
;-std=gnu++11
-std=gnu++17
-DNATIVE
; CBA TEST
;-fsanitize=address
-fno-omit-frame-pointer
-g
;-O1
-O0
;-DBOARD_HAS_PSRAM=1
;-DRNS_DEFAULT_ALLOCATOR=RNS_HEAP_ALLOCATOR
-DRNS_DEFAULT_ALLOCATOR=RNS_HEAP_POOL_ALLOCATOR
-DRNS_CONTAINER_ALLOCATOR=RNS_ALTHEAP_POOL_ALLOCATOR
;-DRNS_HEAP_POOL_BUFFER_SIZE=81920
;-DRNS_HEAP_POOL_BUFFER_SIZE=102400
-DRNS_HEAP_POOL_BUFFER_SIZE=204800
;-DRNS_HEAP_POOL_BUFFER_SIZE=307200
;-DRNS_HEAP_POOL_BUFFER_SIZE=409600
;-DRNS_HEAP_POOL_BUFFER_SIZE=512000
;-DRNS_HEAP_POOL_BUFFER_SIZE=614400
;-DRNS_HEAP_POOL_BUFFER_SIZE=1024000
-DRNS_ALTHEAP_POOL_BUFFER_SIZE=2048000
-DTLSF_DEBUG=1
;-DRNS_MEM_LOG
lib_deps =
${env.lib_deps}
lib_compat_mode = off
test_flags = -vvv
[env:embedded]
framework = arduino
upload_speed = 460800
build_unflags =
${env.build_unflags}
-std=gnu++11
;-fno-rtti
build_flags =
${env.build_flags}
-std=gnu++17
lib_deps =
${env.lib_deps}
[env:ttgo-lora32-v21]
extends = env:embedded
platform = espressif32
board = ttgo-lora32-v21
board_build.partitions = no_ota.csv
build_unflags =
${env:embedded.build_unflags}
-std=gnu++11
build_flags =
${env:embedded.build_flags}
-std=gnu++17
-DBOARD_ESP32
-DMSGPACK_USE_BOOST=OFF
lib_deps =
${env:embedded.lib_deps}
monitor_filters = esp32_exception_decoder
[env:ttgo-t-beam]
extends = env:embedded
platform = espressif32
board = ttgo-t-beam
board_build.partitions = no_ota.csv
;board_build.partitions = huge_app.csv
build_flags =
${env:embedded.build_flags}
-DBOARD_ESP32
-DMSGPACK_USE_BOOST=OFF
lib_deps =
${env:embedded.lib_deps}
monitor_filters = esp32_exception_decoder
[env:lilygo_tbeam_supreme]
extends = env:embedded
platform = espressif32
board = t-beams3-supreme
board_build.partitions = no_ota.csv
;board_build.partitions = huge_app.csv
build_flags =
${env:embedded.build_flags}
-DBOARD_ESP32
-DMSGPACK_USE_BOOST=OFF
lib_deps =
${env:embedded.lib_deps}
monitor_filters = esp32_exception_decoder
; also Heltec Wireless Tracker
[env:heltec_wifi_lora_32_V4]
extends = env:embedded
platform = espressif32
board = esp32-s3-devkitc-1
board_build.partitions = no_ota.csv
;board_build.partitions = huge_app.csv
build_flags =
${env.build_flags}
-DBOARD_ESP32
-DMSGPACK_USE_BOOST=OFF
-DARDUINO_USB_CDC_ON_BOOT=1
; CBA TEST
-DBOARD_HAS_PSRAM=1
;-DRNS_DEFAULT_ALLOCATOR=RNS_HEAP_ALLOCATOR
-DRNS_DEFAULT_ALLOCATOR=RNS_PSRAM_ALLOCATOR
;-DRNS_CONTAINER_ALLOCATOR=RNS_PSRAM_ALLOCATOR
-DRNS_CONTAINER_ALLOCATOR=RNS_PSRAM_POOL_ALLOCATOR
-DRNS_PSRAM_POOL_BUFFER_SIZE=2048000
lib_deps =
${env:embedded.lib_deps}
monitor_filters = esp32_exception_decoder
upload_speed = 921600
[env:wiscore_rak4631]
extends = env:embedded
platform = nordicnrf52
board = rak4630
board_build.partitions = no_ota.csv
build_src_filter = ${env:embedded.build_src_filter}+<../variants/rak4630>
build_flags =
${env:embedded.build_flags}
-I variants/rak4630
-fexceptions
-DBOARD_NRF52
-DRNS_DEFAULT_ALLOCATOR=RNS_HEAP_POOL_ALLOCATOR
-DRNS_HEAP_POOL_BUFFER_SIZE=204800
-DMSGPACK_USE_BOOST=OFF
lib_deps =
${env:embedded.lib_deps}
adafruit/Adafruit TinyUSB Library
; Overrides for specific tests (not working!)
[test_env:test_objects]
build_flags =
${env:embedded.build_flags}
;-DTEST_OBJECT_DATA=1
-DTEST_OBJECT_IMPL=1