Home | History | Annotate | Download | only in mpl
      1 /*
      2  $License:
      3     Copyright (C) 2011-2012 InvenSense Corporation, All Rights Reserved.
      4     See included License.txt for License information.
      5  $
      6  */
      7 
      8 #ifndef MLDMP_MAGDISTURB_H__
      9 #define MLDMP_MAGDISTURB_H__
     10 
     11 #include "mltypes.h"
     12 
     13 #ifdef __cplusplus
     14 extern "C" {
     15 #endif
     16 
     17    // #define WIN_8
     18 
     19     int inv_check_magnetic_disturbance(unsigned long delta_time, const long *quat,
     20         const long *compass, const long *gravity);
     21 
     22     void inv_track_world_yaw_angle_angle(int mode, float currdip);
     23 
     24     inv_error_t inv_enable_magnetic_disturbance(void);
     25     inv_error_t inv_disable_magnetic_disturbance(void);
     26     int inv_get_magnetic_disturbance_state();
     27 
     28     inv_error_t inv_set_magnetic_disturbance(int time_ms);
     29     inv_error_t inv_init_magnetic_disturbance(void);
     30 
     31     void inv_enable_magnetic_disturbance_logging(void);
     32     void inv_disable_magnetic_disturbance_logging(void);
     33 
     34     float Mag3ofNormalizedLong(const long *x);
     35     float Mag2ofNormalizedLong(const long *x);
     36     float Mag2ofNormalizedFloat(const float *x);
     37 
     38     int inv_mag_disturb_get_detect_status_3D(void);
     39     void inv_mag_disturb_set_detect_status_3D(int status);
     40 
     41     int inv_mag_disturb_get_drop_heading_accuracy_status(void);
     42     void inv_mag_disturb_set_drop_heading_accuracy_status(int status);
     43 
     44     int inv_mag_disturb_get_detect_weak_status_3D(void);
     45     void inv_mag_disturb_set_detect_weak_status_3D(int status);
     46 
     47     int inv_mag_disturb_get_detect_world_yaw_angle_status(void);
     48     void inv_mag_disturb_set_detect_world_yaw_angle_status(int status);
     49 
     50     int inv_mag_disturb_get_detect_world_yaw_angle_confirm_status(void);
     51     void inv_mag_disturb_set_detect_world_yaw_angle_confirm_status(int status);
     52 
     53     float inv_mag_disturb_get_vector_radius_3D(void);
     54     void inv_mag_disturb_set_vector_radius_3D(float radius);
     55 
     56     void inv_mag_disturb_world_yaw_angle_init(void);
     57     void inv_mag_disturb_world_yaw_angle_process(struct inv_sensor_cal_t *obj);
     58     //enum mag_distub_state_e inv_mag_disturb_get_mar_world_yaw_angle_state(void);
     59 
     60     char inv_mag_disturb_get_mar_world_yaw_angle_detection_status(void);
     61 
     62     float inv_mag_disturb_world_yaw_angle_distortion_from_gyro_bias(struct inv_sensor_cal_t *obj);
     63     int inv_mag_disturb_get_dip_compassNgravity(struct inv_sensor_cal_t *data);
     64 
     65     float inv_mag_disturb_9x_quat_confidence_interval(struct inv_sensor_cal_t *obj);
     66     float inv_mag_disturb_geo_mag_confidence_interval(struct inv_sensor_cal_t *obj);
     67 
     68     float inv_mag_disturb_world_yaw_angle_distortion_from_accel_compass_bias(float accel_bias_error, float compass_bias_error);
     69     float inv_mag_disturb_world_yaw_angle_distortion_from_accel_compass_only(float accel_bias_error, float compass_bias_error);
     70 
     71     void inv_mag_disturb_all_confidence_interval_init(void);
     72 
     73     /************************/
     74     /* external API         */
     75     /************************/
     76     float inv_mag_disturb_get_magnitude_threshold(void);
     77     void inv_mag_disturb_set_magnitude_threshold(float radius);
     78 
     79     float inv_mag_disturb_get_time_threshold_detect(void);
     80     void inv_mag_disturb_set_time_threshold_detect(float time_seconds);
     81 
     82     float inv_mag_disturb_get_local_field_radius(void);
     83     void inv_mag_disturb_set_local_field_radius(float radius);
     84 
     85     float inv_mag_disturb_get_local_field_dip(void);
     86     void inv_mag_disturb_set_local_field_dip(float dip);
     87 
     88 #ifdef __cplusplus
     89 }
     90 #endif
     91 
     92 
     93 #endif // MLDMP_MAGDISTURB_H__
     94