From b87e61cba74767dcb84d027c44efd27032141462 Mon Sep 17 00:00:00 2001 From: Nicolas Schodet Date: Tue, 13 Apr 2010 00:22:24 +0200 Subject: digital/io/src: add fsm_can_handle_event --- digital/io/src/fsm.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'digital/io/src/fsm.c') diff --git a/digital/io/src/fsm.c b/digital/io/src/fsm.c index 53e4877d..c4607176 100644 --- a/digital/io/src/fsm.c +++ b/digital/io/src/fsm.c @@ -119,3 +119,18 @@ fsm_handle_timeout (fsm_t *fsm) return handled; } +uint8_t +fsm_can_handle_event (fsm_t *fsm, uint8_t event) +{ + uint8_t i; + assert (fsm); + assert (event < fsm->events_nb); + for (i = 0; i < fsm->active_states_nb; i++) + { + uint8_t state = fsm->states_active[i]; + if (fsm->transition_table[state * fsm->events_nb + event]) + return 1; + } + return 0; +} + -- cgit v1.2.3