Added uptime to companion screen

This commit is contained in:
Kevin Le
2026-08-16 16:07:03 +07:00
parent cb7c4b0fb6
commit 54f292f40d
+28 -1
View File
@@ -109,7 +109,13 @@ class HomeScreen : public UIScreen {
bool _shutdown_init;
AdvertPath recent[UI_RECENT_LIST_SIZE];
// Uptime tracking
// Stores the last 32-bit millis() value used to calculate elapsed time.
// uint32_t naturally handles the ~49.7-day millis() rollover.
uint32_t uptime_last_millis = millis();
// 64-bit accumulated uptime in milliseconds.
// Allows uptime to continue beyond the 49.7-day millis() rollover.
uint64_t uptime_millis = 0;
void renderBatteryIndicator(DisplayDriver& display, uint16_t batteryMilliVolts) {
// Convert millivolts to percentage
#ifndef BATT_MIN_MILLIVOLTS
@@ -131,6 +137,27 @@ class HomeScreen : public UIScreen {
int iconY = 0;
display.setColor(UIColor::title_txt);
// Uptime
uint32_t now = millis();
uptime_millis += (uint32_t)(now - uptime_last_millis);
uptime_last_millis = now;
uint64_t uptimeMinutes = uptime_millis / 60000ULL;
char uptime[16];
if (uptimeMinutes < 60) {
snprintf(uptime, sizeof(uptime), "%lum", (unsigned long)uptimeMinutes);
} else if (uptimeMinutes < 1440) {
snprintf(uptime, sizeof(uptime), "%luh", (unsigned long)(uptimeMinutes / 60));
} else {
snprintf(uptime, sizeof(uptime), "%lud", (unsigned long)(uptimeMinutes / 1440));
}
display.setTextSize(1);
int uptimeWidth = display.getTextWidth(uptime);
int spaceWidth = display.getTextWidth(" ");
display.setCursor(iconX - uptimeWidth - spaceWidth, iconY); // 1 extra space between uptime and battery icon
display.print(uptime);
// battery outline
display.drawRect(iconX, iconY, iconWidth, iconHeight);