summaryrefslogtreecommitdiff
path: root/digital/io-hub/src/robospierre/logistic.c
diff options
context:
space:
mode:
authorNicolas Schodet2011-05-22 20:42:57 +0200
committerNicolas Schodet2011-05-22 20:53:13 +0200
commit4232368383074bfa9fcb98d96b6a20f0a4ef2736 (patch)
tree9db180ecaeeda6033ac9d8285bc02f56d9516cf4 /digital/io-hub/src/robospierre/logistic.c
parent27700ff4b67d9e8351da875c6f4d58a8f1311e5d (diff)
digital/io-hub: handle clamp locking
When the clamp is in a bay with an element at the middle level, it can no longer move.
Diffstat (limited to 'digital/io-hub/src/robospierre/logistic.c')
-rw-r--r--digital/io-hub/src/robospierre/logistic.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/digital/io-hub/src/robospierre/logistic.c b/digital/io-hub/src/robospierre/logistic.c
index 8c2a759f..0dbbaa6c 100644
--- a/digital/io-hub/src/robospierre/logistic.c
+++ b/digital/io-hub/src/robospierre/logistic.c
@@ -221,3 +221,21 @@ logistic_drop (uint8_t direction)
logistic_decision ();
}
+static uint8_t
+logistic_slot_clear (uint8_t slot)
+{
+ if (CLAMP_IS_SLOT_IN_FRONT_BAY (slot)
+ && ctx.slots[CLAMP_SLOT_FRONT_MIDDLE])
+ return 0;
+ if (CLAMP_IS_SLOT_IN_BACK_BAY (slot)
+ && ctx.slots[CLAMP_SLOT_BACK_MIDDLE])
+ return 0;
+ return 1;
+}
+
+uint8_t
+logistic_path_clear (uint8_t slot1, uint8_t slot2)
+{
+ return logistic_slot_clear (slot1) && logistic_slot_clear (slot2);
+}
+