From 5af3a10f62da1b4d918583b347255d2977cc6c71 Mon Sep 17 00:00:00 2001 From: Nicolas Schodet Date: Sun, 28 Apr 2013 10:38:34 +0200 Subject: digital/ucoolib/ucoolib/dev/usdist: add resolution parameter --- digital/ucoolib/ucoolib/dev/usdist/usdist.cc | 10 +++++++--- digital/ucoolib/ucoolib/dev/usdist/usdist.hh | 5 +++-- 2 files changed, 10 insertions(+), 5 deletions(-) (limited to 'digital/ucoolib') diff --git a/digital/ucoolib/ucoolib/dev/usdist/usdist.cc b/digital/ucoolib/ucoolib/dev/usdist/usdist.cc index 759e68cb..7f3a888d 100644 --- a/digital/ucoolib/ucoolib/dev/usdist/usdist.cc +++ b/digital/ucoolib/ucoolib/dev/usdist/usdist.cc @@ -27,13 +27,17 @@ namespace ucoo { UsDist::UsDist (UsDistControl &ctrl, Adc &adc, Io &io, - int distance_min, int distance_max, int distance_too_far) + int distance_min, int distance_max, int distance_too_far, + int resolution) : adc_ (adc), io_ (io), next_ (0), distance_min_ (distance_min), distance_max_ (distance_max), - distance_too_far_ (distance_too_far), distance_ (-1) + distance_too_far_ (distance_too_far), resolution_ (resolution), + distance_ (-1) { next_ = ctrl.sensors_; ctrl.sensors_ = this; + if (resolution_ == -1) + resolution_ = adc_.get_resolution (); } void @@ -54,7 +58,7 @@ UsDist::read () int v = adc_.read (); // The sensor returns a value between 4 and 20 mA proportional to the // distance between calibrated values. Ignore faulty sensors. - const int max = adc_.get_resolution (); + const int max = resolution_; const int min = max / 5; if (v <= min / 4) distance_ = -1; diff --git a/digital/ucoolib/ucoolib/dev/usdist/usdist.hh b/digital/ucoolib/ucoolib/dev/usdist/usdist.hh index 6f86d24a..c23f53e2 100644 --- a/digital/ucoolib/ucoolib/dev/usdist/usdist.hh +++ b/digital/ucoolib/ucoolib/dev/usdist/usdist.hh @@ -36,7 +36,8 @@ class UsDist public: /// Constructor. UsDist (UsDistControl &ctrl, Adc &adc, Io &io, - int distance_min, int distance_max, int distance_too_far = -1); + int distance_min, int distance_max, int distance_too_far = -1, + int resolution = -1); /// Enable measure. void enable (); /// Disable measure. @@ -49,7 +50,7 @@ class UsDist Adc &adc_; Io &io_; UsDist *next_; - int distance_min_, distance_max_, distance_too_far_; + int distance_min_, distance_max_, distance_too_far_, resolution_; int distance_; friend class UsDistControl; }; -- cgit v1.2.3