summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Schodet2011-06-03 13:00:45 +0200
committerNicolas Schodet2011-06-03 13:00:45 +0200
commitfe415bb389823f1557ef05324bbc966bd42de0a4 (patch)
treebce979a0897859a28149d9ddff7a7ed9f48e2874
parentc8cfe9c4b5498a6d993f224935f38869e782352b (diff)
digital/io-hub: do not signal bumped element
-rw-r--r--digital/io-hub/src/robospierre/top.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/digital/io-hub/src/robospierre/top.c b/digital/io-hub/src/robospierre/top.c
index 09de28f6..595371f7 100644
--- a/digital/io-hub/src/robospierre/top.c
+++ b/digital/io-hub/src/robospierre/top.c
@@ -261,7 +261,8 @@ FSM_TRANS (TOP_GOING_TO_DROP, move_failure,
drop, TOP_GOING_TO_DROP,
element, TOP_GOING_TO_ELEMENT)
{
- element_failure (ctx.target_element_id);
+ if (ctx.target_element_id != 0xff)
+ element_failure (ctx.target_element_id);
if (clamp_working ())
return FSM_NEXT (TOP_GOING_TO_DROP, move_failure, clamp_working);
switch (top_decision ())
@@ -282,7 +283,8 @@ FSM_TRANS (TOP_GOING_TO_ELEMENT, move_success,
drop, TOP_GOING_TO_DROP,
element, TOP_GOING_TO_ELEMENT)
{
- element_failure (ctx.target_element_id); /* Do not take this one again. */
+ if (ctx.target_element_id != 0xff)
+ element_failure (ctx.target_element_id); /* Do not take this one again. */
if (clamp_working ())
return FSM_NEXT (TOP_GOING_TO_ELEMENT, move_success, clamp_working);
switch (top_decision ())
@@ -297,7 +299,8 @@ FSM_TRANS (TOP_GOING_TO_ELEMENT, move_failure,
drop, TOP_GOING_TO_DROP,
element, TOP_GOING_TO_ELEMENT)
{
- element_failure (ctx.target_element_id);
+ if (ctx.target_element_id != 0xff)
+ element_failure (ctx.target_element_id);
if (clamp_working ())
return FSM_NEXT (TOP_GOING_TO_ELEMENT, move_failure, clamp_working);
switch (top_decision ())
@@ -318,6 +321,7 @@ FSM_TRANS (TOP_GOING_TO_ELEMENT, top_bumper, TOP_GOING_TO_ELEMENT)
if (!ctx.broken)
logistic_global.prepare = top_prepare_level ();
move_stop ();
+ ctx.target_element_id = 0xff;
top_go_this_element (pawn_sensor_get_last_bumped (), BOT_ELEMENT_RADIUS - 50);
return FSM_NEXT (TOP_GOING_TO_ELEMENT, top_bumper);
}
@@ -392,7 +396,8 @@ FSM_TRANS (TOP_WAITING_READY, clamp_blocked, TOP_UNBLOCKING_SHAKE_WAIT)
FSM_TRANS (TOP_DROP_DROPPING, clamp_drop_waiting, TOP_DROP_CLEARING)
{
- element_down (ctx.target_element_id, ELEMENT_TOWER);
+ if (ctx.target_element_id != 0xff)
+ element_down (ctx.target_element_id, ELEMENT_TOWER);
asserv_move_linearly (logistic_global.collect_direction
== DIRECTION_FORWARD ? 150 : -150);
return FSM_NEXT (TOP_DROP_DROPPING, clamp_drop_waiting);