summaryrefslogtreecommitdiffstats
path: root/libsensors_iio/software/core/mllite/ml_math_func.h
diff options
context:
space:
mode:
authorJP Abgrall <jpa@google.com>2012-10-03 20:16:57 -0700
committerJP Abgrall <jpa@google.com>2012-10-03 20:16:57 -0700
commit33ce91b37062fa63af192f5643de93f3beebe854 (patch)
treeba6a03c7954a32ce23b00c6d46cd3d524f4d7007 /libsensors_iio/software/core/mllite/ml_math_func.h
parent64ca18f95225d0a86f7ccfd1d21c23971b9f77ae (diff)
downloadandroid_hardware_invensense-33ce91b37062fa63af192f5643de93f3beebe854.tar.gz
android_hardware_invensense-33ce91b37062fa63af192f5643de93f3beebe854.tar.bz2
android_hardware_invensense-33ce91b37062fa63af192f5643de93f3beebe854.zip
1. Removed all #ifdef in HAL's member APIs. 2. Added necessary comments as reference. 3. Made changes for coding style, optimization and so on per prior comments. 4. Now raw/calibrated gyroscope sensors could co-exist Default sensor would be calibrated gyroscope sensor for getDefaultSensor() call in Android. * Correctly handle onPower()/masterEnable(). * Use the support functions for reading/writing sysfs. 1 line instead of 9 all over the place. * Fix return code for {read,write}_sysfs_int(): was > 0 in case of failure instead of < 0. Bug: 7211625 Change-Id: Ib49dab8ca0f48f45a2838de72f4f8ac011d0e68f
Diffstat (limited to 'libsensors_iio/software/core/mllite/ml_math_func.h')
-rw-r--r--libsensors_iio/software/core/mllite/ml_math_func.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/libsensors_iio/software/core/mllite/ml_math_func.h b/libsensors_iio/software/core/mllite/ml_math_func.h
index 916de0a..535d849 100644
--- a/libsensors_iio/software/core/mllite/ml_math_func.h
+++ b/libsensors_iio/software/core/mllite/ml_math_func.h
@@ -24,6 +24,13 @@
extern "C" {
#endif
+ typedef struct {
+ float state[4];
+ float c[5];
+ float input;
+ float output;
+ } inv_biquad_filter_t;
+
static inline float inv_q30_to_float(long q30)
{
return (float) q30 / ((float)(1L << 30));
@@ -102,6 +109,11 @@ extern "C" {
double quaternion_to_rotation_angle(const long *quat);
double inv_vector_norm(const float *x);
+ void inv_init_biquad_filter(inv_biquad_filter_t *pFilter, float *pBiquadCoeff);
+ float inv_biquad_filter_process(inv_biquad_filter_t *pFilter, float input);
+ void inv_calc_state_to_match_output(inv_biquad_filter_t *pFilter, float input);
+ void inv_get_cross_product_vec(float *cgcross, float compass[3], float grav[3]);
+
#ifdef __cplusplus
}
#endif