aboutsummaryrefslogtreecommitdiff
path: root/src/drivers/ets_airspeed/ets_airspeed.cpp
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2013-09-09 16:35:20 +1000
committerLorenz Meier <lm@inf.ethz.ch>2013-09-12 00:52:21 +0200
commit36b7b7bc5f078f373f67cdce3f5c7855c0dcd58b (patch)
tree52c3de86dba3ce03079c0cccb4e4f3fcbac7c12e /src/drivers/ets_airspeed/ets_airspeed.cpp
parent815ccee0e7f642b2471084296c893a4dd49e5dfb (diff)
downloadpx4-firmware-36b7b7bc5f078f373f67cdce3f5c7855c0dcd58b.tar.gz
px4-firmware-36b7b7bc5f078f373f67cdce3f5c7855c0dcd58b.tar.bz2
px4-firmware-36b7b7bc5f078f373f67cdce3f5c7855c0dcd58b.zip
airspeed: convert to using RingBuffer class
Diffstat (limited to 'src/drivers/ets_airspeed/ets_airspeed.cpp')
-rw-r--r--src/drivers/ets_airspeed/ets_airspeed.cpp28
1 files changed, 12 insertions, 16 deletions
diff --git a/src/drivers/ets_airspeed/ets_airspeed.cpp b/src/drivers/ets_airspeed/ets_airspeed.cpp
index 257b41935..dd8436b10 100644
--- a/src/drivers/ets_airspeed/ets_airspeed.cpp
+++ b/src/drivers/ets_airspeed/ets_airspeed.cpp
@@ -68,6 +68,7 @@
#include <drivers/drv_airspeed.h>
#include <drivers/drv_hrt.h>
+#include <drivers/device/ringbuffer.h>
#include <uORB/uORB.h>
#include <uORB/topics/differential_pressure.h>
@@ -173,27 +174,22 @@ ETSAirspeed::collect()
diff_pres_pa -= _diff_pres_offset;
}
- // XXX we may want to smooth out the readings to remove noise.
-
- _reports[_next_report].timestamp = hrt_absolute_time();
- _reports[_next_report].differential_pressure_pa = diff_pres_pa;
-
// Track maximum differential pressure measured (so we can work out top speed).
- if (diff_pres_pa > _reports[_next_report].max_differential_pressure_pa) {
- _reports[_next_report].max_differential_pressure_pa = diff_pres_pa;
+ if (diff_pres_pa > _max_differential_pressure_pa) {
+ _max_differential_pressure_pa = diff_pres_pa;
}
- /* announce the airspeed if needed, just publish else */
- orb_publish(ORB_ID(differential_pressure), _airspeed_pub, &_reports[_next_report]);
+ // XXX we may want to smooth out the readings to remove noise.
+ differential_pressure_s report;
+ report.timestamp = hrt_absolute_time();
+ report.differential_pressure_pa = diff_pres_pa;
+ report.voltage = 0;
+ report.max_differential_pressure_pa = _max_differential_pressure_pa;
- /* post a report to the ring - note, not locked */
- INCREMENT(_next_report, _num_reports);
+ /* announce the airspeed if needed, just publish else */
+ orb_publish(ORB_ID(differential_pressure), _airspeed_pub, &report);
- /* if we are running up against the oldest report, toss it */
- if (_next_report == _oldest_report) {
- perf_count(_buffer_overflows);
- INCREMENT(_oldest_report, _num_reports);
- }
+ new_report(report);
/* notify anyone waiting for data */
poll_notify(POLLIN);