98 lines
3.7 KiB
C
98 lines
3.7 KiB
C
/****************************************************************************
|
|
|
|
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_ */ |