aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/datetime/DateTimeController.h
diff options
context:
space:
mode:
authormark9064 <30447455+mark9064@users.noreply.github.com>2023-12-28 20:56:37 +0000
committerJF <JF002@users.noreply.github.com>2024-06-09 18:34:07 +0200
commita449b272f77ea43733be4b3449f6ef57e6d09a02 (patch)
tree1fadb72dbe5b37198c1fe617c8d283ae5ff46675 /src/components/datetime/DateTimeController.h
parent9e406c70f95c2db93bbf84965c210ee274da1dd2 (diff)
Continuous time updates
Diffstat (limited to 'src/components/datetime/DateTimeController.h')
-rw-r--r--src/components/datetime/DateTimeController.h16
1 files changed, 9 insertions, 7 deletions
diff --git a/src/components/datetime/DateTimeController.h b/src/components/datetime/DateTimeController.h
index f719df7d..5a453f20 100644
--- a/src/components/datetime/DateTimeController.h
+++ b/src/components/datetime/DateTimeController.h
@@ -5,6 +5,8 @@
#include <ctime>
#include <string>
#include "components/settings/Settings.h"
+#include <FreeRTOS.h>
+#include <semphr.h>
namespace Pinetime {
namespace System {
@@ -45,8 +47,6 @@ namespace Pinetime {
*/
void SetTimeZone(int8_t timezone, int8_t dst);
- void UpdateTime(uint32_t systickCounter);
-
uint16_t Year() const {
return 1900 + localTime.tm_year;
}
@@ -124,12 +124,10 @@ namespace Pinetime {
static const char* MonthShortToStringLow(Months month);
static const char* DayOfWeekShortToStringLow(Days day);
- 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();
- std::chrono::time_point<std::chrono::system_clock, std::chrono::nanoseconds> UTCDateTime() const {
- return currentDateTime - std::chrono::seconds((tzOffset + dstOffset) * 15 * 60);
+ std::chrono::time_point<std::chrono::system_clock, std::chrono::nanoseconds> UTCDateTime() {
+ return CurrentDateTime() - std::chrono::seconds((tzOffset + dstOffset) * 15 * 60);
}
std::chrono::seconds Uptime() const {
@@ -141,10 +139,14 @@ namespace Pinetime {
std::string FormattedTime();
private:
+ void UpdateTime(uint32_t systickCounter, bool forceUpdate);
+
std::tm localTime;
int8_t tzOffset = 0;
int8_t dstOffset = 0;
+ SemaphoreHandle_t mutex = nullptr;
+
uint32_t previousSystickCounter = 0;
std::chrono::time_point<std::chrono::system_clock, std::chrono::nanoseconds> currentDateTime;
std::chrono::seconds uptime {0};