mirror of
https://github.com/MarekZegare4/MeshCore-Solo.git
synced 2026-11-01 10:21:59 +00:00
The panel takes each 24-line band by DMA while LVGL draws the next one into the other buffer (two 15 KB buffers in internal RAM; LovyanGFX's 4092-byte DMA descriptors leave PSRAM unaligned for the S3's DMA, which showed as shifted and smeared bands). LVGL draws in the panel's byte order, and so do map tiles and the frozen screen under a popup, so nothing is swapped on the way out. Full frames ~10-25% faster (page1 19.9 -> 14.7 ms, Home 21.4 -> 18.2 ms). Without the internal RAM the screen is sent as before. The arduino2 env keeps the old way. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
144 lines
6.5 KiB
INI
144 lines
6.5 KiB
INI
; Solo build for Seeed Wio Tracker L2 -- extends the board base defined in
|
|
; variants/wio-tracker-l2/platformio.ini. Solo configs live in their own
|
|
; top-level solo/ folder, separate from the shared upstream board variants.
|
|
;
|
|
; BRING-UP ONLY: this env runs the existing ui-new (OLED-era, joystick-driven)
|
|
; UI zoomed 2x (160x120 logical on the 320x240 panel) purely to compile-test
|
|
; and smoke-test the board layer -- display, radio, GPS, battery. It has no
|
|
; touch input yet; the only control is the BOOT button. The real interface for
|
|
; this board is the planned LVGL frontend over a shared UI Core.
|
|
;
|
|
; Deliberately NOT named *_solo_dual yet, so build-solo-firmwares.yml doesn't
|
|
; publish it as a release artifact.
|
|
[env:Wio_Tracker_L2_companion_solo_bringup]
|
|
extends = Wio_Tracker_L2
|
|
build_flags =
|
|
${Wio_Tracker_L2.build_flags}
|
|
-I examples/companion_radio/ui-new
|
|
-D DISPLAY_CLASS=WioTrackerL2Display
|
|
-D UI_ZOOM=2
|
|
-D MAX_CONTACTS=350
|
|
-D MAX_GROUP_CHANNELS=40
|
|
-D BLE_PIN_CODE=123456
|
|
-D DUAL_SERIAL=1
|
|
-D OFFLINE_QUEUE_SIZE=256
|
|
-D FIRMWARE_SOLO_BUILD=1
|
|
-D MESHCORE_VERSION='"1.17.1"'
|
|
-D OLED_MISC_FIXED_FONT=1
|
|
-D AUTO_OFF_MILLIS=60000
|
|
build_src_filter = ${Wio_Tracker_L2.build_src_filter}
|
|
+<helpers/esp32/*.cpp>
|
|
+<helpers/ui/LGFXDisplay.cpp>
|
|
+<helpers/ui/MomentaryButton.cpp>
|
|
+<../examples/companion_radio/*.cpp>
|
|
+<../examples/companion_radio/ui-new/*.cpp>
|
|
lib_deps =
|
|
${Wio_Tracker_L2.lib_deps}
|
|
densaugeo/base64 @ ~1.4.0
|
|
|
|
; ui-lvgl: the real L2 interface -- LVGL 9 frontend over the shared UI Core
|
|
; (docs/solo/developer/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
|
|
; USB through TinyUSB, not the chip's USB-Serial/JTAG: the serial port stays
|
|
; (CDC, reset-to-flash by the 1200 bps touch) and the SD card can be lent to
|
|
; a computer as a USB drive (ui-lvgl/LvglPort.h). A firmware that crashes
|
|
; early may need BOOT held over reset to flash.
|
|
build_unflags = -DARDUINO_USB_MODE=1
|
|
; Bigger CPU caches and other ESP-IDF options (idf/sdkconfig): the framework
|
|
; libs are rebuilt for them. Build Wio_Tracker_L2_idf_libs first (see there).
|
|
custom_sdkconfig = file://solo/wio-tracker-l2/idf/sdkconfig
|
|
build_flags =
|
|
${Wio_Tracker_L2.build_flags}
|
|
-D ARDUINO_USB_MODE=0
|
|
-I examples/companion_radio/ui-lvgl
|
|
-D DISPLAY_CLASS=WioTrackerL2Display
|
|
-D UI_ZOOM=1
|
|
-D LV_CONF_INCLUDE_SIMPLE
|
|
-D MAX_CONTACTS=350
|
|
-D MAX_GROUP_CHANNELS=40
|
|
-D BLE_PIN_CODE=123456
|
|
-D DUAL_SERIAL=1
|
|
-D OFFLINE_QUEUE_SIZE=256
|
|
-D FIRMWARE_SOLO_BUILD=1
|
|
-D MESHCORE_VERSION='"1.17.1"'
|
|
-D AUTO_OFF_MILLIS=60000
|
|
-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
|
|
; Sized for the PSRAM (UiCore is heap-allocated, so these land there);
|
|
; the defaults in the headers are the nRF52 boards'.
|
|
-D TRAIL_CAPACITY=32768 ; 512 KB (+512 KB of map drawing buffers): ~160 km at 5 m
|
|
-D TRAIL_SIMPLIFY=0 ; every point kept: no straight-run simplification
|
|
-D TRAIL_FIXED_MIN_DELTA_M=5 ; a fixed GPS-jitter gate instead of the point spacing setting
|
|
-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
|
|
-D HIST_ARCHIVE ; message history also on the SD card (ui-lvgl/HistoryStore.h)
|
|
-D GPS_SKYVIEW ; satellites / signal / DOPs for the GPS screen (helpers/sensors/GpsSky.h)
|
|
-D ESP32_LITTLEFS ; internal flash as LittleFS, not SPIFFS (helpers/esp32/InternalFS.h)
|
|
-D ENABLE_SCREENSHOT ; the screen over USB for the site's tools (RGB565, UITask::captureFrame)
|
|
-DUI_FLUSH_DMA ; the panel fed by DMA while LVGL draws, in its byte order (ui-lvgl/LvglPort.h)
|
|
build_src_filter = ${Wio_Tracker_L2.build_src_filter}
|
|
+<helpers/esp32/*.cpp>
|
|
+<helpers/ui/LGFXDisplay.cpp>
|
|
+<helpers/ui/MomentaryButton.cpp>
|
|
+<helpers/ui/buzzer.cpp>
|
|
+<../examples/companion_radio/*.cpp>
|
|
+<../examples/companion_radio/ui-lvgl/*.cpp>
|
|
+<../examples/companion_radio/ui-lvgl/fonts/*.c>
|
|
lib_deps =
|
|
${Wio_Tracker_L2.lib_deps}
|
|
densaugeo/base64 @ ~1.4.0
|
|
lvgl/lvgl @ 9.6.0 ; pinned: bump deliberately, re-test on hardware
|
|
bitbank2/PNGdec @ 1.1.6 ; map tiles: PNG straight to RGB565, a row at a time (ui-lvgl/TilePng.cpp)
|
|
SD_MMC ; map tiles on the microSD (framework libraries from here on)
|
|
FS
|
|
WiFi ; on-device map download, live tiles, OTA
|
|
HTTPClient
|
|
NetworkClientSecure ; 3.x name of WiFiClientSecure (the header is still there)
|
|
Preferences
|
|
Update ; Settings > Firmware update
|
|
LittleFS
|
|
|
|
; 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 = ${esp32_base.platform}
|
|
build_unflags = -DARDUINO_USB_MODE=1 -DUI_FLUSH_DMA ; DMA flush untried on ESP-IDF 4.4
|
|
lib_deps =
|
|
${Wio_Tracker_L2.lib_deps}
|
|
densaugeo/base64 @ ~1.4.0
|
|
lvgl/lvgl @ 9.6.0
|
|
bitbank2/PNGdec @ 1.1.6
|
|
SD_MMC
|
|
FS
|
|
WiFi
|
|
HTTPClient
|
|
WiFiClientSecure
|
|
Preferences
|
|
LittleFS
|
|
|
|
; Rebuilds the framework libs (ESP-IDF) with the custom_sdkconfig above; the
|
|
; firmware env above then links them. Run once before it, and again after a
|
|
; custom_sdkconfig change (pio run -e Wio_Tracker_L2_idf_libs). Needed because
|
|
; pioarduino's rebuild pass compiles the env's own sources without its include
|
|
; paths and libraries, which fails for ours; this env's only source is the
|
|
; stub sketch pioarduino puts in .dummy/. idf/ supplies the TinyUSB options.
|
|
[env:Wio_Tracker_L2_idf_libs]
|
|
platform = ${env:Wio_Tracker_L2_companion_solo_lvgl.platform}
|
|
board = seeed_wio_tracker_l2
|
|
framework = arduino
|
|
custom_sdkconfig = ${env:Wio_Tracker_L2_companion_solo_lvgl.custom_sdkconfig}
|
|
board_build.cmake_extra_args = -DEXTRA_COMPONENT_DIRS=${platformio.src_dir}/../.dummy;${platformio.packages_dir}/framework-arduinoespressif32;${platformio.src_dir}/../solo/wio-tracker-l2/idf
|
|
lib_deps =
|
|
lib_ldf_mode = off
|
|
build_src_filter = +<../.dummy/*>
|