void worker_loop_start(void (*test_step_cb_fnc)(void), int timeout) { int test_step_cb_timer = worker_loop_event_queue.call_every(timeout, test_step_cb_fnc); int timeout_outgoing_msg_timer = worker_loop_event_queue.call_every(1000, emac_if_timeout_outgoing_msg); #if MBED_CONF_APP_ECHO_SERVER worker_loop_event_queue.dispatch_forever(); #else worker_loop_event_queue.dispatch(600 * SECOND_TO_MS); #endif worker_loop_event_queue.cancel(test_step_cb_timer); worker_loop_event_queue.cancel(timeout_outgoing_msg_timer); worker_loop_event_queue.dispatch(5); }
void call_every_test() { Timer tickers[N]; EventQueue queue; for (int i = 0; i < N; i++) { tickers[i].start(); queue.call_every((i+1)*100, time_func, &tickers[i], (i+1)*100); } queue.dispatch(N*100); }
int main() { // creates a queue with the default size EventQueue queue; // events are simple callbacks queue.call(printf, "called immediately\n"); queue.call_in(2000, printf, "called in 2 seconds\n"); queue.call_every(1000, printf, "called every 1 seconds\n"); // events are executed by the dispatch method queue.dispatch(); }
void cancel_test1() { EventQueue queue; int ids[N]; for (int i = 0; i < N; i++) { ids[i] = queue.call_in(1000, no); } for (int i = N-1; i >= 0; i--) { queue.cancel(ids[i]); } queue.dispatch(0); }