From 878e84a01519e6f46bdeda32406933ac87b056e3 Mon Sep 17 00:00:00 2001 From: Jonathan Challinger Date: Mon, 19 Mar 2018 16:58:40 -0700 Subject: [PATCH] AP_Compass: correct edge case where checks pass when saved dev_id != detected dev_id --- libraries/AP_Compass/AP_Compass.cpp | 25 ++++++++++++++++----- libraries/AP_Compass/AP_Compass.h | 1 + libraries/AP_Compass/AP_Compass_Backend.cpp | 1 + 3 files changed, 21 insertions(+), 6 deletions(-) diff --git a/libraries/AP_Compass/AP_Compass.cpp b/libraries/AP_Compass/AP_Compass.cpp index 0135348fa4..8e636ed2b0 100644 --- a/libraries/AP_Compass/AP_Compass.cpp +++ b/libraries/AP_Compass/AP_Compass.cpp @@ -471,6 +471,13 @@ Compass::Compass(void) } _singleton = this; AP_Param::setup_object_defaults(this, var_info); + + // Reset dev_id parameters' cached values to zero. This is here to address a potential + // edge case where a previously-detected compass is no longer present, but its dev_id + // is loaded from the parameter's stored value. + for (uint8_t i=0; i