summaryrefslogtreecommitdiff
path: root/digital/io-hub/src/robospierre
diff options
context:
space:
mode:
authorNicolas Schodet2011-06-25 14:43:16 +0200
committerNicolas Schodet2011-06-25 14:45:32 +0200
commit0b9ae480b928a24664bfd30edcd17d760db593d1 (patch)
tree0bec68ff02150810700dd388d55020395cdf9475 /digital/io-hub/src/robospierre
parente1028794261fd6b829656c15b7bf25f4f09eaf0a (diff)
digital/io-hub/src/robospierre: disable pawn sensors when tower droppedidf-2011-1
Diffstat (limited to 'digital/io-hub/src/robospierre')
-rw-r--r--digital/io-hub/src/robospierre/pawn_sensor.c6
-rw-r--r--digital/io-hub/src/robospierre/pawn_sensor.h4
-rw-r--r--digital/io-hub/src/robospierre/top.c2
3 files changed, 12 insertions, 0 deletions
diff --git a/digital/io-hub/src/robospierre/pawn_sensor.c b/digital/io-hub/src/robospierre/pawn_sensor.c
index cc9e6900..faeee879 100644
--- a/digital/io-hub/src/robospierre/pawn_sensor.c
+++ b/digital/io-hub/src/robospierre/pawn_sensor.c
@@ -214,6 +214,12 @@ pawn_sensor_bumper_enable (uint8_t enabled)
pawn_sensor_global.bumper_enabled = enabled;
}
+void
+pawn_sensor_bumper_wait (uint16_t wait)
+{
+ pawn_sensor_global.bump_wait = wait;
+}
+
vect_t
pawn_sensor_get_last_bumped (void)
{
diff --git a/digital/io-hub/src/robospierre/pawn_sensor.h b/digital/io-hub/src/robospierre/pawn_sensor.h
index 8d6d2651..9c76f77a 100644
--- a/digital/io-hub/src/robospierre/pawn_sensor.h
+++ b/digital/io-hub/src/robospierre/pawn_sensor.h
@@ -38,6 +38,10 @@ pawn_sensor_update (void);
void
pawn_sensor_bumper_enable (uint8_t enabled);
+/** Temporarily disable bumpers. */
+void
+pawn_sensor_bumper_wait (uint16_t wait);
+
/** Return last bumped pawn. */
vect_t
pawn_sensor_get_last_bumped (void);
diff --git a/digital/io-hub/src/robospierre/top.c b/digital/io-hub/src/robospierre/top.c
index 7732fb50..3d39f60a 100644
--- a/digital/io-hub/src/robospierre/top.c
+++ b/digital/io-hub/src/robospierre/top.c
@@ -434,6 +434,7 @@ FSM_TRANS (TOP_DROP_CLEARING, robot_move_success,
element, TOP_GOING_TO_ELEMENT)
{
clamp_drop_clear ();
+ pawn_sensor_bumper_wait (3 * 250);
switch (top_decision ())
{
default: return FSM_NEXT (TOP_DROP_CLEARING, robot_move_success, drop);
@@ -446,6 +447,7 @@ FSM_TRANS (TOP_DROP_CLEARING, robot_move_failure,
element, TOP_GOING_TO_ELEMENT)
{
clamp_drop_clear ();
+ pawn_sensor_bumper_wait (3 * 250);
switch (top_decision ())
{
default: return FSM_NEXT (TOP_DROP_CLEARING, robot_move_failure, drop);