Add uptime counter in DateTimeController and display it in SystemInfo screen.
This commit is contained in:
parent
baafb96f30
commit
e22c0609b5
|
@ -48,6 +48,7 @@ void DateTime::UpdateTime(uint32_t systickCounter) {
|
||||||
}
|
}
|
||||||
|
|
||||||
currentDateTime += std::chrono::seconds(correctedDelta);
|
currentDateTime += std::chrono::seconds(correctedDelta);
|
||||||
|
uptime += std::chrono::seconds(correctedDelta);
|
||||||
|
|
||||||
auto dp = date::floor<date::days>(currentDateTime);
|
auto dp = date::floor<date::days>(currentDateTime);
|
||||||
auto time = date::make_time(currentDateTime-dp);
|
auto time = date::make_time(currentDateTime-dp);
|
||||||
|
|
|
@ -21,6 +21,7 @@ namespace Pinetime {
|
||||||
uint8_t Seconds() const { return second; }
|
uint8_t Seconds() const { return second; }
|
||||||
|
|
||||||
std::chrono::time_point<std::chrono::system_clock, std::chrono::nanoseconds> CurrentDateTime() const { return currentDateTime; }
|
std::chrono::time_point<std::chrono::system_clock, std::chrono::nanoseconds> CurrentDateTime() const { return currentDateTime; }
|
||||||
|
std::chrono::seconds Uptime() const { return uptime; }
|
||||||
private:
|
private:
|
||||||
uint16_t year = 0;
|
uint16_t year = 0;
|
||||||
Months month = Months::Unknown;
|
Months month = Months::Unknown;
|
||||||
|
@ -32,7 +33,7 @@ namespace Pinetime {
|
||||||
|
|
||||||
uint32_t previousSystickCounter = 0;
|
uint32_t previousSystickCounter = 0;
|
||||||
std::chrono::time_point<std::chrono::system_clock, std::chrono::nanoseconds> currentDateTime;
|
std::chrono::time_point<std::chrono::system_clock, std::chrono::nanoseconds> currentDateTime;
|
||||||
|
std::chrono::seconds uptime {0};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -43,19 +43,32 @@ ScreenList::ScreenList(Pinetime::Applications::DisplayApp *app, Pinetime::Contro
|
||||||
}
|
}
|
||||||
}();
|
}();
|
||||||
|
|
||||||
|
// uptime
|
||||||
|
static constexpr uint32_t secondsInADay = 60*60*24;
|
||||||
|
static constexpr uint32_t secondsInAnHour = 60*60;
|
||||||
|
static constexpr uint32_t secondsInAMinute = 60;
|
||||||
|
uint32_t uptimeSeconds = dateTimeController.Uptime().count();
|
||||||
|
uint32_t uptimeDays = (uptimeSeconds / secondsInADay);
|
||||||
|
uptimeSeconds = uptimeSeconds % secondsInADay;
|
||||||
|
uint32_t uptimeHours = uptimeSeconds / secondsInAnHour;
|
||||||
|
uptimeSeconds = uptimeSeconds % secondsInAnHour;
|
||||||
|
uint32_t uptimeMinutes = uptimeSeconds / secondsInAMinute;
|
||||||
|
uptimeSeconds = uptimeSeconds % secondsInAMinute;
|
||||||
|
// TODO handle more than 100 days of uptime
|
||||||
|
|
||||||
sprintf(t1, "Pinetime\n"
|
sprintf(t1, "Pinetime\n"
|
||||||
"Version:%d.%d.%d\n"
|
"Version:%d.%d.%d\n"
|
||||||
"Build: xx/xx/xxxx\n"
|
"Build: xx/xx/xxxx\n"
|
||||||
"Time: %02d:%02d:%02d\n"
|
"Time: %02d:%02d:%02d\n"
|
||||||
"date: %02d/%02d/%04d\n"
|
"date: %02d/%02d/%04d\n"
|
||||||
"Uptime: xd xxhxx:xx\n"
|
"Uptime: %02lud %02lu:%02lu:%02lu\n"
|
||||||
"Battery: %d%%\n"
|
"Battery: %d%%\n"
|
||||||
"Backlight: %d/3\n"
|
"Backlight: %d/3\n"
|
||||||
"Last reset: %s\n"
|
"Last reset: %s\n"
|
||||||
"BLE MAC: \n AA:BB:CC:DD:EE:FF", Version::Major(), Version::Minor(), Version::Patch(),
|
"BLE MAC: \n AA:BB:CC:DD:EE:FF", Version::Major(), Version::Minor(), Version::Patch(),
|
||||||
dateTimeController.Hours(), dateTimeController.Minutes(), dateTimeController.Seconds(),
|
dateTimeController.Hours(), dateTimeController.Minutes(), dateTimeController.Seconds(),
|
||||||
dateTimeController.Day(), dateTimeController.Month(), dateTimeController.Year(),
|
dateTimeController.Day(), dateTimeController.Month(), dateTimeController.Year(),
|
||||||
|
uptimeDays, uptimeHours, uptimeMinutes, uptimeSeconds,
|
||||||
batteryPercent, brightness, resetReason);
|
batteryPercent, brightness, resetReason);
|
||||||
|
|
||||||
screens.emplace_back(t1);
|
screens.emplace_back(t1);
|
||||||
|
|
Loading…
Reference in a new issue