aboutsummaryrefslogtreecommitdiff
path: root/src/drivers/ets_airspeed
diff options
context:
space:
mode:
authorLorenz Meier <lm@inf.ethz.ch>2013-07-10 20:58:47 +0200
committerLorenz Meier <lm@inf.ethz.ch>2013-07-10 20:58:47 +0200
commitdc600e7d65df3d91fc1dabac33b6e264ef9185df (patch)
treec975c75155a3d725e1e6ce5e6a2521931e24376f /src/drivers/ets_airspeed
parent71ca3ec449fe530ff5aa24f58d858b2186054c42 (diff)
downloadpx4-firmware-dc600e7d65df3d91fc1dabac33b6e264ef9185df.tar.gz
px4-firmware-dc600e7d65df3d91fc1dabac33b6e264ef9185df.tar.bz2
px4-firmware-dc600e7d65df3d91fc1dabac33b6e264ef9185df.zip
First stab at IOCTL driven offset handling (in PA) for all airspeed sensors. Untested
Diffstat (limited to 'src/drivers/ets_airspeed')
-rw-r--r--src/drivers/ets_airspeed/ets_airspeed.cpp17
1 files changed, 14 insertions, 3 deletions
diff --git a/src/drivers/ets_airspeed/ets_airspeed.cpp b/src/drivers/ets_airspeed/ets_airspeed.cpp
index b34d3fa5d..da449c195 100644
--- a/src/drivers/ets_airspeed/ets_airspeed.cpp
+++ b/src/drivers/ets_airspeed/ets_airspeed.cpp
@@ -129,7 +129,7 @@ private:
bool _sensor_ok;
int _measure_ticks;
bool _collect_phase;
- int _diff_pres_offset;
+ float _diff_pres_offset;
orb_advert_t _airspeed_pub;
@@ -358,6 +358,19 @@ ETSAirspeed::ioctl(struct file *filp, int cmd, unsigned long arg)
/* XXX implement this */
return -EINVAL;
+ case AIRSPEEDIOCSSCALE: {
+ struct airspeed_scale *s = (struct airspeed_scale*)arg;
+ _diff_pres_offset = s->offset_pa;
+ return OK;
+ }
+
+ case AIRSPEEDIOCGSCALE: {
+ struct airspeed_scale *s = (struct airspeed_scale*)arg;
+ s->offset_pa = _diff_pres_offset;
+ s->scale = 1.0f;
+ return OK;
+ }
+
default:
/* give it to the superclass */
return I2C::ioctl(filp, cmd, arg);
@@ -464,8 +477,6 @@ ETSAirspeed::collect()
uint16_t diff_pres_pa = val[1] << 8 | val[0];
- // XXX move the parameter read out of the driver.
- param_get(param_find("SENS_DPRES_OFF"), &_diff_pres_offset);
if (diff_pres_pa < _diff_pres_offset + MIN_ACCURATE_DIFF_PRES_PA) {
diff_pres_pa = 0;