summaryrefslogtreecommitdiffhomepage
path: root/digital/ucoolib
diff options
context:
space:
mode:
Diffstat (limited to 'digital/ucoolib')
-rw-r--r--digital/ucoolib/ucoolib/dev/usdist/usdist.cc10
-rw-r--r--digital/ucoolib/ucoolib/dev/usdist/usdist.hh5
2 files changed, 10 insertions, 5 deletions
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;
};