From 2e32c753b96d07ef876a982f3e525318da54ddd4 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Tue, 23 Jun 2020 07:24:03 +1000 Subject: [PATCH] Plane: added arming check for terrain data --- ArduPlane/AP_Arming.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/ArduPlane/AP_Arming.cpp b/ArduPlane/AP_Arming.cpp index d6894ee298..5aff1d2c91 100644 --- a/ArduPlane/AP_Arming.cpp +++ b/ArduPlane/AP_Arming.cpp @@ -78,6 +78,21 @@ bool AP_Arming_Plane::pre_arm_checks(bool display_failure) ret &= quadplane_checks(display_failure); #endif +#if AP_TERRAIN_AVAILABLE + if (plane.g.terrain_follow || plane.mission.contains_terrain_relative()) { + // check terrain data is loaded and healthy + uint16_t terr_pending=0, terr_loaded=0; + plane.terrain.get_statistics(terr_pending, terr_loaded); + if (plane.terrain.status() != AP_Terrain::TerrainStatusOK) { + check_failed(ARMING_CHECK_PARAMETERS, display_failure, "terrain data unhealthy"); + ret = false; + } else if (terr_pending != 0) { + check_failed(ARMING_CHECK_PARAMETERS, display_failure, "waiting for terrain data"); + ret = false; + } + } +#endif + if (plane.control_mode == &plane.mode_auto && plane.mission.num_commands() <= 1) { check_failed(display_failure, "No mission loaded"); ret = false;