summaryrefslogtreecommitdiff
path: root/digital/io-hub/src/apbirthday
diff options
context:
space:
mode:
authorNicolas Schodet2013-04-05 23:06:50 +0200
committerNicolas Schodet2013-04-05 23:14:52 +0200
commit143327bb7e9472691718572243c0f59bb0c02086 (patch)
treead30c950c1773997d8f82ab8e3ecb8161da1b788 /digital/io-hub/src/apbirthday
parentcdbfdcdb5a56ef8707e2fe396fd0e5cdc1731d17 (diff)
digital/io-hub/src/apbirthday: add jack filtering
Diffstat (limited to 'digital/io-hub/src/apbirthday')
-rw-r--r--digital/io-hub/src/apbirthday/Makefile2
-rw-r--r--digital/io-hub/src/apbirthday/robot.cc6
-rw-r--r--digital/io-hub/src/apbirthday/robot.hh3
3 files changed, 8 insertions, 3 deletions
diff --git a/digital/io-hub/src/apbirthday/Makefile b/digital/io-hub/src/apbirthday/Makefile
index 9b0438ce..18f10fe2 100644
--- a/digital/io-hub/src/apbirthday/Makefile
+++ b/digital/io-hub/src/apbirthday/Makefile
@@ -5,7 +5,7 @@ PROGS = apbirthday
apbirthday_SOURCES = main.cc robot.cc hardware.host.cc hardware.stm32.cc \
simu_report.host.cc zb_avrisp.stm32.cc \
i2c_queue.cc asserv.cc mimot.cc beacon.cc \
- pressure.cc chrono.host.cc chrono.stm32.cc \
+ pressure.cc chrono.host.cc chrono.stm32.cc debounce.cc \
radar.cc radar_2013.cc obstacles.cc path.cc \
outputs.cc \
top.cc init.cc move.cc candles.cc \
diff --git a/digital/io-hub/src/apbirthday/robot.cc b/digital/io-hub/src/apbirthday/robot.cc
index ced1b0c8..bc0c3552 100644
--- a/digital/io-hub/src/apbirthday/robot.cc
+++ b/digital/io-hub/src/apbirthday/robot.cc
@@ -40,6 +40,7 @@ Robot::Robot ()
usb_proto (*this, hardware.usb),
chrono (90000 - 1000),
pressure (hardware.adc_pressure, hardware.pneum_open, mimot.motor0),
+ jack (hardware.raw_jack, 50),
usdist_control_ (2),
usdist0_ (usdist_control_, hardware.adc_dist0, hardware.dist0_sync, 100, 700, 650),
usdist1_ (usdist_control_, hardware.adc_dist1, hardware.dist1_sync, 100, 700, 650),
@@ -125,6 +126,7 @@ Robot::main_loop ()
}
obstacles.update ();
pressure.update ();
+ jack.update ();
outputs_set_.update ();
// Handle communications.
bool sync = main_i2c_queue_.sync ();
@@ -163,8 +165,8 @@ Robot::fsm_gen_event ()
fsm_handle_and_return (robot_move_success);
else if (robot_move_status == Motor::FAILURE)
fsm_handle_and_return (robot_move_failure);
- // Jack. TODO: bounce filter.
- if (!hardware.raw_jack.get ())
+ // Jack.
+ if (!jack.get ())
fsm_handle_and_return (jack_inserted);
else
fsm_handle_and_return (jack_removed);
diff --git a/digital/io-hub/src/apbirthday/robot.hh b/digital/io-hub/src/apbirthday/robot.hh
index b9a6d8a6..67356694 100644
--- a/digital/io-hub/src/apbirthday/robot.hh
+++ b/digital/io-hub/src/apbirthday/robot.hh
@@ -29,6 +29,7 @@
#include "fsm_queue.hh"
#include "chrono.hh"
#include "pressure.hh"
+#include "debounce.hh"
#include "outputs.hh"
#include "radar_2013.hh"
#include "obstacles.hh"
@@ -76,6 +77,8 @@ class Robot : public ucoo::Proto::Handler
Chrono chrono;
/// Public access to pressure handling.
Pressure pressure;
+ /// Jack debouncing.
+ Debounce jack;
private:
/// US distance sensors controller.
ucoo::UsDistControl usdist_control_;