#ifndef __DSL_TIMER_H__
#define __DSL_TIMER_H__

// ==================================================
// voip time tick in unit of ms 
typedef unsigned long timetick_t;

#define TIMETICK_SEED	0xFFFF0000	// to make it wrap around after 65.536 seconds 

// timetick compare function 
#define timetick_before( a, b )		\
		( ( long )( ( b ) - ( a ) ) > 0 ? 1 : 0 )
#define timetick_before_eq( a, b )		\
		( ( long )( ( b ) - ( a ) ) >= 0 ? 1 : 0 )
#define timetick_after( a, b )		\
		( ( long )( ( a ) - ( b ) ) > 0 ? 1 : 0 )
#define timetick_after_eq( a, b )		\
		( ( long )( ( a ) - ( b ) ) >= 0 ? 1 : 0 )


// ==================================================
// timer function definition 
typedef void ( *fn_timer_t )( void *priv );

// ==================================================
// register timer interfaces 
// period: > 0 means periodic timer, < 0 means one shoot timer 
extern int register_dsl_timer( fn_timer_t fn_timer, void *priv, long period );

#define register_timer_10ms( fn, priv )		register_dsl_timer( fn, priv, 10 )


#endif // __DSL_TIMER_H__