Page 1 of 1

64bit time_t issue in RTCv1 section  Topic is solved

Posted: Tue Aug 07, 2018 8:17 pm
by ibrauns

just switching my toolchain host from Win10 to Debian i had an issue with HAL 6.0.1 and STM32F103 mcu. I used the actual toolchain GNU MCU Eclipse ARM Embedded GCC which surprised me with 64-bit time_t type.

The function call localtime_r failed.

I solved that with a small patch in hal_rtc_ldd.c.

Maybe there exists a better solution?



Code: Select all

static void rtc_decode(uint32_t tv_sec,
                       uint32_t tv_msec,
                       RTCDateTime *timespec) {
  struct tm tim;
  struct tm *t;
  time_t tv64b;                                             /* XXX patched ibrauns 07082018*/

  /* If the conversion is successful the function returns a pointer
     to the object the result was written into.*/
#if defined(__GNUC__) || defined(__CC_ARM)
  tv64b = tv_sec;                                          /* XXX patched ibrauns 07082018*/             
  t = localtime_r((time_t *)&(tv64b), &tim);               /* XXX patched ibrauns 07082018   
  t = localtime_r((time_t *)&(tv_sec), &tim);               */
  osalDbgAssert(t != NULL, "conversion failed");
  t = localtime(&tv_sec);
  memcpy(&tim, t, sizeof(struct tm));

  rtcConvertStructTmToDateTime(&tim, tv_msec, timespec);

Re: 64bit time_t issue in RTCv1 section

Posted: Mon Dec 31, 2018 11:06 am
by Giovanni
Moving to bug reports.


Re: 64bit time_t issue in RTCv1 section

Posted: Sun Jun 30, 2019 4:56 pm
by Giovanni

Re: 64bit time_t issue in RTCv1 section

Posted: Sun Jul 14, 2019 7:30 am
by Giovanni
This was fixed as bug #845, forgot to close, closing now.