summaryrefslogtreecommitdiff
path: root/peripheral/sensors
diff options
context:
space:
mode:
authorConstantin Musca <constantin.musca@intel.com>2015-11-27 17:00:08 +0200
committerConstantin Musca <constantin.musca@intel.com>2015-12-07 16:33:51 +0200
commitd6572c0c36e5e96c4a40bb6d8728d0fef0adc351 (patch)
tree079ddc5dafec46df3205dc189346553f93437f3d /peripheral/sensors
parent748d6cd3dec472369f0de2eab0fff7a1e80d77ab (diff)
downloadintel-d6572c0c36e5e96c4a40bb6d8728d0fef0adc351.tar.gz
sensors: correctly scale the accelerometer values
The UPM accelerometers' values are in counts/g. However, the sensors.h mandates that the values should be in SI units (m/s^2). Scale the values by multiplying with the gravitational acceleration constant. BUG=26009894 Tracked-On: https://jira01.devtools.intel.com/browse/BP-145 Change-Id: If9d4733fd2f70c4c4faebdcd39804f7463fc3eef Signed-off-by: Constantin Musca <constantin.musca@intel.com>
Diffstat (limited to 'peripheral/sensors')
-rw-r--r--peripheral/sensors/edison_arduino/Sensor.cpp2
-rw-r--r--peripheral/sensors/edison_arduino/Sensor.hpp5
-rw-r--r--peripheral/sensors/edison_arduino/sensors/MMA7660Accelerometer.cpp3
-rw-r--r--peripheral/sensors/edison_arduino/sensors/MPU9150Accelerometer.cpp3
4 files changed, 13 insertions, 0 deletions
diff --git a/peripheral/sensors/edison_arduino/Sensor.cpp b/peripheral/sensors/edison_arduino/Sensor.cpp
index e44ff60..8a93b81 100644
--- a/peripheral/sensors/edison_arduino/Sensor.cpp
+++ b/peripheral/sensors/edison_arduino/Sensor.cpp
@@ -21,6 +21,8 @@
/* maximum delay: 1000ms */
const int64_t kMaxDelay = 1000000000;
+/* Gravitational acceleration constant in m/s^2 */
+const float Sensor::kGravitationalAcceleration = 9.81f;
Sensor::Sensor() : acquisitionThread(nullptr), handle(-1), type(-1), delay(kMaxDelay) {}
diff --git a/peripheral/sensors/edison_arduino/Sensor.hpp b/peripheral/sensors/edison_arduino/Sensor.hpp
index a1c2663..d28a398 100644
--- a/peripheral/sensors/edison_arduino/Sensor.hpp
+++ b/peripheral/sensors/edison_arduino/Sensor.hpp
@@ -118,6 +118,11 @@ class Sensor {
*/
int64_t getDelay() { return delay; }
+ /**
+ * Gravitational acceleration constant in m/s^2
+ */
+ static const float kGravitationalAcceleration;
+
protected:
/**
diff --git a/peripheral/sensors/edison_arduino/sensors/MMA7660Accelerometer.cpp b/peripheral/sensors/edison_arduino/sensors/MMA7660Accelerometer.cpp
index c63ffaa..0947b25 100644
--- a/peripheral/sensors/edison_arduino/sensors/MMA7660Accelerometer.cpp
+++ b/peripheral/sensors/edison_arduino/sensors/MMA7660Accelerometer.cpp
@@ -45,6 +45,9 @@ MMA7660Accelerometer::~MMA7660Accelerometer() {}
int MMA7660Accelerometer::pollEvents(sensors_event_t* data, int count) {
getAcceleration(&data->acceleration.x, &data->acceleration.y, &data->acceleration.z);
+ data->acceleration.x *= Sensor::kGravitationalAcceleration;
+ data->acceleration.y *= Sensor::kGravitationalAcceleration;
+ data->acceleration.z *= Sensor::kGravitationalAcceleration;
return 1;
}
diff --git a/peripheral/sensors/edison_arduino/sensors/MPU9150Accelerometer.cpp b/peripheral/sensors/edison_arduino/sensors/MPU9150Accelerometer.cpp
index 446de3c..f8ba355 100644
--- a/peripheral/sensors/edison_arduino/sensors/MPU9150Accelerometer.cpp
+++ b/peripheral/sensors/edison_arduino/sensors/MPU9150Accelerometer.cpp
@@ -47,6 +47,9 @@ MPU9150Accelerometer::~MPU9150Accelerometer() {}
int MPU9150Accelerometer::pollEvents(sensors_event_t* data, int count) {
update();
getAccelerometer(&data->acceleration.x, &data->acceleration.y, &data->acceleration.z);
+ data->acceleration.x *= Sensor::kGravitationalAcceleration;
+ data->acceleration.y *= Sensor::kGravitationalAcceleration;
+ data->acceleration.z *= Sensor::kGravitationalAcceleration;
return 1;
}