From 0b9ae480b928a24664bfd30edcd17d760db593d1 Mon Sep 17 00:00:00 2001 From: Nicolas Schodet Date: Sat, 25 Jun 2011 14:43:16 +0200 Subject: digital/io-hub/src/robospierre: disable pawn sensors when tower dropped --- digital/io-hub/src/robospierre/pawn_sensor.c | 6 ++++++ digital/io-hub/src/robospierre/pawn_sensor.h | 4 ++++ digital/io-hub/src/robospierre/top.c | 2 ++ 3 files changed, 12 insertions(+) (limited to 'digital/io-hub') 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); -- cgit v1.2.3