From 8ee28b4a66f284da487a00433d3f06a52a4f8c4a Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Sat, 27 Jul 2019 15:28:27 +1000 Subject: [PATCH] AP_NavEKF3: restrict setting of EKF origin only allow EKF origin to be set if EKx_GPS_TYPE is set to 3, which is used for indoor operation --- libraries/AP_NavEKF3/AP_NavEKF3.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/libraries/AP_NavEKF3/AP_NavEKF3.cpp b/libraries/AP_NavEKF3/AP_NavEKF3.cpp index 9c7552decf..561decbcf4 100644 --- a/libraries/AP_NavEKF3/AP_NavEKF3.cpp +++ b/libraries/AP_NavEKF3/AP_NavEKF3.cpp @@ -1043,6 +1043,13 @@ bool NavEKF3::getOriginLLH(int8_t instance, struct Location &loc) const // Returns false if the filter has rejected the attempt to set the origin bool NavEKF3::setOriginLLH(const Location &loc) { + if (_fusionModeGPS != 3) { + // we don't allow setting of the EKF origin unless we are + // flying in non-GPS mode. This is to prevent accidental set + // of EKF origin with invalid position or height + gcs().send_text(MAV_SEVERITY_WARNING, "EKF3 refusing set origin"); + return false; + } if (!core) { return false; }