mirror of
https://github.com/pelgraine/Meck.git
synced 2026-03-28 17:42:44 +01:00
t5s3 - last heard touch fix; lock screen 15 min refresh fix; update firmware build date
This commit is contained in:
@@ -8,7 +8,7 @@
|
||||
#define FIRMWARE_VER_CODE 10
|
||||
|
||||
#ifndef FIRMWARE_BUILD_DATE
|
||||
#define FIRMWARE_BUILD_DATE "18 March 2026"
|
||||
#define FIRMWARE_BUILD_DATE "19 March 2026"
|
||||
#endif
|
||||
|
||||
#ifndef FIRMWARE_VERSION
|
||||
|
||||
@@ -588,7 +588,11 @@ static void lastHeardToggleContact() {
|
||||
ui_task.showAlert(alertBuf, 1500);
|
||||
Serial.printf("[LastHeard] Added: %s\n", entry->name);
|
||||
} else {
|
||||
ui_task.showAlert("Blob not found", 1500);
|
||||
// Blob store is limited to 100 entries — with many contacts, blobs
|
||||
// from non-contact nodes get evicted quickly. User needs to wait
|
||||
// for the node to re-broadcast its advert.
|
||||
ui_task.showAlert("Advert expired, wait for re-broadcast", 2500);
|
||||
Serial.printf("[LastHeard] Blob evicted for %s (store full)\n", entry->name);
|
||||
}
|
||||
}
|
||||
ui_task.forceRefresh();
|
||||
|
||||
@@ -507,7 +507,7 @@ public:
|
||||
"Tap here for full Last Heard list");
|
||||
#else
|
||||
display.drawTextCentered(display.width() / 2, display.height() - 24,
|
||||
"Press H: Full Last Heard list");
|
||||
"H: Full Last Heard list");
|
||||
#endif
|
||||
} else if (_page == HomePage::RADIO) {
|
||||
display.setColor(DisplayDriver::YELLOW);
|
||||
@@ -1682,6 +1682,21 @@ if (curr) curr->poll();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Lock screen clock refresh — update time display every 15 minutes.
|
||||
// Runs outside the _display->isOn() gate so it works even after auto-off.
|
||||
// Wakes the display briefly to render, then lets auto-off turn it back off.
|
||||
if (_locked && _display != NULL) {
|
||||
const unsigned long LOCK_REFRESH_INTERVAL = 15UL * 60UL * 1000UL; // 15 minutes
|
||||
if (millis() - _lastLockRefresh >= LOCK_REFRESH_INTERVAL) {
|
||||
_lastLockRefresh = millis();
|
||||
if (!_display->isOn()) {
|
||||
_display->turnOn();
|
||||
_auto_off = millis() + 5000; // Stay on just long enough to render + settle
|
||||
}
|
||||
_next_refresh = 0; // Trigger immediate render
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef PIN_VIBRATION
|
||||
@@ -1809,6 +1824,7 @@ void UITask::lockScreen() {
|
||||
#endif
|
||||
_next_refresh = 0; // Draw lock screen immediately
|
||||
_auto_off = millis() + 60000; // 60s before display off while locked
|
||||
_lastLockRefresh = millis(); // Start 15-min clock refresh cycle
|
||||
Serial.println("[UI] Screen locked");
|
||||
}
|
||||
|
||||
|
||||
@@ -97,6 +97,7 @@ class UITask : public AbstractUITask {
|
||||
UIScreen* _screenBeforeLock = nullptr;
|
||||
bool _locked = false;
|
||||
unsigned long _lastInputMillis = 0; // Auto-lock idle tracking
|
||||
unsigned long _lastLockRefresh = 0; // Periodic lock screen clock update
|
||||
|
||||
VirtualKeyboard _vkb;
|
||||
bool _vkbActive = false;
|
||||
@@ -107,6 +108,7 @@ class UITask : public AbstractUITask {
|
||||
UIScreen* _screenBeforeLock = nullptr;
|
||||
bool _locked = false;
|
||||
unsigned long _lastInputMillis = 0; // Auto-lock idle tracking
|
||||
unsigned long _lastLockRefresh = 0; // Periodic lock screen clock update
|
||||
#endif
|
||||
|
||||
void userLedHandler();
|
||||
|
||||
Reference in New Issue
Block a user