From 961eeb3b58de1614503603e1aa0bb37e8f66660e Mon Sep 17 00:00:00 2001 From: Rishabh Date: Thu, 6 Feb 2020 15:37:10 +0530 Subject: [PATCH] Rover: disallow arming in RTL and S_RTL mode --- APMrover2/AP_Arming.cpp | 13 ++++++++++++- APMrover2/AP_Arming.h | 1 + 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/APMrover2/AP_Arming.cpp b/APMrover2/AP_Arming.cpp index 670b2e2b7f..56ce4fc25e 100644 --- a/APMrover2/AP_Arming.cpp +++ b/APMrover2/AP_Arming.cpp @@ -86,7 +86,8 @@ bool AP_Arming_Rover::pre_arm_checks(bool report) & rover.g2.motors.pre_arm_check(report) & fence_checks(report) & oa_check(report) - & parameter_checks(report)); + & parameter_checks(report) + & mode_checks(report)); } bool AP_Arming_Rover::arm_checks(AP_Arming::Method method) @@ -185,3 +186,13 @@ bool AP_Arming_Rover::parameter_checks(bool report) return true; } +// check if arming allowed from this mode +bool AP_Arming_Rover::mode_checks(bool report) +{ + //display failure if arming in this mode is not allowed + if (!rover.control_mode->allows_arming()) { + check_failed(report, "Mode not armable"); + return false; + } + return true; +} diff --git a/APMrover2/AP_Arming.h b/APMrover2/AP_Arming.h index 9c2e6bc1b3..fb7fda6be3 100644 --- a/APMrover2/AP_Arming.h +++ b/APMrover2/AP_Arming.h @@ -30,5 +30,6 @@ protected: // the following check functions do not call into AP_Arming bool oa_check(bool report); bool parameter_checks(bool report); + bool mode_checks(bool report); };