android13/hardware/rockchip/sensor/st/akm09911/AKCompass.h

138 lines
3.4 KiB
C
Executable File

/******************************************************************************
*
* $Id: AKCompass.h 982 2013-02-08 04:20:37Z miyazaki.hr $
*
* -- Copyright Notice --
*
* Copyright (c) 2004 Asahi Kasei Microdevices Corporation, Japan
* All Rights Reserved.
*
* This software program is the proprietary program of Asahi Kasei Microdevices
* Corporation("AKM") licensed to authorized Licensee under the respective
* agreement between the Licensee and AKM only for use with AKM's electronic
* compass IC.
*
* THIS SOFTWARE IS PROVIDED TO YOU "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABLITY, FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT OF
* THIRD PARTY RIGHTS, AND WE SHALL NOT BE LIABLE FOR ANY LOSSES AND DAMAGES
* WHICH MAY OCCUR THROUGH USE OF THIS SOFTWARE.
*
* -- End Asahi Kasei Microdevices Copyright Notice --
*
******************************************************************************/
#ifndef AKMD_INC_AKCOMPASS_H
#define AKMD_INC_AKCOMPASS_H
#include "AKCommon.h"
#include "CustomerSpec.h"
#include "AKMD_Driver.h" // for using BYTE
//**************************************
// Include files for SmartCompass library.
//**************************************
#include "AKCertification.h"
#include "AKConfigure.h"
#include "AKDecomp.h"
#include "AKMDevice.h"
#include "AKDirection6D.h"
#include "AKHDOE.h"
#include "AKHFlucCheck.h"
#include "AKManualCal.h"
#include "AKVersion.h"
/*** Constant definition ******************************************************/
#define THETAFILTER_SCALE 4128
#define HFLUCV_TH 2500
#define PDC_SIZE 27
/*** Type declaration *********************************************************/
typedef enum _AKMD_PATNO {
PAT_INVALID = 0,
PAT1,
PAT2,
PAT3,
PAT4,
PAT5,
PAT6,
PAT7,
PAT8
} AKMD_PATNO;
/*! A parameter structure which is needed for HDOE and Direction calculation. */
typedef struct _AKSCPRMS{
// Variables for magnetic sensor.
int16vec m_ho;
int16vec HSUC_HO[CSPEC_NUM_FORMATION];
int32vec m_ho32;
int16vec m_hs;
int16vec HFLUCV_HREF[CSPEC_NUM_FORMATION];
AKSC_HFLUCVAR m_hflucv;
// Variables for DecompS3 .
int16vec m_hdata[AKSC_HDATA_SIZE];
int16 m_hn; // Number of acquired data
int16vec m_hvec; // Averaged value
int16vec m_asa;
uint8 m_pdc[PDC_SIZE];
uint8* m_pdcptr;
// Variables for HDOE.
AKSC_HDOEVAR m_hdoev;
AKSC_HDST m_hdst;
AKSC_HDST HSUC_HDST[CSPEC_NUM_FORMATION];
// Variables for formation change
int16 m_form;
int16 m_cntSuspend;
// Variables for Direction9D.
int16 m_d6dRet;
int16 m_hnave;
int16vec m_dvec;
int16 m_theta;
int16 m_delta;
int16 m_hr;
int16 m_hrhoriz;
int16 m_ar;
int16 m_phi180;
int16 m_phi90;
int16 m_eta180;
int16 m_eta90;
I16MATRIX m_mat;
I16QUAT m_quat;
// Variables for acceleration sensor.
int16vec m_AO;
int16vec m_avec;
// Layout information
AKMD_PATNO m_hlayout;
//AKMD_PATNO m_alayout;
//AKMD_PATNO m_glayout;
// Variables for decimation.
int16 m_callcnt;
// Ceritication
uint8 m_licenser[AKSC_CI_MAX_CHARSIZE+1]; //end with '\0'
uint8 m_licensee[AKSC_CI_MAX_CHARSIZE+1]; //end with '\0'
int16 m_key[AKSC_CI_MAX_KEYSIZE];
// base
int32vec m_hbase;
int32vec HSUC_HBASE[CSPEC_NUM_FORMATION];
} AKSCPRMS;
/*** Global variables *********************************************************/
/*** Prototype of function ****************************************************/
#endif //AKMD_INC_AKCOMPASS_H