From 2057a5df0036735cec4089c66eb36dc4f04245a1 Mon Sep 17 00:00:00 2001 From: Nicolas Schodet Date: Tue, 22 Apr 2008 21:56:26 +0200 Subject: * digital/io/src: - on host print handled events. --- digital/io/src/fsm.c | 7 +++++++ digital/io/src/fsm.h | 8 ++++++++ digital/io/src/fsm_templates/template_fsm.c | 19 +++++++++++++++++++ 3 files changed, 34 insertions(+) (limited to 'digital/io/src') diff --git a/digital/io/src/fsm.c b/digital/io/src/fsm.c index c19dd458..95288e1a 100644 --- a/digital/io/src/fsm.c +++ b/digital/io/src/fsm.c @@ -25,6 +25,10 @@ #include "common.h" #include "fsm.h" +#ifdef HOST +# include +#endif + /** Reset a FSM. */ void fsm_init (fsm_t *fsm) @@ -51,6 +55,9 @@ fsm_handle_event (fsm_t *fsm, u8 event) #ifdef HOST assert (((br >> 16) & 0xff) == fsm->state_current); assert (((br >> 8) & 0xff) == event); + printf ("%s %s =%s=> %s\n", fsm->name, + fsm->states_names[fsm->state_current], + fsm->events_names[event], fsm->states_names[br & 0xff]); fsm->state_current = br & 0xff; #else fsm->state_current = br; diff --git a/digital/io/src/fsm.h b/digital/io/src/fsm.h index 33c9a108..224e5801 100644 --- a/digital/io/src/fsm.h +++ b/digital/io/src/fsm.h @@ -74,6 +74,14 @@ struct fsm_t u8 state_init; /** Current active state. */ u8 state_current; +#ifdef HOST + /** FSM name. */ + const char *name; + /** States names. */ + const char * const *states_names; + /** Events names. */ + const char * const *events_names; +#endif }; typedef struct fsm_t fsm_t; diff --git a/digital/io/src/fsm_templates/template_fsm.c b/digital/io/src/fsm_templates/template_fsm.c index 87e52f33..dfbdd4b4 100644 --- a/digital/io/src/fsm_templates/template_fsm.c +++ b/digital/io/src/fsm_templates/template_fsm.c @@ -15,11 +15,30 @@ static const fsm_transition_t %(prefix)s_transition_table[%(PREFIX)s_STATE_NB][%(PREFIX)s_EVENT_NB] = { %(transition_table)s}; +#ifdef HOST + +/* %(name)s state names. */ +static const char * +%(prefix)s_states_names[] = { +%(states_names)s}; + +/* %(name)s event names. */ +static const char * +%(prefix)s_events_names[] = { +%(events_names)s}; + +#endif /* HOST */ + /* %(name)s context. */ fsm_t %(prefix)s_fsm = { &%(prefix)s_transition_table[0][0], %(PREFIX)s_EVENT_NB, %(PREFIX)s_STATE_%(initial)s, %(PREFIX)s_STATE_%(initial)s, +#ifdef HOST + "%(name)s", + %(prefix)s_states_names, + %(prefix)s_events_names, +#endif }; -- cgit v1.2.3