summaryrefslogtreecommitdiffhomepage
path: root/digital/io/src/fsm.h
diff options
context:
space:
mode:
Diffstat (limited to 'digital/io/src/fsm.h')
-rw-r--r--digital/io/src/fsm.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/digital/io/src/fsm.h b/digital/io/src/fsm.h
index 8700cadc..cf5ce15e 100644
--- a/digital/io/src/fsm.h
+++ b/digital/io/src/fsm.h
@@ -74,6 +74,12 @@ struct fsm_t
u8 state_init;
/** Current active state. */
u8 state_current;
+ /** State timeout table. */
+ const u16 *state_timeout_table;
+ /** Current state timeout if not 0xffff. */
+ u16 state_timeout;
+ /** Event to generate on state timeout. */
+ u8 state_timeout_event;
#ifdef HOST
/** FSM name. */
const char *name;
@@ -89,6 +95,10 @@ typedef struct fsm_t fsm_t;
void
fsm_init (fsm_t *fsm);
+/** Handle state timeout, return 1 if a event was handled. */
+uint8_t
+fsm_handle_timeout (fsm_t *fsm);
+
/** Handle an event on the given FSM.
* @return
* - 0 if this FSM does not handle this event ;