28
28
29
29
#include " NTPUtils.h"
30
30
31
+ /* *************************************************************************************
32
+ * GLOBAL VARIABLES
33
+ **************************************************************************************/
34
+
35
+ #ifdef ARDUINO_ARCH_SAMD
36
+ RTCZero rtc;
37
+ #endif
38
+
31
39
/* *************************************************************************************
32
40
* INTERNAL FUNCTION DECLARATION
33
41
**************************************************************************************/
@@ -46,6 +54,9 @@ static time_t const EPOCH_AT_COMPILE_TIME = cvt_time(__DATE__);
46
54
47
55
TimeService::TimeService ()
48
56
: _con_hdl(nullptr )
57
+ #ifdef ARDUINO_ARCH_SAMD
58
+ , _is_rtc_configured(false )
59
+ #endif
49
60
{
50
61
51
62
}
@@ -57,9 +68,30 @@ TimeService::TimeService()
57
68
void TimeService::begin (ConnectionHandler * con_hdl)
58
69
{
59
70
_con_hdl = con_hdl;
71
+ #ifdef ARDUINO_ARCH_SAMD
72
+ rtc.begin ();
73
+ #endif
60
74
}
61
75
62
76
unsigned long TimeService::getTime ()
77
+ {
78
+ #ifdef ARDUINO_ARCH_SAMD
79
+ if (!_is_rtc_configured)
80
+ {
81
+ rtc.setEpoch (getRemoteTime ());
82
+ _is_rtc_configured = true ;
83
+ }
84
+ return rtc.getEpoch ();
85
+ #else
86
+ return getRemoteTime ();
87
+ #endif
88
+ }
89
+
90
+ /* *************************************************************************************
91
+ * PRIVATE MEMBER FUNCTIONS
92
+ **************************************************************************************/
93
+
94
+ unsigned long TimeService::getRemoteTime ()
63
95
{
64
96
if (_con_hdl == nullptr ) return 0 ;
65
97
@@ -83,10 +115,6 @@ unsigned long TimeService::getTime()
83
115
return 0 ;
84
116
}
85
117
86
- /* *************************************************************************************
87
- * PRIVATE MEMBER FUNCTIONS
88
- **************************************************************************************/
89
-
90
118
bool TimeService::isTimeValid (unsigned long const time)
91
119
{
92
120
return (time >= EPOCH_AT_COMPILE_TIME);
0 commit comments