summaryrefslogtreecommitdiffhomepage
path: root/digital/io/src/filterbridge_cb.c
diff options
context:
space:
mode:
authorNicolas Haller2009-04-17 00:03:02 +0200
committerNicolas Haller2009-04-17 00:03:02 +0200
commit5f792eef110b9f4d9c357266ae3084ee19b5d8b0 (patch)
tree0fc2c643dfe1d0128371b0afbef618efc0461282 /digital/io/src/filterbridge_cb.c
parent6ce7551837b1084b89be2fc4fce00de359804c6c (diff)
* digital/io/src
- modification of elevator and filterbridge fsm to use branches instead of "events races"
Diffstat (limited to 'digital/io/src/filterbridge_cb.c')
-rw-r--r--digital/io/src/filterbridge_cb.c69
1 files changed, 21 insertions, 48 deletions
diff --git a/digital/io/src/filterbridge_cb.c b/digital/io/src/filterbridge_cb.c
index a34b9a6f..0864fa8d 100644
--- a/digital/io/src/filterbridge_cb.c
+++ b/digital/io/src/filterbridge_cb.c
@@ -28,7 +28,7 @@
/*
* CLOSE_FIRST_DOOR =first_door_closed=>
- * => WAIT_RGB_IDENT
+ * => WAIT_RGB_PROBE
* get puck color
*/
fsm_branch_t
@@ -38,6 +38,20 @@ filterbridge__CLOSE_FIRST_DOOR__first_door_closed (void)
}
/*
+ * WAIT_RGB_PROBE =color_probed=>
+ * bad_color => EJECT_PUCK
+ * eject bad PUCK
+ * good_color => OPEN_SECOND_DOOR
+ * put puck to the lift
+ */
+fsm_branch_t
+filterbridge__WAIT_RGB_PROBE__color_probed (void)
+{
+ return filterbridge_next_branch (WAIT_RGB_PROBE, color_probed, bad_color);
+ return filterbridge_next_branch (WAIT_RGB_PROBE, color_probed, good_color);
+}
+
+/*
* WAIT_A_PUCK =puck_on_pos2=>
* => CLOSE_FIRST_DOOR
* close the first door after a puck is ready for filtering
@@ -60,50 +74,6 @@ filterbridge__CLOSE_SECOND_DOOR__second_door_closed (void)
}
/*
- * WAIT_RGB_IDENT =good_color=>
- * => OPEN_SECOND_DOOR
- * put puck to the lift
- */
-fsm_branch_t
-filterbridge__WAIT_RGB_IDENT__good_color (void)
-{
- return filterbridge_next (WAIT_RGB_IDENT, good_color);
-}
-
-/*
- * WAIT_RGB_IDENT =bad_color=>
- * => EJECT_PUCK
- * eject bad PUCK
- */
-fsm_branch_t
-filterbridge__WAIT_RGB_IDENT__bad_color (void)
-{
- return filterbridge_next (WAIT_RGB_IDENT, bad_color);
-}
-
-/*
- * BLAH =no_puck_on_pos2=>
- * => OPEN_FIRST_DOOR
- * make bridge ready to test a new puck
- */
-fsm_branch_t
-filterbridge__BLAH__no_puck_on_pos2 (void)
-{
- return filterbridge_next (BLAH, no_puck_on_pos2);
-}
-
-/*
- * BLAH =puck_on_pos2=>
- * => EJECT_PUCK
- * re-eject this sticky puck, grml!
- */
-fsm_branch_t
-filterbridge__BLAH__puck_on_pos2 (void)
-{
- return filterbridge_next (BLAH, puck_on_pos2);
-}
-
-/*
* IDLE =lift_ready=>
* => WAIT_A_PUCK
* the lift is ready to get pucks, we can begin testing procedure
@@ -116,13 +86,16 @@ filterbridge__IDLE__lift_ready (void)
/*
* RETURN_NORMAL_POS =bridge_in_position=>
- * => BLAH
- * ready for a new puck test (unless bad puck is here yet)
+ * no_puck_anymore => OPEN_FIRST_DOOR
+ * make bridge ready to test a new puck
+ * puck_still_here => EJECT_PUCK
+ * re-eject this sticky puck, grml!
*/
fsm_branch_t
filterbridge__RETURN_NORMAL_POS__bridge_in_position (void)
{
- return filterbridge_next (RETURN_NORMAL_POS, bridge_in_position);
+ return filterbridge_next_branch (RETURN_NORMAL_POS, bridge_in_position, no_puck_anymore);
+ return filterbridge_next_branch (RETURN_NORMAL_POS, bridge_in_position, puck_still_here);
}
/*