diff options
author | davejacobs: David Jacobs <davejacobs@google.com> | 2021-09-17 20:38:34 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2021-09-17 20:38:34 +0000 |
commit | 8b414e0590716d5c0d110ee51f21f0c2980d40db (patch) | |
tree | 82f7096787b1725e43d25ddb001c86309dad4c35 | |
parent | bc46b2afdba95a901caf4eb1ada34569e53057f9 (diff) | |
parent | 577dd4467313d30a947abcff8f4be70230da085a (diff) | |
download | contexthub-8b414e0590716d5c0d110ee51f21f0c2980d40db.tar.gz |
[DO NOT MERGE] Support ImuCal hinge-angle integration am: 577dd44673
Original change: https://googleplex-android-review.googlesource.com/c/device/google/contexthub/+/15844908
Change-Id: I98b4c91fef38633c126c18f06ae10d8fdcd82469
3 files changed, 18 insertions, 1 deletions
diff --git a/firmware/os/algos/calibration/online_calibration/common_data/calibration_quality.h b/firmware/os/algos/calibration/online_calibration/common_data/calibration_quality.h index d6475c78..6b146f49 100644 --- a/firmware/os/algos/calibration/online_calibration/common_data/calibration_quality.h +++ b/firmware/os/algos/calibration/online_calibration/common_data/calibration_quality.h @@ -65,7 +65,7 @@ enum class CalibrationQualityLevel : uint8_t { // Sets the calibration quality value when this metric is either not // implemented, or has not yet been determined (e.g., a calibration hasn't // occurred). -constexpr float kUndeterminedCalibrationQuality = -1.0f; +constexpr float kUndeterminedCalibrationQuality = FLT_MAX; /* * Calibration quality structure that contains a quantitative (float) and 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 8c95f9ba..710c442c 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 @@ -26,6 +26,14 @@ namespace online_calibration { +// Device physical state change types. +enum class PhysicalStateType : uint8_t { + kUnknownPhysicalState = 0, + kFoldableOpen, + kFoldableClosed, + kNumPhysicalStateTypes, +}; + /* * This abstract base class provides a set of general interface functions for * calibration algorithms. The data structures used are intended to be lean and @@ -130,6 +138,13 @@ class OnlineCalibration { // Returns the sensor-type this calibration algorithm provides updates for. virtual SensorType get_sensor_type() const = 0; + // Tells the calibrator that the device's physical state has changed. This is + // useful, for example, if there is a need for the calibration algorithm to be + // aware of and take some sort of internal action in response to a physical + // state change (e.g., for foldable devices, MagCal may adjust internal states + // to implement specific transition behavior between open/closed states). + virtual void UpdatePhysicalState(PhysicalStateType physical_state) {} + protected: // Helper function that activates the registered callback. void OnNotifyCalibrationUpdate(CalibrationTypeFlags cal_update_flags) const { diff --git a/firmware/os/algos/calibration/online_calibration/common_data/sensor_data.h b/firmware/os/algos/calibration/online_calibration/common_data/sensor_data.h index 23b63c9b..b6d6eb37 100644 --- a/firmware/os/algos/calibration/online_calibration/common_data/sensor_data.h +++ b/firmware/os/algos/calibration/online_calibration/common_data/sensor_data.h @@ -48,6 +48,8 @@ enum class SensorType : int8_t { kBarometerHpa = 5, // 1-axis sensor (units = hecto-Pascal). kWifiM = 6, // 3-axis sensor (units = meter). kProximity = 7, // 1-axis sensor (units = ?). + kHallEffect = 8, // 1-axis sensor (units = ?). + kHingeAngle = 9, // 1-axis sensor (units = degrees). }; // Helper function for determining if a sensor type is 3-axis, otherwise it's |