summaryrefslogtreecommitdiffhomepage
path: root/digital/io/src/getsamples_cb.c
diff options
context:
space:
mode:
authorNicolas Schodet2008-05-02 07:14:41 +0200
committerNicolas Schodet2008-05-02 07:14:41 +0200
commit6980d8540e567a0955dc17d84c9d2e2166550a2b (patch)
treedffd83ab09781574c4c047443b8f3caeed15d84e /digital/io/src/getsamples_cb.c
parentab317d655a86a0051800e4122d051bfe9ab7de28 (diff)
* digital/io/src:
- added arm close timeout.
Diffstat (limited to 'digital/io/src/getsamples_cb.c')
-rw-r--r--digital/io/src/getsamples_cb.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/digital/io/src/getsamples_cb.c b/digital/io/src/getsamples_cb.c
index 3099452f..49eda8d1 100644
--- a/digital/io/src/getsamples_cb.c
+++ b/digital/io/src/getsamples_cb.c
@@ -42,6 +42,11 @@
#define GET_SAMPLES_MOVE_BACKWARD_DISTANCE 7
/**
+ * Arm time out.
+ */
+#define GET_SAMPLES_ARM_TIMEOUT (12 * 225 + 225 / 2)
+
+/**
* 'Private' get samples data used internaly by the FSM.
*/
extern struct getsamples_data_t getsamples_data_;
@@ -130,6 +135,19 @@ getsamples__OPEN_INPUT_HOLE__arm_move_succeed (void)
}
/*
+ * CLOSE_INPUT_HOLE =wait_finished=>
+ * => IDLE
+ * timed out, give up
+ */
+fsm_branch_t
+getsamples__CLOSE_INPUT_HOLE__wait_finished (void)
+{
+ /* Give up, tell the top FSM we have finished */
+ main_post_event_for_top_fsm = TOP_EVENT_get_samples_fsm_finished;
+ return getsamples_next (CLOSE_INPUT_HOLE, wait_finished);
+}
+
+/*
* CLOSE_INPUT_HOLE =arm_move_succeed=>
* => IDLE
* tell the top FSM we have finished
@@ -189,12 +207,15 @@ getsamples__IDLE__start (void)
* MOVE_AWAY_FROM_DISTRIBUTOR =bot_move_succeed=>
* => CLOSE_INPUT_HOLE
* close input hole
+ * setup a close timeout
*/
fsm_branch_t
getsamples__MOVE_AWAY_FROM_DISTRIBUTOR__bot_move_succeed (void)
{
/* Move the arm to close the input hole */
asserv_move_arm (BOT_ARM_MIN_TO_OPEN + BOT_ARM_THIRD_ROUND, BOT_ARM_SPEED);
+ /* Post an event for the top FSM to be waked up later */
+ main_getsamples_wait_cycle = GET_SAMPLES_ARM_TIMEOUT;
return getsamples_next (MOVE_AWAY_FROM_DISTRIBUTOR, bot_move_succeed);
}