From c38f7821ce07c8395913e96c03b2c13680fa05a4 Mon Sep 17 00:00:00 2001 From: David Jacobs Date: Tue, 8 May 2018 18:45:16 -0400 Subject: [IMU_Cal] Runtime sensor calibration code update. Removes unused functionality from the calibration base class. Tip of G3 CL: 196582845 Bug: 75333210 (refactor updates) Test: ./load_app.sh and verified calibrations on device. Change-Id: I689e60b72fbbb7b7ab59f96c7d9d18dbea83ab14 --- .../algos/calibration/diversity_checker/diversity_checker.h | 5 +++++ firmware/os/algos/calibration/magnetometer/mag_cal/mag_cal.h | 5 ----- .../os/algos/calibration/nano_calibration/nano_calibration.cc | 9 ++++++--- .../online_calibration/common_data/online_calibration.h | 11 ----------- .../magnetometer/mag_diverse_cal/mag_diverse_cal.cc | 6 +++--- .../magnetometer/mag_diverse_cal/mag_diverse_cal.h | 5 +++-- 6 files changed, 17 insertions(+), 24 deletions(-) diff --git a/firmware/os/algos/calibration/diversity_checker/diversity_checker.h b/firmware/os/algos/calibration/diversity_checker/diversity_checker.h index fe951961..c38549b3 100644 --- a/firmware/os/algos/calibration/diversity_checker/diversity_checker.h +++ b/firmware/os/algos/calibration/diversity_checker/diversity_checker.h @@ -48,6 +48,11 @@ #include #include +#if defined(MAG_CAL_DEBUG_ENABLE) && !defined(DIVERSE_DEBUG_ENABLE) +// Ensures that diversity messaging is set when mag_cal debugging is enabled. +#define DIVERSE_DEBUG_ENABLE +#endif // MAG_CAL_DEBUG_ENABLE && !DIVERSE_DEBUG_ENABLE + #ifdef __cplusplus extern "C" { #endif diff --git a/firmware/os/algos/calibration/magnetometer/mag_cal/mag_cal.h b/firmware/os/algos/calibration/magnetometer/mag_cal/mag_cal.h index bbc079cb..566afa88 100644 --- a/firmware/os/algos/calibration/magnetometer/mag_cal/mag_cal.h +++ b/firmware/os/algos/calibration/magnetometer/mag_cal/mag_cal.h @@ -17,11 +17,6 @@ #ifndef LOCATION_LBS_CONTEXTHUB_NANOAPPS_CALIBRATION_MAGNETOMETER_MAG_CAL_MAG_CAL_H_ #define LOCATION_LBS_CONTEXTHUB_NANOAPPS_CALIBRATION_MAGNETOMETER_MAG_CAL_MAG_CAL_H_ -#ifdef MAG_CAL_DEBUG_ENABLE -// Enables diversity debug messages if mag_cal debugging is enabled. -#define DIVERSE_DEBUG_ENABLE -#endif // MAG_CAL_DEBUG_ENABLE - #include #include #include diff --git a/firmware/os/algos/calibration/nano_calibration/nano_calibration.cc b/firmware/os/algos/calibration/nano_calibration/nano_calibration.cc index a5de5d7e..d57d9903 100644 --- a/firmware/os/algos/calibration/nano_calibration/nano_calibration.cc +++ b/firmware/os/algos/calibration/nano_calibration/nano_calibration.cc @@ -208,7 +208,7 @@ bool NanoSensorCal::NotifyAshCalibration( ash_cal_info.compMatrix[8] = 1.0f; memcpy(ash_cal_info.bias, cal_data.offset, sizeof(ash_cal_info.bias)); - // Sets the appropriate calibration accuracy level. + // Maps CalibrationQualityLevel to ASH calibration accuracy. switch (cal_data.calibration_quality.level) { case online_calibration::CalibrationQualityLevel::HIGH_QUALITY: ash_cal_info.accuracy = ASH_CAL_ACCURACY_HIGH; @@ -219,10 +219,12 @@ bool NanoSensorCal::NotifyAshCalibration( break; case online_calibration::CalibrationQualityLevel::LOW_QUALITY: - // FALLTHROUGH_INTENTIONAL. - default: ash_cal_info.accuracy = ASH_CAL_ACCURACY_LOW; break; + + default: + ash_cal_info.accuracy = ASH_CAL_ACCURACY_UNRELIABLE; + break; } if (!ashSetCalibration(chreSensorType, &ash_cal_info)) { @@ -233,6 +235,7 @@ bool NanoSensorCal::NotifyAshCalibration( // Uses the ASH API to store ONLY the algorithm calibration parameters that // have been modified by the calibration algorithm. ashCalParams ash_cal_parameters; + memset(&ash_cal_parameters, 0, sizeof(ashCalParams)); if (flags & CalibrationTypeFlags::BIAS) { ash_cal_parameters.offsetTempCelsius = cal_data.offset_temp_celsius; memcpy(ash_cal_parameters.offset, cal_data.offset, diff --git a/firmware/os/algos/calibration/online_calibration/common_data/online_calibration.h b/firmware/os/algos/calibration/online_calibration/common_data/online_calibration.h index c8930652..59e26bae 100644 --- a/firmware/os/algos/calibration/online_calibration/common_data/online_calibration.h +++ b/firmware/os/algos/calibration/online_calibration/common_data/online_calibration.h @@ -91,17 +91,6 @@ class OnlineCalibration { calibration_callback_ = calibration_callback; } - // This provides operational feedback to the system based on status such as - // active sensors and sampling rates. Feedback may include adjusting - // system-level settings including sensor sampling rate, latency, - // active/passive subscription, etc. Returns "true" if a system setting is - // requested to change. - // TODO(davejacobs) -- Determine implementation details. - virtual bool UpdateDynamicSystemSettings( - /*System Parameters In, System Feedback Out*/) const { - return false; - } - // Returns the sensor-type this calibration algorithm provides updates for. virtual SensorType get_sensor_type() const = 0; diff --git a/firmware/os/algos/calibration/online_calibration/magnetometer/mag_diverse_cal/mag_diverse_cal.cc b/firmware/os/algos/calibration/online_calibration/magnetometer/mag_diverse_cal/mag_diverse_cal.cc index a4b4dfd7..fe787b1a 100644 --- a/firmware/os/algos/calibration/online_calibration/magnetometer/mag_diverse_cal/mag_diverse_cal.cc +++ b/firmware/os/algos/calibration/online_calibration/magnetometer/mag_diverse_cal/mag_diverse_cal.cc @@ -84,9 +84,9 @@ bool MagDiverseCal::SetInitialCalibration( // Sync's all initial calibration data. cal_data_ = input_cal_data; - // Sets the calibration quality. - cal_data_.calibration_quality.level = CalibrationQualityLevel::LOW_QUALITY; - cal_data_.calibration_quality.value = kLowQualityUt; + // Sets the calibration quality to undetermined (uncertain magnetic history + // makes the usefulness of the input calibration value unknown). + cal_data_.calibration_quality.reset(); return true; } diff --git a/firmware/os/algos/calibration/online_calibration/magnetometer/mag_diverse_cal/mag_diverse_cal.h b/firmware/os/algos/calibration/online_calibration/magnetometer/mag_diverse_cal/mag_diverse_cal.h index 212ffeb9..11ede3d4 100644 --- a/firmware/os/algos/calibration/online_calibration/magnetometer/mag_diverse_cal/mag_diverse_cal.h +++ b/firmware/os/algos/calibration/online_calibration/magnetometer/mag_diverse_cal/mag_diverse_cal.h @@ -34,8 +34,9 @@ namespace online_calibration { * Initialize --> CalibrationQualityLevel::UNDETERMINED * CalibrationQuality.value = * kUndeterminedCalibrationQuality - * SetInitialCalibration --> CalibrationQualityLevel::LOW_QUALITY - * CalibrationQuality.value = kLowQualityUt + * SetInitialCalibration --> CalibrationQualityLevel::UNDETERMINED + * CalibrationQuality.value = + * kUndeterminedCalibrationQuality * New Calibration Update --> CalibrationQualityLevel::HIGH_QUALITY * CalibrationQuality.value = kHighQualityUt */ -- cgit v1.2.3