diff options
author | Saadi Maalem <saadi.maalem@intel.com> | 2015-07-29 15:09:14 +0800 |
---|---|---|
committer | Zhengyin Qian <qianzy@google.com> | 2015-08-28 14:54:03 -0700 |
commit | aedbd2bfdcf85c9d2fdb4b95098c2c501048ef3f (patch) | |
tree | 1b386a37223a03235529df823ec5517f73e1cca4 /libsensors_iio/src/SWAccelGyroFusion6X.cpp | |
parent | 7a627f4f16f24947625bd0ef59e78e32222fdd00 (diff) | |
download | sensors-aedbd2bfdcf85c9d2fdb4b95098c2c501048ef3f.tar.gz |
sensor: add Gravity and Linear Accelerometer virtual sensors support
JIRA: MARVIN-522
Change-Id: I8ea95dfd8c2fff3ed4df5c59d808d45fccb238d0
Signed-off-by: Fei Li <feix.f.li@intel.com>
Reviewed-on: https://android.intel.com/394732
Reviewed-by: Maalem, Saadi <saadi.maalem@intel.com>
Reviewed-by: Tasayco Loarte, VictorX <victorx.tasayco.loarte@intel.com>
Diffstat (limited to 'libsensors_iio/src/SWAccelGyroFusion6X.cpp')
-rw-r--r-- | libsensors_iio/src/SWAccelGyroFusion6X.cpp | 26 |
1 files changed, 21 insertions, 5 deletions
diff --git a/libsensors_iio/src/SWAccelGyroFusion6X.cpp b/libsensors_iio/src/SWAccelGyroFusion6X.cpp index f03c950..83f8bd5 100644 --- a/libsensors_iio/src/SWAccelGyroFusion6X.cpp +++ b/libsensors_iio/src/SWAccelGyroFusion6X.cpp @@ -14,7 +14,7 @@ #include "SWAccelGyroFusion6X.h" extern "C" { - #include "iNemoEngineAPI.h" + #include "vSensorAPI.h" } SWAccelGyroFusion6X::SWAccelGyroFusion6X(const char *name, int handle, int pipe_data_fd) : @@ -30,7 +30,7 @@ SWAccelGyroFusion6X::SWAccelGyroFusion6X(const char *name, int handle, int pipe_ type_dependencies[SENSOR_BASE_DEPENDENCY_1] = SENSOR_TYPE_GYROSCOPE; type_sensor_need_trigger = SENSOR_TYPE_GYROSCOPE; - iNemoEngine_API_Initialization_6X(NULL); + vSensor_API_Initialization_6X(NULL); } SWAccelGyroFusion6X::~SWAccelGyroFusion6X() @@ -51,7 +51,7 @@ int SWAccelGyroFusion6X::Enable(int handle, bool enable) if ((GetStatus() && !old_status) || (!GetStatus() && old_status)) { sensor_event.timestamp = 0; - iNemoEngine_API_enable_6X(enable); + vSensor_API_enable_6X(enable); } return 0; @@ -84,6 +84,12 @@ void SWAccelGyroFusion6X::SplitAndProcessData(SensorBaseData data[ST_ACCEL_GYRO_ case SENSOR_TYPE_GAME_ROTATION_VECTOR: id = ST_ACCEL_GYRO_ROTATION_VECTOR_OUT_ID; break; + case SENSOR_TYPE_LINEAR_ACCELERATION: + id = ST_ACCEL_GYRO_LINEAR_ACCEL_OUT_ID; + break; + case SENSOR_TYPE_GRAVITY: + id = ST_ACCEL_GYRO_GRAVITY_OUT_ID; + break; default: continue; } @@ -126,15 +132,25 @@ void SWAccelGyroFusion6X::TriggerEventReceived() } while ((time_diff >= GetRealPollrate()) && (nomaxdata > 0)); if (err >= 0) - iNemoEngine_API_Run_6X(accel_data.raw, gyro_data.processed, gyro_data.timestamp); + vSensor_API_Run_6X(accel_data.raw, gyro_data.processed, gyro_data.timestamp); sensor_event.timestamp = gyro_data.timestamp; - err = iNemoEngine_API_Get_Quaternion_6X(outdata[ST_ACCEL_GYRO_ROTATION_VECTOR_OUT_ID].processed); + err = vSensor_API_Get_Quaternion_6X(outdata[ST_ACCEL_GYRO_ROTATION_VECTOR_OUT_ID].processed); + if (err < 0) + return; + + err = vSensor_API_Get_LinAcc_6X(outdata[ST_ACCEL_GYRO_LINEAR_ACCEL_OUT_ID].processed); + if (err < 0) + return; + + err = vSensor_API_Get_Gravity_6X(outdata[ST_ACCEL_GYRO_GRAVITY_OUT_ID].processed); if (err < 0) return; outdata[ST_ACCEL_GYRO_ROTATION_VECTOR_OUT_ID].timestamp = sensor_event.timestamp; + outdata[ST_ACCEL_GYRO_LINEAR_ACCEL_OUT_ID].timestamp = sensor_event.timestamp; + outdata[ST_ACCEL_GYRO_GRAVITY_OUT_ID].timestamp = sensor_event.timestamp; SplitAndProcessData(outdata); } while (data_remaining_gyro > 0); |