mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-10-03 18:08:53 +08:00
Allow negative differential pressure if parameter enabled (#24434)
This commit is contained in:
@@ -40,6 +40,7 @@
|
||||
*/
|
||||
|
||||
#include "ASP5033.hpp"
|
||||
#include <parameters/param.h>
|
||||
|
||||
ASP5033::ASP5033(const I2CSPIDriverConfig &config) :
|
||||
I2C(config),
|
||||
@@ -232,6 +233,15 @@ int ASP5033::collect()
|
||||
differential_pressure.timestamp_sample = timestamp_sample;
|
||||
differential_pressure.device_id = get_device_id();
|
||||
differential_pressure.differential_pressure_pa = _pressure;
|
||||
int32_t differential_press_rev = 0;
|
||||
param_get(param_find("SENS_DPRES_REV"), &differential_press_rev);
|
||||
|
||||
//If differential pressure reverse param set, swap positive and negative
|
||||
if (differential_press_rev == 1) {
|
||||
differential_pressure.differential_pressure_pa = -1.0f * _pressure;
|
||||
}
|
||||
|
||||
|
||||
differential_pressure.temperature = _temperature ;
|
||||
differential_pressure.error_count = perf_event_count(_comms_errors);
|
||||
differential_pressure.timestamp = timestamp_sample;
|
||||
|
||||
@@ -32,6 +32,7 @@
|
||||
****************************************************************************/
|
||||
|
||||
#include "AUAV_Differential.hpp"
|
||||
#include <parameters/param.h>
|
||||
|
||||
AUAV_Differential::AUAV_Differential(const I2CSPIDriverConfig &config) :
|
||||
AUAV(config)
|
||||
@@ -46,6 +47,14 @@ void AUAV_Differential::publish_pressure(const float pressure_p, const float tem
|
||||
differential_pressure.timestamp_sample = timestamp_sample;
|
||||
differential_pressure.device_id = get_device_id();
|
||||
differential_pressure.differential_pressure_pa = pressure_p;
|
||||
int32_t differential_press_rev = 0;
|
||||
param_get(param_find("SENS_DPRES_REV"), &differential_press_rev);
|
||||
|
||||
//If differential pressure reverse param set, swap positive and negative
|
||||
if (differential_press_rev == 1) {
|
||||
differential_pressure.differential_pressure_pa = -1.0f * pressure_p;
|
||||
}
|
||||
|
||||
differential_pressure.temperature = temperature_c;
|
||||
differential_pressure.error_count = perf_event_count(_comms_errors);
|
||||
_differential_pressure_pub.publish(differential_pressure);
|
||||
|
||||
@@ -32,6 +32,7 @@
|
||||
****************************************************************************/
|
||||
|
||||
#include "ETSAirspeed.hpp"
|
||||
#include <parameters/param.h>
|
||||
|
||||
ETSAirspeed::ETSAirspeed(const I2CSPIDriverConfig &config) :
|
||||
I2C(config),
|
||||
@@ -113,6 +114,14 @@ int ETSAirspeed::collect()
|
||||
differential_pressure.timestamp_sample = timestamp_sample;
|
||||
differential_pressure.device_id = get_device_id();
|
||||
differential_pressure.differential_pressure_pa = diff_press_pa;
|
||||
int32_t differential_press_rev = 0;
|
||||
param_get(param_find("SENS_DPRES_REV"), &differential_press_rev);
|
||||
|
||||
//If differential pressure reverse param set, swap positive and negative
|
||||
if (differential_press_rev == 1) {
|
||||
differential_pressure.differential_pressure_pa = -1.0f * diff_press_pa;
|
||||
}
|
||||
|
||||
differential_pressure.temperature = NAN;
|
||||
differential_pressure.error_count = perf_event_count(_comms_errors);
|
||||
differential_pressure.timestamp = hrt_absolute_time();
|
||||
|
||||
@@ -32,6 +32,7 @@
|
||||
****************************************************************************/
|
||||
|
||||
#include "MS4515.hpp"
|
||||
#include <parameters/param.h>
|
||||
|
||||
MS4515::MS4515(const I2CSPIDriverConfig &config) :
|
||||
I2C(config),
|
||||
@@ -163,6 +164,14 @@ int MS4515::collect()
|
||||
differential_pressure.timestamp_sample = timestamp_sample;
|
||||
differential_pressure.device_id = get_device_id();
|
||||
differential_pressure.differential_pressure_pa = diff_press_pa;
|
||||
int32_t differential_press_rev = 0;
|
||||
param_get(param_find("SENS_DPRES_REV"), &differential_press_rev);
|
||||
|
||||
//If differential pressure reverse param set, swap positive and negative
|
||||
if (differential_press_rev == 1) {
|
||||
differential_pressure.differential_pressure_pa = -1.0f * diff_press_pa;
|
||||
}
|
||||
|
||||
differential_pressure.temperature = temperature_c;
|
||||
differential_pressure.error_count = perf_event_count(_comms_errors);
|
||||
differential_pressure.timestamp = hrt_absolute_time();
|
||||
|
||||
@@ -32,6 +32,7 @@
|
||||
****************************************************************************/
|
||||
|
||||
#include "MS4525DO.hpp"
|
||||
#include <parameters/param.h>
|
||||
|
||||
using namespace time_literals;
|
||||
|
||||
@@ -200,6 +201,14 @@ void MS4525DO::RunImpl()
|
||||
differential_pressure.timestamp_sample = _timestamp_sample;
|
||||
differential_pressure.device_id = get_device_id();
|
||||
differential_pressure.differential_pressure_pa = diff_press_pa;
|
||||
int32_t differential_press_rev = 0;
|
||||
param_get(param_find("SENS_DPRES_REV"), &differential_press_rev);
|
||||
|
||||
//If differential pressure reverse param set, swap positive and negative
|
||||
if (differential_press_rev == 1) {
|
||||
differential_pressure.differential_pressure_pa = -1.0f * diff_press_pa;
|
||||
}
|
||||
|
||||
differential_pressure.temperature = temperature_c;
|
||||
differential_pressure.error_count = perf_event_count(_comms_errors);
|
||||
differential_pressure.timestamp = hrt_absolute_time();
|
||||
|
||||
@@ -32,6 +32,7 @@
|
||||
****************************************************************************/
|
||||
|
||||
#include "MS5525DSO.hpp"
|
||||
#include <parameters/param.h>
|
||||
|
||||
MS5525DSO::MS5525DSO(const I2CSPIDriverConfig &config) :
|
||||
I2C(config),
|
||||
@@ -308,6 +309,14 @@ int MS5525DSO::collect()
|
||||
differential_pressure.timestamp_sample = timestamp_sample;
|
||||
differential_pressure.device_id = get_device_id();
|
||||
differential_pressure.differential_pressure_pa = diff_press_pa;
|
||||
int32_t differential_press_rev = 0;
|
||||
param_get(param_find("SENS_DPRES_REV"), &differential_press_rev);
|
||||
|
||||
//If differential pressure reverse param set, swap positive and negative
|
||||
if (differential_press_rev == 1) {
|
||||
differential_pressure.differential_pressure_pa = -1.0f * diff_press_pa;
|
||||
}
|
||||
|
||||
differential_pressure.temperature = temperature_c;
|
||||
differential_pressure.error_count = perf_event_count(_comms_errors);
|
||||
differential_pressure.timestamp = hrt_absolute_time();
|
||||
|
||||
@@ -32,6 +32,7 @@
|
||||
****************************************************************************/
|
||||
|
||||
#include "SDP3X.hpp"
|
||||
#include <parameters/param.h>
|
||||
|
||||
using namespace time_literals;
|
||||
|
||||
@@ -187,6 +188,14 @@ int SDP3X::collect()
|
||||
differential_pressure.timestamp_sample = timestamp_sample;
|
||||
differential_pressure.device_id = get_device_id();
|
||||
differential_pressure.differential_pressure_pa = diff_press_pa;
|
||||
int32_t differential_press_rev = 0;
|
||||
param_get(param_find("SENS_DPRES_REV"), &differential_press_rev);
|
||||
|
||||
//If differential pressure reverse param set, swap positive and negative
|
||||
if (differential_press_rev == 1) {
|
||||
differential_pressure.differential_pressure_pa = -1.0f * diff_press_pa;
|
||||
}
|
||||
|
||||
differential_pressure.temperature = temperature_c;
|
||||
differential_pressure.error_count = perf_event_count(_comms_errors);
|
||||
differential_pressure.timestamp = hrt_absolute_time();
|
||||
|
||||
@@ -69,8 +69,15 @@ void UavcanDifferentialPressureBridge::air_sub_cb(const
|
||||
|
||||
_device_id.devid_s.devtype = DRV_DIFF_PRESS_DEVTYPE_UAVCAN;
|
||||
_device_id.devid_s.address = msg.getSrcNodeID().get() & 0xFF;
|
||||
|
||||
float diff_press_pa = msg.differential_pressure;
|
||||
int32_t differential_press_rev = 0;
|
||||
param_get(param_find("SENS_DPRES_REV"), &differential_press_rev);
|
||||
|
||||
//If differential pressure reverse param set, swap positive and negative
|
||||
if (differential_press_rev == 1) {
|
||||
diff_press_pa = -1.0f * msg.differential_pressure;
|
||||
}
|
||||
|
||||
float temperature_c = msg.static_air_temperature + atmosphere::kAbsoluteNullCelsius;
|
||||
|
||||
differential_pressure_s report{};
|
||||
|
||||
Reference in New Issue
Block a user