feat(ui-lvgl): power saving, review fixes, shared helpers

Power: the UI loop sleeps until something is due (never with packets
queued); screen off puts the CPU at 80 MHz, the GT911 to sleep (unless a
tap wakes the screen) and the LP5814 in standby. GPS off now cuts the
L76K's rail and UART on the L2 (L2GpsProvider). The battery divider is
powered only for a reading (measured: settles at once); readings within
2 s are reused. The SD mount is retried at most every 5 s.

Fixes: WiFi left on after leaving a scan, live tiles' WiFi kept with the
screen off on the map, an ADC read every second for the status bar, touch
polled on every pass while dark, a scan cutting an update's WiFi, relay
count not refreshing in a channel thread, raw @[nick] in room previews.
Labels skip unchanged text (no redraw).

Helpers: scrollList, dimOverlay, settingRow, flexBox, nvs::get/put,
trailFilePath (a second save in the same minute no longer overwrites),
unreadTotal. Dead code removed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Jakub
2026-09-27 00:12:08 +02:00
co-authored by Claude Opus 5.5
parent f5206f10b4
commit 23caa11f51
23 changed files with 337 additions and 347 deletions
+9 -1
View File
@@ -226,7 +226,15 @@ Ideas to come back to (2026-09-26):
- [ ] Speaker click: would keeping the amplifier on at minimum volume
remove it?
- [ ] Import routes from the SD card (optional extra).
- [ ] Battery life without losing features, above all CPU sleep.
- [x] Battery life without losing features (2026-09-27): the UI loop sleeps
until something is due (none while packets are queued; 1-2 ms with a
melody / the app connected; up to 10 ms awake, 20 ms dark); screen off:
CPU at 80 MHz, touch controller asleep unless it wakes the screen,
backlight driver in standby. GPS off really cuts the L76K's rail (and
its UART). Battery divider powered only for a reading (measured: settles
at once). Also fixed: WiFi left on after a scan cut short, live tiles'
WiFi kept with the screen off on the map, a battery ADC read every
second. Not measured yet: the current before / after.
- [x] Live tiles: bounded cache on the card (2026-09-26) -- they go to
/sdcard/maps-live, apart from downloaded maps; an index keeps their
order and the oldest are deleted past the limit (Settings > Storage >