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
 | |
| 
 | 
