diff options
Diffstat (limited to 'arm9/lib')
| -rw-r--r-- | arm9/lib/include/RTC_api.h | 83 | 
1 files changed, 80 insertions, 3 deletions
| diff --git a/arm9/lib/include/RTC_api.h b/arm9/lib/include/RTC_api.h index d2577cdf..09efde7e 100644 --- a/arm9/lib/include/RTC_api.h +++ b/arm9/lib/include/RTC_api.h @@ -1,6 +1,29 @@  #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, @@ -12,7 +35,7 @@ typedef enum RTCWeek      RTC_WEEK_SATURDAY,      RTC_WEEK_MAX  } -    RTCWeek; +RTCWeek;  typedef struct RTCDate  { @@ -21,7 +44,7 @@ typedef struct RTCDate      u32 day;      RTCWeek week;  } -    RTCDate; +RTCDate;  typedef struct RTCTime  { @@ -29,6 +52,60 @@ typedef struct RTCTime      u32 minute;      u32 second;  } -    RTCTime; +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_ | 
