sensor: scaling gyro data for better accuracy
As a workaround fixing the issue that lsm6ds3 sensor chip measured angle
less than real rotated angle.
Change-Id: I3625511628c7dc1359c7d14dcf619637c8b807b6
Tracked-On: https://jira.ndg.intel.com/browse/MARVIN-925
Signed-off-by: Fei Li <feix.f.li@intel.com>
diff --git a/libsensors_iio/src/Gyroscope.cpp b/libsensors_iio/src/Gyroscope.cpp
index 20ab7b8..55011bc 100644
--- a/libsensors_iio/src/Gyroscope.cpp
+++ b/libsensors_iio/src/Gyroscope.cpp
@@ -88,6 +88,10 @@
void Gyroscope::ProcessData(SensorBaseData *data)
{
+#define X_SCALING_FACTOR 1
+#define Y_SCALING_FACTOR (360 / 350)
+#define Z_SCALING_FACTOR 1
+
float tmp_raw_data[num_data_axis];
#ifdef CONFIG_ST_HAL_GYRO_GBIAS_ESTIMATION_ENABLED
int64_t time_diff = 0;
@@ -131,9 +135,10 @@
data->processed[1] = data->raw[1] - data->offset[1];
data->processed[2] = data->raw[2] - data->offset[2];
- sensor_event.gyro.x = data->processed[0];
- sensor_event.gyro.y = data->processed[1];
- sensor_event.gyro.z = data->processed[2];
+ /* FIXME: scaling gyro data for better accuracy */
+ sensor_event.gyro.x = data->processed[0] * X_SCALING_FACTOR;
+ sensor_event.gyro.y = data->processed[1] * Y_SCALING_FACTOR;
+ sensor_event.gyro.z = data->processed[2] * Z_SCALING_FACTOR;
sensor_event.timestamp = data->timestamp;
HWSensorBaseWithPollrate::WriteDataToPipe();