differential_pressure drivers update orb_publish usage to uORB::PublicationMulti<>

This commit is contained in:
Daniel Agar
2019-11-30 12:34:08 -05:00
parent ec5730bb89
commit 6f512cc2f1
6 changed files with 10 additions and 32 deletions

View File

@@ -124,7 +124,7 @@ ETSAirspeed::collect()
float diff_pres_pa_raw = (float)(val[1] << 8 | val[0]); float diff_pres_pa_raw = (float)(val[1] << 8 | val[0]);
differential_pressure_s report; differential_pressure_s report{};
report.timestamp = hrt_absolute_time(); report.timestamp = hrt_absolute_time();
if (diff_pres_pa_raw < FLT_EPSILON) { if (diff_pres_pa_raw < FLT_EPSILON) {
@@ -147,10 +147,7 @@ ETSAirspeed::collect()
report.temperature = -1000.0f; report.temperature = -1000.0f;
report.device_id = _device_id.devid; report.device_id = _device_id.devid;
if (_airspeed_pub != nullptr && !(_pub_blocked)) { _airspeed_pub.publish(report);
/* publish it */
orb_publish(ORB_ID(differential_pressure), _airspeed_pub, &report);
}
ret = OK; ret = OK;

View File

@@ -202,7 +202,7 @@ MEASAirspeed::collect()
and bottom port is used as the static port and bottom port is used as the static port
*/ */
struct differential_pressure_s report; differential_pressure_s report{};
report.timestamp = hrt_absolute_time(); report.timestamp = hrt_absolute_time();
report.error_count = perf_event_count(_comms_errors); 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.differential_pressure_raw_pa = diff_press_pa_raw - _diff_pres_offset;
report.device_id = _device_id.devid; report.device_id = _device_id.devid;
if (_airspeed_pub != nullptr && !(_pub_blocked)) { _airspeed_pub.publish(report);
/* publish it */
orb_publish(ORB_ID(differential_pressure), _airspeed_pub, &report);
}
ret = OK; ret = OK;

View File

@@ -259,10 +259,7 @@ MS5525::collect()
.device_id = _device_id.devid .device_id = _device_id.devid
}; };
if (_airspeed_pub != nullptr && !(_pub_blocked)) { _airspeed_pub.publish(diff_pressure);
/* publish it */
orb_publish(ORB_ID(differential_pressure), _airspeed_pub, &diff_pressure);
}
ret = OK; ret = OK;

View File

@@ -147,7 +147,7 @@ SDP3X::collect()
float diff_press_pa_raw = static_cast<float>(P) / static_cast<float>(_scale); float diff_press_pa_raw = static_cast<float>(P) / static_cast<float>(_scale);
float temperature_c = temp / static_cast<float>(SDP3X_SCALE_TEMPERATURE); float temperature_c = temp / static_cast<float>(SDP3X_SCALE_TEMPERATURE);
differential_pressure_s report; differential_pressure_s report{};
report.timestamp = hrt_absolute_time(); report.timestamp = hrt_absolute_time();
report.error_count = perf_event_count(_comms_errors); 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.differential_pressure_raw_pa = diff_press_pa_raw - _diff_pres_offset;
report.device_id = _device_id.devid; report.device_id = _device_id.devid;
if (_airspeed_pub != nullptr && !(_pub_blocked)) { _airspeed_pub.publish(report);
orb_publish(ORB_ID(differential_pressure), _airspeed_pub, &report);
}
ret = OK; ret = OK;

View File

@@ -63,7 +63,6 @@ Airspeed::Airspeed(int bus, int address, unsigned conversion_interval, const cha
_measure_interval(0), _measure_interval(0),
_collect_phase(false), _collect_phase(false),
_diff_pres_offset(0.0f), _diff_pres_offset(0.0f),
_airspeed_pub(nullptr),
_airspeed_orb_class_instance(-1), _airspeed_orb_class_instance(-1),
_class_instance(-1), _class_instance(-1),
_conversion_interval(conversion_interval), _conversion_interval(conversion_interval),
@@ -81,8 +80,6 @@ Airspeed::~Airspeed()
unregister_class_devname(AIRSPEED_BASE_DEVICE_PATH, _class_instance); unregister_class_devname(AIRSPEED_BASE_DEVICE_PATH, _class_instance);
} }
orb_unadvertise(_airspeed_pub);
// free perf counters // free perf counters
perf_free(_sample_perf); perf_free(_sample_perf);
perf_free(_comms_errors); perf_free(_comms_errors);
@@ -101,15 +98,6 @@ Airspeed::init()
/* advertise sensor topic, measure manually to initialize valid report */ /* advertise sensor topic, measure manually to initialize valid report */
measure(); 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; return PX4_OK;
} }

View File

@@ -41,7 +41,7 @@
#include <px4_platform_common/defines.h> #include <px4_platform_common/defines.h>
#include <perf/perf_counter.h> #include <perf/perf_counter.h>
#include <uORB/topics/differential_pressure.h> #include <uORB/topics/differential_pressure.h>
#include <uORB/uORB.h> #include <uORB/PublicationMulti.hpp>
#include <px4_platform_common/px4_work_queue/ScheduledWorkItem.hpp> #include <px4_platform_common/px4_work_queue/ScheduledWorkItem.hpp>
/* Default I2C bus */ /* Default I2C bus */
@@ -78,7 +78,8 @@ protected:
bool _collect_phase; bool _collect_phase;
float _diff_pres_offset; float _diff_pres_offset;
orb_advert_t _airspeed_pub; uORB::PublicationMulti<differential_pressure_s> _airspeed_pub{ORB_ID(differential_pressure)};
int _airspeed_orb_class_instance; int _airspeed_orb_class_instance;
int _class_instance; int _class_instance;