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:
parent
c09071ffe8
commit
1e3f457c9e
@ -4359,9 +4359,7 @@ FAR struct tm *localtime(FAR const time_t *timep);
|
|||||||
</p>
|
</p>
|
||||||
<ul><pre>
|
<ul><pre>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
#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 <time.h>
|
#include <time.h>
|
||||||
#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 <time.h>
|
#include <time.h>
|
||||||
#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 <time.h>
|
#include <time.h>
|
||||||
#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>
|
||||||
|
@ -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
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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)
|
||||||
{
|
{
|
||||||
|
@ -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)
|
||||||
|
@ -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)
|
||||||
|
@ -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)
|
||||||
{
|
{
|
||||||
|
@ -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"
|
||||||
|
@ -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;
|
||||||
|
@ -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
|
||||||
|
@ -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"
|
||||||
|
@ -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"
|
||||||
|
@ -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"
|
||||||
|
@ -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"
|
||||||
|
@ -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"
|
||||||
|
@ -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.
|
||||||
|
@ -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) */
|
||||||
|
|
||||||
|
@ -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) */
|
||||||
|
|
||||||
|
@ -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) */
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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 */
|
|
||||||
|
@ -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 */
|
|
||||||
|
@ -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 */
|
|
||||||
|
@ -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 */
|
|
||||||
|
@ -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 */
|
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
|
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user