summaryrefslogtreecommitdiff
path: root/components
diff options
context:
space:
mode:
authorliu2guang <[email protected]>2018-05-08 06:41:56 +0800
committerliu2guang <[email protected]>2018-05-08 06:41:56 +0800
commitcec2ee4cdcf5e2ba716d28fdab9313170c7d7f5d (patch)
treef2516006262c3bda28c48f141f60001fd5b3ae90 /components
parentdfe3d953d97ab02b1b68aa854af7e8a5c74c5bb9 (diff)
parenta00cdcd7506489ad986d2b684b126fce6323349b (diff)
Merge remote-tracking branch 'upstream/master'
Diffstat (limited to 'components')
-rw-r--r--components/drivers/rtc/rtc.c53
-rw-r--r--components/libc/compilers/armlibc/time.c54
-rw-r--r--components/libc/compilers/dlib/time.c54
-rw-r--r--components/libc/compilers/minilibc/time.c53
-rw-r--r--components/libc/compilers/newlib/time.c54
5 files changed, 216 insertions, 52 deletions
diff --git a/components/drivers/rtc/rtc.c b/components/drivers/rtc/rtc.c
index 48da802627..fa0025d428 100644
--- a/components/drivers/rtc/rtc.c
+++ b/components/drivers/rtc/rtc.c
@@ -29,6 +29,8 @@
#include <string.h>
#include <rtthread.h>
+#ifdef RT_USING_RTC
+
/* Using NTP auto sync RTC time */
#ifdef RTC_SYNC_USING_NTP
/* NTP first sync delay time for network connect, unit: second */
@@ -42,55 +44,6 @@
#endif /* RTC_SYNC_USING_NTP */
/**
- * Returns the current time.
- *
- * @param time_t * t the timestamp pointer, if not used, keep NULL.
- *
- * @return time_t return timestamp current.
- *
- */
-/* for IAR 6.2 later Compiler */
-#if defined (__IAR_SYSTEMS_ICC__) && (__VER__) >= 6020000
-#pragma module_name = "?time"
-time_t (__time32)(time_t *t) /* Only supports 32-bit timestamp */
-#else
-time_t time(time_t *t)
-#endif
-{
- static rt_device_t device = RT_NULL;
- time_t time_now = 0;
-
- /* optimization: find rtc device only first. */
- if (device == RT_NULL)
- {
- device = rt_device_find("rtc");
- }
-
- /* read timestamp from RTC device. */
- if (device != RT_NULL)
- {
- if (rt_device_open(device, 0) == RT_EOK)
- {
- rt_device_control(device, RT_DEVICE_CTRL_RTC_GET_TIME, &time_now);
- rt_device_close(device);
- }
- }
-
- /* if t is not NULL, write timestamp to *t */
- if (t != RT_NULL)
- {
- *t = time_now;
- }
-
- return time_now;
-}
-
-RT_WEAK clock_t clock(void)
-{
- return rt_tick_get();
-}
-
-/**
* Set system date(time not modify).
*
* @param rt_uint32_t year e.g: 2012.
@@ -311,3 +264,5 @@ MSH_CMD_EXPORT(date, get date and time or set [year month day hour min sec]);
#endif /* defined(RT_USING_FINSH) && defined(FINSH_USING_MSH) */
#endif /* RT_USING_FINSH */
+
+#endif /* RT_USING_RTC */
diff --git a/components/libc/compilers/armlibc/time.c b/components/libc/compilers/armlibc/time.c
index 7b9c2f185b..e7ad19ad3c 100644
--- a/components/libc/compilers/armlibc/time.c
+++ b/components/libc/compilers/armlibc/time.c
@@ -1,7 +1,7 @@
#include <sys/time.h>
#include <rtthread.h>
-#if defined(RT_USING_DEVICE) && defined(RT_USING_RTC)
+#ifdef RT_USING_DEVICE
int gettimeofday(struct timeval *tp, void *ignore)
{
time_t time;
@@ -23,3 +23,55 @@ int gettimeofday(struct timeval *tp, void *ignore)
return 0;
}
#endif
+
+/**
+ * Returns the current time.
+ *
+ * @param time_t * t the timestamp pointer, if not used, keep NULL.
+ *
+ * @return time_t return timestamp current.
+ *
+ */
+/* for IAR 6.2 later Compiler */
+#if defined (__IAR_SYSTEMS_ICC__) && (__VER__) >= 6020000
+#pragma module_name = "?time"
+time_t (__time32)(time_t *t) /* Only supports 32-bit timestamp */
+#else
+time_t time(time_t *t)
+#endif
+{
+ time_t time_now = 0;
+
+#ifdef RT_USING_RTC
+ static rt_device_t device = RT_NULL;
+
+ /* optimization: find rtc device only first. */
+ if (device == RT_NULL)
+ {
+ device = rt_device_find("rtc");
+ }
+
+ /* read timestamp from RTC device. */
+ if (device != RT_NULL)
+ {
+ if (rt_device_open(device, 0) == RT_EOK)
+ {
+ rt_device_control(device, RT_DEVICE_CTRL_RTC_GET_TIME, &time_now);
+ rt_device_close(device);
+ }
+ }
+#endif /* RT_USING_RTC */
+
+ /* if t is not NULL, write timestamp to *t */
+ if (t != RT_NULL)
+ {
+ *t = time_now;
+ }
+
+ return time_now;
+}
+
+RT_WEAK clock_t clock(void)
+{
+ return rt_tick_get();
+}
diff --git a/components/libc/compilers/dlib/time.c b/components/libc/compilers/dlib/time.c
index 7b9c2f185b..e7ad19ad3c 100644
--- a/components/libc/compilers/dlib/time.c
+++ b/components/libc/compilers/dlib/time.c
@@ -1,7 +1,7 @@
#include <sys/time.h>
#include <rtthread.h>
-#if defined(RT_USING_DEVICE) && defined(RT_USING_RTC)
+#ifdef RT_USING_DEVICE
int gettimeofday(struct timeval *tp, void *ignore)
{
time_t time;
@@ -23,3 +23,55 @@ int gettimeofday(struct timeval *tp, void *ignore)
return 0;
}
#endif
+
+/**
+ * Returns the current time.
+ *
+ * @param time_t * t the timestamp pointer, if not used, keep NULL.
+ *
+ * @return time_t return timestamp current.
+ *
+ */
+/* for IAR 6.2 later Compiler */
+#if defined (__IAR_SYSTEMS_ICC__) && (__VER__) >= 6020000
+#pragma module_name = "?time"
+time_t (__time32)(time_t *t) /* Only supports 32-bit timestamp */
+#else
+time_t time(time_t *t)
+#endif
+{
+ time_t time_now = 0;
+
+#ifdef RT_USING_RTC
+ static rt_device_t device = RT_NULL;
+
+ /* optimization: find rtc device only first. */
+ if (device == RT_NULL)
+ {
+ device = rt_device_find("rtc");
+ }
+
+ /* read timestamp from RTC device. */
+ if (device != RT_NULL)
+ {
+ if (rt_device_open(device, 0) == RT_EOK)
+ {
+ rt_device_control(device, RT_DEVICE_CTRL_RTC_GET_TIME, &time_now);
+ rt_device_close(device);
+ }
+ }
+#endif /* RT_USING_RTC */
+
+ /* if t is not NULL, write timestamp to *t */
+ if (t != RT_NULL)
+ {
+ *t = time_now;
+ }
+
+ return time_now;
+}
+
+RT_WEAK clock_t clock(void)
+{
+ return rt_tick_get();
+}
diff --git a/components/libc/compilers/minilibc/time.c b/components/libc/compilers/minilibc/time.c
index efd6be8754..605f6f573e 100644
--- a/components/libc/compilers/minilibc/time.c
+++ b/components/libc/compilers/minilibc/time.c
@@ -1,4 +1,5 @@
#include <time.h>
+#include <rtthread.h>
/* days per month -- nonleap! */
const short __spm[13] =
@@ -227,3 +228,55 @@ int _gettimeofday( struct timeval *tv, void *ignore)
return 0; // return non-zero for error
}
#endif
+
+/**
+ * Returns the current time.
+ *
+ * @param time_t * t the timestamp pointer, if not used, keep NULL.
+ *
+ * @return time_t return timestamp current.
+ *
+ */
+/* for IAR 6.2 later Compiler */
+#if defined (__IAR_SYSTEMS_ICC__) && (__VER__) >= 6020000
+#pragma module_name = "?time"
+time_t (__time32)(time_t *t) /* Only supports 32-bit timestamp */
+#else
+time_t time(time_t *t)
+#endif
+{
+ time_t time_now = 0;
+
+#ifdef RT_USING_RTC
+ static rt_device_t device = RT_NULL;
+
+ /* optimization: find rtc device only first. */
+ if (device == RT_NULL)
+ {
+ device = rt_device_find("rtc");
+ }
+
+ /* read timestamp from RTC device. */
+ if (device != RT_NULL)
+ {
+ if (rt_device_open(device, 0) == RT_EOK)
+ {
+ rt_device_control(device, RT_DEVICE_CTRL_RTC_GET_TIME, &time_now);
+ rt_device_close(device);
+ }
+ }
+#endif /* RT_USING_RTC */
+
+ /* if t is not NULL, write timestamp to *t */
+ if (t != RT_NULL)
+ {
+ *t = time_now;
+ }
+
+ return time_now;
+}
+
+RT_WEAK clock_t clock(void)
+{
+ return rt_tick_get();
+}
diff --git a/components/libc/compilers/newlib/time.c b/components/libc/compilers/newlib/time.c
index 7b9c2f185b..e7ad19ad3c 100644
--- a/components/libc/compilers/newlib/time.c
+++ b/components/libc/compilers/newlib/time.c
@@ -1,7 +1,7 @@
#include <sys/time.h>
#include <rtthread.h>
-#if defined(RT_USING_DEVICE) && defined(RT_USING_RTC)
+#ifdef RT_USING_DEVICE
int gettimeofday(struct timeval *tp, void *ignore)
{
time_t time;
@@ -23,3 +23,55 @@ int gettimeofday(struct timeval *tp, void *ignore)
return 0;
}
#endif
+
+/**
+ * Returns the current time.
+ *
+ * @param time_t * t the timestamp pointer, if not used, keep NULL.
+ *
+ * @return time_t return timestamp current.
+ *
+ */
+/* for IAR 6.2 later Compiler */
+#if defined (__IAR_SYSTEMS_ICC__) && (__VER__) >= 6020000
+#pragma module_name = "?time"
+time_t (__time32)(time_t *t) /* Only supports 32-bit timestamp */
+#else
+time_t time(time_t *t)
+#endif
+{
+ time_t time_now = 0;
+
+#ifdef RT_USING_RTC
+ static rt_device_t device = RT_NULL;
+
+ /* optimization: find rtc device only first. */
+ if (device == RT_NULL)
+ {
+ device = rt_device_find("rtc");
+ }
+
+ /* read timestamp from RTC device. */
+ if (device != RT_NULL)
+ {
+ if (rt_device_open(device, 0) == RT_EOK)
+ {
+ rt_device_control(device, RT_DEVICE_CTRL_RTC_GET_TIME, &time_now);
+ rt_device_close(device);
+ }
+ }
+#endif /* RT_USING_RTC */
+
+ /* if t is not NULL, write timestamp to *t */
+ if (t != RT_NULL)
+ {
+ *t = time_now;
+ }
+
+ return time_now;
+}
+
+RT_WEAK clock_t clock(void)
+{
+ return rt_tick_get();
+}