From 0ee500d39cf65c776b02d26bd44d7c0e8fcfb8b7 Mon Sep 17 00:00:00 2001 From: Nicolas Schodet Date: Thu, 2 Jun 2011 13:38:25 +0200 Subject: digital/io-hub: handle tower detection --- digital/io-hub/src/robospierre/logistic.c | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) (limited to 'digital/io-hub/src/robospierre/logistic.c') diff --git a/digital/io-hub/src/robospierre/logistic.c b/digital/io-hub/src/robospierre/logistic.c index f9b13427..629ee0c1 100644 --- a/digital/io-hub/src/robospierre/logistic.c +++ b/digital/io-hub/src/robospierre/logistic.c @@ -574,12 +574,22 @@ logistic_dump (void) 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; + if (CLAMP_IS_SLOT_IN_FRONT_BAY (slot)) + { + if (ctx.slots[CLAMP_SLOT_FRONT_MIDDLE]) + return 0; + uint8_t middle_type = ctx.slots[CLAMP_SLOT_FRONT_BOTTOM]; + if (ELEMENT_IS_HEAD (middle_type) || middle_type == ELEMENT_TOWER) + return 0; + } + else if (CLAMP_IS_SLOT_IN_BACK_BAY (slot)) + { + if (ctx.slots[CLAMP_SLOT_BACK_MIDDLE]) + return 0; + uint8_t middle_type = ctx.slots[CLAMP_SLOT_BACK_BOTTOM]; + if (ELEMENT_IS_HEAD (middle_type) || middle_type == ELEMENT_TOWER) + return 0; + } return 1; } -- cgit v1.2.3