Lib for MPU9150/9250 IMU sensors

Dependents:   ezSBC_MPU9250

Committer:
JojoS
Date:
Mon Apr 24 16:21:35 2017 +0000
Revision:
0:ab00d9bcd00d
modified for mbed

Who changed what in which revision?

UserRevisionLine numberNew contents of line
JojoS 0:ab00d9bcd00d 1 // I2Cdev library collection - MPU9150 I2C device class
JojoS 0:ab00d9bcd00d 2 // Based on InvenSense MPU-9150 register map document rev. 2.0, 5/19/2011 (RM-MPU-6000A-00)
JojoS 0:ab00d9bcd00d 3 // 10/3/2011 by Jeff Rowberg <jeff@rowberg.net>
JojoS 0:ab00d9bcd00d 4 // Updates should (hopefully) always be available at https://github.com/jrowberg/i2cdevlib
JojoS 0:ab00d9bcd00d 5 //
JojoS 0:ab00d9bcd00d 6 // Changelog:
JojoS 0:ab00d9bcd00d 7 // ... - ongoing debug release
JojoS 0:ab00d9bcd00d 8
JojoS 0:ab00d9bcd00d 9 // NOTE: THIS IS ONLY A PARIAL RELEASE. THIS DEVICE CLASS IS CURRENTLY UNDERGOING ACTIVE
JojoS 0:ab00d9bcd00d 10 // DEVELOPMENT AND IS STILL MISSING SOME IMPORTANT FEATURES. PLEASE KEEP THIS IN MIND IF
JojoS 0:ab00d9bcd00d 11 // YOU DECIDE TO USE THIS PARTICULAR CODE FOR ANYTHING.
JojoS 0:ab00d9bcd00d 12
JojoS 0:ab00d9bcd00d 13 /* ============================================
JojoS 0:ab00d9bcd00d 14 I2Cdev device library code is placed under the MIT license
JojoS 0:ab00d9bcd00d 15 Copyright (c) 2012 Jeff Rowberg
JojoS 0:ab00d9bcd00d 16
JojoS 0:ab00d9bcd00d 17 Permission is hereby granted, free of charge, to any person obtaining a copy
JojoS 0:ab00d9bcd00d 18 of this software and associated documentation files (the "Software"), to deal
JojoS 0:ab00d9bcd00d 19 in the Software without restriction, including without limitation the rights
JojoS 0:ab00d9bcd00d 20 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
JojoS 0:ab00d9bcd00d 21 copies of the Software, and to permit persons to whom the Software is
JojoS 0:ab00d9bcd00d 22 furnished to do so, subject to the following conditions:
JojoS 0:ab00d9bcd00d 23
JojoS 0:ab00d9bcd00d 24 The above copyright notice and this permission notice shall be included in
JojoS 0:ab00d9bcd00d 25 all copies or substantial portions of the Software.
JojoS 0:ab00d9bcd00d 26
JojoS 0:ab00d9bcd00d 27 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
JojoS 0:ab00d9bcd00d 28 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
JojoS 0:ab00d9bcd00d 29 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
JojoS 0:ab00d9bcd00d 30 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
JojoS 0:ab00d9bcd00d 31 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
JojoS 0:ab00d9bcd00d 32 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
JojoS 0:ab00d9bcd00d 33 THE SOFTWARE.
JojoS 0:ab00d9bcd00d 34 ===============================================
JojoS 0:ab00d9bcd00d 35 */
JojoS 0:ab00d9bcd00d 36
JojoS 0:ab00d9bcd00d 37 #ifndef _MPU9150_H_
JojoS 0:ab00d9bcd00d 38 #define _MPU9150_H_
JojoS 0:ab00d9bcd00d 39
JojoS 0:ab00d9bcd00d 40 #include "I2Cdev.h"
JojoS 0:ab00d9bcd00d 41
JojoS 0:ab00d9bcd00d 42 // supporting link: http://forum.arduino.cc/index.php?&topic=143444.msg1079517#msg1079517
JojoS 0:ab00d9bcd00d 43 // also: http://forum.arduino.cc/index.php?&topic=141571.msg1062899#msg1062899s
JojoS 0:ab00d9bcd00d 44 #ifndef __arm__
JojoS 0:ab00d9bcd00d 45 #include <avr/pgmspace.h>
JojoS 0:ab00d9bcd00d 46 #else
JojoS 0:ab00d9bcd00d 47 #define PROGMEM /* empty */
JojoS 0:ab00d9bcd00d 48 #define pgm_read_byte(x) (*(x))
JojoS 0:ab00d9bcd00d 49 #define pgm_read_word(x) (*(x))
JojoS 0:ab00d9bcd00d 50 #define pgm_read_float(x) (*(x))
JojoS 0:ab00d9bcd00d 51 #define PSTR(STR) STR
JojoS 0:ab00d9bcd00d 52 #endif
JojoS 0:ab00d9bcd00d 53
JojoS 0:ab00d9bcd00d 54 //Magnetometer Registers
JojoS 0:ab00d9bcd00d 55 #define MPU9150_RA_MAG_ADDRESS 0x0C
JojoS 0:ab00d9bcd00d 56 #define MPU9150_RA_MAG_XOUT_L 0x03
JojoS 0:ab00d9bcd00d 57 #define MPU9150_RA_MAG_XOUT_H 0x04
JojoS 0:ab00d9bcd00d 58 #define MPU9150_RA_MAG_YOUT_L 0x05
JojoS 0:ab00d9bcd00d 59 #define MPU9150_RA_MAG_YOUT_H 0x06
JojoS 0:ab00d9bcd00d 60 #define MPU9150_RA_MAG_ZOUT_L 0x07
JojoS 0:ab00d9bcd00d 61 #define MPU9150_RA_MAG_ZOUT_H 0x08
JojoS 0:ab00d9bcd00d 62
JojoS 0:ab00d9bcd00d 63 #define MPU9150_ADDRESS_AD0_LOW 0x68 // address pin low (GND), default for InvenSense evaluation board
JojoS 0:ab00d9bcd00d 64 #define MPU9150_ADDRESS_AD0_HIGH 0x69 // address pin high (VCC)
JojoS 0:ab00d9bcd00d 65 #define MPU9150_DEFAULT_ADDRESS MPU9150_ADDRESS_AD0_LOW
JojoS 0:ab00d9bcd00d 66
JojoS 0:ab00d9bcd00d 67 #define MPU9150_RA_XG_OFFS_TC 0x00 //[7] PWR_MODE, [6:1] XG_OFFS_TC, [0] OTP_BNK_VLD
JojoS 0:ab00d9bcd00d 68 #define MPU9150_RA_YG_OFFS_TC 0x01 //[7] PWR_MODE, [6:1] YG_OFFS_TC, [0] OTP_BNK_VLD
JojoS 0:ab00d9bcd00d 69 #define MPU9150_RA_ZG_OFFS_TC 0x02 //[7] PWR_MODE, [6:1] ZG_OFFS_TC, [0] OTP_BNK_VLD
JojoS 0:ab00d9bcd00d 70 #define MPU9150_RA_X_FINE_GAIN 0x03 //[7:0] X_FINE_GAIN
JojoS 0:ab00d9bcd00d 71 #define MPU9150_RA_Y_FINE_GAIN 0x04 //[7:0] Y_FINE_GAIN
JojoS 0:ab00d9bcd00d 72 #define MPU9150_RA_Z_FINE_GAIN 0x05 //[7:0] Z_FINE_GAIN
JojoS 0:ab00d9bcd00d 73 #define MPU9150_RA_XA_OFFS_H 0x06 //[15:0] XA_OFFS
JojoS 0:ab00d9bcd00d 74 #define MPU9150_RA_XA_OFFS_L_TC 0x07
JojoS 0:ab00d9bcd00d 75 #define MPU9150_RA_YA_OFFS_H 0x08 //[15:0] YA_OFFS
JojoS 0:ab00d9bcd00d 76 #define MPU9150_RA_YA_OFFS_L_TC 0x09
JojoS 0:ab00d9bcd00d 77 #define MPU9150_RA_ZA_OFFS_H 0x0A //[15:0] ZA_OFFS
JojoS 0:ab00d9bcd00d 78 #define MPU9150_RA_ZA_OFFS_L_TC 0x0B
JojoS 0:ab00d9bcd00d 79 #define MPU9150_RA_XG_OFFS_USRH 0x13 //[15:0] XG_OFFS_USR
JojoS 0:ab00d9bcd00d 80 #define MPU9150_RA_XG_OFFS_USRL 0x14
JojoS 0:ab00d9bcd00d 81 #define MPU9150_RA_YG_OFFS_USRH 0x15 //[15:0] YG_OFFS_USR
JojoS 0:ab00d9bcd00d 82 #define MPU9150_RA_YG_OFFS_USRL 0x16
JojoS 0:ab00d9bcd00d 83 #define MPU9150_RA_ZG_OFFS_USRH 0x17 //[15:0] ZG_OFFS_USR
JojoS 0:ab00d9bcd00d 84 #define MPU9150_RA_ZG_OFFS_USRL 0x18
JojoS 0:ab00d9bcd00d 85 #define MPU9150_RA_SMPLRT_DIV 0x19
JojoS 0:ab00d9bcd00d 86 #define MPU9150_RA_CONFIG 0x1A
JojoS 0:ab00d9bcd00d 87 #define MPU9150_RA_GYRO_CONFIG 0x1B
JojoS 0:ab00d9bcd00d 88 #define MPU9150_RA_ACCEL_CONFIG 0x1C
JojoS 0:ab00d9bcd00d 89 #define MPU9150_RA_FF_THR 0x1D
JojoS 0:ab00d9bcd00d 90 #define MPU9150_RA_FF_DUR 0x1E
JojoS 0:ab00d9bcd00d 91 #define MPU9150_RA_MOT_THR 0x1F
JojoS 0:ab00d9bcd00d 92 #define MPU9150_RA_MOT_DUR 0x20
JojoS 0:ab00d9bcd00d 93 #define MPU9150_RA_ZRMOT_THR 0x21
JojoS 0:ab00d9bcd00d 94 #define MPU9150_RA_ZRMOT_DUR 0x22
JojoS 0:ab00d9bcd00d 95 #define MPU9150_RA_FIFO_EN 0x23
JojoS 0:ab00d9bcd00d 96 #define MPU9150_RA_I2C_MST_CTRL 0x24
JojoS 0:ab00d9bcd00d 97 #define MPU9150_RA_I2C_SLV0_ADDR 0x25
JojoS 0:ab00d9bcd00d 98 #define MPU9150_RA_I2C_SLV0_REG 0x26
JojoS 0:ab00d9bcd00d 99 #define MPU9150_RA_I2C_SLV0_CTRL 0x27
JojoS 0:ab00d9bcd00d 100 #define MPU9150_RA_I2C_SLV1_ADDR 0x28
JojoS 0:ab00d9bcd00d 101 #define MPU9150_RA_I2C_SLV1_REG 0x29
JojoS 0:ab00d9bcd00d 102 #define MPU9150_RA_I2C_SLV1_CTRL 0x2A
JojoS 0:ab00d9bcd00d 103 #define MPU9150_RA_I2C_SLV2_ADDR 0x2B
JojoS 0:ab00d9bcd00d 104 #define MPU9150_RA_I2C_SLV2_REG 0x2C
JojoS 0:ab00d9bcd00d 105 #define MPU9150_RA_I2C_SLV2_CTRL 0x2D
JojoS 0:ab00d9bcd00d 106 #define MPU9150_RA_I2C_SLV3_ADDR 0x2E
JojoS 0:ab00d9bcd00d 107 #define MPU9150_RA_I2C_SLV3_REG 0x2F
JojoS 0:ab00d9bcd00d 108 #define MPU9150_RA_I2C_SLV3_CTRL 0x30
JojoS 0:ab00d9bcd00d 109 #define MPU9150_RA_I2C_SLV4_ADDR 0x31
JojoS 0:ab00d9bcd00d 110 #define MPU9150_RA_I2C_SLV4_REG 0x32
JojoS 0:ab00d9bcd00d 111 #define MPU9150_RA_I2C_SLV4_DO 0x33
JojoS 0:ab00d9bcd00d 112 #define MPU9150_RA_I2C_SLV4_CTRL 0x34
JojoS 0:ab00d9bcd00d 113 #define MPU9150_RA_I2C_SLV4_DI 0x35
JojoS 0:ab00d9bcd00d 114 #define MPU9150_RA_I2C_MST_STATUS 0x36
JojoS 0:ab00d9bcd00d 115 #define MPU9150_RA_INT_PIN_CFG 0x37
JojoS 0:ab00d9bcd00d 116 #define MPU9150_RA_INT_ENABLE 0x38
JojoS 0:ab00d9bcd00d 117 #define MPU9150_RA_DMP_INT_STATUS 0x39
JojoS 0:ab00d9bcd00d 118 #define MPU9150_RA_INT_STATUS 0x3A
JojoS 0:ab00d9bcd00d 119 #define MPU9150_RA_ACCEL_XOUT_H 0x3B
JojoS 0:ab00d9bcd00d 120 #define MPU9150_RA_ACCEL_XOUT_L 0x3C
JojoS 0:ab00d9bcd00d 121 #define MPU9150_RA_ACCEL_YOUT_H 0x3D
JojoS 0:ab00d9bcd00d 122 #define MPU9150_RA_ACCEL_YOUT_L 0x3E
JojoS 0:ab00d9bcd00d 123 #define MPU9150_RA_ACCEL_ZOUT_H 0x3F
JojoS 0:ab00d9bcd00d 124 #define MPU9150_RA_ACCEL_ZOUT_L 0x40
JojoS 0:ab00d9bcd00d 125 #define MPU9150_RA_TEMP_OUT_H 0x41
JojoS 0:ab00d9bcd00d 126 #define MPU9150_RA_TEMP_OUT_L 0x42
JojoS 0:ab00d9bcd00d 127 #define MPU9150_RA_GYRO_XOUT_H 0x43
JojoS 0:ab00d9bcd00d 128 #define MPU9150_RA_GYRO_XOUT_L 0x44
JojoS 0:ab00d9bcd00d 129 #define MPU9150_RA_GYRO_YOUT_H 0x45
JojoS 0:ab00d9bcd00d 130 #define MPU9150_RA_GYRO_YOUT_L 0x46
JojoS 0:ab00d9bcd00d 131 #define MPU9150_RA_GYRO_ZOUT_H 0x47
JojoS 0:ab00d9bcd00d 132 #define MPU9150_RA_GYRO_ZOUT_L 0x48
JojoS 0:ab00d9bcd00d 133 #define MPU9150_RA_EXT_SENS_DATA_00 0x49
JojoS 0:ab00d9bcd00d 134 #define MPU9150_RA_EXT_SENS_DATA_01 0x4A
JojoS 0:ab00d9bcd00d 135 #define MPU9150_RA_EXT_SENS_DATA_02 0x4B
JojoS 0:ab00d9bcd00d 136 #define MPU9150_RA_EXT_SENS_DATA_03 0x4C
JojoS 0:ab00d9bcd00d 137 #define MPU9150_RA_EXT_SENS_DATA_04 0x4D
JojoS 0:ab00d9bcd00d 138 #define MPU9150_RA_EXT_SENS_DATA_05 0x4E
JojoS 0:ab00d9bcd00d 139 #define MPU9150_RA_EXT_SENS_DATA_06 0x4F
JojoS 0:ab00d9bcd00d 140 #define MPU9150_RA_EXT_SENS_DATA_07 0x50
JojoS 0:ab00d9bcd00d 141 #define MPU9150_RA_EXT_SENS_DATA_08 0x51
JojoS 0:ab00d9bcd00d 142 #define MPU9150_RA_EXT_SENS_DATA_09 0x52
JojoS 0:ab00d9bcd00d 143 #define MPU9150_RA_EXT_SENS_DATA_10 0x53
JojoS 0:ab00d9bcd00d 144 #define MPU9150_RA_EXT_SENS_DATA_11 0x54
JojoS 0:ab00d9bcd00d 145 #define MPU9150_RA_EXT_SENS_DATA_12 0x55
JojoS 0:ab00d9bcd00d 146 #define MPU9150_RA_EXT_SENS_DATA_13 0x56
JojoS 0:ab00d9bcd00d 147 #define MPU9150_RA_EXT_SENS_DATA_14 0x57
JojoS 0:ab00d9bcd00d 148 #define MPU9150_RA_EXT_SENS_DATA_15 0x58
JojoS 0:ab00d9bcd00d 149 #define MPU9150_RA_EXT_SENS_DATA_16 0x59
JojoS 0:ab00d9bcd00d 150 #define MPU9150_RA_EXT_SENS_DATA_17 0x5A
JojoS 0:ab00d9bcd00d 151 #define MPU9150_RA_EXT_SENS_DATA_18 0x5B
JojoS 0:ab00d9bcd00d 152 #define MPU9150_RA_EXT_SENS_DATA_19 0x5C
JojoS 0:ab00d9bcd00d 153 #define MPU9150_RA_EXT_SENS_DATA_20 0x5D
JojoS 0:ab00d9bcd00d 154 #define MPU9150_RA_EXT_SENS_DATA_21 0x5E
JojoS 0:ab00d9bcd00d 155 #define MPU9150_RA_EXT_SENS_DATA_22 0x5F
JojoS 0:ab00d9bcd00d 156 #define MPU9150_RA_EXT_SENS_DATA_23 0x60
JojoS 0:ab00d9bcd00d 157 #define MPU9150_RA_MOT_DETECT_STATUS 0x61
JojoS 0:ab00d9bcd00d 158 #define MPU9150_RA_I2C_SLV0_DO 0x63
JojoS 0:ab00d9bcd00d 159 #define MPU9150_RA_I2C_SLV1_DO 0x64
JojoS 0:ab00d9bcd00d 160 #define MPU9150_RA_I2C_SLV2_DO 0x65
JojoS 0:ab00d9bcd00d 161 #define MPU9150_RA_I2C_SLV3_DO 0x66
JojoS 0:ab00d9bcd00d 162 #define MPU9150_RA_I2C_MST_DELAY_CTRL 0x67
JojoS 0:ab00d9bcd00d 163 #define MPU9150_RA_SIGNAL_PATH_RESET 0x68
JojoS 0:ab00d9bcd00d 164 #define MPU9150_RA_MOT_DETECT_CTRL 0x69
JojoS 0:ab00d9bcd00d 165 #define MPU9150_RA_USER_CTRL 0x6A
JojoS 0:ab00d9bcd00d 166 #define MPU9150_RA_PWR_MGMT_1 0x6B
JojoS 0:ab00d9bcd00d 167 #define MPU9150_RA_PWR_MGMT_2 0x6C
JojoS 0:ab00d9bcd00d 168 #define MPU9150_RA_BANK_SEL 0x6D
JojoS 0:ab00d9bcd00d 169 #define MPU9150_RA_MEM_START_ADDR 0x6E
JojoS 0:ab00d9bcd00d 170 #define MPU9150_RA_MEM_R_W 0x6F
JojoS 0:ab00d9bcd00d 171 #define MPU9150_RA_DMP_CFG_1 0x70
JojoS 0:ab00d9bcd00d 172 #define MPU9150_RA_DMP_CFG_2 0x71
JojoS 0:ab00d9bcd00d 173 #define MPU9150_RA_FIFO_COUNTH 0x72
JojoS 0:ab00d9bcd00d 174 #define MPU9150_RA_FIFO_COUNTL 0x73
JojoS 0:ab00d9bcd00d 175 #define MPU9150_RA_FIFO_R_W 0x74
JojoS 0:ab00d9bcd00d 176 #define MPU9150_RA_WHO_AM_I 0x75
JojoS 0:ab00d9bcd00d 177
JojoS 0:ab00d9bcd00d 178 #define MPU9150_TC_PWR_MODE_BIT 7
JojoS 0:ab00d9bcd00d 179 #define MPU9150_TC_OFFSET_BIT 6
JojoS 0:ab00d9bcd00d 180 #define MPU9150_TC_OFFSET_LENGTH 6
JojoS 0:ab00d9bcd00d 181 #define MPU9150_TC_OTP_BNK_VLD_BIT 0
JojoS 0:ab00d9bcd00d 182
JojoS 0:ab00d9bcd00d 183 #define MPU9150_VDDIO_LEVEL_VLOGIC 0
JojoS 0:ab00d9bcd00d 184 #define MPU9150_VDDIO_LEVEL_VDD 1
JojoS 0:ab00d9bcd00d 185
JojoS 0:ab00d9bcd00d 186 #define MPU9150_CFG_EXT_SYNC_SET_BIT 5
JojoS 0:ab00d9bcd00d 187 #define MPU9150_CFG_EXT_SYNC_SET_LENGTH 3
JojoS 0:ab00d9bcd00d 188 #define MPU9150_CFG_DLPF_CFG_BIT 2
JojoS 0:ab00d9bcd00d 189 #define MPU9150_CFG_DLPF_CFG_LENGTH 3
JojoS 0:ab00d9bcd00d 190
JojoS 0:ab00d9bcd00d 191 #define MPU9150_EXT_SYNC_DISABLED 0x0
JojoS 0:ab00d9bcd00d 192 #define MPU9150_EXT_SYNC_TEMP_OUT_L 0x1
JojoS 0:ab00d9bcd00d 193 #define MPU9150_EXT_SYNC_GYRO_XOUT_L 0x2
JojoS 0:ab00d9bcd00d 194 #define MPU9150_EXT_SYNC_GYRO_YOUT_L 0x3
JojoS 0:ab00d9bcd00d 195 #define MPU9150_EXT_SYNC_GYRO_ZOUT_L 0x4
JojoS 0:ab00d9bcd00d 196 #define MPU9150_EXT_SYNC_ACCEL_XOUT_L 0x5
JojoS 0:ab00d9bcd00d 197 #define MPU9150_EXT_SYNC_ACCEL_YOUT_L 0x6
JojoS 0:ab00d9bcd00d 198 #define MPU9150_EXT_SYNC_ACCEL_ZOUT_L 0x7
JojoS 0:ab00d9bcd00d 199
JojoS 0:ab00d9bcd00d 200 #define MPU9150_DLPF_BW_256 0x00
JojoS 0:ab00d9bcd00d 201 #define MPU9150_DLPF_BW_188 0x01
JojoS 0:ab00d9bcd00d 202 #define MPU9150_DLPF_BW_98 0x02
JojoS 0:ab00d9bcd00d 203 #define MPU9150_DLPF_BW_42 0x03
JojoS 0:ab00d9bcd00d 204 #define MPU9150_DLPF_BW_20 0x04
JojoS 0:ab00d9bcd00d 205 #define MPU9150_DLPF_BW_10 0x05
JojoS 0:ab00d9bcd00d 206 #define MPU9150_DLPF_BW_5 0x06
JojoS 0:ab00d9bcd00d 207
JojoS 0:ab00d9bcd00d 208 #define MPU9150_GCONFIG_FS_SEL_BIT 4
JojoS 0:ab00d9bcd00d 209 #define MPU9150_GCONFIG_FS_SEL_LENGTH 2
JojoS 0:ab00d9bcd00d 210
JojoS 0:ab00d9bcd00d 211 #define MPU9150_GYRO_FS_250 0x00
JojoS 0:ab00d9bcd00d 212 #define MPU9150_GYRO_FS_500 0x01
JojoS 0:ab00d9bcd00d 213 #define MPU9150_GYRO_FS_1000 0x02
JojoS 0:ab00d9bcd00d 214 #define MPU9150_GYRO_FS_2000 0x03
JojoS 0:ab00d9bcd00d 215
JojoS 0:ab00d9bcd00d 216 #define MPU9150_ACONFIG_XA_ST_BIT 7
JojoS 0:ab00d9bcd00d 217 #define MPU9150_ACONFIG_YA_ST_BIT 6
JojoS 0:ab00d9bcd00d 218 #define MPU9150_ACONFIG_ZA_ST_BIT 5
JojoS 0:ab00d9bcd00d 219 #define MPU9150_ACONFIG_AFS_SEL_BIT 4
JojoS 0:ab00d9bcd00d 220 #define MPU9150_ACONFIG_AFS_SEL_LENGTH 2
JojoS 0:ab00d9bcd00d 221 #define MPU9150_ACONFIG_ACCEL_HPF_BIT 2
JojoS 0:ab00d9bcd00d 222 #define MPU9150_ACONFIG_ACCEL_HPF_LENGTH 3
JojoS 0:ab00d9bcd00d 223
JojoS 0:ab00d9bcd00d 224 #define MPU9150_ACCEL_FS_2 0x00
JojoS 0:ab00d9bcd00d 225 #define MPU9150_ACCEL_FS_4 0x01
JojoS 0:ab00d9bcd00d 226 #define MPU9150_ACCEL_FS_8 0x02
JojoS 0:ab00d9bcd00d 227 #define MPU9150_ACCEL_FS_16 0x03
JojoS 0:ab00d9bcd00d 228
JojoS 0:ab00d9bcd00d 229 #define MPU9150_DHPF_RESET 0x00
JojoS 0:ab00d9bcd00d 230 #define MPU9150_DHPF_5 0x01
JojoS 0:ab00d9bcd00d 231 #define MPU9150_DHPF_2P5 0x02
JojoS 0:ab00d9bcd00d 232 #define MPU9150_DHPF_1P25 0x03
JojoS 0:ab00d9bcd00d 233 #define MPU9150_DHPF_0P63 0x04
JojoS 0:ab00d9bcd00d 234 #define MPU9150_DHPF_HOLD 0x07
JojoS 0:ab00d9bcd00d 235
JojoS 0:ab00d9bcd00d 236 #define MPU9150_TEMP_FIFO_EN_BIT 7
JojoS 0:ab00d9bcd00d 237 #define MPU9150_XG_FIFO_EN_BIT 6
JojoS 0:ab00d9bcd00d 238 #define MPU9150_YG_FIFO_EN_BIT 5
JojoS 0:ab00d9bcd00d 239 #define MPU9150_ZG_FIFO_EN_BIT 4
JojoS 0:ab00d9bcd00d 240 #define MPU9150_ACCEL_FIFO_EN_BIT 3
JojoS 0:ab00d9bcd00d 241 #define MPU9150_SLV2_FIFO_EN_BIT 2
JojoS 0:ab00d9bcd00d 242 #define MPU9150_SLV1_FIFO_EN_BIT 1
JojoS 0:ab00d9bcd00d 243 #define MPU9150_SLV0_FIFO_EN_BIT 0
JojoS 0:ab00d9bcd00d 244
JojoS 0:ab00d9bcd00d 245 #define MPU9150_MULT_MST_EN_BIT 7
JojoS 0:ab00d9bcd00d 246 #define MPU9150_WAIT_FOR_ES_BIT 6
JojoS 0:ab00d9bcd00d 247 #define MPU9150_SLV_3_FIFO_EN_BIT 5
JojoS 0:ab00d9bcd00d 248 #define MPU9150_I2C_MST_P_NSR_BIT 4
JojoS 0:ab00d9bcd00d 249 #define MPU9150_I2C_MST_CLK_BIT 3
JojoS 0:ab00d9bcd00d 250 #define MPU9150_I2C_MST_CLK_LENGTH 4
JojoS 0:ab00d9bcd00d 251
JojoS 0:ab00d9bcd00d 252 #define MPU9150_CLOCK_DIV_348 0x0
JojoS 0:ab00d9bcd00d 253 #define MPU9150_CLOCK_DIV_333 0x1
JojoS 0:ab00d9bcd00d 254 #define MPU9150_CLOCK_DIV_320 0x2
JojoS 0:ab00d9bcd00d 255 #define MPU9150_CLOCK_DIV_308 0x3
JojoS 0:ab00d9bcd00d 256 #define MPU9150_CLOCK_DIV_296 0x4
JojoS 0:ab00d9bcd00d 257 #define MPU9150_CLOCK_DIV_286 0x5
JojoS 0:ab00d9bcd00d 258 #define MPU9150_CLOCK_DIV_276 0x6
JojoS 0:ab00d9bcd00d 259 #define MPU9150_CLOCK_DIV_267 0x7
JojoS 0:ab00d9bcd00d 260 #define MPU9150_CLOCK_DIV_258 0x8
JojoS 0:ab00d9bcd00d 261 #define MPU9150_CLOCK_DIV_500 0x9
JojoS 0:ab00d9bcd00d 262 #define MPU9150_CLOCK_DIV_471 0xA
JojoS 0:ab00d9bcd00d 263 #define MPU9150_CLOCK_DIV_444 0xB
JojoS 0:ab00d9bcd00d 264 #define MPU9150_CLOCK_DIV_421 0xC
JojoS 0:ab00d9bcd00d 265 #define MPU9150_CLOCK_DIV_400 0xD
JojoS 0:ab00d9bcd00d 266 #define MPU9150_CLOCK_DIV_381 0xE
JojoS 0:ab00d9bcd00d 267 #define MPU9150_CLOCK_DIV_364 0xF
JojoS 0:ab00d9bcd00d 268
JojoS 0:ab00d9bcd00d 269 #define MPU9150_I2C_SLV_RW_BIT 7
JojoS 0:ab00d9bcd00d 270 #define MPU9150_I2C_SLV_ADDR_BIT 6
JojoS 0:ab00d9bcd00d 271 #define MPU9150_I2C_SLV_ADDR_LENGTH 7
JojoS 0:ab00d9bcd00d 272 #define MPU9150_I2C_SLV_EN_BIT 7
JojoS 0:ab00d9bcd00d 273 #define MPU9150_I2C_SLV_BYTE_SW_BIT 6
JojoS 0:ab00d9bcd00d 274 #define MPU9150_I2C_SLV_REG_DIS_BIT 5
JojoS 0:ab00d9bcd00d 275 #define MPU9150_I2C_SLV_GRP_BIT 4
JojoS 0:ab00d9bcd00d 276 #define MPU9150_I2C_SLV_LEN_BIT 3
JojoS 0:ab00d9bcd00d 277 #define MPU9150_I2C_SLV_LEN_LENGTH 4
JojoS 0:ab00d9bcd00d 278
JojoS 0:ab00d9bcd00d 279 #define MPU9150_I2C_SLV4_RW_BIT 7
JojoS 0:ab00d9bcd00d 280 #define MPU9150_I2C_SLV4_ADDR_BIT 6
JojoS 0:ab00d9bcd00d 281 #define MPU9150_I2C_SLV4_ADDR_LENGTH 7
JojoS 0:ab00d9bcd00d 282 #define MPU9150_I2C_SLV4_EN_BIT 7
JojoS 0:ab00d9bcd00d 283 #define MPU9150_I2C_SLV4_INT_EN_BIT 6
JojoS 0:ab00d9bcd00d 284 #define MPU9150_I2C_SLV4_REG_DIS_BIT 5
JojoS 0:ab00d9bcd00d 285 #define MPU9150_I2C_SLV4_MST_DLY_BIT 4
JojoS 0:ab00d9bcd00d 286 #define MPU9150_I2C_SLV4_MST_DLY_LENGTH 5
JojoS 0:ab00d9bcd00d 287
JojoS 0:ab00d9bcd00d 288 #define MPU9150_MST_PASS_THROUGH_BIT 7
JojoS 0:ab00d9bcd00d 289 #define MPU9150_MST_I2C_SLV4_DONE_BIT 6
JojoS 0:ab00d9bcd00d 290 #define MPU9150_MST_I2C_LOST_ARB_BIT 5
JojoS 0:ab00d9bcd00d 291 #define MPU9150_MST_I2C_SLV4_NACK_BIT 4
JojoS 0:ab00d9bcd00d 292 #define MPU9150_MST_I2C_SLV3_NACK_BIT 3
JojoS 0:ab00d9bcd00d 293 #define MPU9150_MST_I2C_SLV2_NACK_BIT 2
JojoS 0:ab00d9bcd00d 294 #define MPU9150_MST_I2C_SLV1_NACK_BIT 1
JojoS 0:ab00d9bcd00d 295 #define MPU9150_MST_I2C_SLV0_NACK_BIT 0
JojoS 0:ab00d9bcd00d 296
JojoS 0:ab00d9bcd00d 297 #define MPU9150_INTCFG_INT_LEVEL_BIT 7
JojoS 0:ab00d9bcd00d 298 #define MPU9150_INTCFG_INT_OPEN_BIT 6
JojoS 0:ab00d9bcd00d 299 #define MPU9150_INTCFG_LATCH_INT_EN_BIT 5
JojoS 0:ab00d9bcd00d 300 #define MPU9150_INTCFG_INT_RD_CLEAR_BIT 4
JojoS 0:ab00d9bcd00d 301 #define MPU9150_INTCFG_FSYNC_INT_LEVEL_BIT 3
JojoS 0:ab00d9bcd00d 302 #define MPU9150_INTCFG_FSYNC_INT_EN_BIT 2
JojoS 0:ab00d9bcd00d 303 #define MPU9150_INTCFG_I2C_BYPASS_EN_BIT 1
JojoS 0:ab00d9bcd00d 304 #define MPU9150_INTCFG_CLKOUT_EN_BIT 0
JojoS 0:ab00d9bcd00d 305
JojoS 0:ab00d9bcd00d 306 #define MPU9150_INTMODE_ACTIVEHIGH 0x00
JojoS 0:ab00d9bcd00d 307 #define MPU9150_INTMODE_ACTIVELOW 0x01
JojoS 0:ab00d9bcd00d 308
JojoS 0:ab00d9bcd00d 309 #define MPU9150_INTDRV_PUSHPULL 0x00
JojoS 0:ab00d9bcd00d 310 #define MPU9150_INTDRV_OPENDRAIN 0x01
JojoS 0:ab00d9bcd00d 311
JojoS 0:ab00d9bcd00d 312 #define MPU9150_INTLATCH_50USPULSE 0x00
JojoS 0:ab00d9bcd00d 313 #define MPU9150_INTLATCH_WAITCLEAR 0x01
JojoS 0:ab00d9bcd00d 314
JojoS 0:ab00d9bcd00d 315 #define MPU9150_INTCLEAR_STATUSREAD 0x00
JojoS 0:ab00d9bcd00d 316 #define MPU9150_INTCLEAR_ANYREAD 0x01
JojoS 0:ab00d9bcd00d 317
JojoS 0:ab00d9bcd00d 318 #define MPU9150_INTERRUPT_FF_BIT 7
JojoS 0:ab00d9bcd00d 319 #define MPU9150_INTERRUPT_MOT_BIT 6
JojoS 0:ab00d9bcd00d 320 #define MPU9150_INTERRUPT_ZMOT_BIT 5
JojoS 0:ab00d9bcd00d 321 #define MPU9150_INTERRUPT_FIFO_OFLOW_BIT 4
JojoS 0:ab00d9bcd00d 322 #define MPU9150_INTERRUPT_I2C_MST_INT_BIT 3
JojoS 0:ab00d9bcd00d 323 #define MPU9150_INTERRUPT_PLL_RDY_INT_BIT 2
JojoS 0:ab00d9bcd00d 324 #define MPU9150_INTERRUPT_DMP_INT_BIT 1
JojoS 0:ab00d9bcd00d 325 #define MPU9150_INTERRUPT_DATA_RDY_BIT 0
JojoS 0:ab00d9bcd00d 326
JojoS 0:ab00d9bcd00d 327 // TODO: figure out what these actually do
JojoS 0:ab00d9bcd00d 328 // UMPL source code is not very obivous
JojoS 0:ab00d9bcd00d 329 #define MPU9150_DMPINT_5_BIT 5
JojoS 0:ab00d9bcd00d 330 #define MPU9150_DMPINT_4_BIT 4
JojoS 0:ab00d9bcd00d 331 #define MPU9150_DMPINT_3_BIT 3
JojoS 0:ab00d9bcd00d 332 #define MPU9150_DMPINT_2_BIT 2
JojoS 0:ab00d9bcd00d 333 #define MPU9150_DMPINT_1_BIT 1
JojoS 0:ab00d9bcd00d 334 #define MPU9150_DMPINT_0_BIT 0
JojoS 0:ab00d9bcd00d 335
JojoS 0:ab00d9bcd00d 336 #define MPU9150_MOTION_MOT_XNEG_BIT 7
JojoS 0:ab00d9bcd00d 337 #define MPU9150_MOTION_MOT_XPOS_BIT 6
JojoS 0:ab00d9bcd00d 338 #define MPU9150_MOTION_MOT_YNEG_BIT 5
JojoS 0:ab00d9bcd00d 339 #define MPU9150_MOTION_MOT_YPOS_BIT 4
JojoS 0:ab00d9bcd00d 340 #define MPU9150_MOTION_MOT_ZNEG_BIT 3
JojoS 0:ab00d9bcd00d 341 #define MPU9150_MOTION_MOT_ZPOS_BIT 2
JojoS 0:ab00d9bcd00d 342 #define MPU9150_MOTION_MOT_ZRMOT_BIT 0
JojoS 0:ab00d9bcd00d 343
JojoS 0:ab00d9bcd00d 344 #define MPU9150_DELAYCTRL_DELAY_ES_SHADOW_BIT 7
JojoS 0:ab00d9bcd00d 345 #define MPU9150_DELAYCTRL_I2C_SLV4_DLY_EN_BIT 4
JojoS 0:ab00d9bcd00d 346 #define MPU9150_DELAYCTRL_I2C_SLV3_DLY_EN_BIT 3
JojoS 0:ab00d9bcd00d 347 #define MPU9150_DELAYCTRL_I2C_SLV2_DLY_EN_BIT 2
JojoS 0:ab00d9bcd00d 348 #define MPU9150_DELAYCTRL_I2C_SLV1_DLY_EN_BIT 1
JojoS 0:ab00d9bcd00d 349 #define MPU9150_DELAYCTRL_I2C_SLV0_DLY_EN_BIT 0
JojoS 0:ab00d9bcd00d 350
JojoS 0:ab00d9bcd00d 351 #define MPU9150_PATHRESET_GYRO_RESET_BIT 2
JojoS 0:ab00d9bcd00d 352 #define MPU9150_PATHRESET_ACCEL_RESET_BIT 1
JojoS 0:ab00d9bcd00d 353 #define MPU9150_PATHRESET_TEMP_RESET_BIT 0
JojoS 0:ab00d9bcd00d 354
JojoS 0:ab00d9bcd00d 355 #define MPU9150_DETECT_ACCEL_ON_DELAY_BIT 5
JojoS 0:ab00d9bcd00d 356 #define MPU9150_DETECT_ACCEL_ON_DELAY_LENGTH 2
JojoS 0:ab00d9bcd00d 357 #define MPU9150_DETECT_FF_COUNT_BIT 3
JojoS 0:ab00d9bcd00d 358 #define MPU9150_DETECT_FF_COUNT_LENGTH 2
JojoS 0:ab00d9bcd00d 359 #define MPU9150_DETECT_MOT_COUNT_BIT 1
JojoS 0:ab00d9bcd00d 360 #define MPU9150_DETECT_MOT_COUNT_LENGTH 2
JojoS 0:ab00d9bcd00d 361
JojoS 0:ab00d9bcd00d 362 #define MPU9150_DETECT_DECREMENT_RESET 0x0
JojoS 0:ab00d9bcd00d 363 #define MPU9150_DETECT_DECREMENT_1 0x1
JojoS 0:ab00d9bcd00d 364 #define MPU9150_DETECT_DECREMENT_2 0x2
JojoS 0:ab00d9bcd00d 365 #define MPU9150_DETECT_DECREMENT_4 0x3
JojoS 0:ab00d9bcd00d 366
JojoS 0:ab00d9bcd00d 367 #define MPU9150_USERCTRL_DMP_EN_BIT 7
JojoS 0:ab00d9bcd00d 368 #define MPU9150_USERCTRL_FIFO_EN_BIT 6
JojoS 0:ab00d9bcd00d 369 #define MPU9150_USERCTRL_I2C_MST_EN_BIT 5
JojoS 0:ab00d9bcd00d 370 #define MPU9150_USERCTRL_I2C_IF_DIS_BIT 4
JojoS 0:ab00d9bcd00d 371 #define MPU9150_USERCTRL_DMP_RESET_BIT 3
JojoS 0:ab00d9bcd00d 372 #define MPU9150_USERCTRL_FIFO_RESET_BIT 2
JojoS 0:ab00d9bcd00d 373 #define MPU9150_USERCTRL_I2C_MST_RESET_BIT 1
JojoS 0:ab00d9bcd00d 374 #define MPU9150_USERCTRL_SIG_COND_RESET_BIT 0
JojoS 0:ab00d9bcd00d 375
JojoS 0:ab00d9bcd00d 376 #define MPU9150_PWR1_DEVICE_RESET_BIT 7
JojoS 0:ab00d9bcd00d 377 #define MPU9150_PWR1_SLEEP_BIT 6
JojoS 0:ab00d9bcd00d 378 #define MPU9150_PWR1_CYCLE_BIT 5
JojoS 0:ab00d9bcd00d 379 #define MPU9150_PWR1_TEMP_DIS_BIT 3
JojoS 0:ab00d9bcd00d 380 #define MPU9150_PWR1_CLKSEL_BIT 2
JojoS 0:ab00d9bcd00d 381 #define MPU9150_PWR1_CLKSEL_LENGTH 3
JojoS 0:ab00d9bcd00d 382
JojoS 0:ab00d9bcd00d 383 #define MPU9150_CLOCK_INTERNAL 0x00
JojoS 0:ab00d9bcd00d 384 #define MPU9150_CLOCK_PLL_XGYRO 0x01
JojoS 0:ab00d9bcd00d 385 #define MPU9150_CLOCK_PLL_YGYRO 0x02
JojoS 0:ab00d9bcd00d 386 #define MPU9150_CLOCK_PLL_ZGYRO 0x03
JojoS 0:ab00d9bcd00d 387 #define MPU9150_CLOCK_PLL_EXT32K 0x04
JojoS 0:ab00d9bcd00d 388 #define MPU9150_CLOCK_PLL_EXT19M 0x05
JojoS 0:ab00d9bcd00d 389 #define MPU9150_CLOCK_KEEP_RESET 0x07
JojoS 0:ab00d9bcd00d 390
JojoS 0:ab00d9bcd00d 391 #define MPU9150_PWR2_LP_WAKE_CTRL_BIT 7
JojoS 0:ab00d9bcd00d 392 #define MPU9150_PWR2_LP_WAKE_CTRL_LENGTH 2
JojoS 0:ab00d9bcd00d 393 #define MPU9150_PWR2_STBY_XA_BIT 5
JojoS 0:ab00d9bcd00d 394 #define MPU9150_PWR2_STBY_YA_BIT 4
JojoS 0:ab00d9bcd00d 395 #define MPU9150_PWR2_STBY_ZA_BIT 3
JojoS 0:ab00d9bcd00d 396 #define MPU9150_PWR2_STBY_XG_BIT 2
JojoS 0:ab00d9bcd00d 397 #define MPU9150_PWR2_STBY_YG_BIT 1
JojoS 0:ab00d9bcd00d 398 #define MPU9150_PWR2_STBY_ZG_BIT 0
JojoS 0:ab00d9bcd00d 399
JojoS 0:ab00d9bcd00d 400 #define MPU9150_WAKE_FREQ_1P25 0x0
JojoS 0:ab00d9bcd00d 401 #define MPU9150_WAKE_FREQ_2P5 0x1
JojoS 0:ab00d9bcd00d 402 #define MPU9150_WAKE_FREQ_5 0x2
JojoS 0:ab00d9bcd00d 403 #define MPU9150_WAKE_FREQ_10 0x3
JojoS 0:ab00d9bcd00d 404
JojoS 0:ab00d9bcd00d 405 #define MPU9150_BANKSEL_PRFTCH_EN_BIT 6
JojoS 0:ab00d9bcd00d 406 #define MPU9150_BANKSEL_CFG_USER_BANK_BIT 5
JojoS 0:ab00d9bcd00d 407 #define MPU9150_BANKSEL_MEM_SEL_BIT 4
JojoS 0:ab00d9bcd00d 408 #define MPU9150_BANKSEL_MEM_SEL_LENGTH 5
JojoS 0:ab00d9bcd00d 409
JojoS 0:ab00d9bcd00d 410 #define MPU9150_WHO_AM_I_BIT 6
JojoS 0:ab00d9bcd00d 411 #define MPU9150_WHO_AM_I_LENGTH 6
JojoS 0:ab00d9bcd00d 412
JojoS 0:ab00d9bcd00d 413 #define MPU9150_DMP_MEMORY_BANKS 8
JojoS 0:ab00d9bcd00d 414 #define MPU9150_DMP_MEMORY_BANK_SIZE 256
JojoS 0:ab00d9bcd00d 415 #define MPU9150_DMP_MEMORY_CHUNK_SIZE 16
JojoS 0:ab00d9bcd00d 416
JojoS 0:ab00d9bcd00d 417 // note: DMP code memory blocks defined at end of header file
JojoS 0:ab00d9bcd00d 418
JojoS 0:ab00d9bcd00d 419 class MPU9150 {
JojoS 0:ab00d9bcd00d 420 private:
JojoS 0:ab00d9bcd00d 421 I2Cdev &i2Cdev;
JojoS 0:ab00d9bcd00d 422 //Serial debugSerial;
JojoS 0:ab00d9bcd00d 423
JojoS 0:ab00d9bcd00d 424 public:
JojoS 0:ab00d9bcd00d 425 MPU9150(I2Cdev &dev);
JojoS 0:ab00d9bcd00d 426 MPU9150(I2Cdev &dev, uint8_t address);
JojoS 0:ab00d9bcd00d 427
JojoS 0:ab00d9bcd00d 428 void initialize();
JojoS 0:ab00d9bcd00d 429 bool testConnection();
JojoS 0:ab00d9bcd00d 430
JojoS 0:ab00d9bcd00d 431 // AUX_VDDIO register
JojoS 0:ab00d9bcd00d 432 uint8_t getAuxVDDIOLevel();
JojoS 0:ab00d9bcd00d 433 void setAuxVDDIOLevel(uint8_t level);
JojoS 0:ab00d9bcd00d 434
JojoS 0:ab00d9bcd00d 435 // SMPLRT_DIV register
JojoS 0:ab00d9bcd00d 436 uint8_t getRate();
JojoS 0:ab00d9bcd00d 437 void setRate(uint8_t rate);
JojoS 0:ab00d9bcd00d 438
JojoS 0:ab00d9bcd00d 439 // CONFIG register
JojoS 0:ab00d9bcd00d 440 uint8_t getExternalFrameSync();
JojoS 0:ab00d9bcd00d 441 void setExternalFrameSync(uint8_t sync);
JojoS 0:ab00d9bcd00d 442 uint8_t getDLPFMode();
JojoS 0:ab00d9bcd00d 443 void setDLPFMode(uint8_t bandwidth);
JojoS 0:ab00d9bcd00d 444
JojoS 0:ab00d9bcd00d 445 // GYRO_CONFIG register
JojoS 0:ab00d9bcd00d 446 uint8_t getFullScaleGyroRange();
JojoS 0:ab00d9bcd00d 447 void setFullScaleGyroRange(uint8_t range);
JojoS 0:ab00d9bcd00d 448
JojoS 0:ab00d9bcd00d 449 // ACCEL_CONFIG register
JojoS 0:ab00d9bcd00d 450 bool getAccelXSelfTest();
JojoS 0:ab00d9bcd00d 451 void setAccelXSelfTest(bool enabled);
JojoS 0:ab00d9bcd00d 452 bool getAccelYSelfTest();
JojoS 0:ab00d9bcd00d 453 void setAccelYSelfTest(bool enabled);
JojoS 0:ab00d9bcd00d 454 bool getAccelZSelfTest();
JojoS 0:ab00d9bcd00d 455 void setAccelZSelfTest(bool enabled);
JojoS 0:ab00d9bcd00d 456 uint8_t getFullScaleAccelRange();
JojoS 0:ab00d9bcd00d 457 void setFullScaleAccelRange(uint8_t range);
JojoS 0:ab00d9bcd00d 458 uint8_t getDHPFMode();
JojoS 0:ab00d9bcd00d 459 void setDHPFMode(uint8_t mode);
JojoS 0:ab00d9bcd00d 460
JojoS 0:ab00d9bcd00d 461 // FF_THR register
JojoS 0:ab00d9bcd00d 462 uint8_t getFreefallDetectionThreshold();
JojoS 0:ab00d9bcd00d 463 void setFreefallDetectionThreshold(uint8_t threshold);
JojoS 0:ab00d9bcd00d 464
JojoS 0:ab00d9bcd00d 465 // FF_DUR register
JojoS 0:ab00d9bcd00d 466 uint8_t getFreefallDetectionDuration();
JojoS 0:ab00d9bcd00d 467 void setFreefallDetectionDuration(uint8_t duration);
JojoS 0:ab00d9bcd00d 468
JojoS 0:ab00d9bcd00d 469 // MOT_THR register
JojoS 0:ab00d9bcd00d 470 uint8_t getMotionDetectionThreshold();
JojoS 0:ab00d9bcd00d 471 void setMotionDetectionThreshold(uint8_t threshold);
JojoS 0:ab00d9bcd00d 472
JojoS 0:ab00d9bcd00d 473 // MOT_DUR register
JojoS 0:ab00d9bcd00d 474 uint8_t getMotionDetectionDuration();
JojoS 0:ab00d9bcd00d 475 void setMotionDetectionDuration(uint8_t duration);
JojoS 0:ab00d9bcd00d 476
JojoS 0:ab00d9bcd00d 477 // ZRMOT_THR register
JojoS 0:ab00d9bcd00d 478 uint8_t getZeroMotionDetectionThreshold();
JojoS 0:ab00d9bcd00d 479 void setZeroMotionDetectionThreshold(uint8_t threshold);
JojoS 0:ab00d9bcd00d 480
JojoS 0:ab00d9bcd00d 481 // ZRMOT_DUR register
JojoS 0:ab00d9bcd00d 482 uint8_t getZeroMotionDetectionDuration();
JojoS 0:ab00d9bcd00d 483 void setZeroMotionDetectionDuration(uint8_t duration);
JojoS 0:ab00d9bcd00d 484
JojoS 0:ab00d9bcd00d 485 // FIFO_EN register
JojoS 0:ab00d9bcd00d 486 bool getTempFIFOEnabled();
JojoS 0:ab00d9bcd00d 487 void setTempFIFOEnabled(bool enabled);
JojoS 0:ab00d9bcd00d 488 bool getXGyroFIFOEnabled();
JojoS 0:ab00d9bcd00d 489 void setXGyroFIFOEnabled(bool enabled);
JojoS 0:ab00d9bcd00d 490 bool getYGyroFIFOEnabled();
JojoS 0:ab00d9bcd00d 491 void setYGyroFIFOEnabled(bool enabled);
JojoS 0:ab00d9bcd00d 492 bool getZGyroFIFOEnabled();
JojoS 0:ab00d9bcd00d 493 void setZGyroFIFOEnabled(bool enabled);
JojoS 0:ab00d9bcd00d 494 bool getAccelFIFOEnabled();
JojoS 0:ab00d9bcd00d 495 void setAccelFIFOEnabled(bool enabled);
JojoS 0:ab00d9bcd00d 496 bool getSlave2FIFOEnabled();
JojoS 0:ab00d9bcd00d 497 void setSlave2FIFOEnabled(bool enabled);
JojoS 0:ab00d9bcd00d 498 bool getSlave1FIFOEnabled();
JojoS 0:ab00d9bcd00d 499 void setSlave1FIFOEnabled(bool enabled);
JojoS 0:ab00d9bcd00d 500 bool getSlave0FIFOEnabled();
JojoS 0:ab00d9bcd00d 501 void setSlave0FIFOEnabled(bool enabled);
JojoS 0:ab00d9bcd00d 502
JojoS 0:ab00d9bcd00d 503 // I2C_MST_CTRL register
JojoS 0:ab00d9bcd00d 504 bool getMultiMasterEnabled();
JojoS 0:ab00d9bcd00d 505 void setMultiMasterEnabled(bool enabled);
JojoS 0:ab00d9bcd00d 506 bool getWaitForExternalSensorEnabled();
JojoS 0:ab00d9bcd00d 507 void setWaitForExternalSensorEnabled(bool enabled);
JojoS 0:ab00d9bcd00d 508 bool getSlave3FIFOEnabled();
JojoS 0:ab00d9bcd00d 509 void setSlave3FIFOEnabled(bool enabled);
JojoS 0:ab00d9bcd00d 510 bool getSlaveReadWriteTransitionEnabled();
JojoS 0:ab00d9bcd00d 511 void setSlaveReadWriteTransitionEnabled(bool enabled);
JojoS 0:ab00d9bcd00d 512 uint8_t getMasterClockSpeed();
JojoS 0:ab00d9bcd00d 513 void setMasterClockSpeed(uint8_t speed);
JojoS 0:ab00d9bcd00d 514
JojoS 0:ab00d9bcd00d 515 // I2C_SLV* registers (Slave 0-3)
JojoS 0:ab00d9bcd00d 516 uint8_t getSlaveAddress(uint8_t num);
JojoS 0:ab00d9bcd00d 517 void setSlaveAddress(uint8_t num, uint8_t address);
JojoS 0:ab00d9bcd00d 518 uint8_t getSlaveRegister(uint8_t num);
JojoS 0:ab00d9bcd00d 519 void setSlaveRegister(uint8_t num, uint8_t reg);
JojoS 0:ab00d9bcd00d 520 bool getSlaveEnabled(uint8_t num);
JojoS 0:ab00d9bcd00d 521 void setSlaveEnabled(uint8_t num, bool enabled);
JojoS 0:ab00d9bcd00d 522 bool getSlaveWordByteSwap(uint8_t num);
JojoS 0:ab00d9bcd00d 523 void setSlaveWordByteSwap(uint8_t num, bool enabled);
JojoS 0:ab00d9bcd00d 524 bool getSlaveWriteMode(uint8_t num);
JojoS 0:ab00d9bcd00d 525 void setSlaveWriteMode(uint8_t num, bool mode);
JojoS 0:ab00d9bcd00d 526 bool getSlaveWordGroupOffset(uint8_t num);
JojoS 0:ab00d9bcd00d 527 void setSlaveWordGroupOffset(uint8_t num, bool enabled);
JojoS 0:ab00d9bcd00d 528 uint8_t getSlaveDataLength(uint8_t num);
JojoS 0:ab00d9bcd00d 529 void setSlaveDataLength(uint8_t num, uint8_t length);
JojoS 0:ab00d9bcd00d 530
JojoS 0:ab00d9bcd00d 531 // I2C_SLV* registers (Slave 4)
JojoS 0:ab00d9bcd00d 532 uint8_t getSlave4Address();
JojoS 0:ab00d9bcd00d 533 void setSlave4Address(uint8_t address);
JojoS 0:ab00d9bcd00d 534 uint8_t getSlave4Register();
JojoS 0:ab00d9bcd00d 535 void setSlave4Register(uint8_t reg);
JojoS 0:ab00d9bcd00d 536 void setSlave4OutputByte(uint8_t data);
JojoS 0:ab00d9bcd00d 537 bool getSlave4Enabled();
JojoS 0:ab00d9bcd00d 538 void setSlave4Enabled(bool enabled);
JojoS 0:ab00d9bcd00d 539 bool getSlave4InterruptEnabled();
JojoS 0:ab00d9bcd00d 540 void setSlave4InterruptEnabled(bool enabled);
JojoS 0:ab00d9bcd00d 541 bool getSlave4WriteMode();
JojoS 0:ab00d9bcd00d 542 void setSlave4WriteMode(bool mode);
JojoS 0:ab00d9bcd00d 543 uint8_t getSlave4MasterDelay();
JojoS 0:ab00d9bcd00d 544 void setSlave4MasterDelay(uint8_t delay);
JojoS 0:ab00d9bcd00d 545 uint8_t getSlate4InputByte();
JojoS 0:ab00d9bcd00d 546
JojoS 0:ab00d9bcd00d 547 // I2C_MST_STATUS register
JojoS 0:ab00d9bcd00d 548 bool getPassthroughStatus();
JojoS 0:ab00d9bcd00d 549 bool getSlave4IsDone();
JojoS 0:ab00d9bcd00d 550 bool getLostArbitration();
JojoS 0:ab00d9bcd00d 551 bool getSlave4Nack();
JojoS 0:ab00d9bcd00d 552 bool getSlave3Nack();
JojoS 0:ab00d9bcd00d 553 bool getSlave2Nack();
JojoS 0:ab00d9bcd00d 554 bool getSlave1Nack();
JojoS 0:ab00d9bcd00d 555 bool getSlave0Nack();
JojoS 0:ab00d9bcd00d 556
JojoS 0:ab00d9bcd00d 557 // INT_PIN_CFG register
JojoS 0:ab00d9bcd00d 558 bool getInterruptMode();
JojoS 0:ab00d9bcd00d 559 void setInterruptMode(bool mode);
JojoS 0:ab00d9bcd00d 560 bool getInterruptDrive();
JojoS 0:ab00d9bcd00d 561 void setInterruptDrive(bool drive);
JojoS 0:ab00d9bcd00d 562 bool getInterruptLatch();
JojoS 0:ab00d9bcd00d 563 void setInterruptLatch(bool latch);
JojoS 0:ab00d9bcd00d 564 bool getInterruptLatchClear();
JojoS 0:ab00d9bcd00d 565 void setInterruptLatchClear(bool clear);
JojoS 0:ab00d9bcd00d 566 bool getFSyncInterruptLevel();
JojoS 0:ab00d9bcd00d 567 void setFSyncInterruptLevel(bool level);
JojoS 0:ab00d9bcd00d 568 bool getFSyncInterruptEnabled();
JojoS 0:ab00d9bcd00d 569 void setFSyncInterruptEnabled(bool enabled);
JojoS 0:ab00d9bcd00d 570 bool getI2CBypassEnabled();
JojoS 0:ab00d9bcd00d 571 void setI2CBypassEnabled(bool enabled);
JojoS 0:ab00d9bcd00d 572 bool getClockOutputEnabled();
JojoS 0:ab00d9bcd00d 573 void setClockOutputEnabled(bool enabled);
JojoS 0:ab00d9bcd00d 574
JojoS 0:ab00d9bcd00d 575 // INT_ENABLE register
JojoS 0:ab00d9bcd00d 576 uint8_t getIntEnabled();
JojoS 0:ab00d9bcd00d 577 void setIntEnabled(uint8_t enabled);
JojoS 0:ab00d9bcd00d 578 bool getIntFreefallEnabled();
JojoS 0:ab00d9bcd00d 579 void setIntFreefallEnabled(bool enabled);
JojoS 0:ab00d9bcd00d 580 bool getIntMotionEnabled();
JojoS 0:ab00d9bcd00d 581 void setIntMotionEnabled(bool enabled);
JojoS 0:ab00d9bcd00d 582 bool getIntZeroMotionEnabled();
JojoS 0:ab00d9bcd00d 583 void setIntZeroMotionEnabled(bool enabled);
JojoS 0:ab00d9bcd00d 584 bool getIntFIFOBufferOverflowEnabled();
JojoS 0:ab00d9bcd00d 585 void setIntFIFOBufferOverflowEnabled(bool enabled);
JojoS 0:ab00d9bcd00d 586 bool getIntI2CMasterEnabled();
JojoS 0:ab00d9bcd00d 587 void setIntI2CMasterEnabled(bool enabled);
JojoS 0:ab00d9bcd00d 588 bool getIntDataReadyEnabled();
JojoS 0:ab00d9bcd00d 589 void setIntDataReadyEnabled(bool enabled);
JojoS 0:ab00d9bcd00d 590
JojoS 0:ab00d9bcd00d 591 // INT_STATUS register
JojoS 0:ab00d9bcd00d 592 uint8_t getIntStatus();
JojoS 0:ab00d9bcd00d 593 bool getIntFreefallStatus();
JojoS 0:ab00d9bcd00d 594 bool getIntMotionStatus();
JojoS 0:ab00d9bcd00d 595 bool getIntZeroMotionStatus();
JojoS 0:ab00d9bcd00d 596 bool getIntFIFOBufferOverflowStatus();
JojoS 0:ab00d9bcd00d 597 bool getIntI2CMasterStatus();
JojoS 0:ab00d9bcd00d 598 bool getIntDataReadyStatus();
JojoS 0:ab00d9bcd00d 599
JojoS 0:ab00d9bcd00d 600 // ACCEL_*OUT_* registers
JojoS 0:ab00d9bcd00d 601 void getMotion9(int16_t* ax, int16_t* ay, int16_t* az, int16_t* gx, int16_t* gy, int16_t* gz, int16_t* mx, int16_t* my, int16_t* mz);
JojoS 0:ab00d9bcd00d 602 void getMotion6(int16_t* ax, int16_t* ay, int16_t* az, int16_t* gx, int16_t* gy, int16_t* gz);
JojoS 0:ab00d9bcd00d 603 void getAcceleration(int16_t* x, int16_t* y, int16_t* z);
JojoS 0:ab00d9bcd00d 604 int16_t getAccelerationX();
JojoS 0:ab00d9bcd00d 605 int16_t getAccelerationY();
JojoS 0:ab00d9bcd00d 606 int16_t getAccelerationZ();
JojoS 0:ab00d9bcd00d 607
JojoS 0:ab00d9bcd00d 608 // TEMP_OUT_* registers
JojoS 0:ab00d9bcd00d 609 int16_t getTemperature();
JojoS 0:ab00d9bcd00d 610
JojoS 0:ab00d9bcd00d 611 // GYRO_*OUT_* registers
JojoS 0:ab00d9bcd00d 612 void getRotation(int16_t* x, int16_t* y, int16_t* z);
JojoS 0:ab00d9bcd00d 613 int16_t getRotationX();
JojoS 0:ab00d9bcd00d 614 int16_t getRotationY();
JojoS 0:ab00d9bcd00d 615 int16_t getRotationZ();
JojoS 0:ab00d9bcd00d 616
JojoS 0:ab00d9bcd00d 617 // EXT_SENS_DATA_* registers
JojoS 0:ab00d9bcd00d 618 uint8_t getExternalSensorByte(int position);
JojoS 0:ab00d9bcd00d 619 uint16_t getExternalSensorWord(int position);
JojoS 0:ab00d9bcd00d 620 uint32_t getExternalSensorDWord(int position);
JojoS 0:ab00d9bcd00d 621
JojoS 0:ab00d9bcd00d 622 // MOT_DETECT_STATUS register
JojoS 0:ab00d9bcd00d 623 bool getXNegMotionDetected();
JojoS 0:ab00d9bcd00d 624 bool getXPosMotionDetected();
JojoS 0:ab00d9bcd00d 625 bool getYNegMotionDetected();
JojoS 0:ab00d9bcd00d 626 bool getYPosMotionDetected();
JojoS 0:ab00d9bcd00d 627 bool getZNegMotionDetected();
JojoS 0:ab00d9bcd00d 628 bool getZPosMotionDetected();
JojoS 0:ab00d9bcd00d 629 bool getZeroMotionDetected();
JojoS 0:ab00d9bcd00d 630
JojoS 0:ab00d9bcd00d 631 // I2C_SLV*_DO register
JojoS 0:ab00d9bcd00d 632 void setSlaveOutputByte(uint8_t num, uint8_t data);
JojoS 0:ab00d9bcd00d 633
JojoS 0:ab00d9bcd00d 634 // I2C_MST_DELAY_CTRL register
JojoS 0:ab00d9bcd00d 635 bool getExternalShadowDelayEnabled();
JojoS 0:ab00d9bcd00d 636 void setExternalShadowDelayEnabled(bool enabled);
JojoS 0:ab00d9bcd00d 637 bool getSlaveDelayEnabled(uint8_t num);
JojoS 0:ab00d9bcd00d 638 void setSlaveDelayEnabled(uint8_t num, bool enabled);
JojoS 0:ab00d9bcd00d 639
JojoS 0:ab00d9bcd00d 640 // SIGNAL_PATH_RESET register
JojoS 0:ab00d9bcd00d 641 void resetGyroscopePath();
JojoS 0:ab00d9bcd00d 642 void resetAccelerometerPath();
JojoS 0:ab00d9bcd00d 643 void resetTemperaturePath();
JojoS 0:ab00d9bcd00d 644
JojoS 0:ab00d9bcd00d 645 // MOT_DETECT_CTRL register
JojoS 0:ab00d9bcd00d 646 uint8_t getAccelerometerPowerOnDelay();
JojoS 0:ab00d9bcd00d 647 void setAccelerometerPowerOnDelay(uint8_t delay);
JojoS 0:ab00d9bcd00d 648 uint8_t getFreefallDetectionCounterDecrement();
JojoS 0:ab00d9bcd00d 649 void setFreefallDetectionCounterDecrement(uint8_t decrement);
JojoS 0:ab00d9bcd00d 650 uint8_t getMotionDetectionCounterDecrement();
JojoS 0:ab00d9bcd00d 651 void setMotionDetectionCounterDecrement(uint8_t decrement);
JojoS 0:ab00d9bcd00d 652
JojoS 0:ab00d9bcd00d 653 // USER_CTRL register
JojoS 0:ab00d9bcd00d 654 bool getFIFOEnabled();
JojoS 0:ab00d9bcd00d 655 void setFIFOEnabled(bool enabled);
JojoS 0:ab00d9bcd00d 656 bool getI2CMasterModeEnabled();
JojoS 0:ab00d9bcd00d 657 void setI2CMasterModeEnabled(bool enabled);
JojoS 0:ab00d9bcd00d 658 void switchSPIEnabled(bool enabled);
JojoS 0:ab00d9bcd00d 659 void resetFIFO();
JojoS 0:ab00d9bcd00d 660 void resetI2CMaster();
JojoS 0:ab00d9bcd00d 661 void resetSensors();
JojoS 0:ab00d9bcd00d 662
JojoS 0:ab00d9bcd00d 663 // PWR_MGMT_1 register
JojoS 0:ab00d9bcd00d 664 void reset();
JojoS 0:ab00d9bcd00d 665 bool getSleepEnabled();
JojoS 0:ab00d9bcd00d 666 void setSleepEnabled(bool enabled);
JojoS 0:ab00d9bcd00d 667 bool getWakeCycleEnabled();
JojoS 0:ab00d9bcd00d 668 void setWakeCycleEnabled(bool enabled);
JojoS 0:ab00d9bcd00d 669 bool getTempSensorEnabled();
JojoS 0:ab00d9bcd00d 670 void setTempSensorEnabled(bool enabled);
JojoS 0:ab00d9bcd00d 671 uint8_t getClockSource();
JojoS 0:ab00d9bcd00d 672 void setClockSource(uint8_t source);
JojoS 0:ab00d9bcd00d 673
JojoS 0:ab00d9bcd00d 674 // PWR_MGMT_2 register
JojoS 0:ab00d9bcd00d 675 uint8_t getWakeFrequency();
JojoS 0:ab00d9bcd00d 676 void setWakeFrequency(uint8_t frequency);
JojoS 0:ab00d9bcd00d 677 bool getStandbyXAccelEnabled();
JojoS 0:ab00d9bcd00d 678 void setStandbyXAccelEnabled(bool enabled);
JojoS 0:ab00d9bcd00d 679 bool getStandbyYAccelEnabled();
JojoS 0:ab00d9bcd00d 680 void setStandbyYAccelEnabled(bool enabled);
JojoS 0:ab00d9bcd00d 681 bool getStandbyZAccelEnabled();
JojoS 0:ab00d9bcd00d 682 void setStandbyZAccelEnabled(bool enabled);
JojoS 0:ab00d9bcd00d 683 bool getStandbyXGyroEnabled();
JojoS 0:ab00d9bcd00d 684 void setStandbyXGyroEnabled(bool enabled);
JojoS 0:ab00d9bcd00d 685 bool getStandbyYGyroEnabled();
JojoS 0:ab00d9bcd00d 686 void setStandbyYGyroEnabled(bool enabled);
JojoS 0:ab00d9bcd00d 687 bool getStandbyZGyroEnabled();
JojoS 0:ab00d9bcd00d 688 void setStandbyZGyroEnabled(bool enabled);
JojoS 0:ab00d9bcd00d 689
JojoS 0:ab00d9bcd00d 690 // FIFO_COUNT_* registers
JojoS 0:ab00d9bcd00d 691 uint16_t getFIFOCount();
JojoS 0:ab00d9bcd00d 692
JojoS 0:ab00d9bcd00d 693 // FIFO_R_W register
JojoS 0:ab00d9bcd00d 694 uint8_t getFIFOByte();
JojoS 0:ab00d9bcd00d 695 void setFIFOByte(uint8_t data);
JojoS 0:ab00d9bcd00d 696 void getFIFOBytes(uint8_t *data, uint8_t length);
JojoS 0:ab00d9bcd00d 697
JojoS 0:ab00d9bcd00d 698 // WHO_AM_I register
JojoS 0:ab00d9bcd00d 699 uint8_t getDeviceID();
JojoS 0:ab00d9bcd00d 700 void setDeviceID(uint8_t id);
JojoS 0:ab00d9bcd00d 701
JojoS 0:ab00d9bcd00d 702 // ======== UNDOCUMENTED/DMP REGISTERS/METHODS ========
JojoS 0:ab00d9bcd00d 703
JojoS 0:ab00d9bcd00d 704 // XG_OFFS_TC register
JojoS 0:ab00d9bcd00d 705 uint8_t getOTPBankValid();
JojoS 0:ab00d9bcd00d 706 void setOTPBankValid(bool enabled);
JojoS 0:ab00d9bcd00d 707 int8_t getXGyroOffsetTC();
JojoS 0:ab00d9bcd00d 708 void setXGyroOffsetTC(int8_t offset);
JojoS 0:ab00d9bcd00d 709
JojoS 0:ab00d9bcd00d 710 // YG_OFFS_TC register
JojoS 0:ab00d9bcd00d 711 int8_t getYGyroOffsetTC();
JojoS 0:ab00d9bcd00d 712 void setYGyroOffsetTC(int8_t offset);
JojoS 0:ab00d9bcd00d 713
JojoS 0:ab00d9bcd00d 714 // ZG_OFFS_TC register
JojoS 0:ab00d9bcd00d 715 int8_t getZGyroOffsetTC();
JojoS 0:ab00d9bcd00d 716 void setZGyroOffsetTC(int8_t offset);
JojoS 0:ab00d9bcd00d 717
JojoS 0:ab00d9bcd00d 718 // X_FINE_GAIN register
JojoS 0:ab00d9bcd00d 719 int8_t getXFineGain();
JojoS 0:ab00d9bcd00d 720 void setXFineGain(int8_t gain);
JojoS 0:ab00d9bcd00d 721
JojoS 0:ab00d9bcd00d 722 // Y_FINE_GAIN register
JojoS 0:ab00d9bcd00d 723 int8_t getYFineGain();
JojoS 0:ab00d9bcd00d 724 void setYFineGain(int8_t gain);
JojoS 0:ab00d9bcd00d 725
JojoS 0:ab00d9bcd00d 726 // Z_FINE_GAIN register
JojoS 0:ab00d9bcd00d 727 int8_t getZFineGain();
JojoS 0:ab00d9bcd00d 728 void setZFineGain(int8_t gain);
JojoS 0:ab00d9bcd00d 729
JojoS 0:ab00d9bcd00d 730 // XA_OFFS_* registers
JojoS 0:ab00d9bcd00d 731 int16_t getXAccelOffset();
JojoS 0:ab00d9bcd00d 732 void setXAccelOffset(int16_t offset);
JojoS 0:ab00d9bcd00d 733
JojoS 0:ab00d9bcd00d 734 // YA_OFFS_* register
JojoS 0:ab00d9bcd00d 735 int16_t getYAccelOffset();
JojoS 0:ab00d9bcd00d 736 void setYAccelOffset(int16_t offset);
JojoS 0:ab00d9bcd00d 737
JojoS 0:ab00d9bcd00d 738 // ZA_OFFS_* register
JojoS 0:ab00d9bcd00d 739 int16_t getZAccelOffset();
JojoS 0:ab00d9bcd00d 740 void setZAccelOffset(int16_t offset);
JojoS 0:ab00d9bcd00d 741
JojoS 0:ab00d9bcd00d 742 // XG_OFFS_USR* registers
JojoS 0:ab00d9bcd00d 743 int16_t getXGyroOffset();
JojoS 0:ab00d9bcd00d 744 void setXGyroOffset(int16_t offset);
JojoS 0:ab00d9bcd00d 745
JojoS 0:ab00d9bcd00d 746 // YG_OFFS_USR* register
JojoS 0:ab00d9bcd00d 747 int16_t getYGyroOffset();
JojoS 0:ab00d9bcd00d 748 void setYGyroOffset(int16_t offset);
JojoS 0:ab00d9bcd00d 749
JojoS 0:ab00d9bcd00d 750 // ZG_OFFS_USR* register
JojoS 0:ab00d9bcd00d 751 int16_t getZGyroOffset();
JojoS 0:ab00d9bcd00d 752 void setZGyroOffset(int16_t offset);
JojoS 0:ab00d9bcd00d 753
JojoS 0:ab00d9bcd00d 754 // INT_ENABLE register (DMP functions)
JojoS 0:ab00d9bcd00d 755 bool getIntPLLReadyEnabled();
JojoS 0:ab00d9bcd00d 756 void setIntPLLReadyEnabled(bool enabled);
JojoS 0:ab00d9bcd00d 757 bool getIntDMPEnabled();
JojoS 0:ab00d9bcd00d 758 void setIntDMPEnabled(bool enabled);
JojoS 0:ab00d9bcd00d 759
JojoS 0:ab00d9bcd00d 760 // DMP_INT_STATUS
JojoS 0:ab00d9bcd00d 761 bool getDMPInt5Status();
JojoS 0:ab00d9bcd00d 762 bool getDMPInt4Status();
JojoS 0:ab00d9bcd00d 763 bool getDMPInt3Status();
JojoS 0:ab00d9bcd00d 764 bool getDMPInt2Status();
JojoS 0:ab00d9bcd00d 765 bool getDMPInt1Status();
JojoS 0:ab00d9bcd00d 766 bool getDMPInt0Status();
JojoS 0:ab00d9bcd00d 767
JojoS 0:ab00d9bcd00d 768 // INT_STATUS register (DMP functions)
JojoS 0:ab00d9bcd00d 769 bool getIntPLLReadyStatus();
JojoS 0:ab00d9bcd00d 770 bool getIntDMPStatus();
JojoS 0:ab00d9bcd00d 771
JojoS 0:ab00d9bcd00d 772 // USER_CTRL register (DMP functions)
JojoS 0:ab00d9bcd00d 773 bool getDMPEnabled();
JojoS 0:ab00d9bcd00d 774 void setDMPEnabled(bool enabled);
JojoS 0:ab00d9bcd00d 775 void resetDMP();
JojoS 0:ab00d9bcd00d 776
JojoS 0:ab00d9bcd00d 777 // BANK_SEL register
JojoS 0:ab00d9bcd00d 778 void setMemoryBank(uint8_t bank, bool prefetchEnabled=false, bool userBank=false);
JojoS 0:ab00d9bcd00d 779
JojoS 0:ab00d9bcd00d 780 // MEM_START_ADDR register
JojoS 0:ab00d9bcd00d 781 void setMemoryStartAddress(uint8_t address);
JojoS 0:ab00d9bcd00d 782
JojoS 0:ab00d9bcd00d 783 // MEM_R_W register
JojoS 0:ab00d9bcd00d 784 uint8_t readMemoryByte();
JojoS 0:ab00d9bcd00d 785 void writeMemoryByte(uint8_t data);
JojoS 0:ab00d9bcd00d 786 void readMemoryBlock(uint8_t *data, uint16_t dataSize, uint8_t bank=0, uint8_t address=0);
JojoS 0:ab00d9bcd00d 787 bool writeMemoryBlock(const uint8_t *data, uint16_t dataSize, uint8_t bank=0, uint8_t address=0, bool verify=true, bool useProgMem=false);
JojoS 0:ab00d9bcd00d 788 bool writeProgMemoryBlock(const uint8_t *data, uint16_t dataSize, uint8_t bank=0, uint8_t address=0, bool verify=true);
JojoS 0:ab00d9bcd00d 789
JojoS 0:ab00d9bcd00d 790 bool writeDMPConfigurationSet(const uint8_t *data, uint16_t dataSize, bool useProgMem=false);
JojoS 0:ab00d9bcd00d 791 bool writeProgDMPConfigurationSet(const uint8_t *data, uint16_t dataSize);
JojoS 0:ab00d9bcd00d 792
JojoS 0:ab00d9bcd00d 793 // DMP_CFG_1 register
JojoS 0:ab00d9bcd00d 794 uint8_t getDMPConfig1();
JojoS 0:ab00d9bcd00d 795 void setDMPConfig1(uint8_t config);
JojoS 0:ab00d9bcd00d 796
JojoS 0:ab00d9bcd00d 797 // DMP_CFG_2 register
JojoS 0:ab00d9bcd00d 798 uint8_t getDMPConfig2();
JojoS 0:ab00d9bcd00d 799 void setDMPConfig2(uint8_t config);
JojoS 0:ab00d9bcd00d 800
JojoS 0:ab00d9bcd00d 801 // special methods for MotionApps 2.0 implementation
JojoS 0:ab00d9bcd00d 802 #ifdef MPU9150_INCLUDE_DMP_MOTIONAPPS20
JojoS 0:ab00d9bcd00d 803 uint8_t *dmpPacketBuffer;
JojoS 0:ab00d9bcd00d 804 uint16_t dmpPacketSize;
JojoS 0:ab00d9bcd00d 805
JojoS 0:ab00d9bcd00d 806 uint8_t dmpInitialize();
JojoS 0:ab00d9bcd00d 807 bool dmpPacketAvailable();
JojoS 0:ab00d9bcd00d 808
JojoS 0:ab00d9bcd00d 809 uint8_t dmpSetFIFORate(uint8_t fifoRate);
JojoS 0:ab00d9bcd00d 810 uint8_t dmpGetFIFORate();
JojoS 0:ab00d9bcd00d 811 uint8_t dmpGetSampleStepSizeMS();
JojoS 0:ab00d9bcd00d 812 uint8_t dmpGetSampleFrequency();
JojoS 0:ab00d9bcd00d 813 int32_t dmpDecodeTemperature(int8_t tempReg);
JojoS 0:ab00d9bcd00d 814
JojoS 0:ab00d9bcd00d 815 // Register callbacks after a packet of FIFO data is processed
JojoS 0:ab00d9bcd00d 816 //uint8_t dmpRegisterFIFORateProcess(inv_obj_func func, int16_t priority);
JojoS 0:ab00d9bcd00d 817 //uint8_t dmpUnregisterFIFORateProcess(inv_obj_func func);
JojoS 0:ab00d9bcd00d 818 uint8_t dmpRunFIFORateProcesses();
JojoS 0:ab00d9bcd00d 819
JojoS 0:ab00d9bcd00d 820 // Setup FIFO for various output
JojoS 0:ab00d9bcd00d 821 uint8_t dmpSendQuaternion(uint_fast16_t accuracy);
JojoS 0:ab00d9bcd00d 822 uint8_t dmpSendGyro(uint_fast16_t elements, uint_fast16_t accuracy);
JojoS 0:ab00d9bcd00d 823 uint8_t dmpSendAccel(uint_fast16_t elements, uint_fast16_t accuracy);
JojoS 0:ab00d9bcd00d 824 uint8_t dmpSendLinearAccel(uint_fast16_t elements, uint_fast16_t accuracy);
JojoS 0:ab00d9bcd00d 825 uint8_t dmpSendLinearAccelInWorld(uint_fast16_t elements, uint_fast16_t accuracy);
JojoS 0:ab00d9bcd00d 826 uint8_t dmpSendControlData(uint_fast16_t elements, uint_fast16_t accuracy);
JojoS 0:ab00d9bcd00d 827 uint8_t dmpSendSensorData(uint_fast16_t elements, uint_fast16_t accuracy);
JojoS 0:ab00d9bcd00d 828 uint8_t dmpSendExternalSensorData(uint_fast16_t elements, uint_fast16_t accuracy);
JojoS 0:ab00d9bcd00d 829 uint8_t dmpSendGravity(uint_fast16_t elements, uint_fast16_t accuracy);
JojoS 0:ab00d9bcd00d 830 uint8_t dmpSendPacketNumber(uint_fast16_t accuracy);
JojoS 0:ab00d9bcd00d 831 uint8_t dmpSendQuantizedAccel(uint_fast16_t elements, uint_fast16_t accuracy);
JojoS 0:ab00d9bcd00d 832 uint8_t dmpSendEIS(uint_fast16_t elements, uint_fast16_t accuracy);
JojoS 0:ab00d9bcd00d 833
JojoS 0:ab00d9bcd00d 834 // Get Fixed Point data from FIFO
JojoS 0:ab00d9bcd00d 835 uint8_t dmpGetAccel(int32_t *data, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 836 uint8_t dmpGetAccel(int16_t *data, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 837 uint8_t dmpGetAccel(VectorInt16 *v, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 838 uint8_t dmpGetQuaternion(int32_t *data, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 839 uint8_t dmpGetQuaternion(int16_t *data, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 840 uint8_t dmpGetQuaternion(Quaternion *q, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 841 uint8_t dmpGet6AxisQuaternion(int32_t *data, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 842 uint8_t dmpGet6AxisQuaternion(int16_t *data, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 843 uint8_t dmpGet6AxisQuaternion(Quaternion *q, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 844 uint8_t dmpGetRelativeQuaternion(int32_t *data, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 845 uint8_t dmpGetRelativeQuaternion(int16_t *data, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 846 uint8_t dmpGetRelativeQuaternion(Quaternion *data, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 847 uint8_t dmpGetGyro(int32_t *data, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 848 uint8_t dmpGetGyro(int16_t *data, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 849 uint8_t dmpGetGyro(VectorInt16 *v, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 850 uint8_t dmpSetLinearAccelFilterCoefficient(float coef);
JojoS 0:ab00d9bcd00d 851 uint8_t dmpGetLinearAccel(int32_t *data, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 852 uint8_t dmpGetLinearAccel(int16_t *data, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 853 uint8_t dmpGetLinearAccel(VectorInt16 *v, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 854 uint8_t dmpGetLinearAccel(VectorInt16 *v, VectorInt16 *vRaw, VectorFloat *gravity);
JojoS 0:ab00d9bcd00d 855 uint8_t dmpGetLinearAccelInWorld(int32_t *data, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 856 uint8_t dmpGetLinearAccelInWorld(int16_t *data, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 857 uint8_t dmpGetLinearAccelInWorld(VectorInt16 *v, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 858 uint8_t dmpGetLinearAccelInWorld(VectorInt16 *v, VectorInt16 *vReal, Quaternion *q);
JojoS 0:ab00d9bcd00d 859 uint8_t dmpGetGyroAndAccelSensor(int32_t *data, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 860 uint8_t dmpGetGyroAndAccelSensor(int16_t *data, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 861 uint8_t dmpGetGyroAndAccelSensor(VectorInt16 *g, VectorInt16 *a, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 862 uint8_t dmpGetGyroSensor(int32_t *data, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 863 uint8_t dmpGetGyroSensor(int16_t *data, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 864 uint8_t dmpGetGyroSensor(VectorInt16 *v, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 865 uint8_t dmpGetControlData(int32_t *data, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 866 uint8_t dmpGetTemperature(int32_t *data, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 867 uint8_t dmpGetGravity(int32_t *data, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 868 uint8_t dmpGetGravity(int16_t *data, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 869 uint8_t dmpGetGravity(VectorInt16 *v, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 870 uint8_t dmpGetGravity(VectorFloat *v, Quaternion *q);
JojoS 0:ab00d9bcd00d 871 uint8_t dmpGetUnquantizedAccel(int32_t *data, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 872 uint8_t dmpGetUnquantizedAccel(int16_t *data, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 873 uint8_t dmpGetUnquantizedAccel(VectorInt16 *v, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 874 uint8_t dmpGetQuantizedAccel(int32_t *data, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 875 uint8_t dmpGetQuantizedAccel(int16_t *data, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 876 uint8_t dmpGetQuantizedAccel(VectorInt16 *v, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 877 uint8_t dmpGetExternalSensorData(int32_t *data, uint16_t size, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 878 uint8_t dmpGetEIS(int32_t *data, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 879
JojoS 0:ab00d9bcd00d 880 uint8_t dmpGetEuler(float *data, Quaternion *q);
JojoS 0:ab00d9bcd00d 881 uint8_t dmpGetYawPitchRoll(float *data, Quaternion *q, VectorFloat *gravity);
JojoS 0:ab00d9bcd00d 882
JojoS 0:ab00d9bcd00d 883 // Get Floating Point data from FIFO
JojoS 0:ab00d9bcd00d 884 uint8_t dmpGetAccelFloat(float *data, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 885 uint8_t dmpGetQuaternionFloat(float *data, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 886
JojoS 0:ab00d9bcd00d 887 uint8_t dmpProcessFIFOPacket(const unsigned char *dmpData);
JojoS 0:ab00d9bcd00d 888 uint8_t dmpReadAndProcessFIFOPacket(uint8_t numPackets, uint8_t *processed=NULL);
JojoS 0:ab00d9bcd00d 889
JojoS 0:ab00d9bcd00d 890 uint8_t dmpSetFIFOProcessedCallback(void (*func) (void));
JojoS 0:ab00d9bcd00d 891
JojoS 0:ab00d9bcd00d 892 uint8_t dmpInitFIFOParam();
JojoS 0:ab00d9bcd00d 893 uint8_t dmpCloseFIFO();
JojoS 0:ab00d9bcd00d 894 uint8_t dmpSetGyroDataSource(uint8_t source);
JojoS 0:ab00d9bcd00d 895 uint8_t dmpDecodeQuantizedAccel();
JojoS 0:ab00d9bcd00d 896 uint32_t dmpGetGyroSumOfSquare();
JojoS 0:ab00d9bcd00d 897 uint32_t dmpGetAccelSumOfSquare();
JojoS 0:ab00d9bcd00d 898 void dmpOverrideQuaternion(long *q);
JojoS 0:ab00d9bcd00d 899 uint16_t dmpGetFIFOPacketSize();
JojoS 0:ab00d9bcd00d 900 #endif
JojoS 0:ab00d9bcd00d 901
JojoS 0:ab00d9bcd00d 902 // special methods for MotionApps 4.1 implementation
JojoS 0:ab00d9bcd00d 903 #ifdef MPU9150_INCLUDE_DMP_MOTIONAPPS41
JojoS 0:ab00d9bcd00d 904 uint8_t *dmpPacketBuffer;
JojoS 0:ab00d9bcd00d 905 uint16_t dmpPacketSize;
JojoS 0:ab00d9bcd00d 906
JojoS 0:ab00d9bcd00d 907 uint8_t dmpInitialize();
JojoS 0:ab00d9bcd00d 908 bool dmpPacketAvailable();
JojoS 0:ab00d9bcd00d 909
JojoS 0:ab00d9bcd00d 910 uint8_t dmpSetFIFORate(uint8_t fifoRate);
JojoS 0:ab00d9bcd00d 911 uint8_t dmpGetFIFORate();
JojoS 0:ab00d9bcd00d 912 uint8_t dmpGetSampleStepSizeMS();
JojoS 0:ab00d9bcd00d 913 uint8_t dmpGetSampleFrequency();
JojoS 0:ab00d9bcd00d 914 int32_t dmpDecodeTemperature(int8_t tempReg);
JojoS 0:ab00d9bcd00d 915
JojoS 0:ab00d9bcd00d 916 // Register callbacks after a packet of FIFO data is processed
JojoS 0:ab00d9bcd00d 917 //uint8_t dmpRegisterFIFORateProcess(inv_obj_func func, int16_t priority);
JojoS 0:ab00d9bcd00d 918 //uint8_t dmpUnregisterFIFORateProcess(inv_obj_func func);
JojoS 0:ab00d9bcd00d 919 uint8_t dmpRunFIFORateProcesses();
JojoS 0:ab00d9bcd00d 920
JojoS 0:ab00d9bcd00d 921 // Setup FIFO for various output
JojoS 0:ab00d9bcd00d 922 uint8_t dmpSendQuaternion(uint_fast16_t accuracy);
JojoS 0:ab00d9bcd00d 923 uint8_t dmpSendGyro(uint_fast16_t elements, uint_fast16_t accuracy);
JojoS 0:ab00d9bcd00d 924 uint8_t dmpSendAccel(uint_fast16_t elements, uint_fast16_t accuracy);
JojoS 0:ab00d9bcd00d 925 uint8_t dmpSendLinearAccel(uint_fast16_t elements, uint_fast16_t accuracy);
JojoS 0:ab00d9bcd00d 926 uint8_t dmpSendLinearAccelInWorld(uint_fast16_t elements, uint_fast16_t accuracy);
JojoS 0:ab00d9bcd00d 927 uint8_t dmpSendControlData(uint_fast16_t elements, uint_fast16_t accuracy);
JojoS 0:ab00d9bcd00d 928 uint8_t dmpSendSensorData(uint_fast16_t elements, uint_fast16_t accuracy);
JojoS 0:ab00d9bcd00d 929 uint8_t dmpSendExternalSensorData(uint_fast16_t elements, uint_fast16_t accuracy);
JojoS 0:ab00d9bcd00d 930 uint8_t dmpSendGravity(uint_fast16_t elements, uint_fast16_t accuracy);
JojoS 0:ab00d9bcd00d 931 uint8_t dmpSendPacketNumber(uint_fast16_t accuracy);
JojoS 0:ab00d9bcd00d 932 uint8_t dmpSendQuantizedAccel(uint_fast16_t elements, uint_fast16_t accuracy);
JojoS 0:ab00d9bcd00d 933 uint8_t dmpSendEIS(uint_fast16_t elements, uint_fast16_t accuracy);
JojoS 0:ab00d9bcd00d 934
JojoS 0:ab00d9bcd00d 935 // Get Fixed Point data from FIFO
JojoS 0:ab00d9bcd00d 936 uint8_t dmpGetAccel(int32_t *data, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 937 uint8_t dmpGetAccel(int16_t *data, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 938 uint8_t dmpGetAccel(VectorInt16 *v, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 939 uint8_t dmpGetQuaternion(int32_t *data, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 940 uint8_t dmpGetQuaternion(int16_t *data, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 941 uint8_t dmpGetQuaternion(Quaternion *q, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 942 uint8_t dmpGet6AxisQuaternion(int32_t *data, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 943 uint8_t dmpGet6AxisQuaternion(int16_t *data, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 944 uint8_t dmpGet6AxisQuaternion(Quaternion *q, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 945 uint8_t dmpGetRelativeQuaternion(int32_t *data, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 946 uint8_t dmpGetRelativeQuaternion(int16_t *data, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 947 uint8_t dmpGetRelativeQuaternion(Quaternion *data, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 948 uint8_t dmpGetGyro(int32_t *data, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 949 uint8_t dmpGetGyro(int16_t *data, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 950 uint8_t dmpGetGyro(VectorInt16 *v, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 951 uint8_t dmpGetMag(int16_t *data, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 952 uint8_t dmpSetLinearAccelFilterCoefficient(float coef);
JojoS 0:ab00d9bcd00d 953 uint8_t dmpGetLinearAccel(int32_t *data, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 954 uint8_t dmpGetLinearAccel(int16_t *data, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 955 uint8_t dmpGetLinearAccel(VectorInt16 *v, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 956 uint8_t dmpGetLinearAccel(VectorInt16 *v, VectorInt16 *vRaw, VectorFloat *gravity);
JojoS 0:ab00d9bcd00d 957 uint8_t dmpGetLinearAccelInWorld(int32_t *data, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 958 uint8_t dmpGetLinearAccelInWorld(int16_t *data, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 959 uint8_t dmpGetLinearAccelInWorld(VectorInt16 *v, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 960 uint8_t dmpGetLinearAccelInWorld(VectorInt16 *v, VectorInt16 *vReal, Quaternion *q);
JojoS 0:ab00d9bcd00d 961 uint8_t dmpGetGyroAndAccelSensor(int32_t *data, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 962 uint8_t dmpGetGyroAndAccelSensor(int16_t *data, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 963 uint8_t dmpGetGyroAndAccelSensor(VectorInt16 *g, VectorInt16 *a, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 964 uint8_t dmpGetGyroSensor(int32_t *data, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 965 uint8_t dmpGetGyroSensor(int16_t *data, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 966 uint8_t dmpGetGyroSensor(VectorInt16 *v, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 967 uint8_t dmpGetControlData(int32_t *data, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 968 uint8_t dmpGetTemperature(int32_t *data, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 969 uint8_t dmpGetGravity(int32_t *data, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 970 uint8_t dmpGetGravity(int16_t *data, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 971 uint8_t dmpGetGravity(VectorInt16 *v, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 972 uint8_t dmpGetGravity(VectorFloat *v, Quaternion *q);
JojoS 0:ab00d9bcd00d 973 uint8_t dmpGetUnquantizedAccel(int32_t *data, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 974 uint8_t dmpGetUnquantizedAccel(int16_t *data, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 975 uint8_t dmpGetUnquantizedAccel(VectorInt16 *v, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 976 uint8_t dmpGetQuantizedAccel(int32_t *data, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 977 uint8_t dmpGetQuantizedAccel(int16_t *data, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 978 uint8_t dmpGetQuantizedAccel(VectorInt16 *v, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 979 uint8_t dmpGetExternalSensorData(int32_t *data, uint16_t size, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 980 uint8_t dmpGetEIS(int32_t *data, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 981
JojoS 0:ab00d9bcd00d 982 uint8_t dmpGetEuler(float *data, Quaternion *q);
JojoS 0:ab00d9bcd00d 983 uint8_t dmpGetYawPitchRoll(float *data, Quaternion *q, VectorFloat *gravity);
JojoS 0:ab00d9bcd00d 984
JojoS 0:ab00d9bcd00d 985 // Get Floating Point data from FIFO
JojoS 0:ab00d9bcd00d 986 uint8_t dmpGetAccelFloat(float *data, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 987 uint8_t dmpGetQuaternionFloat(float *data, const uint8_t* packet=0);
JojoS 0:ab00d9bcd00d 988
JojoS 0:ab00d9bcd00d 989 uint8_t dmpProcessFIFOPacket(const unsigned char *dmpData);
JojoS 0:ab00d9bcd00d 990 uint8_t dmpReadAndProcessFIFOPacket(uint8_t numPackets, uint8_t *processed=NULL);
JojoS 0:ab00d9bcd00d 991
JojoS 0:ab00d9bcd00d 992 uint8_t dmpSetFIFOProcessedCallback(void (*func) (void));
JojoS 0:ab00d9bcd00d 993
JojoS 0:ab00d9bcd00d 994 uint8_t dmpInitFIFOParam();
JojoS 0:ab00d9bcd00d 995 uint8_t dmpCloseFIFO();
JojoS 0:ab00d9bcd00d 996 uint8_t dmpSetGyroDataSource(uint8_t source);
JojoS 0:ab00d9bcd00d 997 uint8_t dmpDecodeQuantizedAccel();
JojoS 0:ab00d9bcd00d 998 uint32_t dmpGetGyroSumOfSquare();
JojoS 0:ab00d9bcd00d 999 uint32_t dmpGetAccelSumOfSquare();
JojoS 0:ab00d9bcd00d 1000 void dmpOverrideQuaternion(long *q);
JojoS 0:ab00d9bcd00d 1001 uint16_t dmpGetFIFOPacketSize();
JojoS 0:ab00d9bcd00d 1002 #endif
JojoS 0:ab00d9bcd00d 1003
JojoS 0:ab00d9bcd00d 1004 private:
JojoS 0:ab00d9bcd00d 1005 uint8_t devAddr;
JojoS 0:ab00d9bcd00d 1006 uint8_t buffer[14];
JojoS 0:ab00d9bcd00d 1007 };
JojoS 0:ab00d9bcd00d 1008
JojoS 0:ab00d9bcd00d 1009 #endif /* _MPU9150_H_ */