159 lines
		
	
	
		
			6.5 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			159 lines
		
	
	
		
			6.5 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
| /**
 | |
|     Software timer module.
 | |
| 
 | |
|     Software timer module. Provide inaccurate timer for low priority
 | |
|     or tolerance allowed purpose.
 | |
| 
 | |
|     @file       SwTimer.h
 | |
|     @ingroup    mIUtilSwTimer
 | |
|     @note       Nothing.
 | |
| 
 | |
|     Copyright   Novatek Microelectronics Corp. 2012.  All rights reserved.
 | |
| */
 | |
| 
 | |
| #ifndef _SWTIMER_H
 | |
| #define _SWTIMER_H
 | |
| 
 | |
| #include <kwrap/type.h>
 | |
| 
 | |
| /**
 | |
|     @addtogroup mIUtilSwTimer
 | |
| */
 | |
| //@{
 | |
| 
 | |
| /**
 | |
|     Software timer ID.
 | |
| 
 | |
|     Software timer ID.
 | |
| */
 | |
| typedef enum {
 | |
| 	SWTIMER_00,                         ///< Software timer ID 00
 | |
| 	SWTIMER_01,                         ///< Software timer ID 01
 | |
| 	SWTIMER_02,                         ///< Software timer ID 02
 | |
| 	SWTIMER_03,                         ///< Software timer ID 03
 | |
| 	SWTIMER_04,                         ///< Software timer ID 04
 | |
| 	SWTIMER_05,                         ///< Software timer ID 05
 | |
| 	SWTIMER_06,                         ///< Software timer ID 06
 | |
| 	SWTIMER_07,                         ///< Software timer ID 07
 | |
| 	SWTIMER_08,                         ///< Software timer ID 08
 | |
| 	SWTIMER_09,                         ///< Software timer ID 09
 | |
| 	SWTIMER_10,                         ///< Software timer ID 10
 | |
| 	SWTIMER_11,                         ///< Software timer ID 11
 | |
| 	SWTIMER_12,                         ///< Software timer ID 12
 | |
| 	SWTIMER_13,                         ///< Software timer ID 13
 | |
| 	SWTIMER_14,                         ///< Software timer ID 14
 | |
| 	SWTIMER_15,                         ///< Software timer ID 15
 | |
| 	SWTIMER_16,                         ///< Software timer ID 16
 | |
| 	SWTIMER_17,                         ///< Software timer ID 17
 | |
| 	SWTIMER_18,                         ///< Software timer ID 18
 | |
| 	SWTIMER_19,                         ///< Software timer ID 19
 | |
| 	SWTIMER_20,                         ///< Software timer ID 20
 | |
| 	SWTIMER_21,                         ///< Software timer ID 21
 | |
| 	SWTIMER_22,                         ///< Software timer ID 22
 | |
| 	SWTIMER_23,                         ///< Software timer ID 23
 | |
| 	SWTIMER_24,                         ///< Software timer ID 24
 | |
| 	SWTIMER_25,                         ///< Software timer ID 25
 | |
| 	SWTIMER_26,                         ///< Software timer ID 26
 | |
| 	SWTIMER_27,                         ///< Software timer ID 27
 | |
| 	SWTIMER_28,                         ///< Software timer ID 28
 | |
| 	SWTIMER_29,                         ///< Software timer ID 29
 | |
| 	SWTIMER_30,                         ///< Software timer ID 30
 | |
| 	SWTIMER_31,                         ///< Software timer ID 31
 | |
| 	SWTIMER_32,                         ///< Software timer ID 32
 | |
| 	SWTIMER_33,                         ///< Software timer ID 33
 | |
| 	SWTIMER_34,                         ///< Software timer ID 34
 | |
| 	SWTIMER_35,                         ///< Software timer ID 35
 | |
| 	SWTIMER_36,                         ///< Software timer ID 36
 | |
| 	SWTIMER_37,                         ///< Software timer ID 37
 | |
| 	SWTIMER_38,                         ///< Software timer ID 38
 | |
| 	SWTIMER_39,                         ///< Software timer ID 39
 | |
| 	SWTIMER_40,                         ///< Software timer ID 40
 | |
| 	SWTIMER_41,                         ///< Software timer ID 41
 | |
| 	SWTIMER_42,                         ///< Software timer ID 42
 | |
| 	SWTIMER_43,                         ///< Software timer ID 43
 | |
| 	SWTIMER_44,                         ///< Software timer ID 44
 | |
| 	SWTIMER_45,                         ///< Software timer ID 45
 | |
| 	SWTIMER_46,                         ///< Software timer ID 46
 | |
| 	SWTIMER_47,                         ///< Software timer ID 47
 | |
| 	SWTIMER_48,                         ///< Software timer ID 48
 | |
| 	SWTIMER_49,                         ///< Software timer ID 49
 | |
| 	SWTIMER_50,                         ///< Software timer ID 50
 | |
| 	SWTIMER_51,                         ///< Software timer ID 51
 | |
| 	SWTIMER_52,                         ///< Software timer ID 52
 | |
| 	SWTIMER_53,                         ///< Software timer ID 53
 | |
| 	SWTIMER_54,                         ///< Software timer ID 54
 | |
| 	SWTIMER_55,                         ///< Software timer ID 55
 | |
| 	SWTIMER_56,                         ///< Software timer ID 56
 | |
| 	SWTIMER_57,                         ///< Software timer ID 57
 | |
| 	SWTIMER_58,                         ///< Software timer ID 58
 | |
| 	SWTIMER_59,                         ///< Software timer ID 59
 | |
| 	SWTIMER_60,                         ///< Software timer ID 60
 | |
| 	SWTIMER_61,                         ///< Software timer ID 61
 | |
| 	SWTIMER_62,                         ///< Software timer ID 62
 | |
| 	SWTIMER_63,                         ///< Software timer ID 63
 | |
| 	SWTIMER_NUM,                        ///< Total software timer number
 | |
| 
 | |
| 	ENUM_DUMMY4WORD(SWTIMER_ID)
 | |
| } SWTIMER_ID, *PSWTIMER_ID;
 | |
| 
 | |
| #define SWTIMER_INVALID         0x80000000  ///< Invalid Timer ID
 | |
| 
 | |
| #define SWTIMER_MIN_INTERVAL    1           ///< Minimum interval
 | |
| #define SWTIMER_MAX_INTERVAL    2147483     ///< Maximum interval
 | |
| #define SWTIMER_MIN_RESOLUTION  1           ///< Minimum resolution
 | |
| #define SWTIMER_MAX_RESOLUTION  20          ///< Maximum resolution
 | |
| 
 | |
| /**
 | |
|     Software timer mode
 | |
| 
 | |
|     Software timer mode.
 | |
| */
 | |
| typedef enum {
 | |
| 	SWTIMER_MODE_ONE_SHOT   = 0x00000000,   ///< Mode is "one-shot", you have to start timer again when expired.
 | |
| 	SWTIMER_MODE_FREE_RUN   = 0x00000001,   ///< Mode is "free-run", auto re-start timer when expired.
 | |
| 
 | |
| 	ENUM_DUMMY4WORD(SWTIMER_MODE)
 | |
| } SWTIMER_MODE, *PSWTIMER_MODE;
 | |
| 
 | |
| /**
 | |
|     Software timer configuration ID
 | |
| 
 | |
|     Software timer configuration ID for SwTimer_SetConfig() and SwTimer_GetConfig()
 | |
| */
 | |
| typedef enum {
 | |
| 	SWTIMER_CONFIG_ID_RESOLUTION,   ///< Software timer resolution, unit: ms (millisecond)
 | |
| 	///< @note  Valid value: SWTIMER_MIN_RESOLUTION (1) ~ SWTIMER_MAX_RESOLUTION (20), default: 10.
 | |
| 	///< Lower value higher system burden (CPU loading, interrupt, context switch...).
 | |
| 	///< Higher value less accuracy.
 | |
| 
 | |
| 	ENUM_DUMMY4WORD(SWTIMER_CONFIG_ID)
 | |
| } SWTIMER_CONFIG_ID;
 | |
| 
 | |
| /**
 | |
|     Software timer callback function
 | |
| 
 | |
|     @param[in] uiEvent  specific timer timeout ID
 | |
| 
 | |
| */
 | |
| typedef void (*SWTIMER_CB)(UINT32 uiEvent);
 | |
| 
 | |
| // Software timer API
 | |
| extern void     SwTimer_InstallID(void) _SECTION(".kercfg_text");
 | |
| 
 | |
| extern void     SwTimer_Init(void);
 | |
| extern ER       SwTimer_Open(PSWTIMER_ID pSwTimerID, SWTIMER_CB EventHandler);
 | |
| extern ER       SwTimer_Close(SWTIMER_ID SwTimerID);
 | |
| extern ER       SwTimer_Cfg(SWTIMER_ID SwTimerID, INT32 iInterval, SWTIMER_MODE SwTimerMode);
 | |
| extern ER       SwTimer_Start(SWTIMER_ID SwTimerID);
 | |
| extern ER       SwTimer_Stop(SWTIMER_ID SwTimerID);
 | |
| extern ER       SwTimer_WaitTimeup(SWTIMER_ID SwTimerID);
 | |
| 
 | |
| extern void     SwTimer_SetConfig(SWTIMER_CONFIG_ID ConfigID, UINT32 uiConfig);
 | |
| extern UINT32   SwTimer_GetConfig(SWTIMER_CONFIG_ID ConfigID);
 | |
| 
 | |
| extern void     SwTimer_DelayMs(UINT32 uiMS);
 | |
| 
 | |
| //@}
 | |
| 
 | |
| #endif
 | 
