diff options
Diffstat (limited to 'libsensors_iio/src')
-rw-r--r-- | libsensors_iio/src/Android.mk | 4 | ||||
-rw-r--r-- | libsensors_iio/src/SWAccelGyroFusion6X.cpp | 26 | ||||
-rw-r--r-- | libsensors_iio/src/SWAccelGyroFusion6X.h | 4 | ||||
-rw-r--r-- | libsensors_iio/src/SWGravity.cpp | 6 | ||||
-rw-r--r-- | libsensors_iio/src/SWLinearAccel.cpp | 6 | ||||
-rw-r--r-- | libsensors_iio/src/SensorHAL.h | 4 | ||||
-rw-r--r-- | libsensors_iio/src/android_L_defconfig | 1 |
7 files changed, 36 insertions, 15 deletions
diff --git a/libsensors_iio/src/Android.mk b/libsensors_iio/src/Android.mk index 91fbe61..39eca67 100644 --- a/libsensors_iio/src/Android.mk +++ b/libsensors_iio/src/Android.mk @@ -46,8 +46,8 @@ endif ifdef CONFIG_ST_HAL_HAS_6AX_FUSION -LOCAL_C_INCLUDES += $(LOCAL_PATH)/../lib/iNemoEngine_SensorFusion -LOCAL_STATIC_LIBRARIES += iNemoEngine_SensorFusion +LOCAL_C_INCLUDES += $(LOCAL_PATH)/../lib/vSensorFusion +LOCAL_LDFLAGS += $(LOCAL_PATH)/../lib/vSensorFusion/vSensorFusion.a else ifdef CONFIG_ST_HAL_HAS_9AX_FUSION LOCAL_C_INCLUDES += $(LOCAL_PATH)/../lib/iNemoEngine_SensorFusion 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); diff --git a/libsensors_iio/src/SWAccelGyroFusion6X.h b/libsensors_iio/src/SWAccelGyroFusion6X.h index 1e2fdd8..601191e 100644 --- a/libsensors_iio/src/SWAccelGyroFusion6X.h +++ b/libsensors_iio/src/SWAccelGyroFusion6X.h @@ -21,7 +21,9 @@ #include "SWSensorBase.h" #define ST_ACCEL_GYRO_ROTATION_VECTOR_OUT_ID (0) -#define ST_ACCEL_GYRO_MAX_OUT_ID (1) +#define ST_ACCEL_GYRO_LINEAR_ACCEL_OUT_ID (1) +#define ST_ACCEL_GYRO_GRAVITY_OUT_ID (2) +#define ST_ACCEL_GYRO_MAX_OUT_ID (3) class SWAccelGyroFusion6X : public SWSensorBaseWithPollrate { protected: diff --git a/libsensors_iio/src/SWGravity.cpp b/libsensors_iio/src/SWGravity.cpp index 4bb8d35..34362aa 100644 --- a/libsensors_iio/src/SWGravity.cpp +++ b/libsensors_iio/src/SWGravity.cpp @@ -20,10 +20,10 @@ SWGravity::SWGravity(const char *name, int handle, int pipe_data_fd) : sensor_t_data.stringType = SENSOR_STRING_TYPE_GRAVITY; sensor_t_data.flags = SENSOR_FLAG_CONTINUOUS_MODE; - sensor_t_data.maxRange = CONFIG_ST_HAL_ACCEL_RANGE; + type_dependencies[SENSOR_BASE_DEPENDENCY_0] = SENSOR_TYPE_ST_ACCEL_GYRO_FUSION6X; + type_sensor_need_trigger = SENSOR_TYPE_ST_ACCEL_GYRO_FUSION6X; - type_dependencies[SENSOR_BASE_DEPENDENCY_0] = SENSOR_TYPE_ST_ACCEL_MAGN_GYRO_FUSION9X; - type_sensor_need_trigger = SENSOR_TYPE_ST_ACCEL_MAGN_GYRO_FUSION9X; + num_data_axis = SENSOR_BASE_4AXIS; } SWGravity::~SWGravity() diff --git a/libsensors_iio/src/SWLinearAccel.cpp b/libsensors_iio/src/SWLinearAccel.cpp index 111d822..2afa018 100644 --- a/libsensors_iio/src/SWLinearAccel.cpp +++ b/libsensors_iio/src/SWLinearAccel.cpp @@ -20,10 +20,10 @@ SWLinearAccel::SWLinearAccel(const char *name, int handle, int pipe_data_fd) : sensor_t_data.stringType = SENSOR_STRING_TYPE_LINEAR_ACCELERATION; sensor_t_data.flags = SENSOR_FLAG_CONTINUOUS_MODE; - sensor_t_data.maxRange = CONFIG_ST_HAL_ACCEL_RANGE; + type_dependencies[SENSOR_BASE_DEPENDENCY_0] = SENSOR_TYPE_ST_ACCEL_GYRO_FUSION6X; + type_sensor_need_trigger = SENSOR_TYPE_ST_ACCEL_GYRO_FUSION6X; - type_dependencies[SENSOR_BASE_DEPENDENCY_0] = SENSOR_TYPE_ST_ACCEL_MAGN_GYRO_FUSION9X; - type_sensor_need_trigger = SENSOR_TYPE_ST_ACCEL_MAGN_GYRO_FUSION9X; + num_data_axis = SENSOR_BASE_4AXIS; } SWLinearAccel::~SWLinearAccel() diff --git a/libsensors_iio/src/SensorHAL.h b/libsensors_iio/src/SensorHAL.h index 99d4646..9f5a557 100644 --- a/libsensors_iio/src/SensorHAL.h +++ b/libsensors_iio/src/SensorHAL.h @@ -67,7 +67,9 @@ #endif /* CONFIG_ST_HAL_GAME_ROT_VECTOR_AP_ENABLED */ #if defined(CONFIG_ST_HAL_HAS_6AX_FUSION) && \ - (defined(CONFIG_ST_HAL_GAME_ROT_VECTOR_AP_ENABLED)) + (defined(CONFIG_ST_HAL_GAME_ROT_VECTOR_AP_ENABLED) || \ + defined(CONFIG_ST_HAL_GRAVITY_AP_ENABLED) || \ + defined(CONFIG_ST_HAL_LINEAR_AP_ENABLED)) #define ST_HAL_NEEDS_6AX_FUSION 1 #endif /* CONFIG_ST_HAL_GAME_ROT_VECTOR_AP_ENABLED */ diff --git a/libsensors_iio/src/android_L_defconfig b/libsensors_iio/src/android_L_defconfig index 2add11a..297ebb9 100644 --- a/libsensors_iio/src/android_L_defconfig +++ b/libsensors_iio/src/android_L_defconfig @@ -53,6 +53,7 @@ CONFIG_ST_HAL_RELATIVE_TILT_DISABLED=y # # Common configuration # +CONFIG_ST_HAL_MIN_FUSION_POLLRATE=50 CONFIG_ST_HAL_MAX_SAMPLING_FREQUENCY=200 CONFIG_ST_HAL_DEBUG_LEVEL=0 CONFIG_ST_HAL_ACCEL_ROT_MATRIX="1,0,0,0,1,0,0,0,1" |