Arduino-RTC
Real-Time Clock (RTC) library for Arduino
RTC.h
Go to the documentation of this file.
1 
19 #ifndef HARDWARE_SAM_RTC_H
20 #define HARDWARE_SAM_RTC_H
21 
22 #include <time.h>
23 #undef RTC
24 
25 enum {
33 };
34 
35 enum {
40  MAY,
48 };
49 
51 #define ONE_HOUR 3600
52 
54 #define ONE_DEGREE 3600
55 
57 #define ONE_DAY 86400UL
58 
60 #define UNIX_OFFSET 946684800UL
61 
63 #define NTP_OFFSET 3155673600UL
64 
69 #define isotime_r(tm,buf) (strftime (buf, 32, "%F %T", tm), buf)
70 
78 #define set_zone(x) _timezone = x
79 #define get_zone() _timezone
80 
84 class RTC {
85 public:
89  RTC() :
90  m_millis(0),
91  m_time(0)
92  {}
93 
98  bool tick()
99  {
100  uint32_t now = millis();
101  if (now - m_millis < 1000) return (false);
102  m_time += 1;
103  m_millis = now;
104  return (true);
105  }
106 
112  {
113  time_t res = m_time;
114  return (res);
115  }
116 
120  void set_time(time_t time)
121  {
122  m_time = time;
123  }
124 
128  void get_time(struct tm& now)
129  {
130  time_t time = get_time();
131  gmtime_r(&time, &now);
132  }
133 
137  void set_time(struct tm& now)
138  {
139  set_time(mktime(&now) + get_zone());
140  }
141 
142 protected:
144  volatile uint16_t m_millis;
145 
147  volatile time_t m_time;
148 };
149 #endif
RTC()
Definition: RTC.h:89
Definition: RTC.h:32
Definition: RTC.h:44
volatile uint16_t m_millis
Definition: RTC.h:97
void get_time(struct tm &now)
Definition: RTC.h:128
time_t get_time()
Definition: RTC.h:111
Definition: RTC.h:30
time_t mktime(struct tm *timeptr)
Definition: mktime.cpp:35
#define get_zone()
Definition: RTC.h:79
bool tick()
Definition: RTC.h:98
struct tm * gmtime_r(const time_t *timer, struct tm *timeptr)
Definition: gmtime_r.cpp:33
void set_time(struct tm &now)
Definition: RTC.h:137
Definition: RTC.h:28
Definition: RTC.h:31
uint32_t time_t
Definition: time.h:30
Definition: RTC.h:36
Definition: RTC.h:41
Definition: RTC.h:40
Definition: RTC.h:46
Definition: RTC.h:39
Definition: RTC.h:42
Definition: RTC.h:26
void set_time(time_t time)
Definition: RTC.h:120
Definition: time.h:36
Definition: RTC.h:37
Definition: RTC.h:47
Definition: RTC.h:43
Definition: RTC.h:38
Definition: RTC.h:27
volatile time_t m_time
Definition: RTC.h:100
Definition: RTC.h:29
Definition: RTC.h:45
Definition: RTC.h:25