Ersa Wearable Platform
Embedded smartwatch firmware and application framework
Loading...
Searching...
No Matches
rtc.h
Go to the documentation of this file.
1#pragma once
2
3#include "ersa/common/types.h"
4#include <stdint.h>
5
6namespace ersa {
7namespace hal {
8
15struct TimePoint {
16 uint16_t year{2026};
17 uint8_t month{9};
18 uint8_t day{28};
19 uint8_t hour{0};
20 uint8_t minute{0};
21 uint8_t second{0};
22 uint8_t dayOfWeek{1}; // 0 = Sunday, 1 = Monday, ... 6 = Saturday
23 uint32_t epoch{0};
24
25 constexpr TimePoint() = default;
26 constexpr TimePoint(uint16_t y, uint8_t m, uint8_t d, uint8_t h, uint8_t min, uint8_t s, uint8_t dow = 0, uint32_t ep = 0)
27 : year(y), month(m), day(d), hour(h), minute(min), second(s), dayOfWeek(dow), epoch(ep) {}
28};
29
39
41class IRtc {
42public:
43 virtual ~IRtc() = default;
44
46 virtual Result<void> init() = 0;
48 virtual TimePoint now() = 0;
50 virtual Result<void> adjust(const TimePoint& time) = 0;
52 virtual Result<void> setEpoch(uint32_t epochSeconds) = 0;
54 virtual bool isHealthy() const = 0;
57 RtcDiagnostics result{};
58 result.time = now();
59 result.chipTime = result.time;
60 result.hardwareReadable = isHealthy();
61 return result;
62 }
64 virtual void resync() {}
65};
66
67} // namespace hal
68} // namespace ersa
Definition types.h:52
Definition rtc.h:41
virtual Result< void > adjust(const TimePoint &time)=0
virtual TimePoint now()=0
virtual ~IRtc()=default
virtual void resync()
Definition rtc.h:64
virtual Result< void > setEpoch(uint32_t epochSeconds)=0
virtual RtcDiagnostics diagnostics()
Definition rtc.h:56
virtual Result< void > init()=0
virtual bool isHealthy() const =0
Definition application.h:10
Definition rtc.h:31
TimePoint time
Definition rtc.h:32
bool driftMeasured
Definition rtc.h:36
bool oscillatorStopped
Definition rtc.h:35
int32_t driftSeconds
Definition rtc.h:37
bool hardwareReadable
Definition rtc.h:34
TimePoint chipTime
Definition rtc.h:33
Definition rtc.h:15
uint8_t day
Definition rtc.h:18
uint8_t dayOfWeek
Definition rtc.h:22
uint32_t epoch
Definition rtc.h:23
uint8_t second
Definition rtc.h:21
uint8_t hour
Definition rtc.h:19
uint8_t minute
Definition rtc.h:20
constexpr TimePoint()=default
constexpr TimePoint(uint16_t y, uint8_t m, uint8_t d, uint8_t h, uint8_t min, uint8_t s, uint8_t dow=0, uint32_t ep=0)
Definition rtc.h:26
uint8_t month
Definition rtc.h:17
uint16_t year
Definition rtc.h:16