Ersa Wearable Platform
Embedded smartwatch firmware and application framework
Loading...
Searching...
No Matches
time_service.h
Go to the documentation of this file.
1#pragma once
2
3#include "ersa/common/types.h"
4#include "ersa/hal/rtc.h"
6#include <stdint.h>
7
8namespace ersa {
9namespace services {
10
21public:
24
31 void tick(uint32_t currentUptimeMs);
32
40 Result<void> setEpoch(uint32_t epochSeconds);
47 bool submitTime(events::TimeSource source, uint32_t epochSeconds);
50
52 bool isRtcHealthy() const;
57 bool hasSynchronizedTime() const;
59 uint32_t lastMinute() const;
60
62 void setTimezoneOffset(int16_t offsetMinutes);
64 int16_t getTimezoneOffset() const;
65
67 static TimeService& instance();
72 static void setInstance(TimeService* instance);
73
74private:
77 int16_t tzOffsetMin_{0};
78 uint32_t lastMinute_{UINT32_MAX};
79 uint32_t lastPollMs_{0};
82 static void onTimeSyncEvent(const events::Event& event, void* userData);
83};
84
85} // namespace services
86} // namespace ersa
Definition types.h:52
Definition event_bus.h:48
static EventBus & instance()
Definition event_bus.cpp:10
Definition rtc.h:41
Definition time_service.h:20
hal::TimePoint now()
Definition time_service.cpp:107
void tick(uint32_t currentUptimeMs)
Definition time_service.cpp:83
Result< void > adjust(const hal::TimePoint &time)
Definition time_service.cpp:116
uint32_t lastMinute_
Definition time_service.h:78
events::SubscriptionId timeSyncSubscription_
Definition time_service.h:81
bool hasSynchronizedTime() const
Definition time_service.cpp:130
Result< void > setEpoch(uint32_t epochSeconds)
Definition time_service.cpp:111
bool isRtcHealthy() const
Definition time_service.cpp:126
int16_t tzOffsetMin_
Definition time_service.h:77
int16_t getTimezoneOffset() const
Definition time_service.cpp:142
Result< void > init()
Definition time_service.cpp:22
static void onTimeSyncEvent(const events::Event &event, void *userData)
Definition time_service.cpp:32
events::EventBus & bus_
Definition time_service.h:76
static TimeService & instance()
Definition time_service.cpp:11
bool submitTime(events::TimeSource source, uint32_t epochSeconds)
Definition time_service.cpp:38
uint32_t lastMinute() const
Definition time_service.cpp:134
uint32_t lastPollMs_
Definition time_service.h:79
static void setInstance(TimeService *instance)
Definition time_service.cpp:15
events::TimeSource selectedSource_
Definition time_service.h:80
hal::IRtc & rtc_
Definition time_service.h:75
void setTimezoneOffset(int16_t offsetMinutes)
Definition time_service.cpp:138
TimeSource
Definition event.h:63
uint16_t SubscriptionId
Definition event_bus.h:10
Definition application.h:10
Definition event.h:134
Definition rtc.h:15