/**************************************************************************** Copyright(c) 2019 by Aerospace C.Power (Chongqing) Microelectronics. ALL RIGHTS RESERVED. This Information is proprietary to Aerospace C.Power (Chongqing) Microelectronics and MAY NOT be copied by any method or incorporated into another program without the express written consent of Aerospace C.Power. This Information or any portion thereof remains the property of Aerospace C.Power. The Information contained herein is believed to be accurate and Aerospace C.Power assumes no responsibility or liability for its use in any way and conveys no license or title under any patent or copyright and makes no representation or warranty that this Information is free from patent or copyright infringement. ****************************************************************************/ #ifndef IOT_BRM_RTC_H #define IOT_BRM_RTC_H /* os shim includes */ #include "os_types_api.h" /* iot common includes */ #include "iot_task_api.h" #include "iot_rtc_api.h" #ifdef __cplusplus extern "C" { #endif #if (IOT_BRM_ENABLE && PLC_SUPPORT_STA_ROLE) /* alarm clock enabling bit definition */ #define IOT_BRM_RTC_ALARM_SEC_EN 0x01 #define IOT_BRM_RTC_ALARM_MIN_EN 0x02 #define IOT_BRM_RTC_ALARM_HOUR_EN 0x04 #define IOT_BRM_RTC_ALARM_DAY_EN 0x08 /* alarm clock notification callback function */ typedef void (*iot_brm_rtc_alarm_func_t)(void); /* rtc clock sec update callback function */ typedef void (*iot_brm_rtc_sec_update_func_t)(void); /* rtc alarm config descriptor */ typedef struct _iot_brm_rtc_alarm_config { /* the alarm sec to be matched */ uint8_t sec; /* the alarm min to be matched */ uint8_t min; /* the alarm hour to be matched */ uint8_t hour; /* the alarm day to be matched */ uint8_t day; /* match enable flag, bit 0, 1, 2, 3 corresponds to second, minute, * hour, day. */ uint8_t en; /* alarm clock notification callback function */ iot_brm_rtc_alarm_func_t nodify_func; } iot_brm_rtc_alarm_config_t; /** * @brief iot_brm_rtctime_to_time() - convert RTC time to integer timestamp. * @param tm: pointer to the rtc time * @retval: integer timestamp relative to 1970-1-1 00:00:00 */ uint32_t iot_brm_rtctime_to_time(iot_time_tm_t *tm); /** * @brief iot_brm_time_to_rtctime() - convert integer timestamp to RTC time. * @param time: integer timestamp relative to 1970-1-1 00:00:00 * @param tm: return RTC time */ void iot_brm_time_to_rtctime(uint32_t time, iot_time_tm_t *tm); /** * @brief iot_brm_send_mr_cmd() - set calendar time. * @param tm: pointer to the calendar time to be set * @retval: ERR_OK - successfully, otherwise - error code */ uint32_t iot_brm_rtc_set_time(iot_time_tm_t *tm); /** * @brief iot_brm_rtc_get_time() - get calendar time. * @param tm: return the calendar time * @param week: return week, 0 - sunday, 1 ~ 6 - monday ~ saturday. */ void iot_brm_rtc_get_time(iot_time_tm_t *tm, uint8_t *week); /** * @brief iot_brm_rtc_set_alarm() - set alarm clock. * @param config: alarm clock config info. * @retval: ERR_OK - successfully, otherwise - error code */ uint8_t iot_brm_rtc_set_alarm(iot_brm_rtc_alarm_config_t *config); /** * @brief iot_brm_rtc_set_sec_update() - set sec update clock. * @param fun: sec update clock fun. * @retval: ERR_OK - successfully, otherwise - error code */ uint8_t iot_brm_rtc_set_sec_update(iot_brm_rtc_sec_update_func_t fun); /** * @brief iot_brm_rtc_init() - initialize RTC module * @retval: ERR_OK - successfully, otherwise - error code */ uint32_t iot_brm_rtc_init(void); /** * @brief iot_brm_rtc_timeout() - RTC module period handle */ void iot_brm_rtc_timeout(void); /** * @brief iot_brm_rtc_deinit() - deinit RTC module */ void iot_brm_rtc_deinit(void); /** * @brief iot_brm_rtc_is_abnormal() - check whether RTC is abnormal. * @retval: 1 - abnormal, 0 - normal */ uint8_t iot_brm_rtc_is_abnormal(void); #endif /* IOT_BRM_ENABLE && PLC_SUPPORT_STA_ROLE */ #ifdef __cplusplus } #endif #endif /* IOT_BRM_RTC_H */