From cf550d27be5f0a165241c2c11421701609331918 Mon Sep 17 00:00:00 2001 From: Nicolas Haller Date: Thu, 21 May 2009 01:52:19 +0200 Subject: * digital/io/src: - add uart commands to give some orders to cylinder and elevator FSM - elevator fix (elvt_order) - cylinder fix (cylinder_flush_order) --- digital/io/src/cylinder_cb.c | 1 + digital/io/src/elevator_cb.c | 1 + digital/io/src/main.c | 32 +++++++++++++++++++++++++++++++- 3 files changed, 33 insertions(+), 1 deletion(-) (limited to 'digital/io') diff --git a/digital/io/src/cylinder_cb.c b/digital/io/src/cylinder_cb.c index 1b4cc28b..f820f633 100644 --- a/digital/io/src/cylinder_cb.c +++ b/digital/io/src/cylinder_cb.c @@ -291,6 +291,7 @@ cylinder__WAIT_BRIDGE_READY_FLUSH__bridge_ready (void) fsm_branch_t cylinder__TURN_PLUS_3_FLUSH__move_done (void) { + cylinder_flush_order = 0; if(puck_on_cylinder) { --cylinder_nb_puck; diff --git a/digital/io/src/elevator_cb.c b/digital/io/src/elevator_cb.c index 0c32f922..471c46b9 100644 --- a/digital/io/src/elevator_cb.c +++ b/digital/io/src/elevator_cb.c @@ -256,6 +256,7 @@ fsm_branch_t elevator__WAIT_FOR_CLOSE_ORDER__order_received (void) { pwm_set(CLOSE_DOOR_PWM, TIME_DOORS_PWM); + elvt_order = 0; return elevator_next (WAIT_FOR_CLOSE_ORDER, order_received); } diff --git a/digital/io/src/main.c b/digital/io/src/main.c index 63dbfa03..0f31221a 100644 --- a/digital/io/src/main.c +++ b/digital/io/src/main.c @@ -253,7 +253,7 @@ main_event_to_fsm (void) FSM_HANDLE_EVENT (&cylinder_fsm, CYLINDER_EVENT_close_order); - /* cylinder__flush_order */ + /* cylinder_flush_order */ if(cylinder_flush_order) FSM_HANDLE_EVENT (&cylinder_fsm, CYLINDER_EVENT_flush_order); @@ -517,6 +517,36 @@ proto_callback (uint8_t cmd, uint8_t size, uint8_t *args) #define c(cmd, size) (cmd << 8 | size) switch (c (cmd, size)) { + /* cylinder orders */ + case c ('c', 1): + { + switch(args[0]) + { + case 'f': + cylinder_flush_order = 1; + break; + case 'C': + cylinder_close_order = 1; + break; + case 'c': + cylinder_close_order = 0; + break; + } + } + break; + + /* elevator (l like lift) */ + case c('l', 2): + { + switch(args[0]) + { + case 'o': + elvt_order = args[1]; + break; + } + } + break; + case c ('j', 0): fsm_handle_event (&filterbridge_fsm, FILTERBRIDGE_EVENT_jack_inserted_into_bot); -- cgit v1.2.3