Ersa Wearable Platform
Embedded smartwatch firmware and application framework
Loading...
Searching...
No Matches
include
ersa
hal
rtc.h
Go to the documentation of this file.
1
#pragma once
2
3
#include "
ersa/common/types.h
"
4
#include <stdint.h>
5
6
namespace
ersa
{
7
namespace
hal {
8
15
struct
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
31
struct
RtcDiagnostics
{
32
TimePoint
time
{};
33
TimePoint
chipTime
{};
34
bool
hardwareReadable
{
false
};
35
bool
oscillatorStopped
{
false
};
36
bool
driftMeasured
{
false
};
37
int32_t
driftSeconds
{0};
38
};
39
41
class
IRtc
{
42
public
:
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;
56
virtual
RtcDiagnostics
diagnostics
() {
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
ersa::Result
Definition
types.h:52
ersa::hal::IRtc
Definition
rtc.h:41
ersa::hal::IRtc::adjust
virtual Result< void > adjust(const TimePoint &time)=0
ersa::hal::IRtc::now
virtual TimePoint now()=0
ersa::hal::IRtc::~IRtc
virtual ~IRtc()=default
ersa::hal::IRtc::resync
virtual void resync()
Definition
rtc.h:64
ersa::hal::IRtc::setEpoch
virtual Result< void > setEpoch(uint32_t epochSeconds)=0
ersa::hal::IRtc::diagnostics
virtual RtcDiagnostics diagnostics()
Definition
rtc.h:56
ersa::hal::IRtc::init
virtual Result< void > init()=0
ersa::hal::IRtc::isHealthy
virtual bool isHealthy() const =0
ersa
Definition
application.h:10
ersa::hal::RtcDiagnostics
Definition
rtc.h:31
ersa::hal::RtcDiagnostics::time
TimePoint time
Definition
rtc.h:32
ersa::hal::RtcDiagnostics::driftMeasured
bool driftMeasured
Definition
rtc.h:36
ersa::hal::RtcDiagnostics::oscillatorStopped
bool oscillatorStopped
Definition
rtc.h:35
ersa::hal::RtcDiagnostics::driftSeconds
int32_t driftSeconds
Definition
rtc.h:37
ersa::hal::RtcDiagnostics::hardwareReadable
bool hardwareReadable
Definition
rtc.h:34
ersa::hal::RtcDiagnostics::chipTime
TimePoint chipTime
Definition
rtc.h:33
ersa::hal::TimePoint
Definition
rtc.h:15
ersa::hal::TimePoint::day
uint8_t day
Definition
rtc.h:18
ersa::hal::TimePoint::dayOfWeek
uint8_t dayOfWeek
Definition
rtc.h:22
ersa::hal::TimePoint::epoch
uint32_t epoch
Definition
rtc.h:23
ersa::hal::TimePoint::second
uint8_t second
Definition
rtc.h:21
ersa::hal::TimePoint::hour
uint8_t hour
Definition
rtc.h:19
ersa::hal::TimePoint::minute
uint8_t minute
Definition
rtc.h:20
ersa::hal::TimePoint::TimePoint
constexpr TimePoint()=default
ersa::hal::TimePoint::TimePoint
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
ersa::hal::TimePoint::month
uint8_t month
Definition
rtc.h:17
ersa::hal::TimePoint::year
uint16_t year
Definition
rtc.h:16
types.h
Generated by
1.9.8