aboutsummaryrefslogtreecommitdiff
path: root/src/drivers/meas_airspeed
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/meas_airspeed
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/meas_airspeed')
-rw-r--r--src/drivers/meas_airspeed/meas_airspeed.cpp26
1 files changed, 11 insertions, 15 deletions
diff --git a/src/drivers/meas_airspeed/meas_airspeed.cpp b/src/drivers/meas_airspeed/meas_airspeed.cpp
index b1cb2b3d8..03d7bbfb9 100644
--- a/src/drivers/meas_airspeed/meas_airspeed.cpp
+++ b/src/drivers/meas_airspeed/meas_airspeed.cpp
@@ -199,27 +199,23 @@ MEASAirspeed::collect()
// Calculate differential pressure. As its centered around 8000
// and can go positive or negative, enforce absolute value
uint16_t diff_press_pa = abs(dp_raw - (16384 / 2.0f));
-
- _reports[_next_report].timestamp = hrt_absolute_time();
- _reports[_next_report].temperature = temperature;
- _reports[_next_report].differential_pressure_pa = diff_press_pa;
+ struct differential_pressure_s report;
// Track maximum differential pressure measured (so we can work out top speed).
- if (diff_press_pa > _reports[_next_report].max_differential_pressure_pa) {
- _reports[_next_report].max_differential_pressure_pa = diff_press_pa;
+ if (diff_press_pa > _max_differential_pressure_pa) {
+ _max_differential_pressure_pa = diff_press_pa;
}
- /* announce the airspeed if needed, just publish else */
- orb_publish(ORB_ID(differential_pressure), _airspeed_pub, &_reports[_next_report]);
+ report.timestamp = hrt_absolute_time();
+ report.temperature = temperature;
+ report.differential_pressure_pa = diff_press_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);