blob: 787df7ded75c020edd3a6203c85f38e2d8c09f9a [file] [log] [blame]
#ifndef __WILC_TIME_H__
#define __WILC_TIME_H__
/*!
* @file wilc_time.h
* @brief Time retrival functionality
* @author syounan
* @sa wilc_oswrapper.h top level OS wrapper file
* @date 2 Sep 2010
* @version 1.0
*/
#ifndef CONFIG_WILC_TIME_FEATURE
#error the feature CONFIG_WILC_TIME_FEATURE must be supported to include this file
#endif
/*!
* @struct WILC_ThreadAttrs
* @brief Thread API options
* @author syounan
* @date 2 Sep 2010
* @version 1.0
*/
typedef struct {
/* a dummy type to prevent compile errors on empty structure*/
WILC_Uint8 dummy;
} tstrWILC_TimeAttrs;
typedef struct {
/*!< current year */
WILC_Uint16 u16Year;
/*!< current month */
WILC_Uint8 u8Month;
/*!< current day */
WILC_Uint8 u8Day;
/*!< current hour (in 24H format) */
WILC_Uint8 u8Hour;
/*!< current minute */
WILC_Uint8 u8Miute;
/*!< current second */
WILC_Uint8 u8Second;
} tstrWILC_TimeCalender;
/*!
* @brief returns the number of msec elapsed since system start up
* @return number of msec elapsed singe system start up
* @note since this returned value is 32 bit, the caller must handle
wraparounds in values every about 49 of continous operations
* @author syounan
* @date 2 Sep 2010
* @version 1.0
*/
WILC_Uint32 WILC_TimeMsec(void);
#ifdef CONFIG_WILC_EXTENDED_TIME_OPERATIONS
/**
* @brief
* @details function returns the implementation's best approximation to the
processor time used by the process since the beginning of an
implementation-dependent time related only to the process invocation.
* @return WILC_Uint32
* @note
* @author remil
* @date 11 Nov 2010
* @version 1.0
*/
WILC_Uint32 WILC_Clock();
/**
* @brief
* @details The difftime() function computes the difference between two calendar
times (as returned by WILC_GetTime()): time1 - time0.
* @param[in] WILC_Time time1
* @param[in] WILC_Time time0
* @return WILC_Double
* @note
* @author remil
* @date 11 Nov 2010
* @version 1.0
*/
WILC_Double WILC_DiffTime(WILC_Time time1, WILC_Time time0);
/**
* @brief
* @details The gmtime() function converts the time in seconds since
the Epoch pointed to by timer into a broken-down time,
expressed as Coordinated Universal Time (UTC).
* @param[in] const WILC_Time* timer
* @return WILC_tm*
* @note
* @author remil
* @date 11 Nov 2010
* @version 1.0
*/
WILC_tm *WILC_GmTime(const WILC_Time *timer);
/**
* @brief
* @details The localtime() function converts the time in seconds since
the Epoch pointed to by timer into a broken-down time, expressed
as a local time. The function corrects for the timezone and any
seasonal time adjustments. Local timezone information is used as
though localtime() calls tzset().
* @param[in] const WILC_Time* timer
* @return WILC_tm*
* @note
* @author remil
* @date 11 Nov 2010
* @version 1.0
*/
WILC_tm *WILC_LocalTime(const WILC_Time *timer);
/**
* @brief
* @details The mktime() function converts the broken-down time,
expressed as local time, in the structure pointed to by timeptr,
into a time since the Epoch value with the same encoding as that
of the values returned by time(). The original values of the tm_wday
and tm_yday components of the structure are ignored, and the original
values of the other components are not restricted to the ranges described
in the <time.h> entry.
* @param[in] WILC_tm* timer
* @return WILC_Time
* @note
* @author remil
* @date 11 Nov 2010
* @version 1.0
*/
WILC_Time WILC_MkTime(WILC_tm *timer);
/**
* @brief
* @details The strftime() function places bytes into the array
pointed to by s as controlled by the string pointed to by format.
* @param[in] WILC_Char* s
* @param[in] WILC_Uint32 maxSize
* @param[in] const WILC_Char* format
* @param[in] const WILC_tm* timptr
* @return WILC_Uint32
* @note
* @author remil
* @date 11 Nov 2010
* @version 1.0
*/
WILC_Uint32 WILC_StringFormatTime(WILC_Char *s,
WILC_Uint32 maxSize,
const WILC_Char *format,
const WILC_tm *timptr);
/**
* @brief The WILC_GetTime() function returns the value of time in seconds since the Epoch.
* @details The tloc argument points to an area where the return value is also stored.
If tloc is a null pointer, no value is stored.
* @param[in] WILC_Time* tloc
* @return WILC_Time
* @note
* @author remil
* @date 11 Nov 2010
* @version 1.0
*/
WILC_Time WILC_GetTime(WILC_Time *tloc);
#endif
#ifdef CONFIG_WILC_TIME_UTC_SINCE_1970
/*!
* @brief returns the number of seconds elapsed since 1970 (in UTC)
* @param[in] pstrAttrs Optional attributes, NULL for default
* @return number of seconds elapsed since 1970 (in UTC)
* @sa tstrWILC_TimeAttrs
* @author syounan
* @date 2 Sep 2010
* @version 1.0
*/
WILC_Uint32 WILC_TimeUtcSince1970(tstrWILC_TimeAttrs *pstrAttrs);
#endif
#ifdef CONFIG_WILC_TIME_CALENDER
/*!
* @brief gets the current calender time
* @return number of seconds elapsed since 1970 (in UTC)
* @param[out] ptstrCalender calender structure to be filled with time
* @param[in] pstrAttrs Optional attributes, NULL for default
* @sa WILC_ThreadAttrs
* @author syounan
* @date 2 Sep 2010
* @version 1.0
*/
WILC_ErrNo WILC_TimeCalender(tstrWILC_TimeCalender *ptstrCalender,
tstrWILC_TimeAttrs *pstrAttrs);
#endif
#endif