LibDriver PCF8563
Loading...
Searching...
No Matches
driver_pcf8563_register_test.c
Go to the documentation of this file.
1
36
38#include <stdlib.h>
39
40static pcf8563_handle_t gs_handle;
41
50{
51 uint8_t res;
52 uint8_t reg;
53 uint8_t reg_check;
54 pcf8563_info_t info;
55 pcf8563_bool_t enable;
56 pcf8563_time_t time_in;
57 pcf8563_time_t time_out;
61
62 /* link functions */
71
72 /* get pcf8563 info */
73 res = pcf8563_info(&info);
74 if (res != 0)
75 {
76 pcf8563_interface_debug_print("pcf8563: get info failed.\n");
77
78 return 1;
79 }
80 else
81 {
82 /* print pcf8563 info */
83 pcf8563_interface_debug_print("pcf8563: chip is %s.\n", info.chip_name);
84 pcf8563_interface_debug_print("pcf8563: manufacturer is %s.\n", info.manufacturer_name);
85 pcf8563_interface_debug_print("pcf8563: interface is %s.\n", info.interface);
86 pcf8563_interface_debug_print("pcf8563: driver version is %d.%d.\n", info.driver_version / 1000, (info.driver_version % 1000) / 100);
87 pcf8563_interface_debug_print("pcf8563: min supply voltage is %0.1fV.\n", info.supply_voltage_min_v);
88 pcf8563_interface_debug_print("pcf8563: max supply voltage is %0.1fV.\n", info.supply_voltage_max_v);
89 pcf8563_interface_debug_print("pcf8563: max current is %0.2fmA.\n", info.max_current_ma);
90 pcf8563_interface_debug_print("pcf8563: max temperature is %0.1fC.\n", info.temperature_max);
91 pcf8563_interface_debug_print("pcf8563: min temperature is %0.1fC.\n", info.temperature_min);
92 }
93
94 /* start register test */
95 pcf8563_interface_debug_print("pcf8563: start register test.\n");
96
97 /* init pcf8563 */
98 res = pcf8563_init(&gs_handle);
99 if (res != 0)
100 {
101 pcf8563_interface_debug_print("pcf8563: init failed.\n");
102
103 return 1;
104 }
105
106 /* pcf8563_set_rtc_stop/pcf8563_get_rtc_stop test */
107 pcf8563_interface_debug_print("pcf8563: pcf8563_set_rtc_stop/pcf8563_get_rtc_stop test.\n");
108
109 /* enable rtc stop */
110 res = pcf8563_set_rtc_stop(&gs_handle, PCF8563_BOOL_TRUE);
111 if (res != 0)
112 {
113 pcf8563_interface_debug_print("pcf8563: set rtc stop failed.\n");
114 (void)pcf8563_deinit(&gs_handle);
115
116 return 1;
117 }
118 pcf8563_interface_debug_print("pcf8563: enable rtc stop.\n");
119 res = pcf8563_get_rtc_stop(&gs_handle, &enable);
120 if (res != 0)
121 {
122 pcf8563_interface_debug_print("pcf8563: get rtc stop failed.\n");
123 (void)pcf8563_deinit(&gs_handle);
124
125 return 1;
126 }
127 pcf8563_interface_debug_print("pcf8563: check rtc stop %s.\n", (enable == PCF8563_BOOL_TRUE) ? "ok" : "error");
128
129 /* disable rtc stop */
130 res = pcf8563_set_rtc_stop(&gs_handle, PCF8563_BOOL_FALSE);
131 if (res != 0)
132 {
133 pcf8563_interface_debug_print("pcf8563: set rtc stop failed.\n");
134 (void)pcf8563_deinit(&gs_handle);
135
136 return 1;
137 }
138 pcf8563_interface_debug_print("pcf8563: disable rtc stop.\n");
139 res = pcf8563_get_rtc_stop(&gs_handle, &enable);
140 if (res != 0)
141 {
142 pcf8563_interface_debug_print("pcf8563: get rtc stop failed.\n");
143 (void)pcf8563_deinit(&gs_handle);
144
145 return 1;
146 }
147 pcf8563_interface_debug_print("pcf8563: check rtc stop %s.\n", (enable == PCF8563_BOOL_FALSE) ? "ok" : "error");
148
149 /* pcf8563_set_test_mode/pcf8563_get_test_mode test */
150 pcf8563_interface_debug_print("pcf8563: pcf8563_set_test_mode/pcf8563_get_test_mode test.\n");
151
152 /* enable test mode */
153 res = pcf8563_set_test_mode(&gs_handle, PCF8563_BOOL_TRUE);
154 if (res != 0)
155 {
156 pcf8563_interface_debug_print("pcf8563: set test mode failed.\n");
157 (void)pcf8563_deinit(&gs_handle);
158
159 return 1;
160 }
161 pcf8563_interface_debug_print("pcf8563: enable test mode.\n");
162 res = pcf8563_get_test_mode(&gs_handle, &enable);
163 if (res != 0)
164 {
165 pcf8563_interface_debug_print("pcf8563: get test mode failed.\n");
166 (void)pcf8563_deinit(&gs_handle);
167
168 return 1;
169 }
170 pcf8563_interface_debug_print("pcf8563: check test mode %s.\n", (enable == PCF8563_BOOL_TRUE) ? "ok" : "error");
171
172 /* disable test mode */
173 res = pcf8563_set_test_mode(&gs_handle, PCF8563_BOOL_FALSE);
174 if (res != 0)
175 {
176 pcf8563_interface_debug_print("pcf8563: set test mode failed.\n");
177 (void)pcf8563_deinit(&gs_handle);
178
179 return 1;
180 }
181 pcf8563_interface_debug_print("pcf8563: disable test mode.\n");
182 res = pcf8563_get_test_mode(&gs_handle, &enable);
183 if (res != 0)
184 {
185 pcf8563_interface_debug_print("pcf8563: get test mode failed.\n");
186 (void)pcf8563_deinit(&gs_handle);
187
188 return 1;
189 }
190 pcf8563_interface_debug_print("pcf8563: check test mode %s.\n", (enable == PCF8563_BOOL_FALSE) ? "ok" : "error");
191
192 /* pcf8563_set_power_on_reset/pcf8563_get_power_on_reset test */
193 pcf8563_interface_debug_print("pcf8563: pcf8563_set_power_on_reset/pcf8563_get_power_on_reset test.\n");
194
195 /* enable power on reset */
197 if (res != 0)
198 {
199 pcf8563_interface_debug_print("pcf8563: set power on reset failed.\n");
200 (void)pcf8563_deinit(&gs_handle);
201
202 return 1;
203 }
204 pcf8563_interface_debug_print("pcf8563: enable power on reset.\n");
205 res = pcf8563_get_power_on_reset(&gs_handle, &enable);
206 if (res != 0)
207 {
208 pcf8563_interface_debug_print("pcf8563: get power on reset failed.\n");
209 (void)pcf8563_deinit(&gs_handle);
210
211 return 1;
212 }
213 pcf8563_interface_debug_print("pcf8563: check power on reset %s.\n", (enable == PCF8563_BOOL_TRUE) ? "ok" : "error");
214
215 /* disable power on reset */
217 if (res != 0)
218 {
219 pcf8563_interface_debug_print("pcf8563: set power on reset failed.\n");
220 (void)pcf8563_deinit(&gs_handle);
221
222 return 1;
223 }
224 pcf8563_interface_debug_print("pcf8563: disable power on reset.\n");
225 res = pcf8563_get_power_on_reset(&gs_handle, &enable);
226 if (res != 0)
227 {
228 pcf8563_interface_debug_print("pcf8563: get power on reset failed.\n");
229 (void)pcf8563_deinit(&gs_handle);
230
231 return 1;
232 }
233 pcf8563_interface_debug_print("pcf8563: check power on reset %s.\n", (enable == PCF8563_BOOL_FALSE) ? "ok" : "error");
234
235 /* pcf8563_set_time/pcf8563_get_time test */
236 pcf8563_interface_debug_print("pcf8563: pcf8563_set_time/pcf8563_get_time test.\n");
237
238 /* set time */
239 time_in.year = rand() % 100 + 2000;
240 time_in.month = rand() % 12 + 1;
241 time_in.date = rand() % 20 + 1;
242 time_in.week = rand() % 7;
243 time_in.hour = rand() % 11 + 1;
244 time_in.minute = rand() % 60;
245 time_in.second = rand() % 60;
246 res = pcf8563_set_time(&gs_handle, &time_in);
247 if (res != 0)
248 {
249 pcf8563_interface_debug_print("pcf8563: set time failed.\n");
250 (void)pcf8563_deinit(&gs_handle);
251
252 return 1;
253 }
254 pcf8563_interface_debug_print("pcf8563: set time %04d-%02d-%02d %02d:%02d:%02d %d.\n",
255 time_in.year, time_in.month, time_in.date,
256 time_in.hour, time_in.minute, time_in.second, time_in.week
257 );
258 res = pcf8563_get_time(&gs_handle, &time_out);
259 if (res != 0)
260 {
261 pcf8563_interface_debug_print("pcf8563: get time failed.\n");
262 (void)pcf8563_deinit(&gs_handle);
263
264 return 1;
265 }
266 pcf8563_interface_debug_print("pcf8563: check time %s.\n", (memcmp((uint8_t *)&time_in, (uint8_t *)&time_out, sizeof(pcf8563_time_t)) == 0) ? "ok" : "error");
267
268 /* pcf8563_set_minute_alarm_enable/pcf8563_get_minute_alarm_enable test */
269 pcf8563_interface_debug_print("pcf8563: pcf8563_set_minute_alarm_enable/pcf8563_get_minute_alarm_enable test.\n");
270
271 /* enable minute alarm */
273 if (res != 0)
274 {
275 pcf8563_interface_debug_print("pcf8563: set minute alarm enable failed.\n");
276 (void)pcf8563_deinit(&gs_handle);
277
278 return 1;
279 }
280 pcf8563_interface_debug_print("pcf8563: enable minute alarm.\n");
281 res = pcf8563_get_minute_alarm_enable(&gs_handle, &enable);
282 if (res != 0)
283 {
284 pcf8563_interface_debug_print("pcf8563: get minute alarm enable failed.\n");
285 (void)pcf8563_deinit(&gs_handle);
286
287 return 1;
288 }
289 pcf8563_interface_debug_print("pcf8563: check minute alarm enable %s.\n", (enable == PCF8563_BOOL_TRUE) ? "ok" : "error");
290
291 /* disable minute alarm */
293 if (res != 0)
294 {
295 pcf8563_interface_debug_print("pcf8563: set minute alarm enable failed.\n");
296 (void)pcf8563_deinit(&gs_handle);
297
298 return 1;
299 }
300 pcf8563_interface_debug_print("pcf8563: disable minute alarm.\n");
301 res = pcf8563_get_minute_alarm_enable(&gs_handle, &enable);
302 if (res != 0)
303 {
304 pcf8563_interface_debug_print("pcf8563: get minute alarm enable failed.\n");
305 (void)pcf8563_deinit(&gs_handle);
306
307 return 1;
308 }
309 pcf8563_interface_debug_print("pcf8563: check minute alarm enable %s.\n", (enable == PCF8563_BOOL_FALSE) ? "ok" : "error");
310
311 /* pcf8563_set_minute_alarm/pcf8563_get_minute_alarm test */
312 pcf8563_interface_debug_print("pcf8563: pcf8563_set_minute_alarm/pcf8563_get_minute_alarm test.\n");
313
314 reg = rand() % 60 + 1;
315 res = pcf8563_set_minute_alarm(&gs_handle, reg);
316 if (res != 0)
317 {
318 pcf8563_interface_debug_print("pcf8563: set minute alarm failed.\n");
319 (void)pcf8563_deinit(&gs_handle);
320
321 return 1;
322 }
323 pcf8563_interface_debug_print("pcf8563: set minute alarm %d.\n", reg);
324 res = pcf8563_get_minute_alarm(&gs_handle, &reg_check);
325 if (res != 0)
326 {
327 pcf8563_interface_debug_print("pcf8563: get minute alarm failed.\n");
328 (void)pcf8563_deinit(&gs_handle);
329
330 return 1;
331 }
332 pcf8563_interface_debug_print("pcf8563: check minute alarm %s.\n", (reg == reg_check) ? "ok" : "error");
333
334 /* pcf8563_set_hour_alarm_enable/pcf8563_get_hour_alarm_enable test */
335 pcf8563_interface_debug_print("pcf8563: pcf8563_set_hour_alarm_enable/pcf8563_get_hour_alarm_enable test.\n");
336
337 /* enable hour alarm */
339 if (res != 0)
340 {
341 pcf8563_interface_debug_print("pcf8563: set hour alarm enable failed.\n");
342 (void)pcf8563_deinit(&gs_handle);
343
344 return 1;
345 }
346 pcf8563_interface_debug_print("pcf8563: enable hour alarm.\n");
347 res = pcf8563_get_hour_alarm_enable(&gs_handle, &enable);
348 if (res != 0)
349 {
350 pcf8563_interface_debug_print("pcf8563: get hour alarm enable failed.\n");
351 (void)pcf8563_deinit(&gs_handle);
352
353 return 1;
354 }
355 pcf8563_interface_debug_print("pcf8563: check hour alarm enable %s.\n", (enable == PCF8563_BOOL_TRUE) ? "ok" : "error");
356
357 /* disable hour alarm */
359 if (res != 0)
360 {
361 pcf8563_interface_debug_print("pcf8563: set hour alarm enable failed.\n");
362 (void)pcf8563_deinit(&gs_handle);
363
364 return 1;
365 }
366 pcf8563_interface_debug_print("pcf8563: disable hour alarm.\n");
367 res = pcf8563_get_hour_alarm_enable(&gs_handle, &enable);
368 if (res != 0)
369 {
370 pcf8563_interface_debug_print("pcf8563: get hour alarm enable failed.\n");
371 (void)pcf8563_deinit(&gs_handle);
372
373 return 1;
374 }
375 pcf8563_interface_debug_print("pcf8563: check hour alarm enable %s.\n", (enable == PCF8563_BOOL_FALSE) ? "ok" : "error");
376
377 /* pcf8563_set_hour_alarm/pcf8563_get_hour_alarm test */
378 pcf8563_interface_debug_print("pcf8563: pcf8563_set_hour_alarm/pcf8563_get_hour_alarm test.\n");
379
380 reg = rand() % 23 + 1;
381 res = pcf8563_set_hour_alarm(&gs_handle, reg);
382 if (res != 0)
383 {
384 pcf8563_interface_debug_print("pcf8563: set hour alarm failed.\n");
385 (void)pcf8563_deinit(&gs_handle);
386
387 return 1;
388 }
389 pcf8563_interface_debug_print("pcf8563: set hour alarm %d.\n", reg);
390 res = pcf8563_get_hour_alarm(&gs_handle, &reg_check);
391 if (res != 0)
392 {
393 pcf8563_interface_debug_print("pcf8563: get hour alarm failed.\n");
394 (void)pcf8563_deinit(&gs_handle);
395
396 return 1;
397 }
398 pcf8563_interface_debug_print("pcf8563: check hour alarm %s.\n", (reg == reg_check) ? "ok" : "error");
399
400 /* pcf8563_set_day_alarm_enable/pcf8563_get_day_alarm_enable test */
401 pcf8563_interface_debug_print("pcf8563: pcf8563_set_day_alarm_enable/pcf8563_get_day_alarm_enable test.\n");
402
403 /* enable day alarm */
405 if (res != 0)
406 {
407 pcf8563_interface_debug_print("pcf8563: set day alarm enable failed.\n");
408 (void)pcf8563_deinit(&gs_handle);
409
410 return 1;
411 }
412 pcf8563_interface_debug_print("pcf8563: enable day alarm.\n");
413 res = pcf8563_get_day_alarm_enable(&gs_handle, &enable);
414 if (res != 0)
415 {
416 pcf8563_interface_debug_print("pcf8563: get day alarm enable failed.\n");
417 (void)pcf8563_deinit(&gs_handle);
418
419 return 1;
420 }
421 pcf8563_interface_debug_print("pcf8563: check day alarm %s.\n", (enable == PCF8563_BOOL_TRUE) ? "ok" : "error");
422
423 /* disable day alarm */
425 if (res != 0)
426 {
427 pcf8563_interface_debug_print("pcf8563: set day alarm enable failed.\n");
428 (void)pcf8563_deinit(&gs_handle);
429
430 return 1;
431 }
432 pcf8563_interface_debug_print("pcf8563: disable day alarm.\n");
433 res = pcf8563_get_day_alarm_enable(&gs_handle, &enable);
434 if (res != 0)
435 {
436 pcf8563_interface_debug_print("pcf8563: get day alarm enable failed.\n");
437 (void)pcf8563_deinit(&gs_handle);
438
439 return 1;
440 }
441 pcf8563_interface_debug_print("pcf8563: check day alarm %s.\n", (enable == PCF8563_BOOL_FALSE) ? "ok" : "error");
442
443 /* pcf8563_set_day_alarm/pcf8563_get_day_alarm test */
444 pcf8563_interface_debug_print("pcf8563: pcf8563_set_day_alarm/pcf8563_get_day_alarm test.\n");
445
446 reg = rand() % 30 + 1;
447 res = pcf8563_set_day_alarm(&gs_handle, reg);
448 if (res != 0)
449 {
450 pcf8563_interface_debug_print("pcf8563: set day alarm failed.\n");
451 (void)pcf8563_deinit(&gs_handle);
452
453 return 1;
454 }
455 pcf8563_interface_debug_print("pcf8563: set day alarm %d.\n", reg);
456 res = pcf8563_get_day_alarm(&gs_handle, &reg_check);
457 if (res != 0)
458 {
459 pcf8563_interface_debug_print("pcf8563: get day alarm failed.\n");
460 (void)pcf8563_deinit(&gs_handle);
461
462 return 1;
463 }
464 pcf8563_interface_debug_print("pcf8563: check day alarm %s.\n", (reg == reg_check) ? "ok" : "error");
465
466 /* pcf8563_set_week_alarm_enable/pcf8563_get_week_alarm_enable test */
467 pcf8563_interface_debug_print("pcf8563: pcf8563_set_week_alarm_enable/pcf8563_get_week_alarm_enable test.\n");
468
469 /* enable week alarm */
471 if (res != 0)
472 {
473 pcf8563_interface_debug_print("pcf8563: set week alarm enable failed.\n");
474 (void)pcf8563_deinit(&gs_handle);
475
476 return 1;
477 }
478 pcf8563_interface_debug_print("pcf8563: enable week alarm.\n");
479 res = pcf8563_get_week_alarm_enable(&gs_handle, &enable);
480 if (res != 0)
481 {
482 pcf8563_interface_debug_print("pcf8563: get week alarm enable failed.\n");
483 (void)pcf8563_deinit(&gs_handle);
484
485 return 1;
486 }
487 pcf8563_interface_debug_print("pcf8563: check week alarm %s.\n", (enable == PCF8563_BOOL_TRUE) ? "ok" : "error");
488
489 /* disable week alarm */
491 if (res != 0)
492 {
493 pcf8563_interface_debug_print("pcf8563: set week alarm enable failed.\n");
494 (void)pcf8563_deinit(&gs_handle);
495
496 return 1;
497 }
498 pcf8563_interface_debug_print("pcf8563: disable week alarm.\n");
499 res = pcf8563_get_week_alarm_enable(&gs_handle, &enable);
500 if (res != 0)
501 {
502 pcf8563_interface_debug_print("pcf8563: get week alarm enable failed.\n");
503 (void)pcf8563_deinit(&gs_handle);
504
505 return 1;
506 }
507 pcf8563_interface_debug_print("pcf8563: check week alarm %s.\n", (enable == PCF8563_BOOL_FALSE) ? "ok" : "error");
508
509 /* pcf8563_set_week_alarm/pcf8563_get_week_alarm test */
510 pcf8563_interface_debug_print("pcf8563: pcf8563_set_week_alarm/pcf8563_get_week_alarm test.\n");
511
512 reg = rand() % 7;
513 res = pcf8563_set_week_alarm(&gs_handle, reg);
514 if (res != 0)
515 {
516 pcf8563_interface_debug_print("pcf8563: set week alarm failed.\n");
517 (void)pcf8563_deinit(&gs_handle);
518
519 return 1;
520 }
521 pcf8563_interface_debug_print("pcf8563: set week alarm %d.\n", reg);
522 res = pcf8563_get_week_alarm(&gs_handle, &reg_check);
523 if (res != 0)
524 {
525 pcf8563_interface_debug_print("pcf8563: get week alarm failed.\n");
526 (void)pcf8563_deinit(&gs_handle);
527
528 return 1;
529 }
530 pcf8563_interface_debug_print("pcf8563: check week alarm %s.\n", (reg == reg_check) ? "ok" : "error");
531
532 /* pcf8563_set_clock_out_enable/pcf8563_get_clock_out_enable test */
533 pcf8563_interface_debug_print("pcf8563: pcf8563_set_clock_out_enable/pcf8563_get_clock_out_enable test.\n");
534
535 /* enable clock out */
537 if (res != 0)
538 {
539 pcf8563_interface_debug_print("pcf8563: set clock out enable failed.\n");
540 (void)pcf8563_deinit(&gs_handle);
541
542 return 1;
543 }
544 pcf8563_interface_debug_print("pcf8563: enable clock out.\n");
545 res = pcf8563_get_clock_out_enable(&gs_handle, &enable);
546 if (res != 0)
547 {
548 pcf8563_interface_debug_print("pcf8563: get clock out enable failed.\n");
549 (void)pcf8563_deinit(&gs_handle);
550
551 return 1;
552 }
553 pcf8563_interface_debug_print("pcf8563: check clock out enable %s.\n", (enable == PCF8563_BOOL_TRUE) ? "ok" : "error");
554
555 /* disable clock out */
557 if (res != 0)
558 {
559 pcf8563_interface_debug_print("pcf8563: set clock out enable failed.\n");
560 (void)pcf8563_deinit(&gs_handle);
561
562 return 1;
563 }
564 pcf8563_interface_debug_print("pcf8563: disable clock out.\n");
565 res = pcf8563_get_clock_out_enable(&gs_handle, &enable);
566 if (res != 0)
567 {
568 pcf8563_interface_debug_print("pcf8563: get clock out enable failed.\n");
569 (void)pcf8563_deinit(&gs_handle);
570
571 return 1;
572 }
573 pcf8563_interface_debug_print("pcf8563: check clock out enable %s.\n", (enable == PCF8563_BOOL_FALSE) ? "ok" : "error");
574
575 /* pcf8563_set_clock_out/pcf8563_get_clock_out test */
576 pcf8563_interface_debug_print("pcf8563: pcf8563_set_clock_out/pcf8563_get_clock_out test.\n");
577
578 /* set clock out 32.768khz */
580 if (res != 0)
581 {
582 pcf8563_interface_debug_print("pcf8563: set clock out failed.\n");
583 (void)pcf8563_deinit(&gs_handle);
584
585 return 1;
586 }
587 pcf8563_interface_debug_print("pcf8563: set clock out 32.768khz.\n");
588 res = pcf8563_get_clock_out(&gs_handle, &clk);
589 if (res != 0)
590 {
591 pcf8563_interface_debug_print("pcf8563: get clock out failed.\n");
592 (void)pcf8563_deinit(&gs_handle);
593
594 return 1;
595 }
596 pcf8563_interface_debug_print("pcf8563: check clock out %s.\n", (clk == PCF8563_CLOCK_OUT_32P768KHZ) ? "ok" : "error");
597
598 /* set clock out 1.024khz */
600 if (res != 0)
601 {
602 pcf8563_interface_debug_print("pcf8563: set clock out failed.\n");
603 (void)pcf8563_deinit(&gs_handle);
604
605 return 1;
606 }
607 pcf8563_interface_debug_print("pcf8563: set clock out 1.024khz.\n");
608 res = pcf8563_get_clock_out(&gs_handle, &clk);
609 if (res != 0)
610 {
611 pcf8563_interface_debug_print("pcf8563: get clock out failed.\n");
612 (void)pcf8563_deinit(&gs_handle);
613
614 return 1;
615 }
616 pcf8563_interface_debug_print("pcf8563: check clock out %s.\n", (clk == PCF8563_CLOCK_OUT_1P024KHZ) ? "ok" : "error");
617
618 /* set clock out 32hz */
620 if (res != 0)
621 {
622 pcf8563_interface_debug_print("pcf8563: set clock out failed.\n");
623 (void)pcf8563_deinit(&gs_handle);
624
625 return 1;
626 }
627 pcf8563_interface_debug_print("pcf8563: set clock out 32hz.\n");
628 res = pcf8563_get_clock_out(&gs_handle, &clk);
629 if (res != 0)
630 {
631 pcf8563_interface_debug_print("pcf8563: get clock out failed.\n");
632 (void)pcf8563_deinit(&gs_handle);
633
634 return 1;
635 }
636 pcf8563_interface_debug_print("pcf8563: check clock out %s.\n", (clk == PCF8563_CLOCK_OUT_32HZ) ? "ok" : "error");
637
638 /* set clock out 1hz */
640 if (res != 0)
641 {
642 pcf8563_interface_debug_print("pcf8563: set clock out failed.\n");
643 (void)pcf8563_deinit(&gs_handle);
644
645 return 1;
646 }
647 pcf8563_interface_debug_print("pcf8563: set clock out 1hz.\n");
648 res = pcf8563_get_clock_out(&gs_handle, &clk);
649 if (res != 0)
650 {
651 pcf8563_interface_debug_print("pcf8563: get clock out failed.\n");
652 (void)pcf8563_deinit(&gs_handle);
653
654 return 1;
655 }
656 pcf8563_interface_debug_print("pcf8563: check clock out %s.\n", (clk == PCF8563_CLOCK_OUT_1HZ) ? "ok" : "error");
657
658 /* pcf8563_set_timer_enable/pcf8563_get_timer_enable test */
659 pcf8563_interface_debug_print("pcf8563: pcf8563_set_timer_enable/pcf8563_get_timer_enable test.\n");
660
661 /* enable timer */
663 if (res != 0)
664 {
665 pcf8563_interface_debug_print("pcf8563: set timer enable failed.\n");
666 (void)pcf8563_deinit(&gs_handle);
667
668 return 1;
669 }
670 pcf8563_interface_debug_print("pcf8563: enable timer.\n");
671 res = pcf8563_get_timer_enable(&gs_handle, &enable);
672 if (res != 0)
673 {
674 pcf8563_interface_debug_print("pcf8563: get timer enable failed.\n");
675 (void)pcf8563_deinit(&gs_handle);
676
677 return 1;
678 }
679 pcf8563_interface_debug_print("pcf8563: check timer enable %s.\n", (enable == PCF8563_BOOL_TRUE) ? "ok" : "error");
680
681 /* disable timer */
683 if (res != 0)
684 {
685 pcf8563_interface_debug_print("pcf8563: set timer enable failed.\n");
686 (void)pcf8563_deinit(&gs_handle);
687
688 return 1;
689 }
690 pcf8563_interface_debug_print("pcf8563: disable timer.\n");
691 res = pcf8563_get_timer_enable(&gs_handle, &enable);
692 if (res != 0)
693 {
694 pcf8563_interface_debug_print("pcf8563: get timer enable failed.\n");
695 (void)pcf8563_deinit(&gs_handle);
696
697 return 1;
698 }
699 pcf8563_interface_debug_print("pcf8563: check timer enable %s.\n", (enable == PCF8563_BOOL_FALSE) ? "ok" : "error");
700
701 /* pcf8563_set_timer_freq/pcf8563_get_timer_freq test */
702 pcf8563_interface_debug_print("pcf8563: pcf8563_set_timer_freq/pcf8563_get_timer_freq test.\n");
703
704 /* timer freq 4.096khz */
706 if (res != 0)
707 {
708 pcf8563_interface_debug_print("pcf8563: set timer freq failed.\n");
709 (void)pcf8563_deinit(&gs_handle);
710
711 return 1;
712 }
713 pcf8563_interface_debug_print("pcf8563: set timer freq 4.096khz.\n");
714 res = pcf8563_get_timer_freq(&gs_handle, &freq);
715 if (res != 0)
716 {
717 pcf8563_interface_debug_print("pcf8563: get timer freq failed.\n");
718 (void)pcf8563_deinit(&gs_handle);
719
720 return 1;
721 }
722 pcf8563_interface_debug_print("pcf8563: check timer freq %s.\n", (freq == PCF8563_TIMER_FREQ_4P096KHZ) ? "ok" : "error");
723
724 /* timer freq 64hz */
726 if (res != 0)
727 {
728 pcf8563_interface_debug_print("pcf8563: set timer freq failed.\n");
729 (void)pcf8563_deinit(&gs_handle);
730
731 return 1;
732 }
733 pcf8563_interface_debug_print("pcf8563: set timer freq 64hz.\n");
734 res = pcf8563_get_timer_freq(&gs_handle, &freq);
735 if (res != 0)
736 {
737 pcf8563_interface_debug_print("pcf8563: get timer freq failed.\n");
738 (void)pcf8563_deinit(&gs_handle);
739
740 return 1;
741 }
742 pcf8563_interface_debug_print("pcf8563: check timer freq %s.\n", (freq == PCF8563_TIMER_FREQ_64HZ) ? "ok" : "error");
743
744 /* timer freq 1hz */
746 if (res != 0)
747 {
748 pcf8563_interface_debug_print("pcf8563: set timer freq failed.\n");
749 (void)pcf8563_deinit(&gs_handle);
750
751 return 1;
752 }
753 pcf8563_interface_debug_print("pcf8563: set timer freq 1hz.\n");
754 res = pcf8563_get_timer_freq(&gs_handle, &freq);
755 if (res != 0)
756 {
757 pcf8563_interface_debug_print("pcf8563: get timer freq failed.\n");
758 (void)pcf8563_deinit(&gs_handle);
759
760 return 1;
761 }
762 pcf8563_interface_debug_print("pcf8563: check timer freq %s.\n", (freq == PCF8563_TIMER_FREQ_1HZ) ? "ok" : "error");
763
764 /* timer freq 1/60hz */
766 if (res != 0)
767 {
768 pcf8563_interface_debug_print("pcf8563: set timer freq failed.\n");
769 (void)pcf8563_deinit(&gs_handle);
770
771 return 1;
772 }
773 pcf8563_interface_debug_print("pcf8563: set timer freq 1/60hz.\n");
774 res = pcf8563_get_timer_freq(&gs_handle, &freq);
775 if (res != 0)
776 {
777 pcf8563_interface_debug_print("pcf8563: get timer freq failed.\n");
778 (void)pcf8563_deinit(&gs_handle);
779
780 return 1;
781 }
782 pcf8563_interface_debug_print("pcf8563: check timer freq %s.\n", (freq == PCF8563_TIMER_FREQ_1_DIV_60HZ) ? "ok" : "error");
783
784 /* pcf8563_set_timer_value/pcf8563_get_timer_value test */
785 pcf8563_interface_debug_print("pcf8563: pcf8563_set_timer_value/pcf8563_get_timer_value test.\n");
786
787 reg = rand() % 256;
788 res = pcf8563_set_timer_value(&gs_handle, reg);
789 if (res != 0)
790 {
791 pcf8563_interface_debug_print("pcf8563: set timer value failed.\n");
792 (void)pcf8563_deinit(&gs_handle);
793
794 return 1;
795 }
796 pcf8563_interface_debug_print("pcf8563: set timer value %d.\n", reg);
797 res = pcf8563_get_timer_value(&gs_handle, &reg_check);
798 if (res != 0)
799 {
800 pcf8563_interface_debug_print("pcf8563: get timer value failed.\n");
801 (void)pcf8563_deinit(&gs_handle);
802
803 return 1;
804 }
805 pcf8563_interface_debug_print("pcf8563: check timer value %s.\n", (reg == reg_check) ? "ok" : "error");
806
807 /* pcf8563_set_timer_interrupt/pcf8563_get_timer_interrupt test */
808 pcf8563_interface_debug_print("pcf8563: pcf8563_set_timer_interrupt/pcf8563_get_timer_interrupt test.\n");
809
810 /* enable timer interrupt */
812 if (res != 0)
813 {
814 pcf8563_interface_debug_print("pcf8563: set timer interrupt failed.\n");
815 (void)pcf8563_deinit(&gs_handle);
816
817 return 1;
818 }
819 pcf8563_interface_debug_print("pcf8563: enable timer interrupt.\n");
820 res = pcf8563_get_timer_interrupt(&gs_handle, &enable);
821 if (res != 0)
822 {
823 pcf8563_interface_debug_print("pcf8563: get timer interrupt failed.\n");
824 (void)pcf8563_deinit(&gs_handle);
825
826 return 1;
827 }
828 pcf8563_interface_debug_print("pcf8563: check timer interrupt %s.\n", (enable == PCF8563_BOOL_TRUE) ? "ok" : "error");
829
830 /* disable timer interrupt */
832 if (res != 0)
833 {
834 pcf8563_interface_debug_print("pcf8563: set timer interrupt failed.\n");
835 (void)pcf8563_deinit(&gs_handle);
836
837 return 1;
838 }
839 pcf8563_interface_debug_print("pcf8563: disable timer interrupt.\n");
840 res = pcf8563_get_timer_interrupt(&gs_handle, &enable);
841 if (res != 0)
842 {
843 pcf8563_interface_debug_print("pcf8563: get timer interrupt failed.\n");
844 (void)pcf8563_deinit(&gs_handle);
845
846 return 1;
847 }
848 pcf8563_interface_debug_print("pcf8563: check timer interrupt %s.\n", (enable == PCF8563_BOOL_FALSE) ? "ok" : "error");
849
850 /* pcf8563_set_alarm_interrupt/pcf8563_get_alarm_interrupt test */
851 pcf8563_interface_debug_print("pcf8563: pcf8563_set_alarm_interrupt/pcf8563_get_alarm_interrupt test.\n");
852
853 /* enable alarm interrupt */
855 if (res != 0)
856 {
857 pcf8563_interface_debug_print("pcf8563: set alarm interrupt failed.\n");
858 (void)pcf8563_deinit(&gs_handle);
859
860 return 1;
861 }
862 pcf8563_interface_debug_print("pcf8563: enable alarm interrupt.\n");
863 res = pcf8563_get_alarm_interrupt(&gs_handle, &enable);
864 if (res != 0)
865 {
866 pcf8563_interface_debug_print("pcf8563: get alarm interrupt failed.\n");
867 (void)pcf8563_deinit(&gs_handle);
868
869 return 1;
870 }
871 pcf8563_interface_debug_print("pcf8563: check alarm interrupt %s.\n", (enable == PCF8563_BOOL_TRUE) ? "ok" : "error");
872
873 /* disable alarm interrupt */
875 if (res != 0)
876 {
877 pcf8563_interface_debug_print("pcf8563: set alarm interrupt failed.\n");
878 (void)pcf8563_deinit(&gs_handle);
879
880 return 1;
881 }
882 pcf8563_interface_debug_print("pcf8563: disable alarm interrupt.\n");
883 res = pcf8563_get_alarm_interrupt(&gs_handle, &enable);
884 if (res != 0)
885 {
886 pcf8563_interface_debug_print("pcf8563: get alarm interrupt failed.\n");
887 (void)pcf8563_deinit(&gs_handle);
888
889 return 1;
890 }
891 pcf8563_interface_debug_print("pcf8563: check alarm interrupt %s.\n", (enable == PCF8563_BOOL_FALSE) ? "ok" : "error");
892
893 /* pcf8563_set_interrupt_mode/pcf8563_get_interrupt_mode test */
894 pcf8563_interface_debug_print("pcf8563: pcf8563_set_interrupt_mode/pcf8563_get_interrupt_mode test.\n");
895
896 /* set interrupt mode event */
898 if (res != 0)
899 {
900 pcf8563_interface_debug_print("pcf8563: set interrupt mode failed.\n");
901 (void)pcf8563_deinit(&gs_handle);
902
903 return 1;
904 }
905 pcf8563_interface_debug_print("pcf8563: set interrupt mode level.\n");
906 res = pcf8563_get_interrupt_mode(&gs_handle, &mode);
907 if (res != 0)
908 {
909 pcf8563_interface_debug_print("pcf8563: get interrupt mode failed.\n");
910 (void)pcf8563_deinit(&gs_handle);
911
912 return 1;
913 }
914 pcf8563_interface_debug_print("pcf8563: check interrupt mode %s.\n", (mode == PCF8563_INTERRUPT_MODE_LEVEL) ? "ok" : "error");
915
916 /* set interrupt mode pulse */
918 if (res != 0)
919 {
920 pcf8563_interface_debug_print("pcf8563: set interrupt mode failed.\n");
921 (void)pcf8563_deinit(&gs_handle);
922
923 return 1;
924 }
925 pcf8563_interface_debug_print("pcf8563: set interrupt mode pulse.\n");
926 res = pcf8563_get_interrupt_mode(&gs_handle, &mode);
927 if (res != 0)
928 {
929 pcf8563_interface_debug_print("pcf8563: get interrupt mode failed.\n");
930 (void)pcf8563_deinit(&gs_handle);
931
932 return 1;
933 }
934 pcf8563_interface_debug_print("pcf8563: check interrupt mode %s.\n", (mode == PCF8563_INTERRUPT_MODE_PULSE) ? "ok" : "error");
935
936 /* finish register test */
937 pcf8563_interface_debug_print("pcf8563: finish register test.\n");
938 (void)pcf8563_deinit(&gs_handle);
939
940 return 0;
941}
driver pcf8563 register test header file
uint8_t pcf8563_info(pcf8563_info_t *info)
get chip's information
uint8_t pcf8563_set_week_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable week alarm
uint8_t pcf8563_set_hour_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable hour alarm
uint8_t pcf8563_set_timer_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable timer enable
pcf8563_timer_freq_t
pcf8563 timer freq enumeration definition
uint8_t pcf8563_set_day_alarm(pcf8563_handle_t *handle, uint8_t day)
set day alarm
uint8_t pcf8563_get_week_alarm(pcf8563_handle_t *handle, uint8_t *week)
get week alarm
uint8_t pcf8563_deinit(pcf8563_handle_t *handle)
close the chip
uint8_t pcf8563_get_minute_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get the minute alarm status
pcf8563_bool_t
pcf8563 bool enumeration definition
uint8_t pcf8563_get_rtc_stop(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get the rtc stop status
uint8_t pcf8563_set_clock_out(pcf8563_handle_t *handle, pcf8563_clock_out_t clk)
set clock out
uint8_t pcf8563_set_hour_alarm(pcf8563_handle_t *handle, uint8_t hour)
set hour alarm
uint8_t pcf8563_get_interrupt_mode(pcf8563_handle_t *handle, pcf8563_interrupt_mode_t *mode)
get the interrupt mode
uint8_t pcf8563_get_hour_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get the hour alarm status
uint8_t pcf8563_get_alarm_interrupt(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get alarm interrupt status
uint8_t pcf8563_get_timer_freq(pcf8563_handle_t *handle, pcf8563_timer_freq_t *freq)
get timer freq
uint8_t pcf8563_set_timer_interrupt(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable timer interrupt
uint8_t pcf8563_set_test_mode(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable test mode
uint8_t pcf8563_set_minute_alarm(pcf8563_handle_t *handle, uint8_t minute)
set minute alarm
uint8_t pcf8563_set_timer_freq(pcf8563_handle_t *handle, pcf8563_timer_freq_t freq)
set timer freq
uint8_t pcf8563_set_clock_out_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable clock out enable
pcf8563_interrupt_mode_t
pcf8563 interrupt mode enumeration definition
uint8_t pcf8563_init(pcf8563_handle_t *handle)
initialize the chip
struct pcf8563_info_s pcf8563_info_t
pcf8563 information structure definition
uint8_t pcf8563_get_hour_alarm(pcf8563_handle_t *handle, uint8_t *hour)
get hour alarm
uint8_t pcf8563_get_clock_out_enable(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get clock out enable status
pcf8563_clock_out_t
pcf8563 clock out enumeration definition
uint8_t pcf8563_get_timer_interrupt(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get timer interrupt status
uint8_t pcf8563_set_time(pcf8563_handle_t *handle, pcf8563_time_t *t)
set the current time
uint8_t pcf8563_get_day_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get the day alarm status
uint8_t pcf8563_get_minute_alarm(pcf8563_handle_t *handle, uint8_t *minute)
get minute alarm
struct pcf8563_time_s pcf8563_time_t
pcf8563 time structure definition
uint8_t pcf8563_get_day_alarm(pcf8563_handle_t *handle, uint8_t *day)
get day alarm
uint8_t pcf8563_get_clock_out(pcf8563_handle_t *handle, pcf8563_clock_out_t *clk)
get clock out
uint8_t pcf8563_get_timer_value(pcf8563_handle_t *handle, uint8_t *value)
get timer value
uint8_t pcf8563_set_alarm_interrupt(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable alarm interrupt
uint8_t pcf8563_set_week_alarm(pcf8563_handle_t *handle, uint8_t week)
set week alarm
uint8_t pcf8563_set_day_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable day alarm
uint8_t pcf8563_set_minute_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable minute alarm
uint8_t pcf8563_set_rtc_stop(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable rtc stop
struct pcf8563_handle_s pcf8563_handle_t
pcf8563 handle structure definition
uint8_t pcf8563_set_interrupt_mode(pcf8563_handle_t *handle, pcf8563_interrupt_mode_t mode)
set the interrupt mode
uint8_t pcf8563_get_power_on_reset(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get the power on reset status
uint8_t pcf8563_get_timer_enable(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get timer enable status
uint8_t pcf8563_set_timer_value(pcf8563_handle_t *handle, uint8_t value)
set timer value
uint8_t pcf8563_get_week_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get the week alarm status
uint8_t pcf8563_get_time(pcf8563_handle_t *handle, pcf8563_time_t *t)
get the current time
uint8_t pcf8563_get_test_mode(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get the test mode status
uint8_t pcf8563_set_power_on_reset(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable power on reset
@ PCF8563_TIMER_FREQ_64HZ
@ PCF8563_TIMER_FREQ_1_DIV_60HZ
@ PCF8563_TIMER_FREQ_4P096KHZ
@ PCF8563_TIMER_FREQ_1HZ
@ PCF8563_BOOL_TRUE
@ PCF8563_BOOL_FALSE
@ PCF8563_INTERRUPT_MODE_PULSE
@ PCF8563_INTERRUPT_MODE_LEVEL
@ PCF8563_CLOCK_OUT_32P768KHZ
@ PCF8563_CLOCK_OUT_32HZ
@ PCF8563_CLOCK_OUT_1P024KHZ
@ PCF8563_CLOCK_OUT_1HZ
uint8_t pcf8563_interface_iic_init(void)
interface iic bus init
uint8_t pcf8563_interface_iic_read(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus read
uint8_t pcf8563_interface_iic_deinit(void)
interface iic bus deinit
void pcf8563_interface_delay_ms(uint32_t ms)
interface delay ms
void pcf8563_interface_debug_print(const char *const fmt,...)
interface print format data
void pcf8563_interface_receive_callback(uint8_t type)
interface receive callback
uint8_t pcf8563_interface_iic_write(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus write
uint8_t pcf8563_register_test(void)
register test
uint32_t driver_version
char manufacturer_name[32]