| /* Copyright 2020 The ChromiumOS Authors |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| |
| #ifndef __CROS_EC_ONLINE_CALIBRATION_H |
| #define __CROS_EC_ONLINE_CALIBRATION_H |
| |
| #include "motion_sense.h" |
| #include "stdbool.h" |
| |
| /** |
| * Initialize the online calibration caches. |
| */ |
| void online_calibration_init(void); |
| |
| /** |
| * Process a new data measurement from a given sensor. |
| * |
| * @param data Pointer to the data that should be processed. |
| * @param sensor Pointer to the sensor that generated the data. |
| * @param timestamp The time associated with the sample |
| * @return EC_SUCCESS when successful. |
| */ |
| int online_calibration_process_data( |
| struct ec_response_motion_sensor_data *data, |
| struct motion_sensor_t *sensor, |
| uint32_t timestamp); |
| |
| /** |
| * Check if new calibration values are available since the last read. |
| * |
| * @return True if the calibration values have changed. |
| */ |
| bool online_calibration_has_new_values(void); |
| |
| /** |
| * Read available calibration values and reset dirty bits. |
| * |
| * @param sensor_num The sensor index to get the calibration values for. |
| * @param out The target to copy the data into. |
| * @return True if a value was written to `out`. |
| */ |
| bool online_calibration_read(struct motion_sensor_t *sensor, |
| struct ec_response_online_calibration_data *out); |
| |
| #endif /* __CROS_EC_ONLINE_CALIBRATION_H */ |