1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
|
#ifndef NITRO_RTC_API_H_
#define NITRO_RTC_API_H_
typedef enum RTCAlarmChan
{
RTC_ALARM_CHAN_1 = 0,
RTC_ALARM_CHAN_2,
RTC_ALARM_CHAN_MAX
}
RTCAlarmChan;
// Alarm status definitions
typedef enum RTCAlarmStatus
{
RTC_ALARM_STATUS_OFF = 0,
RTC_ALARM_STATUS_ON,
RTC_ALARM_STATUS_MAX
}
RTCAlarmStatus;
#define RTC_ALARM_ENABLE_NONE 0x0000
#define RTC_ALARM_ENABLE_WEEK 0x0001
#define RTC_ALARM_ENABLE_HOUR 0x0002
#define RTC_ALARM_ENABLE_MINUTE 0x0004
#define RTC_ALARM_ENABLE_ALL ( RTC_ALARM_ENABLE_WEEK | RTC_ALARM_ENABLE_HOUR | RTC_ALARM_ENABLE_MINUTE )
typedef enum RTCWeek
{
RTC_WEEK_SUNDAY = 0,
RTC_WEEK_MONDAY,
RTC_WEEK_TUESDAY,
RTC_WEEK_WEDNESDAY,
RTC_WEEK_THURSDAY,
RTC_WEEK_FRIDAY,
RTC_WEEK_SATURDAY,
RTC_WEEK_MAX
}
RTCWeek;
typedef struct RTCDate
{
u32 year;
u32 month;
u32 day;
RTCWeek week;
}
RTCDate;
typedef struct RTCTime
{
u32 hour;
u32 minute;
u32 second;
}
RTCTime;
typedef struct RTCAlarmParam
{
RTCWeek week; // Day of the week
u32 hour; // Hour ( 0 ~ 23 )
u32 minute; // Minute ( 0 ~ 59 )
u32 enable; // Alarm enable flag ( RTC_ALARM_ENABLE_* )
}
RTCAlarmParam;
typedef enum RTCResult
{
RTC_RESULT_SUCCESS = 0,
RTC_RESULT_BUSY,
RTC_RESULT_ILLEGAL_PARAMETER,
RTC_RESULT_SEND_ERROR,
RTC_RESULT_INVALID_COMMAND,
RTC_RESULT_ILLEGAL_STATUS,
RTC_RESULT_FATAL_ERROR,
RTC_RESULT_MAX
}
RTCResult;
typedef void (*RTCCallback) (RTCResult result, void *arg);
typedef void (*RTCInterrupt) (void);
void RTC_Init(void);
RTCResult RTC_GetDate(RTCDate *date);
RTCResult RTC_GetTime(RTCTime *time);
RTCResult RTC_GetDateTime(RTCDate *date, RTCTime *time);
RTCResult RTC_SetDate(const RTCDate *date);
RTCResult RTC_SetTime(const RTCTime *time);
RTCResult RTC_SetDateTime(const RTCDate *date, const RTCTime *time);
RTCResult RTC_GetAlarmStatus(RTCAlarmChan chan, RTCAlarmStatus *status);
RTCResult RTC_GetAlarmParam(RTCAlarmChan chan, RTCAlarmParam *param);
RTCResult RTC_SetAlarmStatus(RTCAlarmChan chan, const RTCAlarmStatus *status);
RTCResult RTC_SetAlarmParam(RTCAlarmChan chan, const RTCAlarmParam *param);
RTCResult RTC_GetDateAsync(RTCDate *date, RTCCallback callback, void *arg);
RTCResult RTC_GetTimeAsync(RTCTime *time, RTCCallback callback, void *arg);
RTCResult RTC_GetDateTimeAsync(RTCDate *date, RTCTime *time, RTCCallback callback, void *arg);
RTCResult RTC_SetDateAsync(const RTCDate *date, RTCCallback callback, void *arg);
RTCResult RTC_SetTimeAsync(const RTCTime *time, RTCCallback callback, void *arg);
RTCResult RTC_SetDateTimeAsync(const RTCDate *date, const RTCTime *time, RTCCallback callback,
void *arg);
RTCResult RTC_GetAlarmStatusAsync(RTCAlarmChan chan, RTCAlarmStatus *status, RTCCallback callback,
void *arg);
RTCResult RTC_GetAlarmParamAsync(RTCAlarmChan chan, RTCAlarmParam *param, RTCCallback callback,
void *arg);
void RTC_SetAlarmInterrupt(RTCInterrupt interrupt);
RTCResult RTC_SetAlarmStatusAsync(RTCAlarmChan chan, const RTCAlarmStatus *status,
RTCCallback callback, void *arg);
RTCResult RTC_SetAlarmParamAsync(RTCAlarmChan chan, const RTCAlarmParam *param,
RTCCallback callback, void *arg);
#endif //NITRO_RTC_API_H_
|