LibDriver RX8025T
Loading...
Searching...
No Matches
driver_rx8025t_alarm_test.c
Go to the documentation of this file.
1
36
38#include <stdlib.h>
39
40static rx8025t_handle_t gs_handle;
41static uint8_t gs_flag;
42
48static void a_callback(uint8_t type)
49{
50 switch (type)
51 {
53 {
54 rx8025t_interface_debug_print("rx8025t: irq update.\n");
55
56 break;
57 }
59 {
60 rx8025t_interface_debug_print("rx8025t: irq timer.\n");
61
62 break;
63 }
65 {
66 rx8025t_interface_debug_print("rx8025t: irq alarm.\n");
67 gs_flag = 1;
68
69 break;
70 }
72 {
73 rx8025t_interface_debug_print("rx8025t: irq voltage low.\n");
74
75 break;
76 }
78 {
79 rx8025t_interface_debug_print("rx8025t: irq voltage detection.\n");
80
81 break;
82 }
83 default :
84 {
85 rx8025t_interface_debug_print("rx8025t: unknown code.\n");
86
87 break;
88 }
89 }
90}
91
100{
101 if (rx8025t_irq_handler(&gs_handle) != 0)
102 {
103 return 1;
104 }
105
106 return 0;
107}
108
117{
118 uint8_t res;
119 uint16_t timeout;
120 rx8025t_info_t info;
122
123 /* link functions */
131 DRIVER_RX8025T_LINK_RECEIVE_CALLBACK(&gs_handle, a_callback);
132
133 /* get rx8025t info */
134 res = rx8025t_info(&info);
135 if (res != 0)
136 {
137 rx8025t_interface_debug_print("rx8025t: get info failed.\n");
138
139 return 1;
140 }
141 else
142 {
143 /* print rx8025t info */
144 rx8025t_interface_debug_print("rx8025t: chip is %s.\n", info.chip_name);
145 rx8025t_interface_debug_print("rx8025t: manufacturer is %s.\n", info.manufacturer_name);
146 rx8025t_interface_debug_print("rx8025t: interface is %s.\n", info.interface);
147 rx8025t_interface_debug_print("rx8025t: driver version is %d.%d.\n", info.driver_version / 1000, (info.driver_version % 1000) / 100);
148 rx8025t_interface_debug_print("rx8025t: min supply voltage is %0.1fV.\n", info.supply_voltage_min_v);
149 rx8025t_interface_debug_print("rx8025t: max supply voltage is %0.1fV.\n", info.supply_voltage_max_v);
150 rx8025t_interface_debug_print("rx8025t: max current is %0.2fmA.\n", info.max_current_ma);
151 rx8025t_interface_debug_print("rx8025t: max temperature is %0.1fC.\n", info.temperature_max);
152 rx8025t_interface_debug_print("rx8025t: min temperature is %0.1fC.\n", info.temperature_min);
153 }
154
155 /* start alarm test */
156 rx8025t_interface_debug_print("rx8025t: start alarm test.\n");
157
158 /* init rx8025t */
159 res = rx8025t_init(&gs_handle);
160 if (res != 0)
161 {
162 rx8025t_interface_debug_print("rx8025t: init failed.\n");
163
164 return 1;
165 }
166
167 /* start */
168 res = rx8025t_start(&gs_handle);
169 if (res != 0)
170 {
171 rx8025t_interface_debug_print("rx8025t: start failed.\n");
172 (void)rx8025t_deinit(&gs_handle);
173
174 return 1;
175 }
176
177 /* set alarm day */
179 if (res != 0)
180 {
181 rx8025t_interface_debug_print("rx8025t: set alarm day week failed.\n");
182 (void)rx8025t_deinit(&gs_handle);
183
184 return 1;
185 }
186
187 t.year = rand() % 100 + 2000;
188 t.month = rand() % 12 + 1;
189 t.date = rand() % 20 + 1;
190 t.week = rand() % 7 + 1;
191 t.hour = rand() % 24;
192 t.minute = 0;
193 t.second = 0;
194 res = rx8025t_set_time(&gs_handle, &t);
195 if (res != 0)
196 {
197 rx8025t_interface_debug_print("rx8025t: set time failed.\n");
198 (void)rx8025t_deinit(&gs_handle);
199
200 return 1;
201 }
202 rx8025t_interface_debug_print("rx8025t: set time %04d-%02d-%02d %02d:%02d:%02d %d.\n",
203 t.year, t.month, t.date,
204 t.hour, t.minute, t.second, t.week
205 );
206
207 /* 1 minute alarm */
208 res = rx8025t_set_minute_alarm(&gs_handle, 1);
209 if (res != 0)
210 {
211 rx8025t_interface_debug_print("rx8025t: set minute alarm failed.\n");
212 (void)rx8025t_deinit(&gs_handle);
213
214 return 1;
215 }
216
217 /* disable minute alarm mask */
219 if (res != 0)
220 {
221 rx8025t_interface_debug_print("rx8025t: set minute alarm mask failed.\n");
222 (void)rx8025t_deinit(&gs_handle);
223
224 return 1;
225 }
226
227 /* enable hour alarm mask */
229 if (res != 0)
230 {
231 rx8025t_interface_debug_print("rx8025t: set hour alarm mask failed.\n");
232 (void)rx8025t_deinit(&gs_handle);
233
234 return 1;
235 }
236
237 /* enable week day alarm mask */
239 if (res != 0)
240 {
241 rx8025t_interface_debug_print("rx8025t: set week day alarm mask failed.\n");
242 (void)rx8025t_deinit(&gs_handle);
243
244 return 1;
245 }
246
247 /* set temperature compensation interval */
249 if (res != 0)
250 {
251 rx8025t_interface_debug_print("rx8025t: set temperature compensation interval failed.\n");
252 (void)rx8025t_deinit(&gs_handle);
253
254 return 1;
255 }
256
257 /* second update */
259 if (res != 0)
260 {
261 rx8025t_interface_debug_print("rx8025t: set update select failed.\n");
262 (void)rx8025t_deinit(&gs_handle);
263
264 return 1;
265 }
266
267 /* disable test */
268 res = rx8025t_set_test(&gs_handle, RX8025T_BOOL_FALSE);
269 if (res != 0)
270 {
271 rx8025t_interface_debug_print("rx8025t: set test failed.\n");
272 (void)rx8025t_deinit(&gs_handle);
273
274 return 1;
275 }
276
277 /* disable timer interrupt */
279 if (res != 0)
280 {
281 rx8025t_interface_debug_print("rx8025t: set timer interrupt failed.\n");
282 (void)rx8025t_deinit(&gs_handle);
283
284 return 1;
285 }
286
287 /* enable update interrupt */
289 if (res != 0)
290 {
291 rx8025t_interface_debug_print("rx8025t: set update interrupt failed.\n");
292 (void)rx8025t_deinit(&gs_handle);
293
294 return 1;
295 }
296
297 /* clear flag */
298 res = rx8025t_clear_flag(&gs_handle);
299 if (res != 0)
300 {
301 rx8025t_interface_debug_print("rx8025t: clear flag failed.\n");
302 (void)rx8025t_deinit(&gs_handle);
303
304 return 1;
305 }
306
307 /* enable alarm interrupt */
309 if (res != 0)
310 {
311 rx8025t_interface_debug_print("rx8025t: set alarm interrupt failed.\n");
312 (void)rx8025t_deinit(&gs_handle);
313
314 return 1;
315 }
316
317 /* output */
318 rx8025t_interface_debug_print("rx8025t: 1 min alarm start.\n");
319
320 gs_flag = 0;
321 timeout = 1000 * 65;
322 while (timeout != 0)
323 {
324 /* check flag */
325 if (gs_flag != 0)
326 {
327 break;
328 }
329
330 /* timeout-- */
331 timeout--;
332
333 /* delay 1ms */
335 }
336
337 /* check timeout */
338 if (timeout != 0)
339 {
340 rx8025t_interface_debug_print("rx8025t: end.\n");
341 }
342 else
343 {
344 rx8025t_interface_debug_print("rx8025t: timeout.\n");
345 }
346
347 /* finish alarm test */
348 rx8025t_interface_debug_print("rx8025t: finish alarm test.\n");
350 (void)rx8025t_deinit(&gs_handle);
351
352 return 0;
353}
driver rx8025t alarm test 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_info(rx8025t_info_t *info)
get chip's information
uint8_t rx8025t_set_minute_alarm_mask(rx8025t_handle_t *handle, rx8025t_bool_t enable)
enable or disable minute alarm mask
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
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
uint8_t rx8025t_set_hour_alarm_mask(rx8025t_handle_t *handle, rx8025t_bool_t enable)
enable or disable hour alarm mask
uint8_t rx8025t_set_week_day_alarm_mask(rx8025t_handle_t *handle, rx8025t_bool_t enable)
enable or disable week day alarm mask
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_set_alarm_day_week(rx8025t_handle_t *handle, rx8025t_alarm_t alarm)
set alarm day week
uint8_t rx8025t_irq_handler(rx8025t_handle_t *handle)
irq handler
uint8_t rx8025t_set_minute_alarm(rx8025t_handle_t *handle, uint8_t minute)
set minute alarm
struct rx8025t_handle_s rx8025t_handle_t
rx8025t handle structure definition
uint8_t rx8025t_deinit(rx8025t_handle_t *handle)
close the chip
struct rx8025t_info_s rx8025t_info_t
rx8025t information structure definition
@ RX8025T_UPDATE_SELECT_SECOND
@ RX8025T_ALARM_DAY
@ RX8025T_STATUS_TIMER
@ RX8025T_STATUS_ALARM
@ RX8025T_STATUS_UPDATE
@ RX8025T_STATUS_VOLTAGE_DETECTION
@ RX8025T_STATUS_VOLTAGE_LOW
@ RX8025T_BOOL_TRUE
@ RX8025T_BOOL_FALSE
@ RX8025T_TEMPERATURE_COMPENSATION_INTERVAL_0P5_SECOND
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
uint8_t rx8025t_alarm_test(void)
alarm test
uint8_t rx8025t_alarm_test_irq_handler(void)
alarm test irq
uint32_t driver_version
char manufacturer_name[32]