/*
	quat_accuracy_monitor.h
 $License:
    Copyright (C) 2011-2012 InvenSense Corporation, All Rights Reserved.
    See included License.txt for License information.
 $
 */

/*******************************************************************************
 *
 * $Id:$
 *
 ******************************************************************************/

#ifndef QUAT_ACCURARCY_MONITOR_H__
#define QUAT_ACCURARCY_MONITOR_H__

#include "mltypes.h"

#ifdef __cplusplus
extern "C" {
#endif
enum accuracy_signal_type_e {
    TYPE_NAV_QUAT,
    TYPE_GAM_QUAT,
    TYPE_NAV_QUAT_ADVANCED,
    TYPE_GAM_QUAT_ADVANCED,
    TYPE_NAV_QUAT_BASIC,
    TYPE_GAM_QUAT_BASIC,
    TYPE_MAG,
    TYPE_GYRO,
    TYPE_ACCEL,
};

inv_error_t inv_init_quat_accuracy_monitor(void);

void set_accuracy_threshold(enum accuracy_signal_type_e type, double threshold);
double get_accuracy_threshold(enum accuracy_signal_type_e type);
void set_accuracy_weight(enum accuracy_signal_type_e type, int weight);
int get_accuracy_weight(enum accuracy_signal_type_e type);

int8_t get_accuracy_accuracy(enum accuracy_signal_type_e type);

void inv_reset_quat_accuracy(void);
double get_6axis_correction_term(void);
double get_9axis_correction_term(void);
int get_9axis_accuracy_state();

void set_6axis_error_average(double value);
double get_6axis_error_bound(void);
double get_compass_correction(void);
double get_9axis_error_bound(void);

float get_confidence_interval(void);
void set_compass_uncertainty(float value);

inv_error_t inv_enable_quat_accuracy_monitor(void);
inv_error_t inv_disable_quat_accuracy_monitor(void);
inv_error_t inv_start_quat_accuracy_monitor(void);
inv_error_t inv_stop_quat_accuracy_monitor(void);

double get_compassNgravity(void);
double get_init_compassNgravity(void);

float inv_heading_accuracy_check(float orient[3], float *heading, int8_t *accuracy);

#ifdef __cplusplus
}
#endif

#endif // QUAT_ACCURARCY_MONITOR_H__
