summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorandroid-build-team Robot <android-build-team-robot@google.com>2018-05-16 07:21:14 +0000
committerandroid-build-team Robot <android-build-team-robot@google.com>2018-05-16 07:21:14 +0000
commitc43da21156b6702b4e0ea337e68143bf582150bc (patch)
tree2212d06994bfe8658c8e83da902560c0efd36957
parent96d2f520c328bb505d429e925a1496473f3952fe (diff)
parentc38f7821ce07c8395913e96c03b2c13680fa05a4 (diff)
downloaddevice_google_contexthub-c43da21156b6702b4e0ea337e68143bf582150bc.tar.gz
device_google_contexthub-c43da21156b6702b4e0ea337e68143bf582150bc.tar.bz2
device_google_contexthub-c43da21156b6702b4e0ea337e68143bf582150bc.zip
Snap for 4784261 from c38f7821ce07c8395913e96c03b2c13680fa05a4 to pi-release
Change-Id: I87531d4762c5427c06d8b6b935d078362549bacc
-rw-r--r--firmware/os/algos/calibration/diversity_checker/diversity_checker.h5
-rw-r--r--firmware/os/algos/calibration/magnetometer/mag_cal/mag_cal.h5
-rw-r--r--firmware/os/algos/calibration/nano_calibration/nano_calibration.cc9
-rw-r--r--firmware/os/algos/calibration/online_calibration/common_data/online_calibration.h11
-rw-r--r--firmware/os/algos/calibration/online_calibration/magnetometer/mag_diverse_cal/mag_diverse_cal.cc6
-rw-r--r--firmware/os/algos/calibration/online_calibration/magnetometer/mag_diverse_cal/mag_diverse_cal.h5
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 <stddef.h>
#include <stdint.h>
+#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 <stdbool.h>
#include <stdint.h>
#include <sys/types.h>
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
*/