97 lines
2.7 KiB
C
97 lines
2.7 KiB
C
//////////////////////////////////////////////////
|
|
//Title : wxc_timer.h
|
|
//Auhtor : Liu Wei
|
|
//Desc : WXC2 Public Timer Managemnet
|
|
//Created : 2007-04-27
|
|
//Revision :
|
|
//
|
|
//Revision :
|
|
//
|
|
//////////////////////////////////////////////////
|
|
|
|
#ifndef _PUB_TIMER_H_
|
|
#define _PUB_TIMER_H_
|
|
|
|
#include "public.h"
|
|
#include "includes.h"
|
|
#include "pub_base.h"
|
|
#include "pub_malloc.h"
|
|
|
|
///////////////////////////////////////////////////////////////////////////
|
|
|
|
typedef void ( *TimerCallBack ) ( u16 dSuitId, u16 dData );
|
|
|
|
#define TM_CLOCK_MAX (24*60*60*100) //one day based on wxc2 base timer 10ms
|
|
|
|
typedef struct WXC_TIMER
|
|
{
|
|
u32 dExpires; //dExpires : Timer expired number
|
|
u32 dSuitNumber; //dSuitNumber : Timer suit size of member
|
|
TimerCallBack pFunc; //pFunc : Timer call back function
|
|
u16 dData; //dData : Pointer for parameter of callback
|
|
void *pTimerNode; //pTimerNode : Reserved for timer Managemnet
|
|
}
|
|
WxcTimer;
|
|
|
|
///////////////////////////////////////////////////////////////////////////
|
|
|
|
typedef struct WXC_TIMER_NODE
|
|
{
|
|
u32 *dClockArray; //dClockArray : Timer set member clock array
|
|
WxcTimer *pTimer;
|
|
struct WXC_TIMER_NODE *pNext;
|
|
struct WXC_TIMER_NODE *pPrev;
|
|
}
|
|
WxcTimerNode;
|
|
|
|
///////////////////////////////////////////////////////////////////////////
|
|
|
|
#define MAX_TM_MODE 512
|
|
|
|
#define TIMER_NODE_SIZE ( sizeof( WxcTimerNode ) + sizeof( WxcTimer ) )
|
|
|
|
#define CLOCK_SZIE ( sizeof ( u32 ) )
|
|
|
|
#define TMHEAP_MM_SIZE ( MAX_TM_MODE * TIMER_NODE_SIZE )
|
|
|
|
#define GET_TNODE_SIZE(n) ( TIMER_NODE_SIZE + ( n ) *( CLOCK_SZIE ))
|
|
|
|
///////////////////////////////////////////////////////////////////////////
|
|
|
|
u8 TMHeap[TMHEAP_MM_SIZE];
|
|
|
|
WxcTimerNode tTimerListHead;
|
|
WxcTimerNode *pTLHead;
|
|
WxcTimerNode *pTLCur;
|
|
|
|
///////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef _LINUX_TIMER_H
|
|
#define time_after(a,b) ((long)(b) - (long)(a) < 0)
|
|
#define time_before(a,b) time_after(b,a)
|
|
|
|
#define time_after_eq(a,b) ((long)(a) - (long)(b) >= 0)
|
|
#define time_before_eq(a,b) time_after_eq(b,a)
|
|
#endif
|
|
|
|
///////////////////////////////////////////////////////////////////////////
|
|
|
|
#define TimerAfter(a,b) time_after(a,b)
|
|
#define TimerBefore(a,b) time_before(a,b)
|
|
#define TimerAfterEq(a,b) time_after_eq(a,b)
|
|
#define TimerBeforeEq(a,b) time_before_eq(a,b)
|
|
|
|
|
|
extern void TimerAdd ( WxcTimer * pTimer );
|
|
extern void TimerMod ( WxcTimer * pTimer, u16 dExpires );
|
|
extern void TimerDel ( WxcTimer * pTimer );
|
|
|
|
|
|
inline void TimerStart ( WxcTimer * pTimer, u16 dSuitId );
|
|
inline void TimerStop ( WxcTimer * pTimer, u16 dSuitId );
|
|
inline void TM_Init ( );
|
|
|
|
|
|
|
|
#endif
|