1#include <string.h>
2#include <time.h>
3#include <sys/time.h>
4#include "xpl_Time.h"
5
6#ifdef __cplusplus
7extern "C" {
8#endif
9
10XPL_CLK_CLOCK_T XPL_CLK_GetClock()
11{
12    return (XPL_CLK_CLOCK_T)time(NULL);
13}
14
15XPL_CLK_LONG_CLOCK_T XPL_CLK_GetClockMs()
16{
17    struct timeval tv1;
18    gettimeofday( &tv1, NULL );
19    return (XPL_CLK_LONG_CLOCK_T)(tv1.tv_usec + (tv1.tv_sec * 1000000 ));
20}
21
22
23XPL_CLK_RET_STATUS_T XPL_CLK_GetTime(XPL_CLK_TM_T *parsed_time)
24{
25    return XPL_CLK_RET_SUCCESS;
26}
27
28XPL_CLK_RET_STATUS_T XPL_CLK_UnpackTime(XPL_CLK_CLOCK_T clock, XPL_CLK_TM_T *parsed_clock)
29{
30    struct tm t;
31    time_t tt = clock;
32    if ( gmtime_r(&tt, &t) != NULL )
33    {
34        parsed_clock->tm_sec = t.tm_sec;
35        parsed_clock->tm_min = t.tm_min;
36        parsed_clock->tm_hour = t.tm_hour;
37        parsed_clock->tm_mday = t.tm_mday;
38        parsed_clock->tm_mon = t.tm_mon;
39        parsed_clock->tm_year = t.tm_year;
40        parsed_clock->tm_wday = t.tm_wday;
41        parsed_clock->tm_yday = t.tm_yday;
42        parsed_clock->tm_isdst = t.tm_isdst;
43        return XPL_CLK_RET_SUCCESS;
44    }
45    return XPL_CLK_RET_FAIL;
46
47}
48
49XPL_CLK_CLOCK_T XPL_CLK_PackTime(XPL_CLK_TM_T *parsed_clock)
50{
51
52    struct tm t;
53    memset(&t, 0, sizeof(struct tm));
54    t.tm_sec = parsed_clock->tm_sec;
55       t.tm_min = parsed_clock->tm_min;
56    t.tm_hour = parsed_clock->tm_hour;
57    t.tm_mday = parsed_clock->tm_mday;
58    t.tm_mon = parsed_clock->tm_mon;
59    t.tm_year = parsed_clock->tm_year;
60    t.tm_wday = parsed_clock->tm_wday;
61    t.tm_yday = parsed_clock->tm_yday;
62    t.tm_isdst = parsed_clock->tm_isdst;
63
64    return (XPL_CLK_CLOCK_T)mktime(&t);
65}
66
67INT32 XPL_CLK_GetTimeZone(void)
68{
69    //tzset();
70    //return (INT32)timezone;
71    return 0;
72}
73
74
75/* Starts timer */
76XPL_TIMER_HANDLE_T XPL_CLK_StartTimer(XPL_PORT_T port, UINT32 interval, XPL_CLK_TIMER_CBACK reply_timer)
77{
78    return XPL_CLK_HANDLE_INVALID;
79}
80
81/* Stops timer */
82XPL_CLK_RET_STATUS_T XPL_CLK_StopTimer(XPL_TIMER_HANDLE_T handle)
83{
84    return XPL_CLK_RET_SUCCESS;
85}
86
87#ifdef __cplusplus
88}
89#endif
90
91