From 634a6d9189f71062793e0cea7678b019c81809b3 Mon Sep 17 00:00:00 2001 From: Jérémy Dufour Date: Thu, 21 May 2009 04:39:17 +0200 Subject: * digital/io/src: - add some missing comunication between top and other FSM, - make the top FSM give some order to other FSM, - add some timeout for states in top (and update timeout value), - update some comments in top. --- digital/io/src/main.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) (limited to 'digital/io/src/main.c') diff --git a/digital/io/src/main.c b/digital/io/src/main.c index 3003d3c4..2c11ba89 100644 --- a/digital/io/src/main.c +++ b/digital/io/src/main.c @@ -187,12 +187,16 @@ main_event_to_fsm (void) MOVE_EVENT_bot_move_succeed); FSM_HANDLE_EVENT (&init_fsm, INIT_EVENT_bot_move_succeed); + FSM_HANDLE_EVENT (&top_fsm, + TOP_EVENT_bot_move_succeed); } else if (move_status == failure) { /* Move failed. */ FSM_HANDLE_EVENT (&move_fsm, MOVE_EVENT_bot_move_failed); + FSM_HANDLE_EVENT (&top_fsm, + TOP_EVENT_bot_move_failed); } /* Check elevator status. */ @@ -212,16 +216,15 @@ main_event_to_fsm (void) FSM_HANDLE_EVENT (&cylinder_fsm, CYLINDER_EVENT_move_done); } - else if (elevator_status == failure) - { - /* TODO: */ - } /* FIXME: use general setting ack. */ /* send event if elevator received an order */ - if(elvt_order) + if (elvt_order) FSM_HANDLE_EVENT (&elevator_fsm, ELEVATOR_EVENT_order_received); + else + FSM_HANDLE_EVENT (&top_fsm, + TOP_EVENT_elevator_order_done); /* FIXME: use general setting ack or not? */ @@ -328,6 +331,11 @@ main_event_to_fsm (void) CYLINDER_EVENT_new_puck); } + if (top_puck_inside_bot >= 4) + { + FSM_HANDLE_EVENT (&top_fsm, + TOP_EVENT_bot_is_full_of_pucks); + } } /** -- cgit v1.2.3