aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Gubler <thomasgubler@gmail.com>2014-05-14 21:54:59 +0200
committerThomas Gubler <thomasgubler@gmail.com>2014-05-14 21:54:59 +0200
commit5d04bb74cbee6e57db4e9b09c02139e1df6954d1 (patch)
tree2eee000ccfdfadf5e73fd8d29f9fe92d63f18502
parent4d7cb184dbb94ca8b1747811de84de965a2f007f (diff)
downloadpx4-firmware-5d04bb74cbee6e57db4e9b09c02139e1df6954d1.tar.gz
px4-firmware-5d04bb74cbee6e57db4e9b09c02139e1df6954d1.tar.bz2
px4-firmware-5d04bb74cbee6e57db4e9b09c02139e1df6954d1.zip
mtecs: check if input arguments are finite
-rw-r--r--src/modules/fw_pos_control_l1/mtecs/mTecs.cpp18
1 files changed, 17 insertions, 1 deletions
diff --git a/src/modules/fw_pos_control_l1/mtecs/mTecs.cpp b/src/modules/fw_pos_control_l1/mtecs/mTecs.cpp
index 5dba0dcd6..c6301bcdb 100644
--- a/src/modules/fw_pos_control_l1/mtecs/mTecs.cpp
+++ b/src/modules/fw_pos_control_l1/mtecs/mTecs.cpp
@@ -79,6 +79,11 @@ mTecs::~mTecs()
int mTecs::updateAltitudeSpeed(float flightPathAngle, float altitude, float altitudeSp, float airspeed, float airspeedSp, tecs_mode mode)
{
+ /* check if all input arguments are numbers and abort if not so */
+ if (!isfinite(flightPathAngle) || !isfinite(altitude) ||
+ !isfinite(altitudeSp) || !isfinite(airspeed) || !isfinite(airspeedSp) || !isfinite(mode)) {
+ return -1;
+ }
/* time measurement */
updateTimeMeasurement();
@@ -96,7 +101,13 @@ int mTecs::updateAltitudeSpeed(float flightPathAngle, float altitude, float alti
return updateFlightPathAngleSpeed(flightPathAngle, flightPathAngleSp, airspeed, airspeedSp, mode);
}
-int mTecs::updateFlightPathAngleSpeed(float flightPathAngle, float flightPathAngleSp, float airspeed, float airspeedSp, tecs_mode mode) {
+int mTecs::updateFlightPathAngleSpeed(float flightPathAngle, float flightPathAngleSp, float airspeed, float airspeedSp, tecs_mode mode)
+{
+ /* check if all input arguments are numbers and abort if not so */
+ if (!isfinite(flightPathAngle) || !isfinite(flightPathAngleSp) ||
+ !isfinite(airspeed) || !isfinite(airspeedSp) || !isfinite(mode)) {
+ return -1;
+ }
/* time measurement */
updateTimeMeasurement();
@@ -115,6 +126,11 @@ int mTecs::updateFlightPathAngleSpeed(float flightPathAngle, float flightPathAng
int mTecs::updateFlightPathAngleAcceleration(float flightPathAngle, float flightPathAngleSp, float airspeed, float accelerationLongitudinalSp, tecs_mode mode)
{
+ /* check if all input arguments are numbers and abort if not so */
+ if (!isfinite(flightPathAngle) || !isfinite(flightPathAngleSp) ||
+ !isfinite(airspeed) || !isfinite(accelerationLongitudinalSp) || !isfinite(mode)) {
+ return -1;
+ }
/* time measurement */
updateTimeMeasurement();