aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLorenz Meier <lm@inf.ethz.ch>2014-04-05 11:28:07 +0200
committerLorenz Meier <lm@inf.ethz.ch>2014-04-05 11:28:07 +0200
commit3b5e6f98338fded2cbe7be1c301dc2698f7239aa (patch)
tree4840dab377589cfdf1558fb4d5b41d1f0bb6ac43 /src
parentce504297690ea11032e465c96aa96a00dd4be2bc (diff)
downloadpx4-firmware-3b5e6f98338fded2cbe7be1c301dc2698f7239aa.tar.gz
px4-firmware-3b5e6f98338fded2cbe7be1c301dc2698f7239aa.tar.bz2
px4-firmware-3b5e6f98338fded2cbe7be1c301dc2698f7239aa.zip
sensors and px4io driver: Guard against failsafe trigger for inverted remotes
Diffstat (limited to 'src')
-rw-r--r--src/drivers/px4io/px4io.cpp4
-rw-r--r--src/modules/sensors/sensor_params.c2
-rw-r--r--src/modules/sensors/sensors.cpp8
3 files changed, 7 insertions, 7 deletions
diff --git a/src/drivers/px4io/px4io.cpp b/src/drivers/px4io/px4io.cpp
index f6125d273..a30bfb2de 100644
--- a/src/drivers/px4io/px4io.cpp
+++ b/src/drivers/px4io/px4io.cpp
@@ -948,8 +948,8 @@ PX4IO::task_main()
}
/* send RC throttle failsafe value to IO */
- float failsafe_param_val;
- param_t failsafe_param = param_find("RC_FS_THR");
+ int32_t failsafe_param_val;
+ param_t failsafe_param = param_find("RC_FAILS_THR");
if (failsafe_param > 0)
diff --git a/src/modules/sensors/sensor_params.c b/src/modules/sensors/sensor_params.c
index e4564aa25..14f7ac812 100644
--- a/src/modules/sensors/sensor_params.c
+++ b/src/modules/sensors/sensor_params.c
@@ -675,4 +675,4 @@ PARAM_DEFINE_FLOAT(RC_SCALE_YAW, 2.0f);
* @max 2200
* @group Radio Calibration
*/
-PARAM_DEFINE_FLOAT(RC_FS_THR, 0);
+PARAM_DEFINE_INT32(RC_FAILS_THR, 0);
diff --git a/src/modules/sensors/sensors.cpp b/src/modules/sensors/sensors.cpp
index 4c34d853f..44a91ca67 100644
--- a/src/modules/sensors/sensors.cpp
+++ b/src/modules/sensors/sensors.cpp
@@ -263,7 +263,7 @@ private:
float rc_scale_yaw;
float rc_scale_flaps;
- float rc_fs_thr;
+ int32_t rc_fs_thr;
float battery_voltage_scaling;
float battery_current_scaling;
@@ -527,7 +527,7 @@ Sensors::Sensors() :
_parameter_handles.rc_scale_flaps = param_find("RC_SCALE_FLAPS");
/* RC failsafe */
- _parameter_handles.rc_fs_thr = param_find("RC_FS_THR");
+ _parameter_handles.rc_fs_thr = param_find("RC_FAILS_THR");
/* gyro offsets */
_parameter_handles.gyro_offset[0] = param_find("SENS_GYRO_XOFF");
@@ -1309,8 +1309,8 @@ Sensors::rc_poll()
}
/* check for failsafe */
- if (rc_input.rc_failsafe || ((rc_input.values[_rc.function[THROTTLE]] < _parameters.min[i]) && (rc_input.values[_rc.function[THROTTLE]] < _parameters.rc_fs_thr))
- || ((rc_input.values[_rc.function[THROTTLE]] > _parameters.max[i]) && (rc_input.values[_rc.function[THROTTLE]] > _parameters.rc_fs_thr))) {
+ if (_parameters.rc_fs_thr && (rc_input.rc_failsafe || ((rc_input.values[_rc.function[THROTTLE]] < _parameters.min[i]) && (rc_input.values[_rc.function[THROTTLE]] < _parameters.rc_fs_thr))
+ || ((rc_input.values[_rc.function[THROTTLE]] > _parameters.max[i]) && (rc_input.values[_rc.function[THROTTLE]] > _parameters.rc_fs_thr)))) {
/* do not publish manual control setpoints when there are none */
return;
}