diff options
| author | tyx <[email protected]> | 2022-04-04 23:41:13 +0800 |
|---|---|---|
| committer | guo <[email protected]> | 2022-04-06 10:26:04 +0800 |
| commit | 8a7babadda7008f1f057dd373e32294482012a6e (patch) | |
| tree | 1d8817375bc69869105a082aa5302e9743537d3b /components/drivers | |
| parent | 9a4bd201496c5775c0ad93995c244320bd7d1f2a (diff) | |
[drivers][rtc]Add get/set timestamp function
Diffstat (limited to 'components/drivers')
| -rw-r--r-- | components/drivers/include/drivers/rtc.h | 2 | ||||
| -rw-r--r-- | components/drivers/rtc/rtc.c | 43 |
2 files changed, 45 insertions, 0 deletions
diff --git a/components/drivers/include/drivers/rtc.h b/components/drivers/include/drivers/rtc.h index 356c97365b..1ffce59f5a 100644 --- a/components/drivers/include/drivers/rtc.h +++ b/components/drivers/include/drivers/rtc.h @@ -51,6 +51,8 @@ rt_err_t rt_hw_rtc_register(rt_rtc_dev_t *rtc, rt_err_t set_date(rt_uint32_t year, rt_uint32_t month, rt_uint32_t day); rt_err_t set_time(rt_uint32_t hour, rt_uint32_t minute, rt_uint32_t second); +rt_err_t set_timestamp(time_t timestamp); +rt_err_t get_timestamp(time_t *timestamp); #ifdef __cplusplus } diff --git a/components/drivers/rtc/rtc.c b/components/drivers/rtc/rtc.c index cd1d861939..85e5c75020 100644 --- a/components/drivers/rtc/rtc.c +++ b/components/drivers/rtc/rtc.c @@ -228,6 +228,49 @@ rt_err_t set_time(rt_uint32_t hour, rt_uint32_t minute, rt_uint32_t second) return ret; } +/** + * Set timestamp(utc). + * + * @param time_t timestamp + * + * @return rt_err_t if set success, return RT_EOK. + */ +rt_err_t set_timestamp(time_t timestamp) +{ + if (_rtc_device == RT_NULL) + { + _rtc_device = rt_device_find("rtc"); + if (_rtc_device == RT_NULL) + { + return -RT_ERROR; + } + } + + /* update to RTC device. */ + return rt_device_control(_rtc_device, RT_DEVICE_CTRL_RTC_SET_TIME, ×tamp); +} + +/** + * Get timestamp(utc). + * + * @param time_t* timestamp + * + * @return rt_err_t if set success, return RT_EOK. + */ +rt_err_t get_timestamp(time_t *timestamp) +{ + if (_rtc_device == RT_NULL) + { + _rtc_device = rt_device_find("rtc"); + if (_rtc_device == RT_NULL) + { + return -RT_ERROR; + } + } + + /* Get timestamp from RTC device. */ + return rt_device_control(_rtc_device, RT_DEVICE_CTRL_RTC_GET_TIME, timestamp); +} #ifdef RT_USING_FINSH #include <finsh.h> |
