summaryrefslogtreecommitdiff
path: root/digital
diff options
context:
space:
mode:
authorNicolas Haller2009-05-19 01:32:32 +0200
committerNicolas Haller2009-05-19 01:32:32 +0200
commit690bde47d716476fde982087dadfe794f7fdb14e (patch)
tree6698f85ac1d88c8b0c3f4db810420d2e7a1a8484 /digital
parent23f4603cf160b07376f10b705a84d1cb823e2c46 (diff)
* digital/io/src:
- elevator fsm fixes
Diffstat (limited to 'digital')
-rw-r--r--digital/io/src/elevator.fsm11
-rw-r--r--digital/io/src/elevator_cb.c12
-rw-r--r--digital/io/src/main.c3
3 files changed, 12 insertions, 14 deletions
diff --git a/digital/io/src/elevator.fsm b/digital/io/src/elevator.fsm
index c57bedb8..0e4b3ab5 100644
--- a/digital/io/src/elevator.fsm
+++ b/digital/io/src/elevator.fsm
@@ -8,7 +8,7 @@ States:
WAIT_JACK_IN
waiting for the jack
INIT
- init the elevator
+ init the elevator position and open door
GO_TO_POS_X
go to a position to be ready to get a new puck
WAIT_A_PUCK
@@ -30,13 +30,12 @@ States:
CLOSE_DOORS
closing the elevator's doors
+
Events:
start
io power on!
jack_inserted_into_bot
jack into the bot
- init_done
- init done
in_position
elevator is in position
new_puck
@@ -57,11 +56,11 @@ IDLE:
WAIT_JACK_IN:
jack_inserted_into_bot -> INIT
- make initializations
+ make initializations (elevator zero and open doors)
INIT:
- init_done -> GO_TO_POS_X
- match begin, we're going to be ready to get a new puck
+ doors_opened -> GO_TO_POS_X
+ make initializations (close doors)
GO_TO_POS_X:
in_position -> WAIT_A_PUCK
diff --git a/digital/io/src/elevator_cb.c b/digital/io/src/elevator_cb.c
index c1d7b926..5ef5be28 100644
--- a/digital/io/src/elevator_cb.c
+++ b/digital/io/src/elevator_cb.c
@@ -61,27 +61,29 @@ elevator__IDLE__start (void)
/*
* WAIT_JACK_IN =jack_inserted_into_bot=>
* => INIT
- * make initializations
+ * make initializations (elevator zero and open doors)
*/
fsm_branch_t
elevator__WAIT_JACK_IN__jack_inserted_into_bot (void)
{
+ pwm_set(OPEN_DOOR_PWM, TIME_DOORS_PWM);
asserv_elevator_zero_position();
return elevator_next (WAIT_JACK_IN, jack_inserted_into_bot);
}
/*
- * INIT =init_done=>
+ * INIT =doors_opened=>
* => GO_TO_POS_X
- * match begin, we're going to be ready to get a new puck
+ * make initializations (close doors)
*/
fsm_branch_t
-elevator__INIT__init_done (void)
+elevator__INIT__doors_opened (void)
{
elevator_is_ready = 0;
+ pwm_set(CLOSE_DOOR_PWM, TIME_DOORS_PWM);
asserv_move_elevator_absolute(posx[nb_puck_in_elvt],
ASSERV_ELVT_SPEED_DEFAULT);
- return elevator_next (INIT, init_done);
+ return elevator_next (INIT, doors_opened);
}
/*
diff --git a/digital/io/src/main.c b/digital/io/src/main.c
index 9219c633..2e2c4f60 100644
--- a/digital/io/src/main.c
+++ b/digital/io/src/main.c
@@ -204,9 +204,6 @@ main_event_to_fsm (void)
/* Check elevator status. */
if (elevator_status == success)
{
- /* FIXME: only have one event here. */
- FSM_HANDLE_EVENT (&elevator_fsm,
- ELEVATOR_EVENT_init_done);
FSM_HANDLE_EVENT (&elevator_fsm,
ELEVATOR_EVENT_in_position);
}