mirror of
https://github.com/mikecarper/MeshCore.git
synced 2026-09-16 10:02:38 +00:00
Added uptime to companion screen
This commit is contained in:
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user