From 6f512cc2f18194d45fea1169eb77badb7fad5994 Mon Sep 17 00:00:00 2001 From: Daniel Agar Date: Sat, 30 Nov 2019 12:34:08 -0500 Subject: [PATCH] differential_pressure drivers update orb_publish usage to uORB::PublicationMulti<> --- .../differential_pressure/ets/ets_airspeed.cpp | 7 ++----- .../differential_pressure/ms4525/ms4525_airspeed.cpp | 7 ++----- src/drivers/differential_pressure/ms5525/MS5525.cpp | 5 +---- src/drivers/differential_pressure/sdp3x/SDP3X.cpp | 6 ++---- src/lib/drivers/airspeed/airspeed.cpp | 12 ------------ src/lib/drivers/airspeed/airspeed.h | 5 +++-- 6 files changed, 10 insertions(+), 32 deletions(-) diff --git a/src/drivers/differential_pressure/ets/ets_airspeed.cpp b/src/drivers/differential_pressure/ets/ets_airspeed.cpp index adaba35926..7e04a36909 100644 --- a/src/drivers/differential_pressure/ets/ets_airspeed.cpp +++ b/src/drivers/differential_pressure/ets/ets_airspeed.cpp @@ -124,7 +124,7 @@ ETSAirspeed::collect() float diff_pres_pa_raw = (float)(val[1] << 8 | val[0]); - differential_pressure_s report; + differential_pressure_s report{}; report.timestamp = hrt_absolute_time(); if (diff_pres_pa_raw < FLT_EPSILON) { @@ -147,10 +147,7 @@ ETSAirspeed::collect() report.temperature = -1000.0f; report.device_id = _device_id.devid; - if (_airspeed_pub != nullptr && !(_pub_blocked)) { - /* publish it */ - orb_publish(ORB_ID(differential_pressure), _airspeed_pub, &report); - } + _airspeed_pub.publish(report); ret = OK; diff --git a/src/drivers/differential_pressure/ms4525/ms4525_airspeed.cpp b/src/drivers/differential_pressure/ms4525/ms4525_airspeed.cpp index c8c48a2fab..b73269b08b 100644 --- a/src/drivers/differential_pressure/ms4525/ms4525_airspeed.cpp +++ b/src/drivers/differential_pressure/ms4525/ms4525_airspeed.cpp @@ -202,7 +202,7 @@ MEASAirspeed::collect() and bottom port is used as the static port */ - struct differential_pressure_s report; + differential_pressure_s report{}; report.timestamp = hrt_absolute_time(); report.error_count = perf_event_count(_comms_errors); @@ -211,10 +211,7 @@ MEASAirspeed::collect() report.differential_pressure_raw_pa = diff_press_pa_raw - _diff_pres_offset; report.device_id = _device_id.devid; - if (_airspeed_pub != nullptr && !(_pub_blocked)) { - /* publish it */ - orb_publish(ORB_ID(differential_pressure), _airspeed_pub, &report); - } + _airspeed_pub.publish(report); ret = OK; diff --git a/src/drivers/differential_pressure/ms5525/MS5525.cpp b/src/drivers/differential_pressure/ms5525/MS5525.cpp index 1c7642411b..41e716b90a 100644 --- a/src/drivers/differential_pressure/ms5525/MS5525.cpp +++ b/src/drivers/differential_pressure/ms5525/MS5525.cpp @@ -259,10 +259,7 @@ MS5525::collect() .device_id = _device_id.devid }; - if (_airspeed_pub != nullptr && !(_pub_blocked)) { - /* publish it */ - orb_publish(ORB_ID(differential_pressure), _airspeed_pub, &diff_pressure); - } + _airspeed_pub.publish(diff_pressure); ret = OK; diff --git a/src/drivers/differential_pressure/sdp3x/SDP3X.cpp b/src/drivers/differential_pressure/sdp3x/SDP3X.cpp index c7dc82466f..4bc4d5b68f 100644 --- a/src/drivers/differential_pressure/sdp3x/SDP3X.cpp +++ b/src/drivers/differential_pressure/sdp3x/SDP3X.cpp @@ -147,7 +147,7 @@ SDP3X::collect() float diff_press_pa_raw = static_cast(P) / static_cast(_scale); float temperature_c = temp / static_cast(SDP3X_SCALE_TEMPERATURE); - differential_pressure_s report; + differential_pressure_s report{}; report.timestamp = hrt_absolute_time(); report.error_count = perf_event_count(_comms_errors); @@ -156,9 +156,7 @@ SDP3X::collect() report.differential_pressure_raw_pa = diff_press_pa_raw - _diff_pres_offset; report.device_id = _device_id.devid; - if (_airspeed_pub != nullptr && !(_pub_blocked)) { - orb_publish(ORB_ID(differential_pressure), _airspeed_pub, &report); - } + _airspeed_pub.publish(report); ret = OK; diff --git a/src/lib/drivers/airspeed/airspeed.cpp b/src/lib/drivers/airspeed/airspeed.cpp index ca8c4d532c..e02c99cf5d 100644 --- a/src/lib/drivers/airspeed/airspeed.cpp +++ b/src/lib/drivers/airspeed/airspeed.cpp @@ -63,7 +63,6 @@ Airspeed::Airspeed(int bus, int address, unsigned conversion_interval, const cha _measure_interval(0), _collect_phase(false), _diff_pres_offset(0.0f), - _airspeed_pub(nullptr), _airspeed_orb_class_instance(-1), _class_instance(-1), _conversion_interval(conversion_interval), @@ -81,8 +80,6 @@ Airspeed::~Airspeed() unregister_class_devname(AIRSPEED_BASE_DEVICE_PATH, _class_instance); } - orb_unadvertise(_airspeed_pub); - // free perf counters perf_free(_sample_perf); perf_free(_comms_errors); @@ -101,15 +98,6 @@ Airspeed::init() /* advertise sensor topic, measure manually to initialize valid report */ measure(); - differential_pressure_s arp = {}; - - /* measurement will have generated a report, publish */ - _airspeed_pub = orb_advertise_multi(ORB_ID(differential_pressure), &arp, &_airspeed_orb_class_instance, - ORB_PRIO_HIGH - _class_instance); - - if (_airspeed_pub == nullptr) { - PX4_WARN("uORB started?"); - } return PX4_OK; } diff --git a/src/lib/drivers/airspeed/airspeed.h b/src/lib/drivers/airspeed/airspeed.h index 143a815f7f..c83dce0ac7 100644 --- a/src/lib/drivers/airspeed/airspeed.h +++ b/src/lib/drivers/airspeed/airspeed.h @@ -41,7 +41,7 @@ #include #include #include -#include +#include #include /* Default I2C bus */ @@ -78,7 +78,8 @@ protected: bool _collect_phase; float _diff_pres_offset; - orb_advert_t _airspeed_pub; + uORB::PublicationMulti _airspeed_pub{ORB_ID(differential_pressure)}; + int _airspeed_orb_class_instance; int _class_instance;