00001 00013 #ifndef _KE_TIMER_H_ 00014 #define _KE_TIMER_H_ 00015 00027 /* 00028 * INCLUDE FILES 00029 **************************************************************************************** 00030 */ 00031 #include "rwnx_config.h" 00032 00033 #include "ke_queue.h" 00034 #include "ke_msg.h" 00035 // for co_status_t 00036 #include "co_status.h" 00037 00038 #if NX_EMB 00039 #include "hal_machw.h" 00040 #endif 00041 00042 00043 00044 /* 00045 * DEFINES 00046 **************************************************************************************** 00047 */ 00051 00052 #define KE_TIMER_DELAY_MAX 300000000 00053 00055 #define MILLI2MICRO 1000 00056 00057 /* 00058 * TYPE DEFINITIONS 00059 **************************************************************************************** 00060 */ 00061 00063 struct ke_timer 00064 { 00066 struct ke_timer *next; 00068 ke_msg_id_t id; 00070 ke_task_id_t task; 00072 uint32_t time; 00073 }; 00074 00075 /* 00076 * FUNCTION PROTOTYPES 00077 **************************************************************************************** 00078 */ 00079 00080 #ifdef CFG_RWTL 00081 extern uint32_t tl_diff; 00082 #endif 00083 00084 00092 __INLINE uint32_t ke_time() 00093 { 00094 #if NX_EMB 00095 // register call 00096 return hal_machw_time(); 00097 00098 #else 00099 ASSERT_ERR(0); 00100 #endif 00101 } 00102 00113 __INLINE bool ke_time_abs_cmp(uint32_t time1, uint32_t time2) 00114 { 00115 uint32_t diff = time1 - time2; 00116 00117 #ifdef CFG_RWTL 00119 tl_diff = diff; 00120 #endif 00121 00122 return (((int32_t)diff) < 0); 00123 } 00124 00125 00135 __INLINE bool ke_time_past(uint32_t time) 00136 { 00137 return ke_time_abs_cmp(time, ke_time()); 00138 } 00139 00140 void ke_timer_set(ke_msg_id_t const timer_id, 00141 ke_task_id_t const task, 00142 uint32_t const delay); 00143 00144 void ke_timer_clear(ke_msg_id_t const timerid, 00145 ke_task_id_t const task); 00146 00147 00148 void ke_timer_schedule(int dummy); 00149 00150 bool ke_timer_active(ke_msg_id_t const timer_id, 00151 ke_task_id_t const task_id); 00152 00153 void ke_timer_reset(void); 00154 00156 00157 #endif // _KE_TIMER_H_
1.6.1