summaryrefslogtreecommitdiff
path: root/libsensors_iio/src
diff options
context:
space:
mode:
Diffstat (limited to 'libsensors_iio/src')
-rw-r--r--libsensors_iio/src/Android.mk4
-rw-r--r--libsensors_iio/src/SWAccelGyroFusion6X.cpp26
-rw-r--r--libsensors_iio/src/SWAccelGyroFusion6X.h4
-rw-r--r--libsensors_iio/src/SWGravity.cpp6
-rw-r--r--libsensors_iio/src/SWLinearAccel.cpp6
-rw-r--r--libsensors_iio/src/SensorHAL.h4
-rw-r--r--libsensors_iio/src/android_L_defconfig1
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"