From 63720f726cda3fad93c5766850ba622a3cee0be1 Mon Sep 17 00:00:00 2001 From: Nicolas Schodet Date: Sat, 15 May 2010 07:39:43 +0200 Subject: digital/io/src: add timer timeout --- digital/io/src/ai_loader_cb.c | 48 +++++++++++++++++++++++++++++++++++++++++++ digital/io/src/loader.fsm | 16 +++++++++++---- 2 files changed, 60 insertions(+), 4 deletions(-) (limited to 'digital') diff --git a/digital/io/src/ai_loader_cb.c b/digital/io/src/ai_loader_cb.c index 0c07ee73..06e9fa17 100644 --- a/digital/io/src/ai_loader_cb.c +++ b/digital/io/src/ai_loader_cb.c @@ -337,6 +337,18 @@ ai__LOADER_ERROR_DOWNING__elevator_failed (void) return ai_next (LOADER_ERROR_DOWNING, elevator_failed); } +/* + * LOADER_ERROR_DOWNING =state_timeout=> + * => LOADER_ERROR + * post loader_errored event + */ +fsm_branch_t +ai__LOADER_ERROR_DOWNING__state_timeout (void) +{ + main_post_event (AI_EVENT_loader_errored); + return ai_next (LOADER_ERROR_DOWNING, state_timeout); +} + /* * LOADER_ERROR_DOWNING_OPEN =clamp_succeed=> * => LOADER_DOWN @@ -361,6 +373,18 @@ ai__LOADER_ERROR_DOWNING_OPEN__clamp_failed (void) return ai_next (LOADER_ERROR_DOWNING_OPEN, clamp_failed); } +/* + * LOADER_ERROR_DOWNING_OPEN =state_timeout=> + * => LOADER_ERROR + * post loader_errored event + */ +fsm_branch_t +ai__LOADER_ERROR_DOWNING_OPEN__state_timeout (void) +{ + main_post_event (AI_EVENT_loader_errored); + return ai_next (LOADER_ERROR_DOWNING_OPEN, state_timeout); +} + /* * LOADER_ERROR_UPING =elevator_succeed=> * => LOADER_ERROR_UPING_OPEN @@ -386,6 +410,18 @@ ai__LOADER_ERROR_UPING__elevator_failed (void) return ai_next (LOADER_ERROR_UPING, elevator_failed); } +/* + * LOADER_ERROR_UPING =state_timeout=> + * => LOADER_ERROR + * post loader_errored event + */ +fsm_branch_t +ai__LOADER_ERROR_UPING__state_timeout (void) +{ + main_post_event (AI_EVENT_loader_errored); + return ai_next (LOADER_ERROR_UPING, state_timeout); +} + /* * LOADER_ERROR_UPING_OPEN =clamp_succeed=> * => LOADER_UP @@ -410,6 +446,18 @@ ai__LOADER_ERROR_UPING_OPEN__clamp_failed (void) return ai_next (LOADER_ERROR_UPING_OPEN, clamp_failed); } +/* + * LOADER_ERROR_UPING_OPEN =state_timeout=> + * => LOADER_ERROR + * post loader_errored event + */ +fsm_branch_t +ai__LOADER_ERROR_UPING_OPEN__state_timeout (void) +{ + main_post_event (AI_EVENT_loader_errored); + return ai_next (LOADER_ERROR_UPING_OPEN, state_timeout); +} + /* * LOADER_LOAD_CLOSING =clamp_succeed=> * full => LOADER_LOAD_UPING diff --git a/digital/io/src/loader.fsm b/digital/io/src/loader.fsm index 6a97681b..83972230 100644 --- a/digital/io/src/loader.fsm +++ b/digital/io/src/loader.fsm @@ -33,13 +33,13 @@ States: moving to the down position LOADER_ERROR error while moving up, stop in an unknown state - LOADER_ERROR_DOWNING + LOADER_ERROR_DOWNING [timeout=225] error recovery moving down - LOADER_ERROR_DOWNING_OPEN + LOADER_ERROR_DOWNING_OPEN [timeout=225] error recovery moving down, open clamp - LOADER_ERROR_UPING + LOADER_ERROR_UPING [timeout=225] error recovery moving up - LOADER_ERROR_UPING_OPEN + LOADER_ERROR_UPING_OPEN [timeout=225] error recovery moving up, open clamp LOADER_LOAD_CLOSING close clamp @@ -142,24 +142,32 @@ LOADER_ERROR_DOWNING: open clamp elevator_failed -> LOADER_ERROR post loader_errored event + state_timeout -> LOADER_ERROR + post loader_errored event LOADER_ERROR_DOWNING_OPEN: clamp_succeed -> LOADER_DOWN post loader_downed event clamp_failed -> LOADER_ERROR post loader_errored event + state_timeout -> LOADER_ERROR + post loader_errored event LOADER_ERROR_UPING: elevator_succeed -> LOADER_ERROR_UPING_OPEN open clamp elevator_failed -> LOADER_ERROR post loader_errored event + state_timeout -> LOADER_ERROR + post loader_errored event LOADER_ERROR_UPING_OPEN: clamp_succeed -> LOADER_UP post loader_uped event clamp_failed -> LOADER_ERROR post loader_errored event + state_timeout -> LOADER_ERROR + post loader_errored event LOADER_DOWNING: elevator_succeed -> LOADER_DOWN -- cgit v1.2.3