176 lines
6 KiB
C
176 lines
6 KiB
C
/*
|
|
$License:
|
|
Copyright 2011 InvenSense, Inc.
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
$
|
|
*/
|
|
/*******************************************************************************
|
|
*
|
|
* $Id: mldl.h 5639 2011-06-14 01:23:05Z nroyer $
|
|
*
|
|
*******************************************************************************/
|
|
|
|
#ifndef MLDL_H
|
|
#define MLDL_H
|
|
|
|
#include "mltypes.h"
|
|
#include "mlsl.h"
|
|
#include <linux/mpu.h>
|
|
#include "mldl_cfg.h"
|
|
#ifdef INV_INCLUDE_LEGACY_HEADERS
|
|
#include "mldl_legacy.h"
|
|
#endif
|
|
|
|
/* ------------ */
|
|
/* - Defines. - */
|
|
/* ------------ */
|
|
|
|
typedef enum _DEVICE_CONFIG {
|
|
DEVICE_MPU_ACCEL = 0,
|
|
DEVICE_MPU,
|
|
NUM_OF_DEVICES
|
|
} DEVICE_CONFIG;
|
|
|
|
#define SERIAL_I2C 0
|
|
#define SERIAL_SPI 1
|
|
|
|
#define DATAMODE_MANUAL 0 // Manual data mode
|
|
#define DATAMODE_AUTO 1 // Auto data mode
|
|
|
|
#define DATASRC_IMMEDIATE 0 // Return data immediately
|
|
#define DATASRC_WHENREADY 1 // Only return data when new data is available
|
|
#define DATASRC_FIFO 2 // Use FIFO for data
|
|
|
|
#define SENSOR_DATA_GYROX 0x0001
|
|
#define SENSOR_DATA_GYROY 0x0002
|
|
#define SENSOR_DATA_GYROZ 0x0004
|
|
#define SENSOR_DATA_ACCELX 0x0008
|
|
#define SENSOR_DATA_ACCELY 0x0010
|
|
#define SENSOR_DATA_ACCELZ 0x0020
|
|
#define SENSOR_DATA_AUX1 0x0040
|
|
#define SENSOR_DATA_AUX2 0x0080
|
|
#define SENSOR_DATA_AUX3 0x0100
|
|
#define SENSOR_DATA_TEMP 0x0200
|
|
|
|
#define INTPIN_MPU 0
|
|
|
|
#define INTLOGIC_HIGH 0
|
|
#define INTLOGIC_LOW 1
|
|
|
|
#define INTTYPE_PUSHPULL 0
|
|
#define INTTYPE_OPENDRAIN 1
|
|
|
|
#define INTLATCH_DISABLE 0
|
|
#define INTLATCH_ENABLE 1
|
|
|
|
#define MPUINT_MPU_READY 0x04
|
|
#define MPUINT_DMP_DONE 0x02
|
|
#define MPUINT_DATA_READY 0x01
|
|
|
|
#define INTLATCHCLEAR_READSTATUS 0
|
|
#define INTLATCHCLEAR_ANYREAD 1
|
|
|
|
#define DMP_DONTRUN 0
|
|
#define DMP_RUN 1
|
|
|
|
/*---- defines for external interrupt status (via external call into library) ----*/
|
|
#define INT_CLEAR 0
|
|
#define INT_TRIGGERED 1
|
|
|
|
typedef enum {
|
|
INTSRC_MPU = 0,
|
|
INTSRC_AUX1,
|
|
INTSRC_AUX2,
|
|
INTSRC_AUX3,
|
|
INTSRC_TIMER,
|
|
INTSRC_UNKNOWN,
|
|
INTSRC_MPU_FIFO,
|
|
INTSRC_MPU_MOTION,
|
|
NUM_OF_INTSOURCES,
|
|
} INT_SOURCE;
|
|
|
|
/* --------------- */
|
|
/* - Structures. - */
|
|
/* --------------- */
|
|
|
|
/* --------------- */
|
|
/* - Variables. - */
|
|
/* --------------- */
|
|
|
|
/* --------------------- */
|
|
/* - Function p-types. - */
|
|
/* --------------------- */
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
inv_error_t inv_dl_open(void *mlslHandle);
|
|
inv_error_t inv_dl_close(void);
|
|
|
|
inv_error_t inv_dl_start(unsigned long sensors);
|
|
inv_error_t inv_dl_stop(unsigned long sensors);
|
|
|
|
struct mldl_cfg *inv_get_dl_config(void);
|
|
|
|
inv_error_t inv_init_requested_sensors(unsigned long sensors);
|
|
unsigned char inv_get_mpu_slave_addr(void);
|
|
inv_error_t inv_get_dl_ctrl_dmp(unsigned char enableRun,
|
|
unsigned char enableFIFO);
|
|
inv_error_t inv_get_dl_cfg_int(unsigned char triggers);
|
|
inv_error_t inv_dl_cfg_sampling(unsigned char lpf, unsigned char divider);
|
|
inv_error_t inv_set_full_scale(float fullScale);
|
|
inv_error_t inv_set_external_sync(unsigned char extSync);
|
|
inv_error_t inv_set_ignore_system_suspend(unsigned char ignore);
|
|
inv_error_t inv_clock_source(unsigned char clkSource);
|
|
inv_error_t inv_get_mpu_memory(unsigned short key,
|
|
unsigned short length,
|
|
unsigned char *buffer);
|
|
inv_error_t inv_set_mpu_memory(unsigned short key,
|
|
unsigned short length,
|
|
const unsigned char *buffer);
|
|
inv_error_t inv_load_dmp(const unsigned char *buffer,
|
|
unsigned short length,
|
|
unsigned short startAddress);
|
|
|
|
unsigned char inv_get_slicon_rev(void);
|
|
inv_error_t inv_set_offsetTC(const unsigned char *tc);
|
|
inv_error_t inv_set_offset(const short *offset);
|
|
|
|
/* Functions for setting and retrieving the DMP memory */
|
|
inv_error_t inv_get_mpu_memory_original(unsigned short key,
|
|
unsigned short length,
|
|
unsigned char *buffer);
|
|
void inv_set_get_address(unsigned short (*func) (unsigned short key));
|
|
unsigned short inv_dl_get_address(unsigned short key);
|
|
uint_fast8_t inv_dmpkey_supported(unsigned short key);
|
|
|
|
inv_error_t inv_get_interrupt_status(unsigned char intPin,
|
|
unsigned char *value);
|
|
unsigned char inv_get_interrupt_trigger(unsigned char index);
|
|
void inv_clear_interrupt_trigger(unsigned char index);
|
|
inv_error_t inv_interrupt_handler(unsigned char intSource);
|
|
|
|
/** Only exposed for testing purposes */
|
|
inv_error_t inv_set_mpu_memory_one_bank(unsigned char bank,
|
|
unsigned short memAddr,
|
|
unsigned short length,
|
|
const unsigned char *buffer);
|
|
inv_error_t inv_get_mpu_memory_one_bank(unsigned char bank,
|
|
unsigned char memAddr,
|
|
unsigned short length,
|
|
unsigned char *buffer);
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
#endif // MLDL_H
|