diff --git a/ArduPlane/Plane.h b/ArduPlane/Plane.h index 9af21f314c..dd44be42e7 100644 --- a/ArduPlane/Plane.h +++ b/ArduPlane/Plane.h @@ -127,6 +127,8 @@ public: // var_info for holding Parameter information static const struct AP_Param::GroupInfo var_info[]; +protected: + bool ins_checks(bool report); }; /* diff --git a/ArduPlane/arming_checks.cpp b/ArduPlane/arming_checks.cpp index def81e5133..bf72bd451e 100644 --- a/ArduPlane/arming_checks.cpp +++ b/ArduPlane/arming_checks.cpp @@ -63,3 +63,29 @@ bool AP_Arming_Plane::pre_arm_checks(bool report) return ret; } + +bool AP_Arming_Plane::ins_checks(bool report) +{ + // call parent class checks + if (!AP_Arming::ins_checks(report)) { + return false; + } + + // additional plane specific checks + if ((checks_to_perform & ARMING_CHECK_ALL) || + (checks_to_perform & ARMING_CHECK_INS)) { + if (!ahrs.healthy()) { + if (report) { + const char *reason = ahrs.prearm_failure_reason(); + if (reason) { + GCS_MAVLINK::send_statustext_all(MAV_SEVERITY_CRITICAL, PSTR("PreArm: %s"), reason); + } else { + GCS_MAVLINK::send_statustext_all(MAV_SEVERITY_CRITICAL, PSTR("PreArm: AHRS not healthy")); + } + } + return false; + } + } + + return true; +}