perf(ui-lvgl): lower clock when idle, fewer redraws, wake on BLE frames

- CPU at 80 MHz with the screen on after 2 s without touch or animation;
  a touch restores the full clock before its frame is drawn
- setText(): periodic refreshes no longer redraw unchanged labels
  (status bar, Home, lock, Diag, GPS, compass, clock, map, nav, nearby)
- map markers kept across the 3 s rebuild when unchanged
- app connected: the loop blocks until a BLE frame arrives
  (serialFrameArrived / hasPendingFrames) instead of polling every 2 ms
- PSRAM: boot frame sprite and the HTTP response buffer released

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Jakub
2026-09-29 11:51:18 +02:00
co-authored by Claude Opus 5.5
parent bc266a4f5c
commit 4ab9d949ec
19 changed files with 188 additions and 82 deletions
@@ -127,14 +127,14 @@ void UITask::refreshCompass() {
lv_obj_invalidate(s_dial);
}
if (have) {
lv_label_set_text_fmt(s_deg, "%03d", cog);
lv_label_set_text(s_degsign, "\xC2\xB0");
lv_label_set_text(s_card, geo::bearingCardinal(cog));
lv_label_set_text(s_hint, "Course over ground");
setTextFmt(s_deg, "%03d", cog);
setText(s_degsign, "\xC2\xB0");
setText(s_card, geo::bearingCardinal(cog));
setText(s_hint, "Course over ground");
} else {
lv_label_set_text(s_deg, "");
lv_label_set_text(s_degsign, "");
lv_label_set_text(s_card, "--");
lv_label_set_text(s_hint, hint);
setText(s_deg, "");
setText(s_degsign, "");
setText(s_card, "--");
setText(s_hint, hint);
}
}