PASII/CandeII_1.4/Lib/calender.h

123 lines
3.1 KiB
C

/********************************************************************************
* @file calender.h
* @author Mingming Liu
* @version V1.0.0
* @date 12-08-2016
* @Emial ming.liu@syd-tek.com
* @brief head file for calender.c
******************************************************************************/
#ifndef _CALENDER_H
#define _CALENDER_H
#include <stdint.h>
#ifdef __cplusplus
extern "C"
{
#endif
/*********************************************************************
* MACROS
*/
#define BUILD_UINT16(loByte, hiByte) \
((uint16_t)(((loByte) & 0x00FF) + (((hiByte) & 0x00FF) << 8)))
#define IsLeapYear(yr) (!((yr) % 400) || (((yr) % 100) && !((yr) % 4)))
/*********************************************************************
* TYPEDEFS
*/
// number of seconds since 0 hrs, 0 minutes, 0 seconds, on the
// 1st of January 2000 UTC
typedef uint32_t UTCTime;
// To be used with
typedef struct
{
uint8_t seconds; // 0-59
uint8_t minutes; // 0-59
uint8_t hour; // 0-23
uint8_t day; // 0-30
uint8_t month; // 0-11
uint16_t year; // 2000+
} UTCTimeStruct;
// To be used with
typedef struct
{
uint8_t RSVD0;
uint8_t RSVD1;
uint8_t year_low; // *(pData+2)
uint8_t month; // *(pData+3)
uint8_t day; // *(pData+4)
uint8_t hour; // *(pData+5)
uint8_t minutes; // *(pData+6)
uint8_t seconds; // *(pData+7)
uint8_t week; // *(pData+8)
} Time_clock_Struct;
/*********************************************************************
* FUNCTIONS
*/
/*
* Updates the clock and Timers from the MAC 320us timer tick.
*/
extern void TimeUpdate( void );
/*
* Set the new time. This will only set the seconds portion
* of time and doesn't change the factional second counter.
* newTime - number of seconds since 0 hrs, 0 minutes,
* 0 seconds, on the 1st of January 2000 UTC
*/
extern void Set_Clock( UTCTime newTime );
/*
* Gets the current time. This will only return the seconds
* portion of time and doesn't include the factional second counter.
* returns: number of seconds since 0 hrs, 0 minutes,
* 0 seconds, on the 1st of January 2000 UTC
*/
extern UTCTime Get_Clock( void );
/*
* Converts UTCTime to UTCTimeStruct
*
* secTime - number of seconds since 0 hrs, 0 minutes,
* 0 seconds, on the 1st of January 2000 UTC
* tm - pointer to breakdown struct
*/
extern void ConvertUTCTime( UTCTimeStruct *tm, UTCTime secTime );
/*
* Converts UTCTimeStruct to UTCTime (seconds since 00:00:00 01/01/2000)
*
* tm - pointer to UTC time struct
*/
extern UTCTime ConvertUTCSecs( UTCTimeStruct *tm );
/*
* Update/Adjust the clock and timers
* Msec - elapsed time in milli seconds
*/
extern void AdjustTimer( uint32_t Msec );
extern uint8_t * timeAppClockGet( uint8_t *pData );
extern void timeAppClockSet( uint8_t *pData );
extern void timer_calender_handle(void);
/*********************************************************************
*********************************************************************/
#ifdef __cplusplus
}
#endif
#endif