30 #define M2MB_HWTMR_INVALID 0
31 #define M2MB_HWTMR_INVALID_ATTR 0
33 #define M2MB_HWTMR_PERIODIC_TMR 1
34 #define M2MB_HWTMR_ONESHOT_TMR 0
37 #define M2MB_HWTMR_AUTOSTART 1
38 #define M2MB_HWTMR_NOT_START 0
41 #define M2MB_HW_TASK_AUTOSTART 1
42 #define M2MB_HW_TASK_NOT_START 0
46 #define M2MB_HWTMR_MIN_TIMEOUT ( 100 )
49 #define M2MB_HWTMR_MAX_TIMEOUT ( ( 1<<(sizeof(MEM_W)*4 - 1) ) | ~( 1<<(sizeof(MEM_W)*4 - 1) ) )
52 #define M2MB_HWTMR_UNIT_FACTOR ( 1000 )
53 #define M2MB_HWTMR_TIME_MS(timems) ( timems * M2MB_HWTMR_UNIT_FACTOR )
54 #define M2MB_HWTMR_TIME_S(times) M2MB_HWTMR_TIME_MS(times * 1000 )
58 #define m2mb_hwTmr_setAttrItem_( h, ... ) m2mb_hwTmr_setAttrItem( h, CMDS_ARGS( __VA_ARGS__ ) )
60 #define m2mb_hwTmr_setAttrItem_( h, args... ) m2mb_hwTmr_setAttrItem( h, CMDS_ARGS( args ) )
68 #define enum_rename( a ) M2MB_HW_##a, M2MB_HWTMR_##a = M2MB_HW_##a
69 #define enum_rename_set( a, val ) M2MB_HW_##a = val, M2MB_HWTMR_##a = M2MB_HW_##a
72 typedef enum M2MB_HWTMR_RESULT
76 enum_rename_set( SUCCESS, 0 ),
77 enum_rename( DELETED ),
78 enum_rename( PTR_ERROR ),
79 enum_rename( NO_MEMORY ),
80 enum_rename( TIMER_ERROR ),
81 enum_rename( TICK_ERROR ),
82 enum_rename( START_ERROR ),
83 enum_rename( STOP_ERROR ),
84 enum_rename( TICK_ERROR_TIMER_RUN ),
85 enum_rename( PERIOD_ERROR_TIMER_RUN ),
86 enum_rename( CB_ERROR_TIMER_RUN ),
87 enum_rename( ARG_ERROR_TIMER_RUN ),
88 enum_rename( TIME_DURATION_ERROR_TIMER_RUN ),
89 enum_rename( GENERIC_ERROR ),
90 enum_rename( INVALID_ARG ),
92 enum_rename( ERROR_INVALID_ARG ),
93 enum_rename( ERR_INVALID_PARAM ),
94 enum_rename( ERR_NO_MEMORY ),
95 enum_rename( ERR_NO_RESOURCE ),
96 enum_rename( ERR_BUSY ),
97 enum_rename( ERR_NO_ENTRY ),
98 enum_rename( ERR_NOT_SUPPORTED ),
99 enum_rename( ERR_TIMEOUT ),
100 enum_rename( ERR_BOUNDS ),
101 enum_rename( ERR_BAD_PAYLOAD ),
102 enum_rename( ERR_EXISTS ),
103 enum_rename( ERR_NOT_STARTED ),
104 enum_rename( ERR_ALREADY_EXPIRED ),
107 enum_rename_set( ERR_UNKNOWN, 255 ),
110 ENUM_TO_INT( M2MB_HWTMR_RESULT_E )
111 } M2MB_HWTMR_RESULT_E;
117 M2MB_HWTMR_STATE_TOSTART,
118 M2MB_HWTMR_STATE_RUN,
119 M2MB_HWTMR_STATE_STOP,
120 M2MB_HWTMR_STATE_DELETED
121 } M2MB_HWTMR_STATE_E;
126 M2MB_HWTMR_SEL_CMD_CREATE_ATTR,
127 M2MB_HWTMR_SEL_CMD_DEL_ATTR,
129 M2MB_HWTMR_SEL_CMD_NAME_ATTR_NO_SUPPORTED,
130 M2MB_HWTMR_SEL_CMD_USRNAME_ATTR_NO_SUPPORTED,
131 M2MB_HWTMR_SEL_CMD_CB_FUNC,
133 M2MB_HWTMR_SEL_CMD_ARG_CB,
138 M2MB_HWTMR_SEL_CMD_TICKS_PERIOD,
140 M2MB_HWTMR_SEL_CMD_TICKS2ELAPSE,
142 M2MB_HWTMR_SEL_CMD_TIME_DURATION,
144 M2MB_HWTMR_SEL_CMD_PERIODIC,
146 M2MB_HWTMR_SEL_CMD_AUTOSTART,
147 M2MB_HWTMR_SEL_CMD_STATE,
150 M2MB_HWTMR_SEL_CMD_END,
151 ENUM_TO_INT( M2MB_HWTMR_SEL_CMD_E )
152 } M2MB_HWTMR_SEL_CMD_E;
155 typedef struct M2MB_HWTMR_HANDLE_TAG *M2MB_HWTMR_HANDLE;
156 typedef struct M2MB_HWTMR_ATTR_HANDLE_TAG *M2MB_HWTMR_ATTR_HANDLE;
158 typedef void ( *USR_HWTMR_CB )( M2MB_HWTMR_HANDLE handle,
void *arg );
297 M2MB_HWTMR_ATTR_HANDLE *pTmrHwAttr
479 M2MB_HWTMR_SEL_CMD_E selCmd,
525 M2MB_HWTMR_SEL_CMD_E selCmd,