From 7c2c6dbab31225649145fd97545841c37759cfa6 Mon Sep 17 00:00:00 2001 From: Randy Mackay Date: Wed, 18 Sep 2019 10:29:25 +0900 Subject: [PATCH] Rover: pre-arm check that WP_SPEED is positive --- APMrover2/AP_Arming.cpp | 21 ++++++++++++++++++++- APMrover2/AP_Arming.h | 2 ++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/APMrover2/AP_Arming.cpp b/APMrover2/AP_Arming.cpp index 61bdf7de68..168b6c8c20 100644 --- a/APMrover2/AP_Arming.cpp +++ b/APMrover2/AP_Arming.cpp @@ -85,7 +85,8 @@ bool AP_Arming_Rover::pre_arm_checks(bool report) return (AP_Arming::pre_arm_checks(report) & rover.g2.motors.pre_arm_check(report) & fence_checks(report) - & oa_check(report)); + & oa_check(report) + & parameter_checks(report)); } bool AP_Arming_Rover::arm_checks(AP_Arming::Method method) @@ -176,3 +177,21 @@ bool AP_Arming_Rover::oa_check(bool report) } return false; } + +// perform parameter checks +bool AP_Arming_Rover::parameter_checks(bool report) +{ + // success if parameter checks are disabled + if ((checks_to_perform != ARMING_CHECK_ALL) && !(checks_to_perform & ARMING_CHECK_PARAMETERS)) { + return true; + } + + // check waypoint speed is positive + if (!is_positive(rover.g2.wp_nav.get_default_speed())) { + check_failed(ARMING_CHECK_PARAMETERS, report, "WP_SPEED too low"); + return false; + } + + return true; +} + diff --git a/APMrover2/AP_Arming.h b/APMrover2/AP_Arming.h index ab47c41e77..167beb6851 100644 --- a/APMrover2/AP_Arming.h +++ b/APMrover2/AP_Arming.h @@ -27,7 +27,9 @@ public: void update_soft_armed(); protected: + // the following check functions do not call into AP_Arming bool oa_check(bool report); + bool parameter_checks(bool report); private: