1/* 2 $License: 3 Copyright (C) 2011-2012 InvenSense Corporation, All Rights Reserved. 4 See included License.txt for License information. 5 $ 6 */ 7#include "mltypes.h" 8 9#ifndef INV_RESULTS_HOLDER_H__ 10#define INV_RESULTS_HOLDER_H__ 11 12#ifdef __cplusplus 13extern "C" { 14#endif 15 16#define INV_MOTION 0x0001 17#define INV_NO_MOTION 0x0002 18 19 /**************************************************************************/ 20 /* The value of inv_get_gyro_sum_of_sqr is scaled such the (1 dps)^2 = */ 21 /* 2^GYRO_MAG_SQR_SHIFT. This number must be >=0 and even. */ 22 /* The value of inv_accel_sum_of_sqr is scaled such that (1g)^2 = */ 23 /* 2^ACC_MAG_SQR_SHIFT */ 24 /**************************************************************************/ 25#define ACC_MAG_SQR_SHIFT 16 26 27void inv_store_gaming_quaternion(const long *quat, inv_time_t timestamp); 28void inv_store_accel_quaternion(const long *quat, inv_time_t timestamp); 29 30// States 31#define SF_NORMAL 0 32#define SF_UNCALIBRATED 1 33#define SF_STARTUP_SETTLE 2 34#define SF_FAST_SETTLE 3 35#define SF_DISTURBANCE 4 36#define SF_SLOW_SETTLE 5 37 38int inv_get_acc_state(); 39void inv_set_acc_state(int state); 40int inv_get_motion_state(unsigned int *cntr); 41void inv_set_motion_state(unsigned char state); 42inv_error_t inv_get_gravity(long *data); 43inv_error_t inv_get_gravity_6x(long *data); 44inv_error_t inv_get_6axis_quaternion(long *data, inv_time_t *timestamp); 45inv_error_t inv_get_quaternion(long *data); 46inv_error_t inv_get_quaternion_float(float *data); 47void inv_get_quaternion_set(long *data, int *accuracy, inv_time_t *timestamp); 48inv_error_t inv_get_accel_quaternion(long *data); 49inv_error_t inv_get_geomagnetic_quaternion(long *data, inv_time_t *timestamp); 50void inv_set_geomagnetic_compass_correction(const long *data, inv_time_t timestamp); 51void inv_get_geomagnetic_compass_correction(long *data, inv_time_t *timestamp); 52 53inv_error_t inv_enable_results_holder(); 54inv_error_t inv_init_results_holder(void); 55 56/* Magnetic Field Parameters*/ 57void inv_set_local_field(const long *data); 58void inv_get_local_field(long *data); 59void inv_set_mag_scale(const long *data); 60void inv_get_mag_scale(long *data); 61void inv_set_compass_correction(const long *data, inv_time_t timestamp); 62void inv_get_compass_correction(long *data, inv_time_t *timestamp); 63int inv_got_compass_bias(); 64void inv_set_compass_bias_found(int state); 65int inv_get_large_mag_field(); 66void inv_set_large_mag_field(int state); 67void inv_set_compass_state(int state); 68int inv_get_compass_state(); 69void inv_set_compass_bias_error(const long *bias_error); 70void inv_get_compass_bias_error(long *bias_error); 71inv_error_t inv_get_linear_accel(long *data); 72inv_error_t inv_get_accel(long *data); 73inv_error_t inv_get_accel_float(float *data); 74inv_error_t inv_get_gyro_float(float *data); 75inv_error_t inv_get_linear_accel_float(float *data); 76void inv_set_heading_confidence_interval(float ci); 77float inv_get_heading_confidence_interval(void); 78 79void inv_set_accel_compass_confidence_interval(float ci); 80float inv_get_accel_compass_confidence_interval(void); 81 82int inv_got_accel_bias(); 83void inv_set_accel_bias_found(int state); 84 85 86#ifdef __cplusplus 87} 88#endif 89 90#endif // INV_RESULTS_HOLDER_H__ 91