From 710a5ffc18798f11b54d1a1df56d188b30cc8557 Mon Sep 17 00:00:00 2001 From: Nicolas Haller Date: Thu, 21 May 2009 08:59:09 +0200 Subject: * digital/io/src: - fix the order bypass on elevator --- digital/io/src/elevator.fsm | 12 +++--------- digital/io/src/elevator_cb.c | 21 +++++---------------- digital/io/src/filterbridge.fsm | 2 +- digital/io/src/main.c | 4 ++-- 4 files changed, 11 insertions(+), 28 deletions(-) (limited to 'digital/io') diff --git a/digital/io/src/elevator.fsm b/digital/io/src/elevator.fsm index fd06c55a..cc815fb6 100644 --- a/digital/io/src/elevator.fsm +++ b/digital/io/src/elevator.fsm @@ -13,8 +13,6 @@ States: go to a position to be ready to get a new puck WAIT_A_PUCK waiting for a new puck (hurry up filter bridge!) - WAIT_FB_EMPTY - waiting for the fb is empty WAIT_POS_ORDER waiting for position order (depending where we want to drop our column) GO_TO_POS_Y @@ -42,8 +40,8 @@ Events: elevator is in position new_puck we received a new puck from FB (filter bridge, not facebook) - fb_empty - filterbridge empty + order_bypass + Dont wait to have 4 pucks but we wait we don't have puck before bridge order_received we received a new order doors_opened @@ -76,13 +74,9 @@ WAIT_A_PUCK: new_puck: not_ok_for_other_pucks -> WAIT_POS_ORDER incrementing nb_puck var no more time to wait a new puck - order_received -> WAIT_FB_EMPTY + order_bypass -> GO_TO_POS_Y elevator filling has been shut, get ready to drop pucks -WAIT_FB_EMPTY: - fb_empty -> GO_TO_POS_Y - execute order - WAIT_POS_ORDER: order_received -> GO_TO_POS_Y go to position Y diff --git a/digital/io/src/elevator_cb.c b/digital/io/src/elevator_cb.c index e1799879..d47d286f 100644 --- a/digital/io/src/elevator_cb.c +++ b/digital/io/src/elevator_cb.c @@ -144,29 +144,18 @@ elevator__WAIT_A_PUCK__new_puck (void) } /* - * WAIT_A_PUCK =order_received=> - * => WAIT_FB_EMPTY - * elevator filling has been shut, get ready to drop pucks - */ -fsm_branch_t -elevator__WAIT_A_PUCK__order_received (void) -{ - elvt_is_ready = 0; - return elevator_next (WAIT_A_PUCK, order_received); -} - -/* - * WAIT_FB_EMPTY =fb_empty=> + * WAIT_A_PUCK =order_bypass=> * => GO_TO_POS_Y - * execute order + * elevator filling has been shut, get ready to drop pucks */ fsm_branch_t -elevator__WAIT_FB_EMPTY__fb_empty (void) +elevator__WAIT_A_PUCK__order_bypass (void) { elvt_new_puck = 0; + elvt_is_ready = 0; asserv_move_elevator_absolute(posy[elvt_order - 1] - MAJ_POSY, ASSERV_ELVT_SPEED_DEFAULT); - return elevator_next (WAIT_FB_EMPTY, fb_empty); + return elevator_next (WAIT_A_PUCK, order_bypass); } /* diff --git a/digital/io/src/filterbridge.fsm b/digital/io/src/filterbridge.fsm index 5613ffb5..728c5615 100644 --- a/digital/io/src/filterbridge.fsm +++ b/digital/io/src/filterbridge.fsm @@ -17,7 +17,7 @@ States: release puck to the lift and block a new puck on pos1 PUSH_PUCK push the puck to the lift - TEMPO_ELVETATOR_COMMUNICATION [timeout=225] + TEMPO_ELVETATOR_COMMUNICATION [timeout=450] a temporisation for the communication between the eleveator and the FB. Events: diff --git a/digital/io/src/main.c b/digital/io/src/main.c index d905a21f..0b2545bb 100644 --- a/digital/io/src/main.c +++ b/digital/io/src/main.c @@ -240,9 +240,9 @@ main_event_to_fsm (void) if(fb_nb_puck < 2) FSM_HANDLE_EVENT (&cylinder_fsm, CYLINDER_EVENT_bridge_ready); - if(!fb_nb_puck) + if(!fb_nb_puck && elvt_order) FSM_HANDLE_EVENT (&elevator_fsm, - ELEVATOR_EVENT_fb_empty); + ELEVATOR_EVENT_order_bypass); /* bot empty */ if(top_puck_inside_bot < 4) -- cgit v1.2.3