summaryrefslogtreecommitdiff
path: root/digital/io/src/main.c
diff options
context:
space:
mode:
authorNicolas Haller2009-05-22 13:33:28 +0200
committerNicolas Haller2009-05-22 13:33:28 +0200
commit4ae03c6e14b75e62b9a8b446e6d7ae64c7d0b969 (patch)
treebb6d1cf088487a09a4168317aaefd2dbd9c421e7 /digital/io/src/main.c
parentd6647a90f4bfe59968cf0f94443335f2673a32f3 (diff)
* digital/io/src:
- split elevator order into 3 functions
Diffstat (limited to 'digital/io/src/main.c')
-rw-r--r--digital/io/src/main.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/digital/io/src/main.c b/digital/io/src/main.c
index dbe5eddd..ba47aac5 100644
--- a/digital/io/src/main.c
+++ b/digital/io/src/main.c
@@ -226,17 +226,20 @@ main_event_to_fsm (void)
CYLINDER_EVENT_of_no_puck);
- /* FIXME: use general setting ack. */
/* send event if elevator received an order */
- if (elvt_order)
+ if (elvt_order_in_progress)
FSM_HANDLE_EVENT (&elevator_fsm,
ELEVATOR_EVENT_order_received);
else
FSM_HANDLE_EVENT (&top_fsm,
TOP_EVENT_elevator_order_done);
+ /* relou case to avoid a loop */
+ if(elvt_order_in_progress && !elvt_new_puck)
+ FSM_HANDLE_EVENT (&elevator_fsm,
+ ELEVATOR_EVENT_order_bypass);
+
- /* FIXME: use general setting ack or not? */
/* elevator new puck (set by filterbridge) */
if(elvt_new_puck)
FSM_HANDLE_EVENT (&elevator_fsm,
@@ -249,10 +252,6 @@ main_event_to_fsm (void)
if(fb_nb_puck < 2)
FSM_HANDLE_EVENT (&cylinder_fsm,
CYLINDER_EVENT_bridge_ready);
- if(elvt_order)
- FSM_HANDLE_EVENT (&elevator_fsm,
- ELEVATOR_EVENT_order_bypass);
-
if(cylinder_distributor_fucked)
FSM_HANDLE_EVENT (&cylinder_fsm,
CYLINDER_EVENT_distrib_fucked);
@@ -566,7 +565,8 @@ proto_callback (uint8_t cmd, uint8_t size, uint8_t *args)
switch(args[0])
{
case 'o':
- elvt_order = args[1];
+ elvt_order_in_progress = 1;
+ elvt_position_required = args[1];
break;
}
}