From 618872c7705a7f71afe77cd13b694a07660ebcb8 Mon Sep 17 00:00:00 2001 From: Nicolas Schodet Date: Sat, 4 Jun 2011 02:48:28 +0200 Subject: digital/io-hub: conditionaly enable bumpers --- digital/io-hub/src/robospierre/pawn_sensor.c | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) (limited to 'digital/io-hub/src/robospierre/pawn_sensor.c') diff --git a/digital/io-hub/src/robospierre/pawn_sensor.c b/digital/io-hub/src/robospierre/pawn_sensor.c index 5ca18759..cc9e6900 100644 --- a/digital/io-hub/src/robospierre/pawn_sensor.c +++ b/digital/io-hub/src/robospierre/pawn_sensor.c @@ -59,6 +59,8 @@ struct pawn_sensor_t /** Pawn sensor general context. */ struct pawn_sensor_general_t { + /** Activate bumpers. */ + uint8_t bumper_enabled; /** Last bumped element position. */ vect_t last_bumped; /** Bumper triggered, wait until the next one. */ @@ -191,18 +193,27 @@ pawn_sensor_update (void) #define BUMPER_FRONT_RIGHT _BV (7) #define BUMPER_BACK_RIGHT _BV (5) #define BUMPER_BACK_LEFT _BV (4) - if (pawn_sensor_global.bump_wait) - pawn_sensor_global.bump_wait--; - else + if (pawn_sensor_global.bumper_enabled) { - uint8_t bumpers = mimot_get_input (); - pawn_sensor_bumper (!(bumpers & BUMPER_FRONT_LEFT), 120, 265); - pawn_sensor_bumper (!(bumpers & BUMPER_FRONT_RIGHT), 120, -265); - pawn_sensor_bumper (!(bumpers & BUMPER_BACK_RIGHT), -120, -265); - pawn_sensor_bumper (!(bumpers & BUMPER_BACK_LEFT), -120, 265); + if (pawn_sensor_global.bump_wait) + pawn_sensor_global.bump_wait--; + else + { + uint8_t bumpers = mimot_get_input (); + pawn_sensor_bumper (!(bumpers & BUMPER_FRONT_LEFT), 120, 265); + pawn_sensor_bumper (!(bumpers & BUMPER_FRONT_RIGHT), 120, -265); + pawn_sensor_bumper (!(bumpers & BUMPER_BACK_RIGHT), -120, -265); + pawn_sensor_bumper (!(bumpers & BUMPER_BACK_LEFT), -120, 265); + } } } +void +pawn_sensor_bumper_enable (uint8_t enabled) +{ + pawn_sensor_global.bumper_enabled = enabled; +} + vect_t pawn_sensor_get_last_bumped (void) { -- cgit v1.2.3