1 #include <stdio.h>
2 #include <hal_log.h>
3 #include <hal_cmd.h>
4 #include <sunxi_hal_rtc.h>
5
callback(void)6 static int callback(void)
7 {
8 printf("alarm interrupt\n");
9 return 0;
10 }
11
cmd_test_rtc(int argc,const char ** argv)12 static int cmd_test_rtc(int argc, const char **argv)
13 {
14 unsigned int enable = 0;
15 struct rtc_time rtc_tm;
16 struct rtc_wkalrm wkalrm;
17
18 hal_rtc_init();
19
20 hal_rtc_register_callback(callback);
21
22 if (hal_rtc_gettime(&rtc_tm))
23 {
24 printf("sunxi rtc gettime error\n");
25 }
26
27 wkalrm.enabled = 1;
28 wkalrm.time = rtc_tm;
29 if(rtc_tm.tm_min > 0)
30 rtc_tm.tm_min -= 1;
31 else
32 wkalrm.time.tm_min += 1;
33
34 printf("alarm time %04d-%02d-%02d %02d:%02d:%02d\n",
35 wkalrm.time.tm_year + 1900, wkalrm.time.tm_mon + 1, wkalrm.time.tm_mday,
36 wkalrm.time.tm_hour, wkalrm.time.tm_min, wkalrm.time.tm_sec);
37
38 if (hal_rtc_settime(&rtc_tm))
39 {
40 printf("sunxi rtc settime error\n");
41 }
42
43 if (hal_rtc_setalarm(&wkalrm))
44 {
45 printf("sunxi rtc setalarm error\n");
46 }
47
48 if (hal_rtc_getalarm(&wkalrm))
49 {
50 printf("sunxi rtc getalarm error\n");
51 }
52
53 if (hal_rtc_gettime(&rtc_tm))
54 {
55 printf("sunxi rtc gettime error\n");
56 }
57
58 //if do hal_rtc_alarm_irq_enable and hal_rtc_uninit, alarm will not work
59 hal_rtc_alarm_irq_enable(enable);
60
61 hal_rtc_deinit();
62 return 0;
63 }
64
65 FINSH_FUNCTION_EXPORT_CMD(cmd_test_rtc, hal_rtc, rtc hal APIs tests)
66