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