diff --git a/cpu/stm32f1/periph/rtc.c b/cpu/stm32f1/periph/rtc.c index 41ca26a259..fc135765b5 100755 --- a/cpu/stm32f1/periph/rtc.c +++ b/cpu/stm32f1/periph/rtc.c @@ -115,12 +115,12 @@ static void _rtc_config(void) NVIC_EnableIRQ(RTC_Alarm_IRQn); } -static time_t _rtc_get_time(void) +static uint32_t _rtc_get_time(void) { return (RTC->CNTH << 16) | RTC->CNTL; } -static void _rtc_set_time(time_t counter_val) +static void _rtc_set_time(uint32_t counter_val) { _rtc_enter_config_mode(); RTC->CNTH = (counter_val & 0xffff0000) >> 16; @@ -132,7 +132,7 @@ void rtc_init(void) { /* save current time if RTC already works */ bool is_rtc_enable = _is_rtc_enable(); - time_t cur_time = 0; + uint32_t cur_time = 0; if (is_rtc_enable) { cur_time = _rtc_get_time(); } @@ -148,26 +148,21 @@ void rtc_init(void) int rtc_set_time(struct tm *time) { - time_t timestamp = mktime(time); - - if (timestamp == -1) { - return -1; - } + uint32_t timestamp = rtc_mktime(time); _rtc_set_time(timestamp); - DEBUG("%s timestamp=%"PRIu32"\n", __func__, (uint32_t)timestamp); + DEBUG("%s timestamp=%"PRIu32"\n", __func__, timestamp); return 0; } int rtc_get_time(struct tm *time) { - time_t timestamp = _rtc_get_time(); - localtime_r(×tamp, time); - - DEBUG("%s timestamp=%"PRIu32"\n", __func__, (uint32_t)timestamp); + uint32_t timestamp = _rtc_get_time(); + rtc_localtime(timestamp, time); + DEBUG("%s timestamp=%"PRIu32"\n", __func__, timestamp); return 0; } @@ -188,12 +183,12 @@ static void _rtc_disable_alarm(void) _rtc_exit_config_mode(); } -static time_t _rtc_get_alarm_time(void) +static uint32_t _rtc_get_alarm_time(void) { return (RTC->ALRH << 16) | RTC->ALRL; } -static void _rtc_set_alarm_time(time_t alarm_time) +static void _rtc_set_alarm_time(uint32_t alarm_time) { _rtc_enter_config_mode(); RTC->ALRL = (alarm_time & 0x0000ffff); @@ -203,11 +198,7 @@ static void _rtc_set_alarm_time(time_t alarm_time) int rtc_set_alarm(struct tm *time, rtc_alarm_cb_t cb, void *arg) { - time_t timestamp = mktime(time); - - if (timestamp == -1) { - return -2; - } + uint32_t timestamp = rtc_mktime(time); /* disable existing alarm (if enabled) */ rtc_clear_alarm(); @@ -222,17 +213,17 @@ int rtc_set_alarm(struct tm *time, rtc_alarm_cb_t cb, void *arg) /* enable Alarm */ _rtc_enable_alarm(); - DEBUG("%s timestamp=%"PRIu32"\n", __func__, (uint32_t)timestamp); + DEBUG("%s timestamp=%"PRIu32"\n", __func__, timestamp); return 0; } int rtc_get_alarm(struct tm *time) { - time_t timestamp = _rtc_get_alarm_time(); - localtime_r(×tamp, time); + uint32_t timestamp = _rtc_get_alarm_time(); + rtc_localtime(timestamp, time); - DEBUG("%s timestamp=%"PRIu32"\n", __func__, (uint32_t)timestamp); + DEBUG("%s timestamp=%"PRIu32"\n", __func__, timestamp); return 0; }