feat(l2): Arduino 3.x as the published env, limits sized for the PSRAM, stage 7 findings

- Wio_Tracker_L2_companion_solo_lvgl now builds on Arduino-ESP32 3.3.12
  (pioarduino); the 2.0.17 build stays as _solo_lvgl_arduino2 (not published)
- Per-board limits (defaults unchanged, L1 byte-for-byte the same):
  TRAIL_CAPACITY, WAYPOINT_CAPACITY, HIST_CH_MAX / HIST_DM_MAX, NEARBY_MAX;
  the L2 sets 4096 / 64 / 256 / 128 / 64 (in PSRAM with UiCore; internal
  heap 154 KB free after). ui-lvgl: 32 trail segments, contact list 256,
  rooms 32, 50 bubbles per conversation, pickers 128, WiFi scan 20
- Map trail drawing drops points under 2 px apart
- "Nearby" is "Nodes"; advert options "Zero hop" / "Flood"
- Roadmap stage 7: LVGL on other displays -- e-ink stays ui-new, an OLED
  spike after this roadmap, Cardputer as a colour candidate

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Jakub
2026-09-26 13:51:08 +02:00
co-authored by Claude Opus 5.5
parent b99ca6b4ce
commit 4f5357031f
15 changed files with 172 additions and 50 deletions
+21 -14
View File
@@ -37,12 +37,12 @@ lib_deps =
densaugeo/base64 @ ~1.4.0
; ui-lvgl: the real L2 interface -- LVGL 9 frontend over the shared UI Core
; (docs/development/ui-core.md, step 5). *_solo_lvgl envs are published by
; build-solo-firmwares.yml (merged image + the -ota.bin that Settings > Firmware
; update installs). Make the Arduino 3.x env below this one before tagging a
; release: only 3.x builds can update themselves (CA bundle for the TLS check).
; (docs/development/ui-core.md, step 5), on Arduino-ESP32 3.3.12 / ESP-IDF 5.5
; (pioarduino). *_solo_lvgl envs are published by build-solo-firmwares.yml
; (merged image + the -ota.bin that Settings > Firmware update installs).
[env:Wio_Tracker_L2_companion_solo_lvgl]
extends = Wio_Tracker_L2
platform = https://github.com/pioarduino/platform-espressif32/releases/download/55.03.312-1/platform-espressif32.zip
build_flags =
${Wio_Tracker_L2.build_flags}
-I examples/companion_radio/ui-lvgl
@@ -60,7 +60,14 @@ build_flags =
-D MESH_IN_PSRAM=1 ; frees ~120 KB internal RAM for WiFi/TLS map downloads
-D PIN_BUZZER=-1 ; no piezo pin: the speaker plays through the codec
-D BUZZER_I2S
-D OTA_ASSET_SUFFIX='"-Wio-Tracker-L2-ota.bin"' ; Settings > Firmware update (Arduino 3.x builds)
-D OTA_ASSET_SUFFIX='"-Wio-Tracker-L2-ota.bin"' ; Settings > Firmware update
; Sized for the PSRAM (UiCore is heap-allocated, so these land there);
; the defaults in the headers are the nRF52 boards'.
-D TRAIL_CAPACITY=4096 ; 64 KB (+64 KB of map drawing buffers)
-D WAYPOINT_CAPACITY=64
-D HIST_CH_MAX=256 ; all channels together, ~50 KB
-D HIST_DM_MAX=128 ; all DMs together, ~27 KB
-D NEARBY_MAX=64
build_src_filter = ${Wio_Tracker_L2.build_src_filter}
+<helpers/esp32/*.cpp>
+<helpers/ui/LGFXDisplay.cpp>
@@ -75,17 +82,18 @@ lib_deps =
lvgl/lvgl @ 9.2.2 ; pinned: bump deliberately, re-test on hardware
SD_MMC ; map tiles on the microSD (framework libraries from here on)
FS
WiFi ; on-device map download
WiFi ; on-device map download, live tiles, OTA
HTTPClient
WiFiClientSecure
NetworkClientSecure ; 3.x name of WiFiClientSecure (the header is still there)
Preferences
Update ; Settings > Firmware update
; The same firmware on Arduino-ESP32 3.x (ESP-IDF 5.5, pioarduino). Runs beside
; the 2.0.17 env above until it passes docs/development/l2-hardware-checklist.md
; (roadmap stage 2), then replaces it.
[env:Wio_Tracker_L2_companion_solo_lvgl_v3]
; The same firmware on the old Arduino-ESP32 2.0.17 (ESP-IDF 4.4), kept for
; comparison while the 3.x one settles. Not published (the name doesn't end in
; _solo_lvgl) and can't update itself (no CA bundle for the TLS check).
[env:Wio_Tracker_L2_companion_solo_lvgl_arduino2]
extends = env:Wio_Tracker_L2_companion_solo_lvgl
platform = https://github.com/pioarduino/platform-espressif32/releases/download/55.03.312-1/platform-espressif32.zip
platform = ${esp32_base.platform}
lib_deps =
${Wio_Tracker_L2.lib_deps}
densaugeo/base64 @ ~1.4.0
@@ -94,6 +102,5 @@ lib_deps =
FS
WiFi
HTTPClient
NetworkClientSecure ; 3.x name of WiFiClientSecure (the header is still there)
WiFiClientSecure
Preferences
Update ; Settings > Firmware update