Remove TIME_EXTENDED option to more conform C standard

Gregory Nutt <gnutt@nuttx.org>

    Run all .c and .h files modified in this PR through nxstyle and correct all coding standard problems.

Xiang Xiao <xiaoxiang@xiaomi.com>

    Remove TIME_EXTENDED option to more conform C standard

    Note: the code/data size increment is small
This commit is contained in:
Xiang Xiao 2020-01-23 08:17:22 -06:00 committed by Gregory Nutt
parent c09071ffe8
commit 1e3f457c9e
33 changed files with 145 additions and 244 deletions

View File

@ -4359,9 +4359,7 @@ FAR struct tm *localtime(FAR const time_t *timep);
</p> </p>
<ul><pre> <ul><pre>
#include &lt;time.h&gt; #include &lt;time.h&gt;
#if defined(CONFIG_LIBC_LOCALTIME) || defined(CONFIG_TIME_EXTENDED)
FAR char *asctime(FAR const struct tm *tp); FAR char *asctime(FAR const struct tm *tp);
#endif
</pre></ul> </pre></ul>
<p> <p>
<b>Description:</b> <b>Description:</b>
@ -4388,9 +4386,7 @@ FAR char *asctime(FAR const struct tm *tp);
</p> </p>
<ul><pre> <ul><pre>
#include &lt;time.h&gt; #include &lt;time.h&gt;
#if defined(CONFIG_LIBC_LOCALTIME) || defined(CONFIG_TIME_EXTENDED)
FAR char *ctime(FAR const time_t *timep); FAR char *ctime(FAR const time_t *timep);
#endif
</pre></ul> </pre></ul>
<p> <p>
<b>Description:</b> <b>Description:</b>
@ -4479,9 +4475,7 @@ FAR struct tm *localtime_r(FAR const time_t *timep, FAR struct tm *result);
</p> </p>
<ul><pre> <ul><pre>
#include &lt;time.h&gt; #include &lt;time.h&gt;
#if defined(CONFIG_LIBC_LOCALTIME) || defined(CONFIG_TIME_EXTENDED)
FAR char *asctime_r(FAR const struct tm *tp, FAR char *buf); FAR char *asctime_r(FAR const struct tm *tp, FAR char *buf);
#endif
</pre></ul> </pre></ul>
<p> <p>
<b>Description:</b> <b>Description:</b>
@ -4511,9 +4505,7 @@ FAR char *asctime_r(FAR const struct tm *tp, FAR char *buf);
</p> </p>
<ul><pre> <ul><pre>
#include &lt;time.h&gt; #include &lt;time.h&gt;
#if defined(CONFIG_LIBC_LOCALTIME) || defined(CONFIG_TIME_EXTENDED)
FAR char *ctime_r(FAR const time_t *timep, FAR char *buf); FAR char *ctime_r(FAR const time_t *timep, FAR char *buf);
#endif
</pre></ul> </pre></ul>
<p> <p>
<b>Description:</b> <b>Description:</b>

View File

@ -65,6 +65,7 @@
************************************************************************************/ ************************************************************************************/
/* Configuration ********************************************************************/ /* Configuration ********************************************************************/
/* This RTC implementation supports only date/time RTC hardware */ /* This RTC implementation supports only date/time RTC hardware */
#ifndef CONFIG_RTC_DATETIME #ifndef CONFIG_RTC_DATETIME
@ -310,11 +311,8 @@ int up_rtc_getdatetime(FAR struct tm *tp)
tp->tm_mday = ((getreg32(LPC43_RTC_DOM) & RTC_DOM_MASK)); tp->tm_mday = ((getreg32(LPC43_RTC_DOM) & RTC_DOM_MASK));
tp->tm_mon = ((getreg32(LPC43_RTC_MONTH) & RTC_MONTH_MASK)) - 1; tp->tm_mon = ((getreg32(LPC43_RTC_MONTH) & RTC_MONTH_MASK)) - 1;
tp->tm_year = ((getreg32(LPC43_RTC_YEAR) & RTC_YEAR_MASK)-1900); tp->tm_year = ((getreg32(LPC43_RTC_YEAR) & RTC_YEAR_MASK)-1900);
#if defined(CONFIG_LIBC_LOCALTIME) || defined(CONFIG_TIME_EXTENDED)
tp->tm_wday = ((getreg32(LPC43_RTC_DOW) & RTC_DOW_MASK)); tp->tm_wday = ((getreg32(LPC43_RTC_DOW) & RTC_DOW_MASK));
tp->tm_yday = ((getreg32(LPC43_RTC_DOY) & RTC_DOY_MASK)); tp->tm_yday = ((getreg32(LPC43_RTC_DOY) & RTC_DOY_MASK));
#endif
rtc_dumptime(tp, "Returning"); rtc_dumptime(tp, "Returning");
return OK; return OK;
@ -352,11 +350,8 @@ int up_rtc_settime(FAR const struct timespec *tp)
putreg32(((newtime.tm_mday) & RTC_DOM_MASK), LPC43_RTC_DOM); putreg32(((newtime.tm_mday) & RTC_DOM_MASK), LPC43_RTC_DOM);
putreg32((((newtime.tm_mon)+1) & RTC_MONTH_MASK), LPC43_RTC_MONTH); putreg32((((newtime.tm_mon)+1) & RTC_MONTH_MASK), LPC43_RTC_MONTH);
putreg32(((newtime.tm_year) & RTC_YEAR_MASK)+1900, LPC43_RTC_YEAR); putreg32(((newtime.tm_year) & RTC_YEAR_MASK)+1900, LPC43_RTC_YEAR);
#if defined(CONFIG_LIBC_LOCALTIME) || defined(CONFIG_TIME_EXTENDED)
putreg32(((newtime.tm_wday) & RTC_DOW_MASK), LPC43_RTC_DOW); putreg32(((newtime.tm_wday) & RTC_DOW_MASK), LPC43_RTC_DOW);
putreg32(((newtime.tm_yday) & RTC_DOY_MASK), LPC43_RTC_DOY); putreg32(((newtime.tm_yday) & RTC_DOY_MASK), LPC43_RTC_DOY);
#endif
return OK; return OK;
} }
@ -390,13 +385,16 @@ int lpc43_rtc_setalarm(FAR const struct timespec *tp, alarmcb_t callback)
g_alarmcb = callback; g_alarmcb = callback;
/* Break out the time values */ /* Break out the time values */
#warning "Missing logic" #warning "Missing logic"
/* The set the alarm */ /* The set the alarm */
#warning "Missing logic" #warning "Missing logic"
ret = OK; ret = OK;
} }
return ret; return ret;
} }
#endif #endif

View File

@ -61,7 +61,9 @@
/************************************************************************************ /************************************************************************************
* Pre-processor Definitions * Pre-processor Definitions
************************************************************************************/ ************************************************************************************/
/* Configuration ********************************************************************/ /* Configuration ********************************************************************/
/* This RTC implementation supports only date/time RTC hardware */ /* This RTC implementation supports only date/time RTC hardware */
#ifndef CONFIG_RTC_DATETIME #ifndef CONFIG_RTC_DATETIME
@ -102,6 +104,7 @@ volatile bool g_rtc_enabled = false;
/************************************************************************************ /************************************************************************************
* Private Functions * Private Functions
************************************************************************************/ ************************************************************************************/
/************************************************************************************ /************************************************************************************
* Name: rtc_dumpregs * Name: rtc_dumpregs
************************************************************************************/ ************************************************************************************/
@ -523,6 +526,7 @@ int up_rtc_initialize(void)
rtc_dumpregs("On reset"); rtc_dumpregs("On reset");
/* Select the clock source */ /* Select the clock source */
/* Save the token before losing it when resetting */ /* Save the token before losing it when resetting */
regval = getreg32(RTC_MAGIC_REG); regval = getreg32(RTC_MAGIC_REG);
@ -776,6 +780,7 @@ int up_rtc_getdatetime(FAR struct tm *tp)
continue; continue;
} }
#endif #endif
tmp = getreg32(STM32_RTC_DR); tmp = getreg32(STM32_RTC_DR);
if (tmp == dr) if (tmp == dr)
{ {
@ -818,12 +823,12 @@ int up_rtc_getdatetime(FAR struct tm *tp)
tmp = (dr & (RTC_DR_YU_MASK | RTC_DR_YT_MASK)) >> RTC_DR_YU_SHIFT; tmp = (dr & (RTC_DR_YU_MASK | RTC_DR_YT_MASK)) >> RTC_DR_YU_SHIFT;
tp->tm_year = rtc_bcd2bin(tmp) + 100; tp->tm_year = rtc_bcd2bin(tmp) + 100;
#if defined(CONFIG_LIBC_LOCALTIME) || defined(CONFIG_TIME_EXTENDED)
tmp = (dr & RTC_DR_WDU_MASK) >> RTC_DR_WDU_SHIFT; tmp = (dr & RTC_DR_WDU_MASK) >> RTC_DR_WDU_SHIFT;
tp->tm_wday = tmp % 7; tp->tm_wday = tmp % 7;
tp->tm_yday = tp->tm_mday + clock_daysbeforemonth(tp->tm_mon, clock_isleapyear(tp->tm_year + 1900)); tp->tm_yday = tp->tm_mday +
clock_daysbeforemonth(tp->tm_mon,
clock_isleapyear(tp->tm_year + 1900));
tp->tm_isdst = 0; tp->tm_isdst = 0;
#endif
#ifdef CONFIG_STM32_HAVE_RTC_SUBSECONDS #ifdef CONFIG_STM32_HAVE_RTC_SUBSECONDS
/* Return RTC sub-seconds if no configured and if a non-NULL value /* Return RTC sub-seconds if no configured and if a non-NULL value
@ -964,9 +969,7 @@ int stm32_rtc_setdatetime(FAR const struct tm *tp)
dr = (rtc_bin2bcd(tp->tm_mday) << RTC_DR_DU_SHIFT) | dr = (rtc_bin2bcd(tp->tm_mday) << RTC_DR_DU_SHIFT) |
((rtc_bin2bcd(tp->tm_mon + 1)) << RTC_DR_MU_SHIFT) | ((rtc_bin2bcd(tp->tm_mon + 1)) << RTC_DR_MU_SHIFT) |
#if defined(CONFIG_LIBC_LOCALTIME) || defined(CONFIG_TIME_EXTENDED)
((tp->tm_wday == 0 ? 7 : (tp->tm_wday & 7)) << RTC_DR_WDU_SHIFT) | ((tp->tm_wday == 0 ? 7 : (tp->tm_wday & 7)) << RTC_DR_WDU_SHIFT) |
#endif
((rtc_bin2bcd(tp->tm_year - 100)) << RTC_DR_YU_SHIFT); ((rtc_bin2bcd(tp->tm_year - 100)) << RTC_DR_YU_SHIFT);
dr &= ~RTC_DR_RESERVED_BITS; dr &= ~RTC_DR_RESERVED_BITS;
@ -1063,9 +1066,11 @@ int stm32_rtc_setalarm(FAR const struct timespec *tp, alarmcb_t callback)
g_alarmcb = callback; g_alarmcb = callback;
/* Break out the time values */ /* Break out the time values */
#warning "Missing logic" #warning "Missing logic"
/* The set the alarm */ /* The set the alarm */
#warning "Missing logic" #warning "Missing logic"
ret = OK; ret = OK;

View File

@ -65,6 +65,7 @@
****************************************************************************/ ****************************************************************************/
/* Configuration ************************************************************/ /* Configuration ************************************************************/
/* This RTC implementation supports /* This RTC implementation supports
* - date/time RTC hardware * - date/time RTC hardware
* - extended functions Alarm A and B for STM32F4xx and onwards * - extended functions Alarm A and B for STM32F4xx and onwards
@ -198,7 +199,7 @@ static void rtc_dumpregs(FAR const char *msg)
((getreg32(STM32_EXTI_FTSR) & EXTI_RTC_ALARM) ? 0x0100 : 0) | ((getreg32(STM32_EXTI_FTSR) & EXTI_RTC_ALARM) ? 0x0100 : 0) |
((getreg32(STM32_EXTI_IMR) & EXTI_RTC_ALARM) ? 0x0010 : 0) | ((getreg32(STM32_EXTI_IMR) & EXTI_RTC_ALARM) ? 0x0010 : 0) |
((getreg32(STM32_EXTI_EMR) & EXTI_RTC_ALARM) ? 0x0001 : 0); ((getreg32(STM32_EXTI_EMR) & EXTI_RTC_ALARM) ? 0x0001 : 0);
rtcinfo("EXTI (RTSR FTSR ISR EVT): %01x\n",rtc_state); rtcinfo("EXTI (RTSR FTSR ISR EVT): %01x\n", rtc_state);
} }
#else #else
# define rtc_dumpregs(msg) # define rtc_dumpregs(msg)
@ -852,7 +853,8 @@ static inline void rtc_enable_alarm(void)
#ifdef CONFIG_RTC_ALARM #ifdef CONFIG_RTC_ALARM
static int stm32_rtc_getalarmdatetime(rtc_alarmreg_t reg, FAR struct tm *tp) static int stm32_rtc_getalarmdatetime(rtc_alarmreg_t reg, FAR struct tm *tp)
{ {
uint32_t data, tmp; uint32_t data;
uint32_t tmp;
DEBUGASSERT(tp != NULL); DEBUGASSERT(tp != NULL);
@ -915,6 +917,7 @@ int up_rtc_initialize(void)
*/ */
/* Select the clock source */ /* Select the clock source */
/* Save the token before losing it when resetting */ /* Save the token before losing it when resetting */
regval = getreg32(RTC_MAGIC_REG); regval = getreg32(RTC_MAGIC_REG);
@ -1085,7 +1088,7 @@ int up_rtc_initialize(void)
return OK; return OK;
} }
/************************************************************************************ /****************************************************************************
* Name: stm32_rtc_irqinitialize * Name: stm32_rtc_irqinitialize
* *
* Description: * Description:
@ -1098,7 +1101,7 @@ int up_rtc_initialize(void)
* Returned Value: * Returned Value:
* Zero (OK) on success; a negated errno on failure * Zero (OK) on success; a negated errno on failure
* *
************************************************************************************/ ****************************************************************************/
int stm32_rtc_irqinitialize(void) int stm32_rtc_irqinitialize(void)
{ {
@ -1162,6 +1165,7 @@ int up_rtc_getdatetime(FAR struct tm *tp)
continue; continue;
} }
#endif #endif
tmp = getreg32(STM32_RTC_DR); tmp = getreg32(STM32_RTC_DR);
if (tmp == dr) if (tmp == dr)
{ {
@ -1204,12 +1208,12 @@ int up_rtc_getdatetime(FAR struct tm *tp)
tmp = (dr & (RTC_DR_YU_MASK | RTC_DR_YT_MASK)) >> RTC_DR_YU_SHIFT; tmp = (dr & (RTC_DR_YU_MASK | RTC_DR_YT_MASK)) >> RTC_DR_YU_SHIFT;
tp->tm_year = rtc_bcd2bin(tmp) + 100; tp->tm_year = rtc_bcd2bin(tmp) + 100;
#if defined(CONFIG_LIBC_LOCALTIME) || defined(CONFIG_TIME_EXTENDED)
tmp = (dr & RTC_DR_WDU_MASK) >> RTC_DR_WDU_SHIFT; tmp = (dr & RTC_DR_WDU_MASK) >> RTC_DR_WDU_SHIFT;
tp->tm_wday = tmp % 7; tp->tm_wday = tmp % 7;
tp->tm_yday = tp->tm_mday + clock_daysbeforemonth(tp->tm_mon, clock_isleapyear(tp->tm_year + 1900)); tp->tm_yday = tp->tm_mday +
clock_daysbeforemonth(tp->tm_mon,
clock_isleapyear(tp->tm_year + 1900));
tp->tm_isdst = 0; tp->tm_isdst = 0;
#endif
#ifdef CONFIG_STM32_HAVE_RTC_SUBSECONDS #ifdef CONFIG_STM32_HAVE_RTC_SUBSECONDS
/* Return RTC sub-seconds if no configured and if a non-NULL value /* Return RTC sub-seconds if no configured and if a non-NULL value
@ -1318,9 +1322,7 @@ int stm32_rtc_setdatetime(FAR const struct tm *tp)
dr = (rtc_bin2bcd(tp->tm_mday) << RTC_DR_DU_SHIFT) | dr = (rtc_bin2bcd(tp->tm_mday) << RTC_DR_DU_SHIFT) |
((rtc_bin2bcd(tp->tm_mon + 1)) << RTC_DR_MU_SHIFT) | ((rtc_bin2bcd(tp->tm_mon + 1)) << RTC_DR_MU_SHIFT) |
#if defined(CONFIG_LIBC_LOCALTIME) || defined(CONFIG_TIME_EXTENDED)
((tp->tm_wday == 0 ? 7 : (tp->tm_wday & 7)) << RTC_DR_WDU_SHIFT) | ((tp->tm_wday == 0 ? 7 : (tp->tm_wday & 7)) << RTC_DR_WDU_SHIFT) |
#endif
((rtc_bin2bcd(tp->tm_year - 100)) << RTC_DR_YU_SHIFT); ((rtc_bin2bcd(tp->tm_year - 100)) << RTC_DR_YU_SHIFT);
dr &= ~RTC_DR_RESERVED_BITS; dr &= ~RTC_DR_RESERVED_BITS;

View File

@ -66,6 +66,7 @@
****************************************************************************/ ****************************************************************************/
/* Configuration ************************************************************/ /* Configuration ************************************************************/
/* This RTC implementation supports /* This RTC implementation supports
* - date/time RTC hardware * - date/time RTC hardware
* - extended functions Alarm A and B * - extended functions Alarm A and B
@ -216,7 +217,7 @@ static void rtc_dumptime(FAR const struct tm *tp, FAR const char *msg)
rtcinfo(" tm_year: %08x\n", tp->tm_year); rtcinfo(" tm_year: %08x\n", tp->tm_year);
#else #else
rtcinfo(" tm: %04d-%02d-%02d %02d:%02d:%02d\n", rtcinfo(" tm: %04d-%02d-%02d %02d:%02d:%02d\n",
tp->tm_year+1900, tp->tm_mon+1, tp->tm_mday, tp->tm_year + 1900, tp->tm_mon + 1, tp->tm_mday,
tp->tm_hour, tp->tm_min, tp->tm_sec); tp->tm_hour, tp->tm_min, tp->tm_sec);
#endif #endif
} }
@ -493,7 +494,8 @@ static void rtc_resume(void)
****************************************************************************/ ****************************************************************************/
#ifdef CONFIG_RTC_ALARM #ifdef CONFIG_RTC_ALARM
static int stm32_rtc_alarm_handler(int irq, FAR void *context, FAR void *rtc_handler_arg) static int stm32_rtc_alarm_handler(int irq, FAR void *context,
FAR void *rtc_handler_arg)
{ {
FAR struct alm_cbinfo_s *cbinfo; FAR struct alm_cbinfo_s *cbinfo;
alm_callback_t cb; alm_callback_t cb;
@ -802,7 +804,8 @@ static inline void rtc_enable_alarm(void)
#ifdef CONFIG_RTC_ALARM #ifdef CONFIG_RTC_ALARM
static int stm32_rtc_getalarmdatetime(rtc_alarmreg_t reg, FAR struct tm *tp) static int stm32_rtc_getalarmdatetime(rtc_alarmreg_t reg, FAR struct tm *tp)
{ {
uint32_t data, tmp; uint32_t data;
uint32_t tmp;
DEBUGASSERT(tp != NULL); DEBUGASSERT(tp != NULL);
@ -1017,7 +1020,7 @@ int up_rtc_initialize(void)
return OK; return OK;
} }
/************************************************************************************ /****************************************************************************
* Name: stm32_rtc_irqinitialize * Name: stm32_rtc_irqinitialize
* *
* Description: * Description:
@ -1030,7 +1033,7 @@ int up_rtc_initialize(void)
* Returned Value: * Returned Value:
* Zero (OK) on success; a negated errno on failure * Zero (OK) on success; a negated errno on failure
* *
************************************************************************************/ ****************************************************************************/
int stm32_rtc_irqinitialize(void) int stm32_rtc_irqinitialize(void)
{ {
@ -1089,6 +1092,7 @@ int stm32_rtc_getdatetime_with_subseconds(FAR struct tm *tp, FAR long *nsec)
continue; continue;
} }
#endif #endif
tmp = getreg32(STM32_RTC_DR); tmp = getreg32(STM32_RTC_DR);
if (tmp == dr) if (tmp == dr)
{ {
@ -1131,12 +1135,12 @@ int stm32_rtc_getdatetime_with_subseconds(FAR struct tm *tp, FAR long *nsec)
tmp = (dr & (RTC_DR_YU_MASK | RTC_DR_YT_MASK)) >> RTC_DR_YU_SHIFT; tmp = (dr & (RTC_DR_YU_MASK | RTC_DR_YT_MASK)) >> RTC_DR_YU_SHIFT;
tp->tm_year = rtc_bcd2bin(tmp) + 100; tp->tm_year = rtc_bcd2bin(tmp) + 100;
#if defined(CONFIG_LIBC_LOCALTIME) || defined(CONFIG_TIME_EXTENDED)
tmp = (dr & RTC_DR_WDU_MASK) >> RTC_DR_WDU_SHIFT; tmp = (dr & RTC_DR_WDU_MASK) >> RTC_DR_WDU_SHIFT;
tp->tm_wday = tmp % 7; tp->tm_wday = tmp % 7;
tp->tm_yday = tp->tm_mday + clock_daysbeforemonth(tp->tm_mon, clock_isleapyear(tp->tm_year + 1900)); tp->tm_yday = tp->tm_mday +
clock_daysbeforemonth(tp->tm_mon,
clock_isleapyear(tp->tm_year + 1900));
tp->tm_isdst = 0; tp->tm_isdst = 0;
#endif
/* Return RTC sub-seconds if a non-NULL value /* Return RTC sub-seconds if a non-NULL value
* of nsec has been provided to receive the sub-second value. * of nsec has been provided to receive the sub-second value.
@ -1202,14 +1206,15 @@ int up_rtc_getdatetime(FAR struct tm *tp)
* Description: * Description:
* Get the current date and time from the date/time RTC. This interface * Get the current date and time from the date/time RTC. This interface
* is only supported by the date/time RTC hardware implementation. * is only supported by the date/time RTC hardware implementation.
* It is used to replace the system timer. It is only used by the RTOS during * It is used to replace the system timer. It is only used by the RTOS
* initialization to set up the system time when CONFIG_RTC and CONFIG_RTC_DATETIME * during initialization to set up the system time when CONFIG_RTC and
* are selected (and CONFIG_RTC_HIRES is not). * CONFIG_RTC_DATETIME are selected (and CONFIG_RTC_HIRES is not).
* *
* NOTE: This interface exposes sub-second accuracy capability of RTC hardware. * NOTE: This interface exposes sub-second accuracy capability of RTC
* This interface allow maintaining timing accuracy when system time needs constant * hardware. This interface allow maintaining timing accuracy when
* resynchronization with RTC, for example with board level power-save mode utilizing * system time needs constant resynchronization with RTC, for example
* deep-sleep modes such as STOP on STM32 MCUs. * with board level power-save mode utilizing deep-sleep modes such as
* STOP on STM32 MCUs.
* *
* Input Parameters: * Input Parameters:
* tp - The location to return the high resolution time value. * tp - The location to return the high resolution time value.
@ -1277,9 +1282,7 @@ int stm32_rtc_setdatetime(FAR const struct tm *tp)
dr = (rtc_bin2bcd(tp->tm_mday) << RTC_DR_DU_SHIFT) | dr = (rtc_bin2bcd(tp->tm_mday) << RTC_DR_DU_SHIFT) |
((rtc_bin2bcd(tp->tm_mon + 1)) << RTC_DR_MU_SHIFT) | ((rtc_bin2bcd(tp->tm_mon + 1)) << RTC_DR_MU_SHIFT) |
#if defined(CONFIG_LIBC_LOCALTIME) || defined(CONFIG_TIME_EXTENDED)
((tp->tm_wday == 0 ? 7 : (tp->tm_wday & 7)) << RTC_DR_WDU_SHIFT) | ((tp->tm_wday == 0 ? 7 : (tp->tm_wday & 7)) << RTC_DR_WDU_SHIFT) |
#endif
((rtc_bin2bcd(tp->tm_year - 100)) << RTC_DR_YU_SHIFT); ((rtc_bin2bcd(tp->tm_year - 100)) << RTC_DR_YU_SHIFT);
dr &= ~RTC_DR_RESERVED_BITS; dr &= ~RTC_DR_RESERVED_BITS;
@ -1661,13 +1664,13 @@ static inline void rtc_enable_wakeup(void)
} }
#endif #endif
/************************************************************************************ /****************************************************************************
* Name: rtc_set_wcksel * Name: rtc_set_wcksel
* *
* Description: * Description:
* Sets RTC wakeup clock selection value * Sets RTC wakeup clock selection value
* *
************************************************************************************/ ****************************************************************************/
#ifdef CONFIG_RTC_PERIODIC #ifdef CONFIG_RTC_PERIODIC
static inline void rtc_set_wcksel(unsigned int wucksel) static inline void rtc_set_wcksel(unsigned int wucksel)
@ -1711,7 +1714,7 @@ int stm32_rtc_setperiodic(FAR const struct timespec *period, wakeupcb_t callback
#elif defined(CONFIG_STM32_RTC_LSICLOCK) #elif defined(CONFIG_STM32_RTC_LSICLOCK)
# error "Periodic wakeup not available for LSI (and it is too inaccurate!)" # error "Periodic wakeup not available for LSI (and it is too inaccurate!)"
#elif defined(CONFIG_STM32_RTC_LSECLOCK) #elif defined(CONFIG_STM32_RTC_LSECLOCK)
const uint32_t rtc_div16_max_msecs = 16 * 1000 * 0xffffU / STM32_LSE_FREQUENCY; const uint32_t rtc_div16_max_msecs = 16 * 1000 * 0xffffu / STM32_LSE_FREQUENCY;
#else #else
# error "No clock for RTC!" # error "No clock for RTC!"
#endif #endif
@ -1722,12 +1725,12 @@ int stm32_rtc_setperiodic(FAR const struct timespec *period, wakeupcb_t callback
* We currently go for subseconds accuracy instead of maximum period. * We currently go for subseconds accuracy instead of maximum period.
*/ */
if (period->tv_sec > 0xffffU || if (period->tv_sec > 0xffffu ||
(period->tv_sec == 0xffffU && period->tv_nsec > 0)) (period->tv_sec == 0xffffu && period->tv_nsec > 0))
{ {
/* More than max. */ /* More than max. */
secs = 0xffffU; secs = 0xffffu;
millisecs = secs * 1000; millisecs = secs * 1000;
} }
else else
@ -1833,6 +1836,7 @@ int stm32_rtc_setperiodic(FAR const struct timespec *period, wakeupcb_t callback
* Zero (OK) on success; a negated errno on failure * Zero (OK) on success; a negated errno on failure
* *
****************************************************************************/ ****************************************************************************/
#ifdef CONFIG_RTC_PERIODIC #ifdef CONFIG_RTC_PERIODIC
int stm32_rtc_cancelperiodic(void) int stm32_rtc_cancelperiodic(void)
{ {

View File

@ -1147,6 +1147,7 @@ int up_rtc_getdatetime(FAR struct tm *tp)
continue; continue;
} }
#endif #endif
tmp = getreg32(STM32_RTC_DR); tmp = getreg32(STM32_RTC_DR);
if (tmp == dr) if (tmp == dr)
{ {
@ -1189,13 +1190,11 @@ int up_rtc_getdatetime(FAR struct tm *tp)
tmp = (dr & (RTC_DR_YU_MASK | RTC_DR_YT_MASK)) >> RTC_DR_YU_SHIFT; tmp = (dr & (RTC_DR_YU_MASK | RTC_DR_YT_MASK)) >> RTC_DR_YU_SHIFT;
tp->tm_year = rtc_bcd2bin(tmp) + 100; tp->tm_year = rtc_bcd2bin(tmp) + 100;
#if defined(CONFIG_LIBC_LOCALTIME) || defined(CONFIG_TIME_EXTENDED)
tmp = (dr & RTC_DR_WDU_MASK) >> RTC_DR_WDU_SHIFT; tmp = (dr & RTC_DR_WDU_MASK) >> RTC_DR_WDU_SHIFT;
tp->tm_wday = tmp % 7; tp->tm_wday = tmp % 7;
tp->tm_yday = tp->tm_mday + tp->tm_yday = tp->tm_mday +
clock_daysbeforemonth(tp->tm_mon, clock_isleapyear(tp->tm_year + 1900)); clock_daysbeforemonth(tp->tm_mon, clock_isleapyear(tp->tm_year + 1900));
tp->tm_isdst = 0; tp->tm_isdst = 0;
#endif
#ifdef CONFIG_STM32F7_HAVE_RTC_SUBSECONDS #ifdef CONFIG_STM32F7_HAVE_RTC_SUBSECONDS
/* Return RTC sub-seconds if a non-NULL value /* Return RTC sub-seconds if a non-NULL value
@ -1340,9 +1339,7 @@ int stm32_rtc_setdatetime(FAR const struct tm *tp)
dr = (rtc_bin2bcd(tp->tm_mday) << RTC_DR_DU_SHIFT) | dr = (rtc_bin2bcd(tp->tm_mday) << RTC_DR_DU_SHIFT) |
((rtc_bin2bcd(tp->tm_mon + 1)) << RTC_DR_MU_SHIFT) | ((rtc_bin2bcd(tp->tm_mon + 1)) << RTC_DR_MU_SHIFT) |
#if defined(CONFIG_LIBC_LOCALTIME) || defined(CONFIG_TIME_EXTENDED)
((tp->tm_wday == 0 ? 7 : (tp->tm_wday & 7)) << RTC_DR_WDU_SHIFT) | ((tp->tm_wday == 0 ? 7 : (tp->tm_wday & 7)) << RTC_DR_WDU_SHIFT) |
#endif
((rtc_bin2bcd(tp->tm_year - 100)) << RTC_DR_YU_SHIFT); ((rtc_bin2bcd(tp->tm_year - 100)) << RTC_DR_YU_SHIFT);
dr &= ~RTC_DR_RESERVED_BITS; dr &= ~RTC_DR_RESERVED_BITS;
@ -1742,13 +1739,13 @@ static inline void rtc_enable_wakeup(void)
} }
#endif #endif
/************************************************************************************ /****************************************************************************
* Name: rtc_set_wcksel * Name: rtc_set_wcksel
* *
* Description: * Description:
* Sets RTC wakeup clock selection value * Sets RTC wakeup clock selection value
* *
************************************************************************************/ ****************************************************************************/
#ifdef CONFIG_RTC_PERIODIC #ifdef CONFIG_RTC_PERIODIC
static inline void rtc_set_wcksel(unsigned int wucksel) static inline void rtc_set_wcksel(unsigned int wucksel)

View File

@ -1147,6 +1147,7 @@ int up_rtc_getdatetime(FAR struct tm *tp)
continue; continue;
} }
#endif #endif
tmp = getreg32(STM32_RTC_DR); tmp = getreg32(STM32_RTC_DR);
if (tmp == dr) if (tmp == dr)
{ {
@ -1189,13 +1190,11 @@ int up_rtc_getdatetime(FAR struct tm *tp)
tmp = (dr & (RTC_DR_YU_MASK | RTC_DR_YT_MASK)) >> RTC_DR_YU_SHIFT; tmp = (dr & (RTC_DR_YU_MASK | RTC_DR_YT_MASK)) >> RTC_DR_YU_SHIFT;
tp->tm_year = rtc_bcd2bin(tmp) + 100; tp->tm_year = rtc_bcd2bin(tmp) + 100;
#if defined(CONFIG_LIBC_LOCALTIME) || defined(CONFIG_TIME_EXTENDED)
tmp = (dr & RTC_DR_WDU_MASK) >> RTC_DR_WDU_SHIFT; tmp = (dr & RTC_DR_WDU_MASK) >> RTC_DR_WDU_SHIFT;
tp->tm_wday = tmp % 7; tp->tm_wday = tmp % 7;
tp->tm_yday = tp->tm_mday + tp->tm_yday = tp->tm_mday +
clock_daysbeforemonth(tp->tm_mon, clock_isleapyear(tp->tm_year + 1900)); clock_daysbeforemonth(tp->tm_mon, clock_isleapyear(tp->tm_year + 1900));
tp->tm_isdst = 0; tp->tm_isdst = 0;
#endif
#ifdef CONFIG_STM32H7_HAVE_RTC_SUBSECONDS #ifdef CONFIG_STM32H7_HAVE_RTC_SUBSECONDS
/* Return RTC sub-seconds if a non-NULL value /* Return RTC sub-seconds if a non-NULL value
@ -1340,9 +1339,7 @@ int stm32_rtc_setdatetime(FAR const struct tm *tp)
dr = (rtc_bin2bcd(tp->tm_mday) << RTC_DR_DU_SHIFT) | dr = (rtc_bin2bcd(tp->tm_mday) << RTC_DR_DU_SHIFT) |
((rtc_bin2bcd(tp->tm_mon + 1)) << RTC_DR_MU_SHIFT) | ((rtc_bin2bcd(tp->tm_mon + 1)) << RTC_DR_MU_SHIFT) |
#if defined(CONFIG_LIBC_LOCALTIME) || defined(CONFIG_TIME_EXTENDED)
((tp->tm_wday == 0 ? 7 : (tp->tm_wday & 7)) << RTC_DR_WDU_SHIFT) | ((tp->tm_wday == 0 ? 7 : (tp->tm_wday & 7)) << RTC_DR_WDU_SHIFT) |
#endif
((rtc_bin2bcd(tp->tm_year - 100)) << RTC_DR_YU_SHIFT); ((rtc_bin2bcd(tp->tm_year - 100)) << RTC_DR_YU_SHIFT);
dr &= ~RTC_DR_RESERVED_BITS; dr &= ~RTC_DR_RESERVED_BITS;
@ -1742,13 +1739,13 @@ static inline void rtc_enable_wakeup(void)
} }
#endif #endif
/************************************************************************************ /****************************************************************************
* Name: rtc_set_wcksel * Name: rtc_set_wcksel
* *
* Description: * Description:
* Sets RTC wakeup clock selection value * Sets RTC wakeup clock selection value
* *
************************************************************************************/ ****************************************************************************/
#ifdef CONFIG_RTC_PERIODIC #ifdef CONFIG_RTC_PERIODIC
static inline void rtc_set_wcksel(unsigned int wucksel) static inline void rtc_set_wcksel(unsigned int wucksel)

View File

@ -67,6 +67,7 @@
****************************************************************************/ ****************************************************************************/
/* Configuration ************************************************************/ /* Configuration ************************************************************/
/* This RTC implementation supports /* This RTC implementation supports
* - date/time RTC hardware * - date/time RTC hardware
* - extended functions Alarm A and B * - extended functions Alarm A and B
@ -195,7 +196,7 @@ static void rtc_dumptime(FAR const struct tm *tp, FAR const char *msg)
rtcinfo(" tm_year: %08x\n", tp->tm_year); rtcinfo(" tm_year: %08x\n", tp->tm_year);
#else #else
rtcinfo(" tm: %04d-%02d-%02d %02d:%02d:%02d\n", rtcinfo(" tm: %04d-%02d-%02d %02d:%02d:%02d\n",
tp->tm_year+1900, tp->tm_mon+1, tp->tm_mday, tp->tm_year + 1900, tp->tm_mon + 1, tp->tm_mday,
tp->tm_hour, tp->tm_min, tp->tm_sec); tp->tm_hour, tp->tm_min, tp->tm_sec);
#endif #endif
} }
@ -226,7 +227,7 @@ static void rtc_wprunlock(void)
/* The following steps are required to unlock the write protection on all the /* The following steps are required to unlock the write protection on all the
* RTC registers (except for RTC_ISR[13:8], RTC_TAFCR, and RTC_BKPxR). * RTC registers (except for RTC_ISR[13:8], RTC_TAFCR, and RTC_BKPxR).
* *
* 1. Write 0xCA into the RTC_WPR register. * 1. Write 0xca into the RTC_WPR register.
* 2. Write 0x53 into the RTC_WPR register. * 2. Write 0x53 into the RTC_WPR register.
* *
* Writing a wrong key re-activates the write protection. * Writing a wrong key re-activates the write protection.
@ -472,7 +473,8 @@ static void rtc_resume(void)
****************************************************************************/ ****************************************************************************/
#ifdef CONFIG_RTC_ALARM #ifdef CONFIG_RTC_ALARM
static int stm32l4_rtc_alarm_handler(int irq, FAR void *context, FAR void *rtc_handler_arg) static int stm32l4_rtc_alarm_handler(int irq, FAR void *context,
FAR void *rtc_handler_arg)
{ {
FAR struct alm_cbinfo_s *cbinfo; FAR struct alm_cbinfo_s *cbinfo;
alm_callback_t cb; alm_callback_t cb;
@ -781,7 +783,8 @@ static inline void rtc_enable_alarm(void)
#ifdef CONFIG_RTC_ALARM #ifdef CONFIG_RTC_ALARM
static int stm32l4_rtc_getalarmdatetime(rtc_alarmreg_t reg, FAR struct tm *tp) static int stm32l4_rtc_getalarmdatetime(rtc_alarmreg_t reg, FAR struct tm *tp)
{ {
uint32_t data, tmp; uint32_t data;
uint32_t tmp;
DEBUGASSERT(tp != NULL); DEBUGASSERT(tp != NULL);
@ -1046,6 +1049,7 @@ int stm32l4_rtc_getdatetime_with_subseconds(FAR struct tm *tp, FAR long *nsec)
continue; continue;
} }
#endif #endif
tmp = getreg32(STM32L4_RTC_DR); tmp = getreg32(STM32L4_RTC_DR);
if (tmp == dr) if (tmp == dr)
{ {
@ -1088,12 +1092,12 @@ int stm32l4_rtc_getdatetime_with_subseconds(FAR struct tm *tp, FAR long *nsec)
tmp = (dr & (RTC_DR_YU_MASK | RTC_DR_YT_MASK)) >> RTC_DR_YU_SHIFT; tmp = (dr & (RTC_DR_YU_MASK | RTC_DR_YT_MASK)) >> RTC_DR_YU_SHIFT;
tp->tm_year = rtc_bcd2bin(tmp) + 100; tp->tm_year = rtc_bcd2bin(tmp) + 100;
#if defined(CONFIG_LIBC_LOCALTIME) || defined(CONFIG_TIME_EXTENDED)
tmp = (dr & RTC_DR_WDU_MASK) >> RTC_DR_WDU_SHIFT; tmp = (dr & RTC_DR_WDU_MASK) >> RTC_DR_WDU_SHIFT;
tp->tm_wday = tmp % 7; tp->tm_wday = tmp % 7;
tp->tm_yday = tp->tm_mday + clock_daysbeforemonth(tp->tm_mon, clock_isleapyear(tp->tm_year + 1900)); tp->tm_yday = tp->tm_mday +
clock_daysbeforemonth(tp->tm_mon,
clock_isleapyear(tp->tm_year + 1900));
tp->tm_isdst = 0; tp->tm_isdst = 0;
#endif
/* Return RTC sub-seconds if a non-NULL value /* Return RTC sub-seconds if a non-NULL value
* of nsec has been provided to receive the sub-second value. * of nsec has been provided to receive the sub-second value.
@ -1159,14 +1163,15 @@ int up_rtc_getdatetime(FAR struct tm *tp)
* Description: * Description:
* Get the current date and time from the date/time RTC. This interface * Get the current date and time from the date/time RTC. This interface
* is only supported by the date/time RTC hardware implementation. * is only supported by the date/time RTC hardware implementation.
* It is used to replace the system timer. It is only used by the RTOS during * It is used to replace the system timer. It is only used by the RTOS
* initialization to set up the system time when CONFIG_RTC and CONFIG_RTC_DATETIME * during initialization to set up the system time when CONFIG_RTC and
* are selected (and CONFIG_RTC_HIRES is not). * CONFIG_RTC_DATETIME are selected (and CONFIG_RTC_HIRES is not).
* *
* NOTE: This interface exposes sub-second accuracy capability of RTC hardware. * NOTE: This interface exposes sub-second accuracy capability of RTC
* This interface allow maintaining timing accuracy when system time needs constant * hardware. This interface allow maintaining timing accuracy when system
* resynchronization with RTC, for example with board level power-save mode utilizing * time needs constant resynchronization with RTC, for example with board
* deep-sleep modes such as STOP on STM32 MCUs. * level power-save mode utilizing deep-sleep modes such as STOP on STM32
* MCUs.
* *
* Input Parameters: * Input Parameters:
* tp - The location to return the high resolution time value. * tp - The location to return the high resolution time value.
@ -1234,9 +1239,7 @@ int stm32l4_rtc_setdatetime(FAR const struct tm *tp)
dr = (rtc_bin2bcd(tp->tm_mday) << RTC_DR_DU_SHIFT) | dr = (rtc_bin2bcd(tp->tm_mday) << RTC_DR_DU_SHIFT) |
((rtc_bin2bcd(tp->tm_mon + 1)) << RTC_DR_MU_SHIFT) | ((rtc_bin2bcd(tp->tm_mon + 1)) << RTC_DR_MU_SHIFT) |
#if defined(CONFIG_LIBC_LOCALTIME) || defined(CONFIG_TIME_EXTENDED)
((tp->tm_wday == 0 ? 7 : (tp->tm_wday & 7)) << RTC_DR_WDU_SHIFT) | ((tp->tm_wday == 0 ? 7 : (tp->tm_wday & 7)) << RTC_DR_WDU_SHIFT) |
#endif
((rtc_bin2bcd(tp->tm_year - 100)) << RTC_DR_YU_SHIFT); ((rtc_bin2bcd(tp->tm_year - 100)) << RTC_DR_YU_SHIFT);
dr &= ~RTC_DR_RESERVED_BITS; dr &= ~RTC_DR_RESERVED_BITS;
@ -1618,13 +1621,13 @@ static inline void rtc_enable_wakeup(void)
} }
#endif #endif
/************************************************************************************ /****************************************************************************
* Name: rtc_set_wcksel * Name: rtc_set_wcksel
* *
* Description: * Description:
* Sets RTC wakeup clock selection value * Sets RTC wakeup clock selection value
* *
************************************************************************************/ ****************************************************************************/
#ifdef CONFIG_RTC_PERIODIC #ifdef CONFIG_RTC_PERIODIC
static inline void rtc_set_wcksel(unsigned int wucksel) static inline void rtc_set_wcksel(unsigned int wucksel)
@ -1668,7 +1671,7 @@ int stm32l4_rtc_setperiodic(FAR const struct timespec *period, wakeupcb_t callba
#elif defined(CONFIG_STM32L4_RTC_LSICLOCK) #elif defined(CONFIG_STM32L4_RTC_LSICLOCK)
# error "Periodic wakeup not available for LSI (and it is too inaccurate!)" # error "Periodic wakeup not available for LSI (and it is too inaccurate!)"
#elif defined(CONFIG_STM32L4_RTC_LSECLOCK) #elif defined(CONFIG_STM32L4_RTC_LSECLOCK)
const uint32_t rtc_div16_max_msecs = 16 * 1000 * 0xffffU / STM32L4_LSE_FREQUENCY; const uint32_t rtc_div16_max_msecs = 16 * 1000 * 0xffffu / STM32L4_LSE_FREQUENCY;
#else #else
# error "No clock for RTC!" # error "No clock for RTC!"
#endif #endif
@ -1679,12 +1682,12 @@ int stm32l4_rtc_setperiodic(FAR const struct timespec *period, wakeupcb_t callba
* We currently go for subseconds accuracy instead of maximum period. * We currently go for subseconds accuracy instead of maximum period.
*/ */
if (period->tv_sec > 0xffffU || if (period->tv_sec > 0xffffu ||
(period->tv_sec == 0xffffU && period->tv_nsec > 0)) (period->tv_sec == 0xffffu && period->tv_nsec > 0))
{ {
/* More than max. */ /* More than max. */
secs = 0xffffU; secs = 0xffffu;
millisecs = secs * 1000; millisecs = secs * 1000;
} }
else else
@ -1790,6 +1793,7 @@ int stm32l4_rtc_setperiodic(FAR const struct timespec *period, wakeupcb_t callba
* Zero (OK) on success; a negated errno on failure * Zero (OK) on success; a negated errno on failure
* *
****************************************************************************/ ****************************************************************************/
#ifdef CONFIG_RTC_PERIODIC #ifdef CONFIG_RTC_PERIODIC
int stm32l4_rtc_cancelperiodic(void) int stm32l4_rtc_cancelperiodic(void)
{ {

View File

@ -35,7 +35,6 @@ config EZ80_RTC
default n default n
select RTC select RTC
select RTC_DATETIME select RTC_DATETIME
select TIME_EXTENDED
config EZ80_EMAC config EZ80_EMAC
bool "Ethernet MAC" bool "Ethernet MAC"

View File

@ -72,7 +72,7 @@
/**************************************************************************** /****************************************************************************
* Private Types * Private Types
*****************************************************************************/ ****************************************************************************/
/* Raw time from the RTC. All are binary. */ /* Raw time from the RTC. All are binary. */
@ -198,9 +198,7 @@ static void rtc_dumptime(FAR const struct tm *tp, FAR const char *msg)
rtcinfo(" tm_sec: %08x\n", tp->tm_sec); rtcinfo(" tm_sec: %08x\n", tp->tm_sec);
rtcinfo(" tm_min: %08x\n", tp->tm_min); rtcinfo(" tm_min: %08x\n", tp->tm_min);
rtcinfo(" tm_hour: %08x\n", tp->tm_hour); rtcinfo(" tm_hour: %08x\n", tp->tm_hour);
#if defined(CONFIG_LIBC_LOCALTIME) || defined(CONFIG_TIME_EXTENDED)
rtcinfo(" tm_wday: %08x\n", tp->tm_wday); rtcinfo(" tm_wday: %08x\n", tp->tm_wday);
#endif
rtcinfo(" tm_mday: %08x\n", tp->tm_mday); rtcinfo(" tm_mday: %08x\n", tp->tm_mday);
rtcinfo(" tm_mon: %08x\n", tp->tm_mon); rtcinfo(" tm_mon: %08x\n", tp->tm_mon);
rtcinfo(" tm_year: %08x\n", tp->tm_year); rtcinfo(" tm_year: %08x\n", tp->tm_year);
@ -229,7 +227,7 @@ static void rtc_unlock(void)
regval = inp(EZ80_RTC_CTRL); regval = inp(EZ80_RTC_CTRL);
regval |= EZ80_RTC_UNLOCK; regval |= EZ80_RTC_UNLOCK;
outp(EZ80_RTC_CTRL,regval); outp(EZ80_RTC_CTRL, regval);
} }
/**************************************************************************** /****************************************************************************
@ -252,7 +250,7 @@ static void rtc_lock(void)
regval = inp(EZ80_RTC_CTRL); regval = inp(EZ80_RTC_CTRL);
regval &= ~EZ80_RTC_UNLOCK; regval &= ~EZ80_RTC_UNLOCK;
outp(EZ80_RTC_CTRL,regval); outp(EZ80_RTC_CTRL, regval);
} }
/**************************************************************************** /****************************************************************************
@ -453,7 +451,7 @@ int up_rtc_initialize(void)
return OK; return OK;
} }
/************************************************************************************ /****************************************************************************
* Name: z80_rtc_irqinitialize * Name: z80_rtc_irqinitialize
* *
* Description: * Description:
@ -466,7 +464,7 @@ int up_rtc_initialize(void)
* Returned Value: * Returned Value:
* Zero (OK) on success; a negated errno on failure * Zero (OK) on success; a negated errno on failure
* *
************************************************************************************/ ****************************************************************************/
#ifdef CONFIG_RTC_ALARM #ifdef CONFIG_RTC_ALARM
int z80_rtc_irqinitialize(void) int z80_rtc_irqinitialize(void)
@ -642,9 +640,7 @@ int ez80_rtc_setalarm(FAR struct alm_setalarm_s *alminfo)
almregs.sec = alminfo->as_time.tm_sec; almregs.sec = alminfo->as_time.tm_sec;
almregs.min = alminfo->as_time.tm_min; almregs.min = alminfo->as_time.tm_min;
almregs.hrs = alminfo->as_time.tm_hour; almregs.hrs = alminfo->as_time.tm_hour;
#if defined(CONFIG_LIBC_LOCALTIME) || defined(CONFIG_TIME_EXTENDED)
almregs.dow = alminfo->as_time.tm_wday; almregs.dow = alminfo->as_time.tm_wday;
#endif
set_raw_alarm(&almregs); set_raw_alarm(&almregs);
@ -747,9 +743,7 @@ int ez80_rtc_rdalarm(FAR struct tm *almtime)
almtime->tm_sec = almregs.sec; almtime->tm_sec = almregs.sec;
almtime->tm_min = almregs.min; almtime->tm_min = almregs.min;
almtime->tm_hour = almregs.hrs; almtime->tm_hour = almregs.hrs;
#if defined(CONFIG_LIBC_LOCALTIME) || defined(CONFIG_TIME_EXTENDED)
almtime->tm_wday = almregs.dow; almtime->tm_wday = almregs.dow;
#endif
rtc_dumptime((FAR const struct tm *)almtime, "Returning"); rtc_dumptime((FAR const struct tm *)almtime, "Returning");
return OK; return OK;

View File

@ -70,7 +70,6 @@ CONFIG_SIM_WALLTIME=y
CONFIG_START_DAY=3 CONFIG_START_DAY=3
CONFIG_START_MONTH=4 CONFIG_START_MONTH=4
CONFIG_SYSTEM_NSH=y CONFIG_SYSTEM_NSH=y
CONFIG_TIME_EXTENDED=y
CONFIG_USERMAIN_STACKSIZE=4096 CONFIG_USERMAIN_STACKSIZE=4096
CONFIG_USER_ENTRYPOINT="nsh_main" CONFIG_USER_ENTRYPOINT="nsh_main"
CONFIG_WIRELESS=y CONFIG_WIRELESS=y

View File

@ -72,7 +72,6 @@ CONFIG_SIM_WALLTIME=y
CONFIG_START_MONTH=6 CONFIG_START_MONTH=6
CONFIG_START_YEAR=2008 CONFIG_START_YEAR=2008
CONFIG_SYSTEM_NSH=y CONFIG_SYSTEM_NSH=y
CONFIG_TIME_EXTENDED=y
CONFIG_TUN_NINTERFACES=2 CONFIG_TUN_NINTERFACES=2
CONFIG_USERMAIN_STACKSIZE=4096 CONFIG_USERMAIN_STACKSIZE=4096
CONFIG_USER_ENTRYPOINT="nsh_main" CONFIG_USER_ENTRYPOINT="nsh_main"

View File

@ -51,6 +51,5 @@ CONFIG_SIM_WALLTIME=y
CONFIG_START_MONTH=6 CONFIG_START_MONTH=6
CONFIG_START_YEAR=2008 CONFIG_START_YEAR=2008
CONFIG_SYSTEM_NSH=m CONFIG_SYSTEM_NSH=m
CONFIG_TIME_EXTENDED=y
CONFIG_USERMAIN_STACKSIZE=4096 CONFIG_USERMAIN_STACKSIZE=4096
CONFIG_USER_INITPATH="/system/bin/nsh" CONFIG_USER_INITPATH="/system/bin/nsh"

View File

@ -56,6 +56,5 @@ CONFIG_SIM_WALLTIME=y
CONFIG_START_MONTH=6 CONFIG_START_MONTH=6
CONFIG_START_YEAR=2008 CONFIG_START_YEAR=2008
CONFIG_SYSTEM_NSH=y CONFIG_SYSTEM_NSH=y
CONFIG_TIME_EXTENDED=y
CONFIG_USERMAIN_STACKSIZE=4096 CONFIG_USERMAIN_STACKSIZE=4096
CONFIG_USER_ENTRYPOINT="nsh_main" CONFIG_USER_ENTRYPOINT="nsh_main"

View File

@ -58,6 +58,5 @@ CONFIG_SIM_WALLTIME=y
CONFIG_START_MONTH=6 CONFIG_START_MONTH=6
CONFIG_START_YEAR=2008 CONFIG_START_YEAR=2008
CONFIG_SYSTEM_NSH=y CONFIG_SYSTEM_NSH=y
CONFIG_TIME_EXTENDED=y
CONFIG_USERMAIN_STACKSIZE=4096 CONFIG_USERMAIN_STACKSIZE=4096
CONFIG_USER_ENTRYPOINT="nsh_main" CONFIG_USER_ENTRYPOINT="nsh_main"

View File

@ -61,6 +61,5 @@ CONFIG_SIM_WALLTIME=y
CONFIG_START_MONTH=6 CONFIG_START_MONTH=6
CONFIG_START_YEAR=2008 CONFIG_START_YEAR=2008
CONFIG_SYSTEM_NSH=y CONFIG_SYSTEM_NSH=y
CONFIG_TIME_EXTENDED=y
CONFIG_USERMAIN_STACKSIZE=8192 CONFIG_USERMAIN_STACKSIZE=8192
CONFIG_USER_ENTRYPOINT="nsh_main" CONFIG_USER_ENTRYPOINT="nsh_main"

View File

@ -78,18 +78,16 @@ Version 5.2.1
This is the change to suppress building these files: This is the change to suppress building these files:
diff --git a/libs/libc/time/Make.defs b/libs/libc/time/Make.defs diff --git a/libs/libc/time/Make.defs b/libs/libc/time/Make.defs
index 5c9b746778..8327e287f4 100644 index 2a26d556ff..08fd0b7bcd 100644
--- a/libs/libc/time/Make.defs --- a/libs/libc/time/Make.defs
+++ b/libs/libc/time/Make.defs +++ b/libs/libc/time/Make.defs
@@ -44,7 +44,7 @@ ifdef CONFIG_LIBC_LOCALTIME @@ -44,7 +44,7 @@ CSRCS += lib_asctime.c lib_asctimer.c lib_ctime.c lib_ctimer.c
CSRCS += lib_localtime.c lib_asctime.c lib_asctimer.c lib_ctime.c ifdef CONFIG_LIBC_LOCALTIME
CSRCS += lib_ctimer.c CSRCS += lib_localtime.c
else else
-CSRCS += lib_mktime.c lib_gmtime.c lib_gmtimer.c -CSRCS += lib_mktime.c lib_gmtime.c lib_gmtimer.c
+CSRCS += lib_mktime.c # lib_gmtime.c lib_gmtimer.c +CSRCS += lib_mktime.c #lib_gmtime.c lib_gmtimer.c
ifdef CONFIG_TIME_EXTENDED endif
CSRCS += lib_dayofweek.c lib_asctime.c lib_asctimer.c lib_ctime.c
CSRCS += lib_ctimer.c
The consequence is, of course, that these interfaces will not be available The consequence is, of course, that these interfaces will not be available
to applications. to applications.

View File

@ -136,11 +136,9 @@ static void rtc_dumptime(FAR struct tm *tp, FAR const char *msg)
rtcinfo(" tm_mday: %08x\n", tp->tm_mday); rtcinfo(" tm_mday: %08x\n", tp->tm_mday);
rtcinfo(" tm_mon: %08x\n", tp->tm_mon); rtcinfo(" tm_mon: %08x\n", tp->tm_mon);
rtcinfo(" tm_year: %08x\n", tp->tm_year); rtcinfo(" tm_year: %08x\n", tp->tm_year);
#if defined(CONFIG_LIBC_LOCALTIME) || defined(CONFIG_TIME_EXTENDED)
rtcinfo(" tm_wday: %08x\n", tp->tm_wday); rtcinfo(" tm_wday: %08x\n", tp->tm_wday);
rtcinfo(" tm_yday: %08x\n", tp->tm_yday); rtcinfo(" tm_yday: %08x\n", tp->tm_yday);
rtcinfo(" tm_isdst: %08x\n", tp->tm_isdst); rtcinfo(" tm_isdst: %08x\n", tp->tm_isdst);
#endif
} }
#else #else
# define rtc_dumptime(tp, msg) # define rtc_dumptime(tp, msg)
@ -270,12 +268,9 @@ int up_rtc_getdatetime(FAR struct tm *tp)
tp->tm_min = 0; tp->tm_min = 0;
tp->tm_hour = 0; tp->tm_hour = 0;
#if defined(CONFIG_LIBC_LOCALTIME) || defined(CONFIG_TIME_EXTENDED)
/* Jan 1, 1970 was a Thursday */ /* Jan 1, 1970 was a Thursday */
tp->tm_wday = 4; tp->tm_wday = 4;
#endif
tp->tm_mday = 1; tp->tm_mday = 1;
tp->tm_mon = 0; tp->tm_mon = 0;
tp->tm_year = 70; tp->tm_year = 70;
@ -346,11 +341,9 @@ int up_rtc_getdatetime(FAR struct tm *tp)
tp->tm_hour = rtc_bcd2bin(buffer[2] & DSXXXX_TIME_HOUR24_BCDMASK); tp->tm_hour = rtc_bcd2bin(buffer[2] & DSXXXX_TIME_HOUR24_BCDMASK);
#if defined(CONFIG_LIBC_LOCALTIME) || defined(CONFIG_TIME_EXTENDED)
/* Return the day of the week (0-6) */ /* Return the day of the week (0-6) */
tp->tm_wday = (rtc_bcd2bin(buffer[3]) & DSXXXX_TIME_DAY_MASK) - 1; tp->tm_wday = (rtc_bcd2bin(buffer[3]) & DSXXXX_TIME_DAY_MASK) - 1;
#endif
/* Return the day of the month (1-31) */ /* Return the day of the month (1-31) */
@ -469,11 +462,7 @@ int up_rtc_settime(FAR const struct timespec *tp)
/* Save the day of the week (1-7) */ /* Save the day of the week (1-7) */
#if defined(CONFIG_LIBC_LOCALTIME) || defined(CONFIG_TIME_EXTENDED)
buffer[4] = rtc_bin2bcd(newtm.tm_wday + 1); buffer[4] = rtc_bin2bcd(newtm.tm_wday + 1);
#else
buffer[4] = 1;
#endif
/* Save the day of the month (1-31) */ /* Save the day of the month (1-31) */

View File

@ -142,11 +142,9 @@ static void rtc_dumptime(FAR struct tm *tp, FAR const char *msg)
rtcinfo(" tm_mday: %08x\n", tp->tm_mday); rtcinfo(" tm_mday: %08x\n", tp->tm_mday);
rtcinfo(" tm_mon: %08x\n", tp->tm_mon); rtcinfo(" tm_mon: %08x\n", tp->tm_mon);
rtcinfo(" tm_year: %08x\n", tp->tm_year); rtcinfo(" tm_year: %08x\n", tp->tm_year);
#if defined(CONFIG_LIBC_LOCALTIME) || defined(CONFIG_TIME_EXTENDED)
rtcinfo(" tm_wday: %08x\n", tp->tm_wday); rtcinfo(" tm_wday: %08x\n", tp->tm_wday);
rtcinfo(" tm_yday: %08x\n", tp->tm_yday); rtcinfo(" tm_yday: %08x\n", tp->tm_yday);
rtcinfo(" tm_isdst: %08x\n", tp->tm_isdst); rtcinfo(" tm_isdst: %08x\n", tp->tm_isdst);
#endif
} }
#else #else
# define rtc_dumptime(tp, msg) # define rtc_dumptime(tp, msg)
@ -280,12 +278,9 @@ int up_rtc_getdatetime(FAR struct tm *tp)
tp->tm_min = 0; tp->tm_min = 0;
tp->tm_hour = 0; tp->tm_hour = 0;
#if defined(CONFIG_LIBC_LOCALTIME) || defined(CONFIG_TIME_EXTENDED)
/* Jan 1, 1970 was a Thursday */ /* Jan 1, 1970 was a Thursday */
tp->tm_wday = 4; tp->tm_wday = 4;
#endif
tp->tm_mday = 1; tp->tm_mday = 1;
tp->tm_mon = 0; tp->tm_mon = 0;
tp->tm_year = 70; tp->tm_year = 70;
@ -358,11 +353,9 @@ int up_rtc_getdatetime(FAR struct tm *tp)
tp->tm_hour = rtc_bcd2bin(buffer[2] & MCP794XX_RTCHOUR_BCDMASK); tp->tm_hour = rtc_bcd2bin(buffer[2] & MCP794XX_RTCHOUR_BCDMASK);
#if defined(CONFIG_LIBC_LOCALTIME) || defined(CONFIG_TIME_EXTENDED)
/* Return the day of the week (0-6) */ /* Return the day of the week (0-6) */
tp->tm_wday = (rtc_bcd2bin(buffer[3]) & MCP794XX_RTCWKDAY_BCDMASK) - 1; tp->tm_wday = (rtc_bcd2bin(buffer[3]) & MCP794XX_RTCWKDAY_BCDMASK) - 1;
#endif
/* Return the day of the month (1-31) */ /* Return the day of the month (1-31) */
@ -523,11 +516,7 @@ int up_rtc_settime(FAR const struct timespec *tp)
/* Save the day of the week (1-7) and enable VBAT. */ /* Save the day of the week (1-7) and enable VBAT. */
#if defined(CONFIG_LIBC_LOCALTIME) || defined(CONFIG_TIME_EXTENDED)
buffer[4] = rtc_bin2bcd(newtm.tm_wday + 1) | MCP794XX_RTCWKDAY_VBATEN; buffer[4] = rtc_bin2bcd(newtm.tm_wday + 1) | MCP794XX_RTCWKDAY_VBATEN;
#else
buffer[4] = 1 | MCP794XX_RTCWKDAY_VBATEN;
#endif
/* Save the day of the month (1-31) */ /* Save the day of the month (1-31) */

View File

@ -136,11 +136,9 @@ static void rtc_dumptime(FAR struct tm *tp, FAR const char *msg)
rtcinfo(" tm_mday: %08x\n", tp->tm_mday); rtcinfo(" tm_mday: %08x\n", tp->tm_mday);
rtcinfo(" tm_mon: %08x\n", tp->tm_mon); rtcinfo(" tm_mon: %08x\n", tp->tm_mon);
rtcinfo(" tm_year: %08x\n", tp->tm_year); rtcinfo(" tm_year: %08x\n", tp->tm_year);
#if defined(CONFIG_LIBC_LOCALTIME) || defined(CONFIG_TIME_EXTENDED)
rtcinfo(" tm_wday: %08x\n", tp->tm_wday); rtcinfo(" tm_wday: %08x\n", tp->tm_wday);
rtcinfo(" tm_yday: %08x\n", tp->tm_yday); rtcinfo(" tm_yday: %08x\n", tp->tm_yday);
rtcinfo(" tm_isdst: %08x\n", tp->tm_isdst); rtcinfo(" tm_isdst: %08x\n", tp->tm_isdst);
#endif
} }
#else #else
# define rtc_dumptime(tp, msg) # define rtc_dumptime(tp, msg)
@ -269,12 +267,9 @@ int up_rtc_getdatetime(FAR struct tm *tp)
tp->tm_min = 0; tp->tm_min = 0;
tp->tm_hour = 0; tp->tm_hour = 0;
#if defined(CONFIG_LIBC_LOCALTIME) || defined(CONFIG_TIME_EXTENDED)
/* Jan 1, 1970 was a Thursday */ /* Jan 1, 1970 was a Thursday */
tp->tm_wday = 4; tp->tm_wday = 4;
#endif
tp->tm_mday = 1; tp->tm_mday = 1;
tp->tm_mon = 0; tp->tm_mon = 0;
tp->tm_year = 70; tp->tm_year = 70;
@ -349,11 +344,9 @@ int up_rtc_getdatetime(FAR struct tm *tp)
tp->tm_mday = rtc_bcd2bin(buffer[3] & PCF85263_RTC_DAYS_MASK); tp->tm_mday = rtc_bcd2bin(buffer[3] & PCF85263_RTC_DAYS_MASK);
#if defined(CONFIG_LIBC_LOCALTIME) || defined(CONFIG_TIME_EXTENDED)
/* Return the day of the week (0-6) */ /* Return the day of the week (0-6) */
tp->tm_wday = (rtc_bcd2bin(buffer[4]) & PCF85263_RTC_WEEKDAYS_MASK); tp->tm_wday = (rtc_bcd2bin(buffer[4]) & PCF85263_RTC_WEEKDAYS_MASK);
#endif
/* Return the month (0-11) */ /* Return the month (0-11) */
@ -460,11 +453,7 @@ int up_rtc_settime(FAR const struct timespec *tp)
/* Save the day of the week (1-7) */ /* Save the day of the week (1-7) */
#if defined(CONFIG_LIBC_LOCALTIME) || defined(CONFIG_TIME_EXTENDED)
buffer[6] = rtc_bin2bcd(newtm.tm_wday); buffer[6] = rtc_bin2bcd(newtm.tm_wday);
#else
buffer[6] = 0;
#endif
/* Save the month (1-12) */ /* Save the month (1-12) */

View File

@ -116,9 +116,7 @@ int clock_daysbeforemonth(int month, bool leapyear);
* *
****************************************************************************/ ****************************************************************************/
#if defined(CONFIG_TIME_EXTENDED)
int clock_dayoftheweek(int mday, int month, int year); int clock_dayoftheweek(int mday, int month, int year);
#endif
/**************************************************************************** /****************************************************************************
* Name: clock_calendar2utc * Name: clock_calendar2utc

View File

@ -60,7 +60,9 @@
/**************************************************************************** /****************************************************************************
* Pre-processor Definitions * Pre-processor Definitions
****************************************************************************/ ****************************************************************************/
/* Configuration ************************************************************/ /* Configuration ************************************************************/
/* CONFIG_RTC - Enables general support for a hardware RTC. Specific /* CONFIG_RTC - Enables general support for a hardware RTC. Specific
* architectures may require other specific settings. * architectures may require other specific settings.
* *
@ -125,6 +127,7 @@
#ifdef CONFIG_RTC_DRIVER #ifdef CONFIG_RTC_DRIVER
/* IOCTL Commands ***********************************************************/ /* IOCTL Commands ***********************************************************/
/* RTC driver IOCTL commands. These are Linux compatible command names, not /* RTC driver IOCTL commands. These are Linux compatible command names, not
* all of these commands are supported by all RTC drivers, however. * all of these commands are supported by all RTC drivers, however.
*/ */
@ -145,7 +148,6 @@
#define RTC_SET_TIME _RTCIOC(0x0002) #define RTC_SET_TIME _RTCIOC(0x0002)
/* RTC_HAVE_SET_TIME checks if RTC's time had been set /* RTC_HAVE_SET_TIME checks if RTC's time had been set
* *
* Argument: A writable reference to a bool to receive true/false return value * Argument: A writable reference to a bool to receive true/false return value
@ -212,6 +214,7 @@
/**************************************************************************** /****************************************************************************
* Public Types * Public Types
****************************************************************************/ ****************************************************************************/
/* IOCTL data structures */ /* IOCTL data structures */
/* Broken-out time representation used with RTC IOCTL commands: /* Broken-out time representation used with RTC IOCTL commands:
@ -229,11 +232,9 @@ struct rtc_time
int tm_mday; /* Day of the month (1-31) */ int tm_mday; /* Day of the month (1-31) */
int tm_mon; /* Month (0-11) */ int tm_mon; /* Month (0-11) */
int tm_year; /* Years since 1900 */ int tm_year; /* Years since 1900 */
#if defined(CONFIG_LIBC_LOCALTIME) || defined(CONFIG_TIME_EXTENDED)
int tm_wday; /* Day of the week (0-6) (unused) */ int tm_wday; /* Day of the week (0-6) (unused) */
int tm_yday; /* Day of the year (0-365) (unused) */ int tm_yday; /* Day of the year (0-365) (unused) */
int tm_isdst; /* Non-0 if daylight savings time is in effect (unused) */ int tm_isdst; /* Non-0 if daylight savings time is in effect (unused) */
#endif
#if defined(CONFIG_RTC_HIRES) || defined(CONFIG_ARCH_HAVE_RTC_SUBSECONDS) #if defined(CONFIG_RTC_HIRES) || defined(CONFIG_ARCH_HAVE_RTC_SUBSECONDS)
long tm_nsec; /* Nanosecond (0-999999999) */ long tm_nsec; /* Nanosecond (0-999999999) */
#endif #endif
@ -246,29 +247,29 @@ struct rtc_time
struct rtc_rdalarm_s struct rtc_rdalarm_s
{ {
uint8_t id; /* Indicates the alarm being queried */ uint8_t id; /* Indicates the alarm being queried */
bool active; /* Alarm actively timing or disabled */ bool active; /* Alarm actively timing or disabled */
struct rtc_time time; /* Current RTC time (if enabled) */ struct rtc_time time; /* Current RTC time (if enabled) */
}; };
/* Structure used with the RTC_SET_ALARM IOCTL command. */ /* Structure used with the RTC_SET_ALARM IOCTL command. */
struct rtc_setalarm_s struct rtc_setalarm_s
{ {
uint8_t id; /* Indicates the alarm to be set */ uint8_t id; /* Indicates the alarm to be set */
pid_t pid; /* Identifies task to be notified (0=caller) */ pid_t pid; /* Identifies task to be notified (0=caller) */
struct sigevent event; /* Describe the way a task is to be notified */ struct sigevent event; /* Describe the way a task is to be notified */
struct rtc_time time; /* Alarm time */ struct rtc_time time; /* Alarm time */
}; };
/* Structure used with the RTC_SET_RELATIVE IOCTL command. */ /* Structure used with the RTC_SET_RELATIVE IOCTL command. */
struct rtc_setrelative_s struct rtc_setrelative_s
{ {
uint8_t id; /* Indicates the alarm to be set */ uint8_t id; /* Indicates the alarm to be set */
pid_t pid; /* Identifies task to be notified (0=caller) */ pid_t pid; /* Identifies task to be notified (0=caller) */
struct sigevent event; /* Describe the way a task is to be notified */ struct sigevent event; /* Describe the way a task is to be notified */
time_t reltime; /* Relative time in seconds */ time_t reltime; /* Relative time in seconds */
}; };
/* Callback type used by the RTC hardware to notify the RTC driver when the /* Callback type used by the RTC hardware to notify the RTC driver when the
@ -281,29 +282,29 @@ typedef CODE void (*rtc_alarm_callback_t)(FAR void *priv, int alarmid);
struct lower_setalarm_s struct lower_setalarm_s
{ {
uint8_t id; /* Indicates the alarm to be set */ uint8_t id; /* Indicates the alarm to be set */
rtc_alarm_callback_t cb; /* Callback when the alarm expires */ rtc_alarm_callback_t cb; /* Callback when the alarm expires */
FAR void *priv; /* Private argument to accompany callback */ FAR void *priv; /* Private argument to accompany callback */
struct rtc_time time; /* Alarm time */ struct rtc_time time; /* Alarm time */
}; };
/* Structure used with the setrelative method */ /* Structure used with the setrelative method */
struct lower_setrelative_s struct lower_setrelative_s
{ {
uint8_t id; /* Indicates the alarm to be set */ uint8_t id; /* Indicates the alarm to be set */
rtc_alarm_callback_t cb; /* Callback when the alarm expires */ rtc_alarm_callback_t cb; /* Callback when the alarm expires */
FAR void *priv; /* Private argument to accompany callback */ FAR void *priv; /* Private argument to accompany callback */
time_t reltime; /* Relative time in seconds */ time_t reltime; /* Relative time in seconds */
}; };
/* Structure used with the rdalarm method */ /* Structure used with the rdalarm method */
struct lower_rdalarm_s struct lower_rdalarm_s
{ {
uint8_t id; /* Indicates the alarm to be set */ uint8_t id; /* Indicates the alarm to be set */
FAR void *priv; /* Private argument to accompany callback */ FAR void *priv; /* Private argument to accompany callback */
FAR struct rtc_time *time;/* Queried RTC time pointer */ FAR struct rtc_time *time; /* Queried RTC time pointer */
}; };
#endif #endif
@ -313,10 +314,10 @@ struct lower_rdalarm_s
struct rtc_setperiodic_s struct rtc_setperiodic_s
{ {
uint8_t id; /* Indicates the alarm to be set */ uint8_t id; /* Indicates the alarm to be set */
pid_t pid; /* Identifies task to be notified (0=caller) */ pid_t pid; /* Identifies task to be notified (0=caller) */
struct sigevent event; /* Describe the way a task is to be notified */ struct sigevent event; /* Describe the way a task is to be notified */
struct timespec period; /* Period between wakeups */ struct timespec period; /* Period between wakeups */
}; };
/* Callback type used by the RTC hardware to notify the RTC driver when the /* Callback type used by the RTC hardware to notify the RTC driver when the
@ -399,16 +400,16 @@ struct rtc_ops_s
#endif #endif
#ifdef CONFIG_RTC_IOCTL #ifdef CONFIG_RTC_IOCTL
/* Support for architecture-specific RTC operations */ /* Support for architecture-specific RTC operations */
CODE int (*ioctl)(FAR struct rtc_lowerhalf_s *lower, int cmd, CODE int (*ioctl)(FAR struct rtc_lowerhalf_s *lower, int cmd,
unsigned long arg); unsigned long arg);
#endif #endif
#ifndef CONFIG_DISABLE_PSEUDOFS_OPERATIONS #ifndef CONFIG_DISABLE_PSEUDOFS_OPERATIONS
/* The driver has been unlinked and there are no further open references /* The driver has been unlinked and there are no further open references
* to the driver. * to the driver.
*/ */
CODE int (*destroy)(FAR struct rtc_lowerhalf_s *lower); CODE int (*destroy)(FAR struct rtc_lowerhalf_s *lower);
#endif #endif
@ -447,7 +448,7 @@ extern "C"
#endif #endif
/**************************************************************************** /****************************************************************************
* Public Functions * Public Function Prototypes
****************************************************************************/ ****************************************************************************/
/**************************************************************************** /****************************************************************************

View File

@ -140,11 +140,9 @@ struct tm
int tm_mday; /* Day of the month (1-31) */ int tm_mday; /* Day of the month (1-31) */
int tm_mon; /* Month (0-11) */ int tm_mon; /* Month (0-11) */
int tm_year; /* Years since 1900 */ int tm_year; /* Years since 1900 */
#if defined(CONFIG_LIBC_LOCALTIME) || defined(CONFIG_TIME_EXTENDED)
int tm_wday; /* Day of the week (0-6) */ int tm_wday; /* Day of the week (0-6) */
int tm_yday; /* Day of the year (0-365) */ int tm_yday; /* Day of the year (0-365) */
int tm_isdst; /* Non-0 if daylight savings time is in effect */ int tm_isdst; /* Non-0 if daylight savings time is in effect */
#endif
}; };
/* Struct itimerspec is used to define settings for an interval timer */ /* Struct itimerspec is used to define settings for an interval timer */
@ -175,9 +173,11 @@ extern "C"
#ifdef CONFIG_LIBC_LOCALTIME #ifdef CONFIG_LIBC_LOCALTIME
/* daylight - Daylight savings time flag */ /* daylight - Daylight savings time flag */
/* EXTERN int daylight; not supported */ /* EXTERN int daylight; not supported */
/* timezone - Difference from UTC and local standard time */ /* timezone - Difference from UTC and local standard time */
/* EXTERN long int timezone; not supported */ /* EXTERN long int timezone; not supported */
/* tzname[] - Timezone strings /* tzname[] - Timezone strings
@ -209,12 +209,10 @@ FAR struct tm *localtime_r(FAR const time_t *timep, FAR struct tm *result);
size_t strftime(FAR char *s, size_t max, FAR const char *format, size_t strftime(FAR char *s, size_t max, FAR const char *format,
FAR const struct tm *tm); FAR const struct tm *tm);
#if defined(CONFIG_LIBC_LOCALTIME) || defined(CONFIG_TIME_EXTENDED)
FAR char *asctime(FAR const struct tm *tp); FAR char *asctime(FAR const struct tm *tp);
FAR char *asctime_r(FAR const struct tm *tp, FAR char *buf); FAR char *asctime_r(FAR const struct tm *tp, FAR char *buf);
FAR char *ctime(FAR const time_t *timep); FAR char *ctime(FAR const time_t *timep);
FAR char *ctime_r(FAR const time_t *timep, FAR char *buf); FAR char *ctime_r(FAR const time_t *timep, FAR char *buf);
#endif
time_t time(FAR time_t *timep); time_t time(FAR time_t *timep);

View File

@ -68,16 +68,4 @@ config LIB_ZONEINFO_ROMFS
endif # LIB_ZONEINFO endif # LIB_ZONEINFO
endif # LIBC_LOCALTIME endif # LIBC_LOCALTIME
config TIME_EXTENDED
bool "Add day of week, year support"
default "n"
depends on !LIBC_LOCALTIME
---help---
Selecting TIME_EXTENDED adds tm_wday, tm_yday and tm_isdst
to the tm struct. This allows integration with 3rd party libraries
that expect the tm struct to contain these members.
Note: tm_isdst is always 0
endmenu # Time/Time Zone Support endmenu # Time/Time Zone Support

View File

@ -38,17 +38,13 @@
CSRCS += lib_strftime.c lib_calendar2utc.c lib_daysbeforemonth.c CSRCS += lib_strftime.c lib_calendar2utc.c lib_daysbeforemonth.c
CSRCS += lib_gettimeofday.c lib_isleapyear.c lib_settimeofday.c lib_time.c CSRCS += lib_gettimeofday.c lib_isleapyear.c lib_settimeofday.c lib_time.c
CSRCS += lib_nanosleep.c lib_difftime.c CSRCS += lib_nanosleep.c lib_difftime.c lib_dayofweek.c
CSRCS += lib_asctime.c lib_asctimer.c lib_ctime.c lib_ctimer.c
ifdef CONFIG_LIBC_LOCALTIME ifdef CONFIG_LIBC_LOCALTIME
CSRCS += lib_localtime.c lib_asctime.c lib_asctimer.c lib_ctime.c CSRCS += lib_localtime.c
CSRCS += lib_ctimer.c
else else
CSRCS += lib_mktime.c lib_gmtime.c lib_gmtimer.c CSRCS += lib_mktime.c lib_gmtime.c lib_gmtimer.c
ifdef CONFIG_TIME_EXTENDED
CSRCS += lib_dayofweek.c lib_asctime.c lib_asctimer.c lib_ctime.c
CSRCS += lib_ctimer.c
endif
endif endif
# Add the time directory to the build # Add the time directory to the build

View File

@ -41,8 +41,6 @@
#include <time.h> #include <time.h>
#if defined(CONFIG_LIBC_LOCALTIME) || defined(CONFIG_TIME_EXTENDED)
/**************************************************************************** /****************************************************************************
* Public Functions * Public Functions
****************************************************************************/ ****************************************************************************/
@ -69,5 +67,3 @@ FAR char *asctime(FAR const struct tm *tp)
static char buf[26]; static char buf[26];
return asctime_r(tp, buf); return asctime_r(tp, buf);
} }
#endif /* CONFIG_LIBC_LOCALTIME || CONFIG_TIME_EXTENDED */

View File

@ -42,11 +42,10 @@
#include <stdio.h> #include <stdio.h>
#include <time.h> #include <time.h>
#if defined(CONFIG_LIBC_LOCALTIME) || defined(CONFIG_TIME_EXTENDED)
/**************************************************************************** /****************************************************************************
* Private Data * Private Data
****************************************************************************/ ****************************************************************************/
/* Note: These strings duplicate other definitions in other files. These /* Note: These strings duplicate other definitions in other files. These
* definitions could be combined to save a little FLASH space. * definitions could be combined to save a little FLASH space.
*/ */
@ -93,5 +92,3 @@ FAR char *asctime_r(FAR const struct tm *tp, FAR char *buf)
return buf; return buf;
} }
#endif /* CONFIG_LIBC_LOCALTIME || CONFIG_TIME_EXTENDED */

View File

@ -41,8 +41,6 @@
#include <time.h> #include <time.h>
#if defined(CONFIG_LIBC_LOCALTIME) || defined(CONFIG_TIME_EXTENDED)
/**************************************************************************** /****************************************************************************
* Public Functions * Public Functions
****************************************************************************/ ****************************************************************************/
@ -78,5 +76,3 @@ FAR char *ctime(FAR const time_t *timep)
return asctime(gmtime(timep)); return asctime(gmtime(timep));
#endif #endif
} }
#endif /* CONFIG_LIBC_LOCALTIME || CONFIG_TIME_EXTENDED */

View File

@ -41,8 +41,6 @@
#include <time.h> #include <time.h>
#if defined(CONFIG_LIBC_LOCALTIME) || defined(CONFIG_TIME_EXTENDED)
/**************************************************************************** /****************************************************************************
* Private Data * Private Data
****************************************************************************/ ****************************************************************************/
@ -79,5 +77,3 @@ FAR char *ctime_r(FAR const time_t *timep, FAR char *buf)
return asctime_r(gmtime_r(timep, &tm), buf); return asctime_r(gmtime_r(timep, &tm), buf);
#endif #endif
} }
#endif /* CONFIG_LIBC_LOCALTIME || CONFIG_TIME_EXTENDED */

View File

@ -45,8 +45,6 @@
#include <nuttx/time.h> #include <nuttx/time.h>
#if defined(CONFIG_TIME_EXTENDED)
/**************************************************************************** /****************************************************************************
* Pre-processor Definitions * Pre-processor Definitions
****************************************************************************/ ****************************************************************************/
@ -107,4 +105,3 @@ int clock_dayoftheweek(int mday, int month, int year)
return (mday + year + year / 4 - year / 100 + year / 400 + return (mday + year + year / 4 - year / 100 + year / 400 +
(31 * month) / 12) % 7; (31 * month) / 12) % 7;
} }
#endif /* CONFIG_TIME_EXTENDED */

View File

@ -122,7 +122,7 @@ static void clock_utc2gregorian(time_t jd, FAR int *year, FAR int *month,
l = jd + 68569; l = jd + 68569;
n = (4 * l) / 146097; n = (4 * l) / 146097;
l = l - (146097 * n + 3)/4; l = l - (146097 * n + 3) / 4;
i = (4000 * (l + 1)) / 1461001; i = (4000 * (l + 1)) / 1461001;
l = l - (1461 * i) / 4 + 31; l = l - (1461 * i) / 4 + 31;
j = (80 * l) / 2447; j = (80 * l) / 2447;
@ -156,7 +156,7 @@ static void clock_utc2julian(time_t jd, FAR int *year, FAR int *month,
n = (l - 1) / 365 - l / 1461; n = (l - 1) / 365 - l / 1461;
i = l - 365 * n + 30; i = l - 365 * n + 30;
j = (80 * i) / 2447; j = (80 * i) / 2447;
d = i - (2447 * j)/80; d = i - (2447 * j) / 80;
i = j / 11; i = j / 11;
m = j + 2 - 12 * i; m = j + 2 - 12 * i;
y = 4 * k + n + i - 4716; y = 4 * k + n + i - 4716;
@ -267,9 +267,9 @@ static void clock_utc2calendar(time_t days, FAR int *year, FAR int *month,
} }
else else
{ {
/* No... The one we want is somwhere between value+1 and max */ /* No... The one we want is somwhere between value+1 and max */
min = value + 1; min = value + 1;
} }
/* If we break out of the loop because min == max, then we want value /* If we break out of the loop because min == max, then we want value
@ -356,13 +356,11 @@ FAR struct tm *gmtime_r(FAR const time_t *timer, FAR struct tm *result)
result->tm_min = (int)min; result->tm_min = (int)min;
result->tm_sec = (int)sec; result->tm_sec = (int)sec;
#if defined(CONFIG_TIME_EXTENDED)
result->tm_wday = clock_dayoftheweek(day, month, year); result->tm_wday = clock_dayoftheweek(day, month, year);
result->tm_yday = day + result->tm_yday = day +
clock_daysbeforemonth(result->tm_mon, clock_daysbeforemonth(result->tm_mon,
clock_isleapyear(year)); clock_isleapyear(year));
result->tm_isdst = 0; result->tm_isdst = 0;
#endif
return result; return result;
} }

View File

@ -70,7 +70,6 @@
* Private Data * Private Data
****************************************************************************/ ****************************************************************************/
#if defined(CONFIG_LIBC_LOCALTIME) || defined(CONFIG_TIME_EXTENDED)
static const char * const g_abbrev_wdayname[7] = static const char * const g_abbrev_wdayname[7] =
{ {
"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"
@ -80,7 +79,6 @@ static const char * const g_wdayname[7] =
{ {
"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"
}; };
#endif
static const char * const g_abbrev_monthname[12] = static const char * const g_abbrev_monthname[12] =
{ {
@ -181,7 +179,6 @@ size_t strftime(FAR char *s, size_t max, FAR const char *format,
switch (*format++) switch (*format++)
{ {
#if defined(CONFIG_LIBC_LOCALTIME) || defined(CONFIG_TIME_EXTENDED)
/* %a: A three-letter abbreviation for the day of the week. */ /* %a: A three-letter abbreviation for the day of the week. */
case 'a': case 'a':
@ -205,17 +202,6 @@ size_t strftime(FAR char *s, size_t max, FAR const char *format,
} }
} }
break; break;
#else
/* %a: A three-letter abbreviation for the day of the week. */
/* %A: The full name for the day of the week. */
case 'a':
case 'A':
{
len = snprintf(dest, chleft, "Day"); /* Not supported */
}
break;
#endif
/* %h: Equivalent to %b */ /* %h: Equivalent to %b */
@ -301,7 +287,9 @@ size_t strftime(FAR char *s, size_t max, FAR const char *format,
{ {
if (tm->tm_mon < 12) if (tm->tm_mon < 12)
{ {
value = clock_daysbeforemonth(tm->tm_mon, clock_isleapyear(tm->tm_year)) + tm->tm_mday; value = clock_daysbeforemonth(tm->tm_mon,
clock_isleapyear(tm->tm_year)) +
tm->tm_mday;
len = snprintf(dest, chleft, "%03d", value); len = snprintf(dest, chleft, "%03d", value);
} }
} }
@ -364,6 +352,7 @@ size_t strftime(FAR char *s, size_t max, FAR const char *format,
{ {
str = "AM"; str = "AM";
} }
len = snprintf(dest, chleft, "%s", str); len = snprintf(dest, chleft, "%s", str);
} }
break; break;
@ -380,6 +369,7 @@ size_t strftime(FAR char *s, size_t max, FAR const char *format,
{ {
str = "am"; str = "am";
} }
len = snprintf(dest, chleft, "%s", str); len = snprintf(dest, chleft, "%s", str);
} }
break; break;

View File

@ -44,7 +44,6 @@ config LIBCXX
select CLOCK_MONOTONIC select CLOCK_MONOTONIC
select LIBC_WCHAR select LIBC_WCHAR
select LIBC_LOCALE select LIBC_LOCALE
select TIME_EXTENDED
---help--- ---help---
If you have installed libcxx into the NuttX source tree, then it can If you have installed libcxx into the NuttX source tree, then it can
be built by selecting this option. See the README.txt file in the be built by selecting this option. See the README.txt file in the