Browse Source

[components/libc] Move time() and clock() function to libc time.c.

armink 7 years ago
parent
commit
5501ec36cb

+ 4 - 49
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 */
@@ -41,55 +43,6 @@
 #endif
 #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).
  *
@@ -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 */

+ 52 - 0
components/libc/compilers/armlibc/time.c

@@ -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();
+}

+ 52 - 0
components/libc/compilers/dlib/time.c

@@ -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();
+}

+ 52 - 0
components/libc/compilers/minilibc/time.c

@@ -227,3 +227,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();
+}

+ 52 - 0
components/libc/compilers/newlib/time.c

@@ -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();
+}