cpu/lpc2387: rtc: remove _rtc_set()

Calling localtime() adds considerable overhead.
There are easier ways to set the date to 1970.

For tests/periph_rtc this results in this ROM change:

master:

   text    data     bss     dec     hex
  31328     240   98064  129632   1fa60

with this patch:

   text    data     bss     dec     hex
  20036     140   98168  118344   1ce48
This commit is contained in:
Benjamin Valentin 2019-12-04 03:10:16 +01:00 committed by Benjamin Valentin
parent b685b4d720
commit 6dbbc8f33a

View File

@ -40,9 +40,6 @@ static rtc_alarm_cb_t _cb;
/* Argument to alarm callback */ /* Argument to alarm callback */
static void *_cb_arg; static void *_cb_arg;
/* internal function to set time based on time_t */
static void _rtc_set(time_t time);
void RTC_IRQHandler(void) __attribute__((interrupt("IRQ"))); void RTC_IRQHandler(void) __attribute__((interrupt("IRQ")));
void rtc_init(void) void rtc_init(void)
@ -56,10 +53,10 @@ void rtc_init(void)
RTC_CCR = CCR_CLKSRC; /* Clock from external 32 kHz Osc. */ RTC_CCR = CCR_CLKSRC; /* Clock from external 32 kHz Osc. */
/* initialize clock with valid unix compatible values /* initialize clock with valid unix compatible values */
* If RTC_YEAR contains an value larger unix time_t we must reset. */
if (RTC_YEAR > 2037) { if (RTC_YEAR > 2037) {
_rtc_set(0); struct tm localt = { .tm_year = 70 };
rtc_set_time(&localt);
} }
rtc_poweron(); rtc_poweron();
@ -201,10 +198,3 @@ void RTC_IRQHandler(void)
VICVectAddr = 0; /* Acknowledge Interrupt */ VICVectAddr = 0; /* Acknowledge Interrupt */
} }
static void _rtc_set(time_t time)
{
struct tm *localt;
localt = localtime(&time); /* convert seconds to broken-down time */
rtc_set_time(localt);
}