162 lines
4.0 KiB
C
Executable File
162 lines
4.0 KiB
C
Executable File
/**
|
|
System software timer service.
|
|
|
|
A service with a time loop can plug-in many callbacks for a time trigger.
|
|
|
|
@file SxTimer.h
|
|
@ingroup mGXSYSTEM
|
|
|
|
Copyright Novatek Microelectronics Corp. 2013. All rights reserved.
|
|
*/
|
|
|
|
#ifndef _SXTIMER_H
|
|
#define _SXTIMER_H
|
|
|
|
#include "GxCommon.h"
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
typedef void (*SX_TIMER)(void); ///< timer callback prototype
|
|
|
|
/**
|
|
Timer entry
|
|
|
|
A entry for SxTimer create a time service.
|
|
@note user uses SX_TIMER_ITEM insead of setting structure member himself.
|
|
*/
|
|
typedef struct {
|
|
INT32 id; ///< [OUTPUT] ID value
|
|
CHAR *pName; ///< [INPUT], for debug
|
|
void *pNext; ///< Reversed, internal used.
|
|
SX_TIMER pfFunc; ///< [INPUT], function pointer
|
|
UINT32 uiPeriodCnt; ///< [INPUT], to evaluate duty cycle time that = uiPeriodCnt*20ms. The duty cycle time is to service the fpDetFunction.
|
|
BOOL bEnable; ///< [INPUT], TRUE for active, FALSE for inactive
|
|
} SX_TIMER_ENTRY;
|
|
|
|
/**
|
|
Macro for Creating entry
|
|
|
|
create a entry for SxTimer.
|
|
|
|
@param[in] name timer name
|
|
@param[in] func callback function
|
|
@param[in] period to evaluate duty cycle time that = period*20ms. The duty cycle time is to service the func.
|
|
@param[in] active indicate to active time trigger when SxTimer_AddItem is called.
|
|
*/
|
|
#define SX_TIMER_ITEM(name,func,period,active) _SECTION(".kercfg_data") SX_TIMER_ENTRY Timer_##name = {0,#name,0,(func),(period),(active)};
|
|
|
|
#define SX_TIMER_GET_ENTRY_NAME(name) Timer_##name ///< translate item name to real declaration entry name for SxTimer_AddItem.
|
|
/**
|
|
Get timer status ID.
|
|
|
|
Get timere status or information.
|
|
*/
|
|
typedef enum {
|
|
SXTIMER_TIMER_BASE, ///< get time base in (ms).
|
|
SXTIMER_CURR_CNT, ///< get current time count
|
|
SXTIMER_MAX ///< maximum set id
|
|
} SXTIMER_DATA_SET;
|
|
|
|
/**
|
|
init SxTimer
|
|
|
|
Start to SxTimer internal timer task.
|
|
|
|
@return
|
|
- @b E_OK: success.
|
|
- @b Others: failed to run.
|
|
*/
|
|
extern void SxTimer_Init(void);
|
|
|
|
/**
|
|
Open SxTimer
|
|
|
|
Start to SxTimer internal timer task.
|
|
|
|
@return
|
|
- @b E_OK: success.
|
|
- @b Others: failed to run.
|
|
*/
|
|
extern ER SxTimer_Open(void);
|
|
|
|
/**
|
|
Close SxTimer
|
|
|
|
To terminate SxTimer internal timer task.
|
|
|
|
@return
|
|
- @b E_OK: success.
|
|
- @b Others: failed to run.
|
|
*/
|
|
extern ER SxTimer_Close(void);
|
|
|
|
/**
|
|
Suspend SxTimer
|
|
|
|
SxTimer internal timer task goes into the supspend state.
|
|
|
|
@note All of entrys will be suspend.
|
|
*/
|
|
extern void SxTimer_Suspend(void);
|
|
|
|
/**
|
|
Resume SxTimer
|
|
|
|
To resume SxTimer internal timer suspended task.
|
|
|
|
@note All of entrys will be suspend.
|
|
*/
|
|
extern void SxTimer_Resume(void);
|
|
|
|
/**
|
|
Add SxTimer entry
|
|
|
|
After user create a entry by SX_TIMER_ITEM, use the API to register into SxTimer.
|
|
|
|
@param[in] pEntry SxTimer's entry that must place at global
|
|
@return
|
|
- @b >=0, assigned entry id
|
|
- @b <0, failed to add item
|
|
*/
|
|
extern INT32 SxTimer_AddItem(SX_TIMER_ENTRY *pEntry);
|
|
|
|
/**
|
|
Set active
|
|
|
|
Set detecting function active.
|
|
If a function is set inactive, the function will not be serviced in SxTimer.
|
|
|
|
@param[in] uiFuncID function ID returned value by SxTimer_AddItem()
|
|
@param[in] bActive TRUE for active, FALSE for inactive
|
|
|
|
*/
|
|
extern void SxTimer_SetFuncActive(UINT32 uiFuncID, BOOL bActive);
|
|
|
|
/**
|
|
Get active-value
|
|
|
|
Get detected function active-value.
|
|
|
|
@param[in] FuncID function ID registered by SxTimer_Open
|
|
@return TRUE for active, FALSE for inactive
|
|
|
|
*/
|
|
extern BOOL SxTimer_GetFuncActive(UINT32 FuncID);
|
|
|
|
|
|
/**
|
|
Get SxTimer internal data
|
|
|
|
Get SxTimer internal data by using SXTIMER_DATA_SET. Currently, user can
|
|
get time base and current count.
|
|
|
|
@param[in] attribute item selection
|
|
@return SxTimer internal data
|
|
|
|
*/
|
|
extern UINT32 SxTimer_GetData(SXTIMER_DATA_SET attribute);
|
|
|
|
|
|
#endif //_SXTIMER_H
|
|
|