summaryrefslogtreecommitdiffhomepage
path: root/digital
diff options
context:
space:
mode:
Diffstat (limited to 'digital')
-rw-r--r--digital/io/src/elevator.fsm14
-rw-r--r--digital/io/src/elevator_cb.c12
-rw-r--r--digital/io/src/filterbridge.c1
-rw-r--r--digital/io/src/filterbridge.h3
-rw-r--r--digital/io/src/filterbridge_cb.c3
-rw-r--r--digital/io/src/main.c4
6 files changed, 15 insertions, 22 deletions
diff --git a/digital/io/src/elevator.fsm b/digital/io/src/elevator.fsm
index 8befad77..fd06c55a 100644
--- a/digital/io/src/elevator.fsm
+++ b/digital/io/src/elevator.fsm
@@ -13,8 +13,8 @@ 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_IDLE
- waiting for the fb is idle
+ 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 +42,8 @@ Events:
elevator is in position
new_puck
we received a new puck from FB (filter bridge, not facebook)
- fb_idle
- filterbridge idle
+ fb_empty
+ filterbridge empty
order_received
we received a new order
doors_opened
@@ -76,11 +76,11 @@ 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_IDLE
+ order_received -> WAIT_FB_EMPTY
elevator filling has been shut, get ready to drop pucks
-WAIT_FB_IDLE:
- fb_idle -> GO_TO_POS_Y
+WAIT_FB_EMPTY:
+ fb_empty -> GO_TO_POS_Y
execute order
WAIT_POS_ORDER:
diff --git a/digital/io/src/elevator_cb.c b/digital/io/src/elevator_cb.c
index caef50c2..e1799879 100644
--- a/digital/io/src/elevator_cb.c
+++ b/digital/io/src/elevator_cb.c
@@ -94,7 +94,7 @@ elevator__INIT__doors_opened (void)
/* FIXME: why this is here? */
elvt_is_ready = 0;
/* Close the door. */
- pwm_set (CLOSE_DOOR_PWM, TIME_DOORS_PWM);
+ pwm_set (CLOSE_DOOR_PWM, 2*TIME_DOORS_PWM);
return elevator_next (INIT, doors_opened);
}
@@ -145,7 +145,7 @@ elevator__WAIT_A_PUCK__new_puck (void)
/*
* WAIT_A_PUCK =order_received=>
- * => WAIT_FB_IDLE
+ * => WAIT_FB_EMPTY
* elevator filling has been shut, get ready to drop pucks
*/
fsm_branch_t
@@ -156,17 +156,17 @@ elevator__WAIT_A_PUCK__order_received (void)
}
/*
- * WAIT_FB_IDLE =fb_idle=>
+ * WAIT_FB_EMPTY =fb_empty=>
* => GO_TO_POS_Y
* execute order
*/
fsm_branch_t
-elevator__WAIT_FB_IDLE__fb_idle (void)
+elevator__WAIT_FB_EMPTY__fb_empty (void)
{
elvt_new_puck = 0;
asserv_move_elevator_absolute(posy[elvt_order - 1] - MAJ_POSY,
ASSERV_ELVT_SPEED_DEFAULT);
- return elevator_next (WAIT_FB_IDLE, fb_idle);
+ return elevator_next (WAIT_FB_EMPTY, fb_empty);
}
/*
@@ -215,7 +215,6 @@ elevator__WAIT_FOR_RELEASE_ORDER__order_received (void)
fsm_branch_t
elevator__LAND_ELEVATOR__in_position (void)
{
- elvt_order = 0;
pwm_set(OPEN_DOOR_PWM, 0);
return elevator_next (LAND_ELEVATOR, in_position);
}
@@ -243,6 +242,7 @@ elevator__OPEN_DOORS__doors_opened (void)
top_puck_inside_bot -= elvt_nb_puck;
elvt_nb_puck = 0;
pwm_set(0,0);
+ elvt_order = 0;
return elevator_next (OPEN_DOORS, doors_opened);
}
diff --git a/digital/io/src/filterbridge.c b/digital/io/src/filterbridge.c
index f61cd27d..64fcbbfc 100644
--- a/digital/io/src/filterbridge.c
+++ b/digital/io/src/filterbridge.c
@@ -25,7 +25,6 @@
#include "filterbridge.h"
uint8_t fb_nb_puck = 0;
-uint8_t fb_work_in_progress = 0;
/* +AutoDec */
/* -AutoDec */
diff --git a/digital/io/src/filterbridge.h b/digital/io/src/filterbridge.h
index 49f3819c..235d29ee 100644
--- a/digital/io/src/filterbridge.h
+++ b/digital/io/src/filterbridge.h
@@ -29,7 +29,4 @@
extern uint8_t fb_nb_puck;
-/* Is servo moving ? */
-extern uint8_t fb_work_in_progress;
-
#endif // filterbridge_h
diff --git a/digital/io/src/filterbridge_cb.c b/digital/io/src/filterbridge_cb.c
index f8db2e2c..9393a702 100644
--- a/digital/io/src/filterbridge_cb.c
+++ b/digital/io/src/filterbridge_cb.c
@@ -49,7 +49,6 @@ filterbridge__IDLE__start (void)
fsm_branch_t
filterbridge__WAIT_JACK_IN__jack_inserted_into_bot (void)
{
- fb_work_in_progress = 1;
servo_pos_move_to(SERVO_FINGER_ID, SERVO_FINGER_IDLE);
servo_pos_move_to(SERVO_DOOR_ID, SERVO_DOOR_CLOSE);
return filterbridge_next (WAIT_JACK_IN, jack_inserted_into_bot);
@@ -63,7 +62,6 @@ filterbridge__WAIT_JACK_IN__jack_inserted_into_bot (void)
fsm_branch_t
filterbridge__CLOSE_DOOR__state_timeout (void)
{
- fb_work_in_progress = 0;
return filterbridge_next (CLOSE_DOOR, state_timeout);
}
@@ -93,7 +91,6 @@ filterbridge__WAIT_A_PUCK__puck_on_pos2 (void)
fsm_branch_t
filterbridge__MARCEL_WAIT__state_timeout (void)
{
- fb_work_in_progress = 1;
servo_pos_move_to(SERVO_DOOR_ID, SERVO_DOOR_OPEN);
return filterbridge_next (MARCEL_WAIT, state_timeout);
}
diff --git a/digital/io/src/main.c b/digital/io/src/main.c
index 39df3357..d905a21f 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_work_in_progress)
+ if(!fb_nb_puck)
FSM_HANDLE_EVENT (&elevator_fsm,
- ELEVATOR_EVENT_fb_idle);
+ ELEVATOR_EVENT_fb_empty);
/* bot empty */
if(top_puck_inside_bot < 4)