LibDriver RX8025T
Loading...
Searching...
No Matches
driver_rx8025t_timer.c
Go to the documentation of this file.
1
36
38
39static rx8025t_handle_t gs_handle;
40static int8_t gs_time_zone = 0;
41
50{
51 if (rx8025t_irq_handler(&gs_handle) != 0)
52 {
53 return 1;
54 }
55
56 return 0;
57}
58
67uint8_t rx8025t_timer_init(void (*callback)(uint8_t type))
68{
69 uint8_t res;
70
71 /* link functions */
79 DRIVER_RX8025T_LINK_RECEIVE_CALLBACK(&gs_handle, callback);
80
81 /* init rx8025t */
82 res = rx8025t_init(&gs_handle);
83 if (res != 0)
84 {
85 rx8025t_interface_debug_print("rx8025t: init failed.\n");
86
87 return 1;
88 }
89
90 /* start the clock */
91 res = rx8025t_start(&gs_handle);
92 if (res != 0)
93 {
94 rx8025t_interface_debug_print("rx8025t: start failed.\n");
95 (void)rx8025t_deinit(&gs_handle);
96
97 return 1;
98 }
99
100 /* set default temperature compensation interval */
102 if (res != 0)
103 {
104 rx8025t_interface_debug_print("rx8025t: set temperature compensation interval failed.\n");
105 (void)rx8025t_deinit(&gs_handle);
106
107 return 1;
108 }
109
110 /* set default update interrupt */
112 if (res != 0)
113 {
114 rx8025t_interface_debug_print("rx8025t: set update interrupt failed.\n");
115 (void)rx8025t_deinit(&gs_handle);
116
117 return 1;
118 }
119
120 /* set default update select */
122 if (res != 0)
123 {
124 rx8025t_interface_debug_print("rx8025t: set update select failed.\n");
125 (void)rx8025t_deinit(&gs_handle);
126
127 return 1;
128 }
129
130 /* enable timer interrupt */
132 if (res != 0)
133 {
134 rx8025t_interface_debug_print("rx8025t: set timer interrupt failed.\n");
135 (void)rx8025t_deinit(&gs_handle);
136
137 return 1;
138 }
139
140 /* disable alarm interrupt */
142 if (res != 0)
143 {
144 rx8025t_interface_debug_print("rx8025t: set alarm interrupt failed.\n");
145 (void)rx8025t_deinit(&gs_handle);
146
147 return 1;
148 }
149
150 /* clear flag */
151 res = rx8025t_clear_flag(&gs_handle);
152 if (res != 0)
153 {
154 rx8025t_interface_debug_print("rx8025t: clear flag failed.\n");
155 (void)rx8025t_deinit(&gs_handle);
156
157 return 1;
158 }
159
160 /* disable test */
161 res = rx8025t_set_test(&gs_handle, RX8025T_BOOL_FALSE);
162 if (res != 0)
163 {
164 rx8025t_interface_debug_print("rx8025t: set test failed.\n");
165 (void)rx8025t_deinit(&gs_handle);
166
167 return 1;
168 }
169
170 return 0;
171}
172
182uint8_t rx8025t_timer_config(rx8025t_timer_clock_t clk, uint16_t counter)
183{
184 uint8_t res;
185
186 /* set timer clock */
187 res = rx8025t_set_timer_clock(&gs_handle, clk);
188 if (res != 0)
189 {
190 return 1;
191 }
192
193 /* set timer counter */
194 res = rx8025t_set_timer_counter(&gs_handle, counter);
195 if (res != 0)
196 {
197 return 1;
198 }
199
200 return 0;
201}
202
211{
212 uint8_t res;
213
214 /* enable timer */
215 res = rx8025t_set_timer(&gs_handle, RX8025T_BOOL_TRUE);
216 if (res != 0)
217 {
218 return 1;
219 }
220
221 return 0;
222}
223
232{
233 uint8_t res;
234
235 /* disable timer */
236 res = rx8025t_set_timer(&gs_handle, RX8025T_BOOL_FALSE);
237 if (res != 0)
238 {
239 return 1;
240 }
241
242 return 0;
243}
244
253{
254 if (rx8025t_deinit(&gs_handle) != 0)
255 {
256 return 1;
257 }
258
259 return 0;
260}
261
271{
272 /* set time */
273 if (rx8025t_set_time(&gs_handle, t) != 0)
274 {
275 return 1;
276 }
277
278 return 0;
279}
280
289uint8_t rx8025t_timer_set_timestamp(time_t timestamp)
290{
292 struct tm *timeptr;
293
294 /* convert times */
295 timestamp += (time_t)(gs_time_zone * 3600);
296 timeptr = localtime(&timestamp);
297 t.date = (uint8_t)timeptr->tm_mday;
298 t.hour = (uint8_t)timeptr->tm_hour;
299 t.minute = (uint8_t)timeptr->tm_min;
300 t.month = (uint8_t)timeptr->tm_mon + 1;
301 t.second = (uint8_t)timeptr->tm_sec;
302 if (timeptr->tm_wday == 0)
303 {
304 t.week = 7;
305 }
306 else
307 {
308 t.week = (uint8_t)timeptr->tm_wday;
309 }
310 t.year = (uint16_t)(timeptr->tm_year + 1900);
311
312 /* set time */
313 if (rx8025t_set_time(&gs_handle, &t) != 0)
314 {
315 return 1;
316 }
317
318 return 0;
319}
320
329{
330 gs_time_zone = zone;
331
332 return 0;
333}
334
344{
345 /* get time */
346 if (rx8025t_get_time(&gs_handle, t) != 0)
347 {
348 return 1;
349 }
350
351 return 0;
352}
353
362uint8_t rx8025t_timer_get_timestamp(time_t *timestamp)
363{
365 struct tm timeptr;
366
367 /* get time */
368 if (rx8025t_get_time(&gs_handle, &t) != 0)
369 {
370 return 1;
371 }
372 timeptr.tm_year = t.year - 1900;
373 timeptr.tm_mon = t.month - 1;
374 timeptr.tm_wday = t.week;
375 timeptr.tm_mday = t.date;
376 timeptr.tm_hour = t.hour;
377 timeptr.tm_min = t.minute;
378 timeptr.tm_sec = t.second;
379
380 /* make time */
381 *timestamp = mktime(&timeptr) - gs_time_zone * 3600;
382
383 return 0;
384}
385
394{
395 *zone = gs_time_zone;
396
397 return 0;
398}
399
409uint8_t rx8025t_timer_get_ascii_time(char *buf, uint8_t len)
410{
412
413 /* get time */
414 if (rx8025t_get_time(&gs_handle, &t) != 0)
415 {
416 return 1;
417 }
418
419 (void)snprintf(buf, len, "%04d-%02d-%02d %02d:%02d:%02d %d.\n", t.year, t.month, t.date, t.hour, t.minute, t.second, t.week);
420
421 return 0;
422}
423
432uint8_t rx8025t_timer_read_ram(uint8_t *data)
433{
434 if (rx8025t_get_ram(&gs_handle, data) != 0)
435 {
436 return 1;
437 }
438
439 return 0;
440}
441
450uint8_t rx8025t_timer_write_ram(uint8_t data)
451{
452 if (rx8025t_set_ram(&gs_handle, data) != 0)
453 {
454 return 1;
455 }
456
457 return 0;
458}
driver rx8025t timer header file
uint8_t rx8025t_set_time(rx8025t_handle_t *handle, rx8025t_time_t *t)
set the current time
uint8_t rx8025t_set_update_interrupt(rx8025t_handle_t *handle, rx8025t_bool_t enable)
enable or disable update interrupt
uint8_t rx8025t_set_timer_counter(rx8025t_handle_t *handle, uint16_t counter)
set timer counter
uint8_t rx8025t_set_ram(rx8025t_handle_t *handle, uint8_t data)
set ram
uint8_t rx8025t_set_timer_interrupt(rx8025t_handle_t *handle, rx8025t_bool_t enable)
enable or disable timer interrupt
uint8_t rx8025t_set_alarm_interrupt(rx8025t_handle_t *handle, rx8025t_bool_t enable)
enable or disable alarm interrupt
uint8_t rx8025t_start(rx8025t_handle_t *handle)
start
uint8_t rx8025t_init(rx8025t_handle_t *handle)
initialize the chip
uint8_t rx8025t_clear_flag(rx8025t_handle_t *handle)
clear flag
uint8_t rx8025t_set_update_select(rx8025t_handle_t *handle, rx8025t_update_select_t select)
set update select
uint8_t rx8025t_get_ram(rx8025t_handle_t *handle, uint8_t *data)
get ram
struct rx8025t_time_s rx8025t_time_t
rx8025t time structure definition
uint8_t rx8025t_set_test(rx8025t_handle_t *handle, rx8025t_bool_t enable)
enable or disable test
rx8025t_timer_clock_t
rx8025t timer clock enumeration definition
uint8_t rx8025t_set_timer_clock(rx8025t_handle_t *handle, rx8025t_timer_clock_t clk)
set timer clock
uint8_t rx8025t_get_time(rx8025t_handle_t *handle, rx8025t_time_t *t)
get the current time
uint8_t rx8025t_set_temperature_compensation_interval(rx8025t_handle_t *handle, rx8025t_temperature_compensation_interval_t interval)
set the temperature compensation interval
uint8_t rx8025t_irq_handler(rx8025t_handle_t *handle)
irq handler
uint8_t rx8025t_set_timer(rx8025t_handle_t *handle, rx8025t_bool_t enable)
enable or disable timer
struct rx8025t_handle_s rx8025t_handle_t
rx8025t handle structure definition
uint8_t rx8025t_deinit(rx8025t_handle_t *handle)
close the chip
@ RX8025T_BOOL_TRUE
@ RX8025T_BOOL_FALSE
uint8_t rx8025t_timer_init(void(*callback)(uint8_t type))
timer example init
uint8_t rx8025t_timer_irq_handler(void)
timer irq
uint8_t rx8025t_timer_set_time(rx8025t_time_t *t)
timer example set the time
uint8_t rx8025t_timer_set_timestamp_time_zone(int8_t zone)
timer example set the local time zone
uint8_t rx8025t_timer_get_timestamp(time_t *timestamp)
timer example get the time in a unix timestamp
uint8_t rx8025t_timer_stop(void)
timer example stop
uint8_t rx8025t_timer_read_ram(uint8_t *data)
timer example read ram
uint8_t rx8025t_timer_config(rx8025t_timer_clock_t clk, uint16_t counter)
timer example config
#define RX8025T_TIMER_DEFAULT_UPDATE_SELECT
uint8_t rx8025t_timer_deinit(void)
timer example deinit
#define RX8025T_TIMER_DEFAULT_INTERRUPT_UPDATE
uint8_t rx8025t_timer_get_time(rx8025t_time_t *t)
timer example get the time
uint8_t rx8025t_timer_set_timestamp(time_t timestamp)
timer example set the time by a unix timestamp
uint8_t rx8025t_timer_start(void)
timer example start
#define RX8025T_TIMER_DEFAULT_TEMPERATURE_COMPENSATION_INTERVAL
rx8025t timer example default definition
uint8_t rx8025t_timer_write_ram(uint8_t data)
timer example write ram
uint8_t rx8025t_timer_get_ascii_time(char *buf, uint8_t len)
timer example get the ascii time
uint8_t rx8025t_timer_get_timestamp_time_zone(int8_t *zone)
timer example get the local time zone
uint8_t rx8025t_interface_iic_init(void)
interface iic bus init
uint8_t rx8025t_interface_iic_deinit(void)
interface iic bus deinit
uint8_t rx8025t_interface_iic_read(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus read
void rx8025t_interface_debug_print(const char *const fmt,...)
interface print format data
uint8_t rx8025t_interface_iic_write(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus write
void rx8025t_interface_delay_ms(uint32_t ms)
interface delay ms