13d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include <string.h>
23d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include <time.h>
33d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include <sys/time.h>
43d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "xpl_Time.h"
53d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
63d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#ifdef __cplusplus
73d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambyextern "C" {
83d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#endif
93d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyXPL_CLK_CLOCK_T XPL_CLK_GetClock()
113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return (XPL_CLK_CLOCK_T)time(NULL);
133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyXPL_CLK_LONG_CLOCK_T XPL_CLK_GetClockMs()
163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    struct timeval tv1;
183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    gettimeofday( &tv1, NULL );
193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return (XPL_CLK_LONG_CLOCK_T)(tv1.tv_usec + (tv1.tv_sec * 1000000 ));
203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyXPL_CLK_RET_STATUS_T XPL_CLK_GetTime(XPL_CLK_TM_T *parsed_time)
243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return XPL_CLK_RET_SUCCESS;
263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyXPL_CLK_RET_STATUS_T XPL_CLK_UnpackTime(XPL_CLK_CLOCK_T clock, XPL_CLK_TM_T *parsed_clock)
293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    struct tm t;
313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    time_t tt = clock;
323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if ( gmtime_r(&tt, &t) != NULL )
333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    {
343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        parsed_clock->tm_sec = t.tm_sec;
353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        parsed_clock->tm_min = t.tm_min;
363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        parsed_clock->tm_hour = t.tm_hour;
373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        parsed_clock->tm_mday = t.tm_mday;
383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        parsed_clock->tm_mon = t.tm_mon;
393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        parsed_clock->tm_year = t.tm_year;
403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        parsed_clock->tm_wday = t.tm_wday;
413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        parsed_clock->tm_yday = t.tm_yday;
423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        parsed_clock->tm_isdst = t.tm_isdst;
433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        return XPL_CLK_RET_SUCCESS;
443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return XPL_CLK_RET_FAIL;
463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyXPL_CLK_CLOCK_T XPL_CLK_PackTime(XPL_CLK_TM_T *parsed_clock)
503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    struct tm t;
533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    memset(&t, 0, sizeof(struct tm));
543d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    t.tm_sec = parsed_clock->tm_sec;
553d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby       t.tm_min = parsed_clock->tm_min;
563d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    t.tm_hour = parsed_clock->tm_hour;
573d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    t.tm_mday = parsed_clock->tm_mday;
583d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    t.tm_mon = parsed_clock->tm_mon;
593d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    t.tm_year = parsed_clock->tm_year;
603d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    t.tm_wday = parsed_clock->tm_wday;
613d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    t.tm_yday = parsed_clock->tm_yday;
623d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    t.tm_isdst = parsed_clock->tm_isdst;
633d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
643d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return (XPL_CLK_CLOCK_T)mktime(&t);
653d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
663d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
673d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyINT32 XPL_CLK_GetTimeZone(void)
683d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
693d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    //tzset();
703d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    //return (INT32)timezone;
713d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return 0;
723d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
733d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
743d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
753d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/* Starts timer */
763d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyXPL_TIMER_HANDLE_T XPL_CLK_StartTimer(XPL_PORT_T port, UINT32 interval, XPL_CLK_TIMER_CBACK reply_timer)
773d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
783d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return XPL_CLK_HANDLE_INVALID;
793d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
803d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
813d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/* Stops timer */
823d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyXPL_CLK_RET_STATUS_T XPL_CLK_StopTimer(XPL_TIMER_HANDLE_T handle)
833d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
843d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return XPL_CLK_RET_SUCCESS;
853d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
863d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
873d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#ifdef __cplusplus
883d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
893d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#endif
903d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
91