aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLorenz Meier <lm@inf.ethz.ch>2014-07-12 00:17:50 +0200
committerLorenz Meier <lm@inf.ethz.ch>2014-07-12 00:17:50 +0200
commit2fa4434a03abe057e65a5c8ba29f8cd9cd75ca93 (patch)
tree8fd874a36d165ef11d8baf6b2c56d950086c4f15
parente3afb669cae54b042f453605601fed861c52ee45 (diff)
downloadpx4-firmware-2fa4434a03abe057e65a5c8ba29f8cd9cd75ca93.tar.gz
px4-firmware-2fa4434a03abe057e65a5c8ba29f8cd9cd75ca93.tar.bz2
px4-firmware-2fa4434a03abe057e65a5c8ba29f8cd9cd75ca93.zip
Limit output of driver to positive range
-rw-r--r--src/modules/sensors/sensors.cpp8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/modules/sensors/sensors.cpp b/src/modules/sensors/sensors.cpp
index cda79693d..1ffd7f02f 100644
--- a/src/modules/sensors/sensors.cpp
+++ b/src/modules/sensors/sensors.cpp
@@ -501,6 +501,7 @@ Sensors::Sensors() :
_battery_current_timestamp(0)
{
memset(&_rc, 0, sizeof(_rc));
+ memset(&_diff_pres, 0, sizeof(_diff_pres));
/* basic r/c parameters */
for (unsigned i = 0; i < _rc_max_chan_count; i++) {
@@ -1332,12 +1333,13 @@ Sensors::adc_poll(struct sensor_combined_s &raw)
*/
if (voltage > 0.4f && (_parameters.diff_pres_analog_scale > 0.0f)) {
- float diff_pres_pa = voltage * _parameters.diff_pres_analog_scale - _parameters.diff_pres_offset_pa;
+ float diff_pres_pa_raw = voltage * _parameters.diff_pres_analog_scale - _parameters.diff_pres_offset_pa;
+ float diff_pres_pa = (diff_pres_pa_raw > 0.0f) ? diff_pres_pa_raw : 0.0f;
_diff_pres.timestamp = t;
_diff_pres.differential_pressure_pa = diff_pres_pa;
- _diff_pres.differential_pressure_raw_pa = diff_pres_pa;
- _diff_pres.differential_pressure_filtered_pa = diff_pres_pa;
+ _diff_pres.differential_pressure_raw_pa = diff_pres_pa_raw;
+ _diff_pres.differential_pressure_filtered_pa = (_diff_pres.differential_pressure_filtered_pa * 0.9f) + (diff_pres_pa * 0.1f);
_diff_pres.temperature = -1000.0f;
/* announce the airspeed if needed, just publish else */