/**************************************************************************** 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_RTC_EXT_DRIVER_H_ #define _IOT_RTC_EXT_DRIVER_H_ /* iot common header files */ #include "iot_config_api.h" #include "iot_rtc_api.h" #ifdef __cplusplus extern "C" { #endif #if IOT_RTC_EXT_ENABLE #if HW_PLATFORM != HW_PLATFORM_SIMU /* define whether the chip is enabled */ #define IOT_EXT_RTC_M41T0_ENABLE 1 #define IOT_EXT_RTC_BL8025T_ENABLE 1 #define IOT_EXT_RTC_RX8010_ENABLE 1 #endif /* HW_PLATFORM != HW_PLATFORM_SIMU */ /* define maximum number of drivers in the table */ #define IOT_EXT_RTC_DRV_TABLE_SIZE 4 /* function callback to prode external RTC chip. * @retval: ERR_OK - chip prode successfully, otherwise - error code */ typedef uint32_t (*iot_rtc_drv_prode_func)(void); /* function callback to initialize external RTC chip. * @tm: set the initial time infor of the external RTC, if the chip is * powerup. otherwise return the external RTC time info. * @done: 1 - ext RTC chip has been started, 0 - not started * @retval: ERR_OK - set successfully, otherwise - error code */ typedef uint32_t (*iot_rtc_drv_init_func)(iot_time_tm_t *tm, uint32_t *done); /* function callback to deinit external RTC chip. */ typedef void (*iot_rtc_drv_deinit_func)(void); /* function callback get time from external RTC chip. * @tm: return the time info of the external RTC chip * @retval: ERR_OK - set successfully, otherwise - error code */ typedef uint32_t (*iot_rtc_drv_get_time_func)(iot_time_tm_t *tm); /* function callback to set time to external RTC chip. * @tm: pointer to the time to be set * @week: week to be set, 0 - sunday, 1 ~ 6 - monday ~ saturday * @retval: ERR_OK - set successfully, otherwise - error code */ typedef uint32_t (*iot_rtc_drv_set_time_func)(iot_time_tm_t *tm, uint8_t week); /* callback functions to check whether external RTC chips startup * @tm: if started, return the time info of the external RTC chip * @retval: 1 - started, 0 - not startup */ typedef uint32_t (*iot_rtc_drv_is_starup_func)(iot_time_tm_t *tm); /* extern RTC callback function descriptor */ typedef struct _iot_ext_rtc_drv { /* external RTC chip prode callback function */ iot_rtc_drv_prode_func drv_prode; /* external RTC chip init callback function */ iot_rtc_drv_init_func drv_init; /* external RTC chip deinit callback function */ iot_rtc_drv_deinit_func drv_deinit; /* external RTC chip get time callback function */ iot_rtc_drv_get_time_func drv_get_time; /* external RTC chip set time callback function */ iot_rtc_drv_set_time_func drv_set_time; /* external RTC chip checks start-up callback function */ iot_rtc_drv_is_starup_func drv_is_startup; /* local time of the latest update */ } iot_ext_rtc_drv_t; #endif /* IOT_RTC_EXT_ENABLE */ #ifdef __cplusplus } #endif #endif /*_IOT_RTC_EXT_DRIVER_H_ */