31 #define M2MB_HWTMR_INVALID 0
32 #define M2MB_HWTMR_INVALID_ATTR 0
34 #define M2MB_HWTMR_PERIODIC_TMR 1
35 #define M2MB_HWTMR_ONESHOT_TMR 0
38 #define M2MB_HWTMR_AUTOSTART 1
39 #define M2MB_HWTMR_NOT_START 0
42 #define M2MB_HW_TASK_AUTOSTART 1
43 #define M2MB_HW_TASK_NOT_START 0
47 #define M2MB_HWTMR_MIN_TIMEOUT ( 100 )
50 #define M2MB_HWTMR_MAX_TIMEOUT ( ( 1<<(sizeof(MEM_W)*4 - 1) ) | ~( 1<<(sizeof(MEM_W)*4 - 1) ) )
53 #define M2MB_HWTMR_UNIT_FACTOR ( 1000 )
54 #define M2MB_HWTMR_TIME_MS(timems) ( timems * M2MB_HWTMR_UNIT_FACTOR )
55 #define M2MB_HWTMR_TIME_S(times) M2MB_HWTMR_TIME_MS(times * 1000 )
59 #define m2mb_hwTmr_setAttrItem_( h, ... ) m2mb_hwTmr_setAttrItem( h, CMDS_ARGS( __VA_ARGS__ ) )
61 #define m2mb_hwTmr_setAttrItem_( h, args... ) m2mb_hwTmr_setAttrItem( h, CMDS_ARGS( args ) )
69 #define enum_rename( a ) M2MB_HW_##a, M2MB_HWTMR_##a = M2MB_HW_##a
70 #define enum_rename_set( a, val ) M2MB_HW_##a = val, M2MB_HWTMR_##a = M2MB_HW_##a
73 typedef enum M2MB_HWTMR_RESULT
77 enum_rename_set( SUCCESS, 0 ),
78 enum_rename( DELETED ),
79 enum_rename( PTR_ERROR ),
80 enum_rename( NO_MEMORY ),
81 enum_rename( TIMER_ERROR ),
82 enum_rename( TICK_ERROR ),
83 enum_rename( START_ERROR ),
84 enum_rename( STOP_ERROR ),
85 enum_rename( TICK_ERROR_TIMER_RUN ),
86 enum_rename( PERIOD_ERROR_TIMER_RUN ),
87 enum_rename( CB_ERROR_TIMER_RUN ),
88 enum_rename( ARG_ERROR_TIMER_RUN ),
89 enum_rename( TIME_DURATION_ERROR_TIMER_RUN ),
90 enum_rename( GENERIC_ERROR ),
91 enum_rename( INVALID_ARG ),
93 enum_rename( ERROR_INVALID_ARG ),
94 enum_rename( ERR_INVALID_PARAM ),
95 enum_rename( ERR_NO_MEMORY ),
96 enum_rename( ERR_NO_RESOURCE ),
97 enum_rename( ERR_BUSY ),
98 enum_rename( ERR_NO_ENTRY ),
99 enum_rename( ERR_NOT_SUPPORTED ),
100 enum_rename( ERR_TIMEOUT ),
101 enum_rename( ERR_BOUNDS ),
102 enum_rename( ERR_BAD_PAYLOAD ),
103 enum_rename( ERR_EXISTS ),
104 enum_rename( ERR_NOT_STARTED ),
105 enum_rename( ERR_ALREADY_EXPIRED ),
108 enum_rename_set( ERR_UNKNOWN, 255 ),
111 ENUM_TO_INT( M2MB_HWTMR_RESULT_E )
112 } M2MB_HWTMR_RESULT_E;
118 M2MB_HWTMR_STATE_TOSTART,
119 M2MB_HWTMR_STATE_RUN,
120 M2MB_HWTMR_STATE_STOP,
121 M2MB_HWTMR_STATE_DELETED
122 } M2MB_HWTMR_STATE_E;
127 M2MB_HWTMR_SEL_CMD_CREATE_ATTR,
128 M2MB_HWTMR_SEL_CMD_DEL_ATTR,
130 M2MB_HWTMR_SEL_CMD_NAME_ATTR_NO_SUPPORTED,
131 M2MB_HWTMR_SEL_CMD_USRNAME_ATTR_NO_SUPPORTED,
132 M2MB_HWTMR_SEL_CMD_CB_FUNC,
134 M2MB_HWTMR_SEL_CMD_ARG_CB,
139 M2MB_HWTMR_SEL_CMD_TICKS_PERIOD,
141 M2MB_HWTMR_SEL_CMD_TICKS2ELAPSE,
143 M2MB_HWTMR_SEL_CMD_TIME_DURATION,
145 M2MB_HWTMR_SEL_CMD_PERIODIC,
147 M2MB_HWTMR_SEL_CMD_AUTOSTART,
148 M2MB_HWTMR_SEL_CMD_STATE,
151 M2MB_HWTMR_SEL_CMD_END,
152 ENUM_TO_INT( M2MB_HWTMR_SEL_CMD_E )
153 } M2MB_HWTMR_SEL_CMD_E;
156 typedef struct M2MB_HWTMR_HANDLE_TAG *M2MB_HWTMR_HANDLE;
157 typedef struct M2MB_HWTMR_ATTR_HANDLE_TAG *M2MB_HWTMR_ATTR_HANDLE;
159 typedef void ( *USR_HWTMR_CB )( M2MB_HWTMR_HANDLE handle,
void *arg );
298 M2MB_HWTMR_ATTR_HANDLE *pTmrHwAttr
480 M2MB_HWTMR_SEL_CMD_E selCmd,
526 M2MB_HWTMR_SEL_CMD_E selCmd,