mirror of
https://github.com/markqvist/RNode_Firmware.git
synced 2026-04-28 09:43:08 +00:00
LVGL 9.5.0 integration replacing direct framebuffer rendering. Watch face with time, date, status bar (mode/battery), and three complications (LoRa/GPS/Steps). Tileview swipe navigation between five screens: watch face, radio status, GPS, messages, settings. Haptic feedback on screen transitions via DRV2605. Radio status screen shows frequency, LoRa params, RSSI bar gauge, channel utilization, BLE state, and packet counts. GPS screen shows coordinates, fix quality, altitude/speed, and beacon status. Serial screenshot tool (scripts/screenshot.py) captures display contents over USB CDC by sending trigger bytes and receiving the shadow framebuffer as raw RGB565. Build changes: - FlashSize=16M in FQBN (bootloader embeds flash size, defaults 4MB) - PSRAM=enabled for LVGL draw buffers and screenshot shadow buffer - Custom 8MB app partition (partition_twatch.csv) for 16MB flash - flash-twatch_ultra-full make target for full bootloader+partition+app flash Architecture notes in code: - display_init() must run BEFORE xl9555_init() (display power gate defaults high at power-on, reordering causes black screen) - LVGL draw buffers use separate swap buffer for RGB565 byte-order conversion to avoid corrupting LVGL's internal buffer state - Touch input registered via function pointer to decouple Gui.h from touch library include order
9 lines
517 B
CSV
9 lines
517 B
CSV
# T-Watch Ultimate partition table — 16MB flash, no OTA, large app
|
|
# Requires FlashSize=16M in the Arduino FQBN or the bootloader can't map beyond 4MB.
|
|
# Copy this file to ~/.arduino15/packages/esp32/hardware/esp32/<ver>/tools/partitions/
|
|
# Name, Type, SubType, Offset, Size, Flags
|
|
nvs, data, nvs, 0x9000, 0x5000,
|
|
otadata, data, ota, 0xe000, 0x2000,
|
|
app0, app, ota_0, 0x10000, 0x800000,
|
|
spiffs, data, spiffs, 0x810000, 0x7E0000,
|
|
coredump, data, coredump,0xFF0000, 0x10000,
|