BNO055をI2CとUARTで使用するためのライブラリ。UARTはmbedにて不安定なため使用できるボードとできないボードがある模様。

Dependents:   BNO055_BME280_ Yabusame2_gyro GRhanawaizman test_deg_read

Committer:
Yajirushi
Date:
Tue Nov 29 02:57:08 2016 +0000
Revision:
0:3807ce385b2a
Child:
1:7dbc931127c0
Child:
2:e8bc1ae2c20c
FIRST COMMIT

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Yajirushi 0:3807ce385b2a 1 #ifndef BNO055_H
Yajirushi 0:3807ce385b2a 2 #define BNO055_H
Yajirushi 0:3807ce385b2a 3
Yajirushi 0:3807ce385b2a 4 #include "mbed.h"
Yajirushi 0:3807ce385b2a 5
Yajirushi 0:3807ce385b2a 6 //UART通信に使用するバッファの最大サイズ
Yajirushi 0:3807ce385b2a 7 #define BNO055_UART_BUF_MAXLEN 24 //[byte]
Yajirushi 0:3807ce385b2a 8 //I2Cデフォルトスレーブアドレス
Yajirushi 0:3807ce385b2a 9 #define BNO055_I2C_DEFADDR 0x28
Yajirushi 0:3807ce385b2a 10
Yajirushi 0:3807ce385b2a 11 #define BNO055_PAGE_ID 0x07
Yajirushi 0:3807ce385b2a 12
Yajirushi 0:3807ce385b2a 13 #define BNO055P0_CHIP_ID 0x00
Yajirushi 0:3807ce385b2a 14 #define BNO055P0_ACC_ID 0x01
Yajirushi 0:3807ce385b2a 15 #define BNO055P0_MAG_ID 0x02
Yajirushi 0:3807ce385b2a 16 #define BNO055P0_GYR_ID 0x03
Yajirushi 0:3807ce385b2a 17 #define BNO055P0_SW_REV_ID_LSB 0x04
Yajirushi 0:3807ce385b2a 18 #define BNO055P0_SW_REV_ID_MSB 0x05
Yajirushi 0:3807ce385b2a 19 #define BNO055P0_BL_REV_ID 0x06
Yajirushi 0:3807ce385b2a 20 #define BNO055P0_ACC_DATA_X_LSB 0x08
Yajirushi 0:3807ce385b2a 21 #define BNO055P0_ACC_DATA_X_MSB 0x09
Yajirushi 0:3807ce385b2a 22 #define BNO055P0_ACC_DATA_Y_LSB 0x0A
Yajirushi 0:3807ce385b2a 23 #define BNO055P0_ACC_DATA_Y_MSB 0x0B
Yajirushi 0:3807ce385b2a 24 #define BNO055P0_ACC_DATA_Z_LSB 0x0C
Yajirushi 0:3807ce385b2a 25 #define BNO055P0_ACC_DATA_Z_MSB 0x0D
Yajirushi 0:3807ce385b2a 26 #define BNO055P0_MAG_DATA_X_LSB 0x0E
Yajirushi 0:3807ce385b2a 27 #define BNO055P0_MAG_DATA_X_MSB 0x0F
Yajirushi 0:3807ce385b2a 28 #define BNO055P0_MAG_DATA_Y_LSB 0x10
Yajirushi 0:3807ce385b2a 29 #define BNO055P0_MAG_DATA_Y_MSB 0x11
Yajirushi 0:3807ce385b2a 30 #define BNO055P0_MAG_DATA_Z_LSB 0x12
Yajirushi 0:3807ce385b2a 31 #define BNO055P0_MAG_DATA_Z_MSB 0x13
Yajirushi 0:3807ce385b2a 32 #define BNO055P0_GYR_DATA_X_LSB 0x14
Yajirushi 0:3807ce385b2a 33 #define BNO055P0_GYR_DATA_X_MSB 0x15
Yajirushi 0:3807ce385b2a 34 #define BNO055P0_GYR_DATA_Y_LSB 0x16
Yajirushi 0:3807ce385b2a 35 #define BNO055P0_GYR_DATA_Y_MSB 0x17
Yajirushi 0:3807ce385b2a 36 #define BNO055P0_GYR_DATA_Z_LSB 0x18
Yajirushi 0:3807ce385b2a 37 #define BNO055P0_GYR_DATA_Z_MSB 0x19
Yajirushi 0:3807ce385b2a 38 #define BNO055P0_EUL_HEADING_LSB 0x1A
Yajirushi 0:3807ce385b2a 39 #define BNO055P0_EUL_HEADING_MSB 0x1B
Yajirushi 0:3807ce385b2a 40 #define BNO055P0_EUL_ROLL_LSB 0x1C
Yajirushi 0:3807ce385b2a 41 #define BNO055P0_EUL_ROLL_MSB 0x1D
Yajirushi 0:3807ce385b2a 42 #define BNO055P0_EUL_PITCH_LSB 0x1E
Yajirushi 0:3807ce385b2a 43 #define BNO055P0_EUL_PITCH_MSB 0x1F
Yajirushi 0:3807ce385b2a 44 #define BNO055P0_QUA_DATA_W_LSB 0x20
Yajirushi 0:3807ce385b2a 45 #define BNO055P0_QUA_DATA_W_MSB 0x21
Yajirushi 0:3807ce385b2a 46 #define BNO055P0_QUA_DATA_X_LSB 0x22
Yajirushi 0:3807ce385b2a 47 #define BNO055P0_QUA_DATA_X_MSB 0x23
Yajirushi 0:3807ce385b2a 48 #define BNO055P0_QUA_DATA_Y_LSB 0x24
Yajirushi 0:3807ce385b2a 49 #define BNO055P0_QUA_DATA_Y_MSB 0x25
Yajirushi 0:3807ce385b2a 50 #define BNO055P0_QUA_DATA_Z_LSB 0x26
Yajirushi 0:3807ce385b2a 51 #define BNO055P0_QUA_DATA_Z_MSB 0x27
Yajirushi 0:3807ce385b2a 52 #define BNO055P0_LIA_DATA_X_LSB 0x28
Yajirushi 0:3807ce385b2a 53 #define BNO055P0_LIA_DATA_X_MBS 0x29
Yajirushi 0:3807ce385b2a 54 #define BNO055P0_LIA_DATA_Y_LSB 0x2A
Yajirushi 0:3807ce385b2a 55 #define BNO055P0_LIA_DATA_Y_MBS 0x2B
Yajirushi 0:3807ce385b2a 56 #define BNO055P0_LIA_DATA_Z_LSB 0x2C
Yajirushi 0:3807ce385b2a 57 #define BNO055P0_LIA_DATA_Z_MBS 0x2D
Yajirushi 0:3807ce385b2a 58 #define BNO055P0_GRV_DATA_X_LSB 0x2E
Yajirushi 0:3807ce385b2a 59 #define BNO055P0_GRV_DATA_X_MSB 0x2F
Yajirushi 0:3807ce385b2a 60 #define BNO055P0_GRV_DATA_Y_LSB 0x30
Yajirushi 0:3807ce385b2a 61 #define BNO055P0_GRV_DATA_Y_MSB 0x31
Yajirushi 0:3807ce385b2a 62 #define BNO055P0_GRV_DATA_Z_LSB 0x32
Yajirushi 0:3807ce385b2a 63 #define BNO055P0_GRV_DATA_Z_MSB 0x33
Yajirushi 0:3807ce385b2a 64 #define BNO055P0_TEMP 0x34
Yajirushi 0:3807ce385b2a 65 #define BNO055P0_CALIB_STAT 0x35
Yajirushi 0:3807ce385b2a 66 #define BNO055P0_ST_RESULT 0x36
Yajirushi 0:3807ce385b2a 67 #define BNO055P0_INT_STA 0x37
Yajirushi 0:3807ce385b2a 68 #define BNO055P0_SYS_CLK_STATUS 0x38
Yajirushi 0:3807ce385b2a 69 #define BNO055P0_SYS_STATUS 0x39
Yajirushi 0:3807ce385b2a 70 #define BNO055P0_SYS_ERR 0x3A
Yajirushi 0:3807ce385b2a 71 #define BNO055P0_UNIT_SEL 0x3B
Yajirushi 0:3807ce385b2a 72 #define BNO055P0_OPR_MODE 0x3D
Yajirushi 0:3807ce385b2a 73 #define BNO055P0_PWR_MODE 0x3E
Yajirushi 0:3807ce385b2a 74 #define BNO055P0_SYS_TRIGGER 0x3F
Yajirushi 0:3807ce385b2a 75 #define BNO055P0_TEMP_SOURCE 0x40
Yajirushi 0:3807ce385b2a 76 #define BNO055P0_AXIS_MAP_CONFIG 0x41
Yajirushi 0:3807ce385b2a 77 #define BNO055P0_AXIS_MAP_SIGN 0x42
Yajirushi 0:3807ce385b2a 78 #define BNO055P0_ACC_OFFSET_X_LSB 0x55
Yajirushi 0:3807ce385b2a 79 #define BNO055P0_ACC_OFFSET_X_MSB 0x56
Yajirushi 0:3807ce385b2a 80 #define BNO055P0_ACC_OFFSET_Y_LSB 0x57
Yajirushi 0:3807ce385b2a 81 #define BNO055P0_ACC_OFFSET_Y_MSB 0x58
Yajirushi 0:3807ce385b2a 82 #define BNO055P0_ACC_OFFSET_Z_LSB 0x59
Yajirushi 0:3807ce385b2a 83 #define BNO055P0_ACC_OFFSET_Z_MSB 0x5A
Yajirushi 0:3807ce385b2a 84 #define BNO055P0_MAG_OFFSET_X_LSB 0x5B
Yajirushi 0:3807ce385b2a 85 #define BNO055P0_MAG_OFFSET_X_MSB 0x5C
Yajirushi 0:3807ce385b2a 86 #define BNO055P0_MAG_OFFSET_Y_LSB 0x5D
Yajirushi 0:3807ce385b2a 87 #define BNO055P0_MAG_OFFSET_Y_MSB 0x5E
Yajirushi 0:3807ce385b2a 88 #define BNO055P0_MAG_OFFSET_Z_LSB 0x5F
Yajirushi 0:3807ce385b2a 89 #define BNO055P0_MAG_OFFSET_Z_MSB 0x60
Yajirushi 0:3807ce385b2a 90 #define BNO055P0_GYR_OFFSET_X_LSB 0x61
Yajirushi 0:3807ce385b2a 91 #define BNO055P0_GYR_OFFSET_X_MSB 0x62
Yajirushi 0:3807ce385b2a 92 #define BNO055P0_GYR_OFFSET_Y_LSB 0x63
Yajirushi 0:3807ce385b2a 93 #define BNO055P0_GYR_OFFSET_Y_MSB 0x64
Yajirushi 0:3807ce385b2a 94 #define BNO055P0_GYR_OFFSET_Z_LSB 0x65
Yajirushi 0:3807ce385b2a 95 #define BNO055P0_GYR_OFFSET_Z_MSB 0x66
Yajirushi 0:3807ce385b2a 96 #define BNO055P0_ACC_RADIUS_LSB 0x67
Yajirushi 0:3807ce385b2a 97 #define BNO055P0_ACC_RADIUS_MSB 0x68
Yajirushi 0:3807ce385b2a 98 #define BNO055P0_MAG_RADIUS_LSB 0x69
Yajirushi 0:3807ce385b2a 99 #define BNO055P0_MAG_RADIUS_MSB 0x6A
Yajirushi 0:3807ce385b2a 100
Yajirushi 0:3807ce385b2a 101 #define BNO055P1_ACC_CONFIG 0x08
Yajirushi 0:3807ce385b2a 102 #define BNO055P1_MAG_CONFIG 0x09
Yajirushi 0:3807ce385b2a 103 #define BNO055P1_GYR_CONFIG_0 0x0A
Yajirushi 0:3807ce385b2a 104 #define BNO055P1_GYR_CONFIG_1 0x0B
Yajirushi 0:3807ce385b2a 105 #define BNO055P1_ACC_SLEEP_CONFIG 0x0C
Yajirushi 0:3807ce385b2a 106 #define BNO055P1_GYR_SLEEP_CONFIG 0x0D
Yajirushi 0:3807ce385b2a 107 #define BNO055P1_INT_MSK 0x0F
Yajirushi 0:3807ce385b2a 108 #define BNO055P1_INT_EN 0x10
Yajirushi 0:3807ce385b2a 109 #define BNO055P1_ACC_AM_THRES 0x11
Yajirushi 0:3807ce385b2a 110 #define BNO055P1_ACC_INT_SETTINGS 0x12
Yajirushi 0:3807ce385b2a 111 #define BNO055P1_ACC_HG_DURATION 0x13
Yajirushi 0:3807ce385b2a 112 #define BNO055P1_ACC_HG_THRES 0x14
Yajirushi 0:3807ce385b2a 113 #define BNO055P1_ACC_NM_THRES 0x15
Yajirushi 0:3807ce385b2a 114 #define BNO055P1_ACC_NM_SET 0x16
Yajirushi 0:3807ce385b2a 115 #define BNO055P1_GYR_INT_SETING 0x17
Yajirushi 0:3807ce385b2a 116 #define BNO055P1_GYR_HR_X_SET 0x18
Yajirushi 0:3807ce385b2a 117 #define BNO055P1_GYR_DUR_X 0x19
Yajirushi 0:3807ce385b2a 118 #define BNO055P1_GYR_HR_Y_SET 0x1A
Yajirushi 0:3807ce385b2a 119 #define BNO055P1_GYR_DUR_Y 0x1B
Yajirushi 0:3807ce385b2a 120 #define BNO055P1_GYR_HR_Z_SET 0x1C
Yajirushi 0:3807ce385b2a 121 #define BNO055P1_GYR_DUR_Z 0x1D
Yajirushi 0:3807ce385b2a 122 #define BNO055P1_GYR_AM_THRES 0x1E
Yajirushi 0:3807ce385b2a 123 #define BNO055P1_GYR_AM_SET 0x1F
Yajirushi 0:3807ce385b2a 124
Yajirushi 0:3807ce385b2a 125
Yajirushi 0:3807ce385b2a 126 class BNO055_CTRL{
Yajirushi 0:3807ce385b2a 127 public:
Yajirushi 0:3807ce385b2a 128 BNO055_CTRL();
Yajirushi 0:3807ce385b2a 129 virtual ~BNO055_CTRL();
Yajirushi 0:3807ce385b2a 130 protected:
Yajirushi 0:3807ce385b2a 131 bool page1;
Yajirushi 0:3807ce385b2a 132 char *ary;
Yajirushi 0:3807ce385b2a 133 char lastError;
Yajirushi 0:3807ce385b2a 134 char lastLength;
Yajirushi 0:3807ce385b2a 135 public:
Yajirushi 0:3807ce385b2a 136 char getNowPage();
Yajirushi 0:3807ce385b2a 137 char getLastError();
Yajirushi 0:3807ce385b2a 138 char getLastLength();
Yajirushi 0:3807ce385b2a 139 virtual void init();
Yajirushi 0:3807ce385b2a 140 virtual char rr(bool isPage1, char regAddr);
Yajirushi 0:3807ce385b2a 141 virtual char rrc(bool isPage1, char startRegAddr, char *receiveBytes, char length);
Yajirushi 0:3807ce385b2a 142 virtual char wr(bool isPage1, char regAddr, char wBytes);
Yajirushi 0:3807ce385b2a 143 virtual char wrc(bool isPage1, char startRegAddr, char *Bytes, char length);
Yajirushi 0:3807ce385b2a 144 };
Yajirushi 0:3807ce385b2a 145
Yajirushi 0:3807ce385b2a 146 class BNO055_UART_CTRL : public BNO055_CTRL{
Yajirushi 0:3807ce385b2a 147 public:
Yajirushi 0:3807ce385b2a 148 BNO055_UART_CTRL(RawSerial *uart);
Yajirushi 0:3807ce385b2a 149 virtual ~BNO055_UART_CTRL();
Yajirushi 0:3807ce385b2a 150 private:
Yajirushi 0:3807ce385b2a 151 RawSerial *iface;
Yajirushi 0:3807ce385b2a 152 short rxd;
Yajirushi 0:3807ce385b2a 153 bool read_mark;
Yajirushi 0:3807ce385b2a 154
Yajirushi 0:3807ce385b2a 155 void rxInterrupt();
Yajirushi 0:3807ce385b2a 156 public:
Yajirushi 0:3807ce385b2a 157 virtual void init();
Yajirushi 0:3807ce385b2a 158 virtual char rr(bool isPage1, char regAddr);
Yajirushi 0:3807ce385b2a 159 virtual char rrc(bool isPage1, char startRegAddr, char *receiveBytes, char length);
Yajirushi 0:3807ce385b2a 160 virtual char wr(bool isPage1, char regAddr, char wBytes);
Yajirushi 0:3807ce385b2a 161 virtual char wrc(bool isPage1, char startRegAddr, char *Bytes, char length);
Yajirushi 0:3807ce385b2a 162 };
Yajirushi 0:3807ce385b2a 163
Yajirushi 0:3807ce385b2a 164 class BNO055_I2C_CTRL : public BNO055_CTRL{
Yajirushi 0:3807ce385b2a 165 public:
Yajirushi 0:3807ce385b2a 166 BNO055_I2C_CTRL(I2C *iic, char addr, unsigned int freq);
Yajirushi 0:3807ce385b2a 167 virtual ~BNO055_I2C_CTRL();
Yajirushi 0:3807ce385b2a 168 private:
Yajirushi 0:3807ce385b2a 169 I2C *iface;
Yajirushi 0:3807ce385b2a 170 char i2c_writeAddr;
Yajirushi 0:3807ce385b2a 171 char i2c_readAddr;
Yajirushi 0:3807ce385b2a 172 unsigned int i2c_freq;
Yajirushi 0:3807ce385b2a 173 public:
Yajirushi 0:3807ce385b2a 174 virtual void init();
Yajirushi 0:3807ce385b2a 175 virtual char rr(bool isPage1, char regAddr);
Yajirushi 0:3807ce385b2a 176 virtual char rrc(bool isPage1, char startRegAddr, char *receiveBytes, char length);
Yajirushi 0:3807ce385b2a 177 virtual char wr(bool isPage1, char regAddr, char wBytes);
Yajirushi 0:3807ce385b2a 178 virtual char wrc(bool isPage1, char startRegAddr, char *Bytes, char length);
Yajirushi 0:3807ce385b2a 179 };
Yajirushi 0:3807ce385b2a 180
Yajirushi 0:3807ce385b2a 181 class BOARDC_BNO055{
Yajirushi 0:3807ce385b2a 182 public:
Yajirushi 0:3807ce385b2a 183 BOARDC_BNO055(PinName tx, PinName rx);
Yajirushi 0:3807ce385b2a 184 BOARDC_BNO055(RawSerial *uart);
Yajirushi 0:3807ce385b2a 185 BOARDC_BNO055(PinName scl, PinName sda, char addr=BNO055_I2C_DEFADDR, unsigned int freq=100000);
Yajirushi 0:3807ce385b2a 186 BOARDC_BNO055(I2C *iic, char addr=BNO055_I2C_DEFADDR, unsigned int freq=100000);
Yajirushi 0:3807ce385b2a 187 ~BOARDC_BNO055();
Yajirushi 0:3807ce385b2a 188
Yajirushi 0:3807ce385b2a 189 private:
Yajirushi 0:3807ce385b2a 190 BNO055_CTRL *ctrl;
Yajirushi 0:3807ce385b2a 191 float scaleACC;
Yajirushi 0:3807ce385b2a 192 float scaleMAG; //fixed
Yajirushi 0:3807ce385b2a 193 float scaleGYRO;
Yajirushi 0:3807ce385b2a 194 float scaleTEMP;
Yajirushi 0:3807ce385b2a 195 float scaleEuler;
Yajirushi 0:3807ce385b2a 196 float scaleLIA; //=scaleACC
Yajirushi 0:3807ce385b2a 197 float scaleGV; //=scaleACC
Yajirushi 0:3807ce385b2a 198 double scaleQuaternion; //fixed
Yajirushi 0:3807ce385b2a 199 unsigned char axisRemap;
Yajirushi 0:3807ce385b2a 200 unsigned char axisSign;
Yajirushi 0:3807ce385b2a 201 bool clkExt;
Yajirushi 0:3807ce385b2a 202
Yajirushi 0:3807ce385b2a 203 public:
Yajirushi 0:3807ce385b2a 204 char initialize(bool resetIface=true);
Yajirushi 0:3807ce385b2a 205 char getIfaceLastError();
Yajirushi 0:3807ce385b2a 206 char getIfaceLastLength();
Yajirushi 0:3807ce385b2a 207
Yajirushi 0:3807ce385b2a 208 char customRead(bool isPage1, char regAddr);
Yajirushi 0:3807ce385b2a 209 char customReadC(bool isPage1, char startRegAddr, char *receiveBytes, unsigned char length);
Yajirushi 0:3807ce385b2a 210 char customWrite(bool isPage1, char regAddr, char wBytes);
Yajirushi 0:3807ce385b2a 211 char customWriteC(bool isPage1, char startRegAddr, char *Bytes, unsigned char length);
Yajirushi 0:3807ce385b2a 212
Yajirushi 0:3807ce385b2a 213 char getPage();
Yajirushi 0:3807ce385b2a 214 void setPage(unsigned char pageNo);
Yajirushi 0:3807ce385b2a 215
Yajirushi 0:3807ce385b2a 216 char getChipID();
Yajirushi 0:3807ce385b2a 217 char getAccChipID();
Yajirushi 0:3807ce385b2a 218 char getMagChipID();
Yajirushi 0:3807ce385b2a 219 char getGyroChipID();
Yajirushi 0:3807ce385b2a 220
Yajirushi 0:3807ce385b2a 221 short getRevision();
Yajirushi 0:3807ce385b2a 222 char getBootRevision();
Yajirushi 0:3807ce385b2a 223
Yajirushi 0:3807ce385b2a 224 float getAccScale();
Yajirushi 0:3807ce385b2a 225 float getMagScale();
Yajirushi 0:3807ce385b2a 226 float getGyroScale();
Yajirushi 0:3807ce385b2a 227 float getTempScale();
Yajirushi 0:3807ce385b2a 228 float getEulerScale();
Yajirushi 0:3807ce385b2a 229 float getLinearScale();
Yajirushi 0:3807ce385b2a 230 float getGVScale();
Yajirushi 0:3807ce385b2a 231 double getQuaternionScale();
Yajirushi 0:3807ce385b2a 232
Yajirushi 0:3807ce385b2a 233 void getAccDataAll(short &accX, short &accY, short &accZ);
Yajirushi 0:3807ce385b2a 234 short getAccDataX();
Yajirushi 0:3807ce385b2a 235 short getAccDataY();
Yajirushi 0:3807ce385b2a 236 short getAccDataZ();
Yajirushi 0:3807ce385b2a 237
Yajirushi 0:3807ce385b2a 238 void getMagDataAll(short &magX, short &magY, short &magZ);
Yajirushi 0:3807ce385b2a 239 short getMagDataX();
Yajirushi 0:3807ce385b2a 240 short getMagDataY();
Yajirushi 0:3807ce385b2a 241 short getMagDataZ();
Yajirushi 0:3807ce385b2a 242
Yajirushi 0:3807ce385b2a 243 void getGyroDataAll(short &gyroX, short &gyroY, short &gyroZ);
Yajirushi 0:3807ce385b2a 244 short getGyroDataX();
Yajirushi 0:3807ce385b2a 245 short getGyroDataY();
Yajirushi 0:3807ce385b2a 246 short getGyroDataZ();
Yajirushi 0:3807ce385b2a 247
Yajirushi 0:3807ce385b2a 248 void getEulerDataAll(short &E_heading, short &E_roll, short &E_pitch);
Yajirushi 0:3807ce385b2a 249 short getEulerDataHeading();
Yajirushi 0:3807ce385b2a 250 short getEulerDataYaw();
Yajirushi 0:3807ce385b2a 251 short getEulerDataRoll();
Yajirushi 0:3807ce385b2a 252 short getEulerDataPitch();
Yajirushi 0:3807ce385b2a 253
Yajirushi 0:3807ce385b2a 254 void get9Axis(short *box);
Yajirushi 0:3807ce385b2a 255 void get9AxisAndEUL(short *box);
Yajirushi 0:3807ce385b2a 256
Yajirushi 0:3807ce385b2a 257 void getQuaternion(short &q1, short &q2, short &q3, short &q4);
Yajirushi 0:3807ce385b2a 258
Yajirushi 0:3807ce385b2a 259 void getLinearAccDataAll(short &L_accX, short &L_accY, short &L_accZ);
Yajirushi 0:3807ce385b2a 260 short getLinearAccDataX();
Yajirushi 0:3807ce385b2a 261 short getLinearAccDataY();
Yajirushi 0:3807ce385b2a 262 short getLinearAccDataZ();
Yajirushi 0:3807ce385b2a 263
Yajirushi 0:3807ce385b2a 264 void getGVectorDataAll(short &gvX, short &gvY, short &gvZ);
Yajirushi 0:3807ce385b2a 265 short getGVectorDataX();
Yajirushi 0:3807ce385b2a 266 short getGVectorDataY();
Yajirushi 0:3807ce385b2a 267 short getGVectorDataZ();
Yajirushi 0:3807ce385b2a 268
Yajirushi 0:3807ce385b2a 269 char getTemperature();
Yajirushi 0:3807ce385b2a 270
Yajirushi 0:3807ce385b2a 271 void getCalibStatusAll(char &sys, char &acc, char &mag, char &gyro);
Yajirushi 0:3807ce385b2a 272 char getCalibStatusSys();
Yajirushi 0:3807ce385b2a 273 char getCalibStatusAcc();
Yajirushi 0:3807ce385b2a 274 char getCalibStatusMag();
Yajirushi 0:3807ce385b2a 275 char getCalibStatusGyro();
Yajirushi 0:3807ce385b2a 276
Yajirushi 0:3807ce385b2a 277 char getSelfTestResultAll();
Yajirushi 0:3807ce385b2a 278 bool getSelfTestResultMCU();
Yajirushi 0:3807ce385b2a 279 bool getSelfTestResultAcc();
Yajirushi 0:3807ce385b2a 280 bool getSelfTestResultMag();
Yajirushi 0:3807ce385b2a 281 bool getSelfTestResultGyro();
Yajirushi 0:3807ce385b2a 282
Yajirushi 0:3807ce385b2a 283 char triggeredIntALL();
Yajirushi 0:3807ce385b2a 284 bool triggeredACC_NM();
Yajirushi 0:3807ce385b2a 285 bool triggeredACC_AM();
Yajirushi 0:3807ce385b2a 286 bool triggeredACC_HIGH_G();
Yajirushi 0:3807ce385b2a 287 bool triggeredGYR_HIGH_RATE();
Yajirushi 0:3807ce385b2a 288 bool triggeredGYRO_AM();
Yajirushi 0:3807ce385b2a 289
Yajirushi 0:3807ce385b2a 290 bool isSystemClockFixed();
Yajirushi 0:3807ce385b2a 291
Yajirushi 0:3807ce385b2a 292 char getSystemStatus();
Yajirushi 0:3807ce385b2a 293 char getSystemError();
Yajirushi 0:3807ce385b2a 294
Yajirushi 0:3807ce385b2a 295 char getUNIT_SEL();
Yajirushi 0:3807ce385b2a 296 char setUNIT_SEL(char selectValue);
Yajirushi 0:3807ce385b2a 297 char setUNIT_AccUnit(bool isMeterPerSec2=true);
Yajirushi 0:3807ce385b2a 298 char setUNIT_GyroUnit(bool isDps=true);
Yajirushi 0:3807ce385b2a 299 char setUNIT_EulerUnit(bool isDegrees=true);
Yajirushi 0:3807ce385b2a 300 char setUNIT_Temperature(bool isCelsius=true);
Yajirushi 0:3807ce385b2a 301 char setUNIT_OrientationMode(bool ori_Android=true);
Yajirushi 0:3807ce385b2a 302
Yajirushi 0:3807ce385b2a 303 char getOperationMode();
Yajirushi 0:3807ce385b2a 304 char setOperationMode(char modeValue);
Yajirushi 0:3807ce385b2a 305 char setOperation_CONFIG();
Yajirushi 0:3807ce385b2a 306 char setOperation_ACCONRY();
Yajirushi 0:3807ce385b2a 307 char setOperation_MAGONRY();
Yajirushi 0:3807ce385b2a 308 char setOperation_GYROONRY();
Yajirushi 0:3807ce385b2a 309 char setOperation_ACCMAG();
Yajirushi 0:3807ce385b2a 310 char setOperation_ACCGYRO();
Yajirushi 0:3807ce385b2a 311 char setOperation_MAGGYRO();
Yajirushi 0:3807ce385b2a 312 char setOperation_AMG();
Yajirushi 0:3807ce385b2a 313 char setOperation_Fusion_IMU();
Yajirushi 0:3807ce385b2a 314 char setOperation_Fusion_COMPASS();
Yajirushi 0:3807ce385b2a 315 char setOperation_Fusion_M4G();
Yajirushi 0:3807ce385b2a 316 char setOperation_Fusion_NDOF_FMC_OFF();
Yajirushi 0:3807ce385b2a 317 char setOperation_Fusion_NDOF();
Yajirushi 0:3807ce385b2a 318
Yajirushi 0:3807ce385b2a 319 char getPowerMode();
Yajirushi 0:3807ce385b2a 320 char setPowerMode(unsigned char modeValue);
Yajirushi 0:3807ce385b2a 321 char setPowerMode_Normal();
Yajirushi 0:3807ce385b2a 322 char setPowerMode_LowPower();
Yajirushi 0:3807ce385b2a 323 char setPowerMode_Suspend();
Yajirushi 0:3807ce385b2a 324
Yajirushi 0:3807ce385b2a 325 char setSysTrigger(char regVal);
Yajirushi 0:3807ce385b2a 326 char setSys_ExternalCrystal(bool isExternal=true);
Yajirushi 0:3807ce385b2a 327 char resetInterrupt();
Yajirushi 0:3807ce385b2a 328 char soft_reset();
Yajirushi 0:3807ce385b2a 329 char execSelfTest();
Yajirushi 0:3807ce385b2a 330
Yajirushi 0:3807ce385b2a 331 char getTempSource();
Yajirushi 0:3807ce385b2a 332 char setTempSource(bool Accelerometer=true);
Yajirushi 0:3807ce385b2a 333
Yajirushi 0:3807ce385b2a 334 char getAxisMapConfig();
Yajirushi 0:3807ce385b2a 335 char setAxisMapConfig(char val);
Yajirushi 0:3807ce385b2a 336 char getAxisMapSign();
Yajirushi 0:3807ce385b2a 337 char setAxisMapSign(char val);
Yajirushi 0:3807ce385b2a 338 char setAxisRemap_topview_topleft();
Yajirushi 0:3807ce385b2a 339 char setAxisRemap_topview_topright();
Yajirushi 0:3807ce385b2a 340 char setAxisRemap_topview_bottomleft();
Yajirushi 0:3807ce385b2a 341 char setAxisRemap_topview_bottomright();
Yajirushi 0:3807ce385b2a 342 char setAxisRemap_bottomview_topleft();
Yajirushi 0:3807ce385b2a 343 char setAxisRemap_bottomview_topright();
Yajirushi 0:3807ce385b2a 344 char setAxisRemap_bottomview_bottomleft();
Yajirushi 0:3807ce385b2a 345 char setAxisRemap_bottomview_bottomright();
Yajirushi 0:3807ce385b2a 346 char getAxisRemap_type();
Yajirushi 0:3807ce385b2a 347
Yajirushi 0:3807ce385b2a 348 void getAccOffsetAll(float &offsetX, float &offsetY, float &offsetZ);
Yajirushi 0:3807ce385b2a 349 float getAccOffsetX();
Yajirushi 0:3807ce385b2a 350 float getAccOffsetY();
Yajirushi 0:3807ce385b2a 351 float getAccOffsetZ();
Yajirushi 0:3807ce385b2a 352 char setAccOffsetAll(float offsetX, float offsetY, float offsetZ);
Yajirushi 0:3807ce385b2a 353 char setAccOffsetX(float offset);
Yajirushi 0:3807ce385b2a 354 char setAccOffsetY(float offset);
Yajirushi 0:3807ce385b2a 355 char setAccOffsetZ(float offset);
Yajirushi 0:3807ce385b2a 356
Yajirushi 0:3807ce385b2a 357 void getMagOffsetAll(float &offsetX, float &offsetY, float &offsetZ);
Yajirushi 0:3807ce385b2a 358 float getMagOffsetX();
Yajirushi 0:3807ce385b2a 359 float getMagOffsetY();
Yajirushi 0:3807ce385b2a 360 float getMagOffsetZ();
Yajirushi 0:3807ce385b2a 361 char setMagOffsetAll(float offsetX, float offsetY, float offsetZ);
Yajirushi 0:3807ce385b2a 362 char setMagOffsetX(float offset);
Yajirushi 0:3807ce385b2a 363 char setMagOffsetY(float offset);
Yajirushi 0:3807ce385b2a 364 char setMagOffsetZ(float offset);
Yajirushi 0:3807ce385b2a 365
Yajirushi 0:3807ce385b2a 366 void getGyroOffsetAll(float &offsetX, float &offsetY, float &offsetZ);
Yajirushi 0:3807ce385b2a 367 float getGyroOffsetX();
Yajirushi 0:3807ce385b2a 368 float getGyroOffsetY();
Yajirushi 0:3807ce385b2a 369 float getGyroOffsetZ();
Yajirushi 0:3807ce385b2a 370 char setGyroOffsetAll(float offsetX, float offsetY, float offsetZ);
Yajirushi 0:3807ce385b2a 371 char setGyroOffsetX(float offset);
Yajirushi 0:3807ce385b2a 372 char setGyroOffsetY(float offset);
Yajirushi 0:3807ce385b2a 373 char setGyroOffsetZ(float offset);
Yajirushi 0:3807ce385b2a 374
Yajirushi 0:3807ce385b2a 375 short getAccRadius();
Yajirushi 0:3807ce385b2a 376 char setAccRadius(short LSB);
Yajirushi 0:3807ce385b2a 377
Yajirushi 0:3807ce385b2a 378 short getMagRadius();
Yajirushi 0:3807ce385b2a 379 char setMagRadius(short LSB);
Yajirushi 0:3807ce385b2a 380
Yajirushi 0:3807ce385b2a 381 char getAccConfig();
Yajirushi 0:3807ce385b2a 382 char setAccConfig(char regVal);
Yajirushi 0:3807ce385b2a 383 char setAccConfig(char gRange, char bandWidth, char powMode);
Yajirushi 0:3807ce385b2a 384 char setAccRange(unsigned char G);
Yajirushi 0:3807ce385b2a 385
Yajirushi 0:3807ce385b2a 386 char getMagConfig();
Yajirushi 0:3807ce385b2a 387 char setMagConfig(char regVal);
Yajirushi 0:3807ce385b2a 388 char setMagConfig(char rate, char oprMode, char powMode);
Yajirushi 0:3807ce385b2a 389
Yajirushi 0:3807ce385b2a 390 char getGyroConfig_0();
Yajirushi 0:3807ce385b2a 391 char setGyroConfig_0(char regVal);
Yajirushi 0:3807ce385b2a 392 char setGyroConfig_0(char range, char bandWidth);
Yajirushi 0:3807ce385b2a 393 char getGyroConfig_1();
Yajirushi 0:3807ce385b2a 394 char setGyroConfig_1(char powMode);
Yajirushi 0:3807ce385b2a 395 char setGyroRange(unsigned short dps);
Yajirushi 0:3807ce385b2a 396
Yajirushi 0:3807ce385b2a 397 char getAccSleepConfig();
Yajirushi 0:3807ce385b2a 398 char setAccSleepConfig(char regVal);
Yajirushi 0:3807ce385b2a 399 char setAccSleepConfig(char duration, char mode);
Yajirushi 0:3807ce385b2a 400
Yajirushi 0:3807ce385b2a 401 char getGyroSleepConfig();
Yajirushi 0:3807ce385b2a 402 char setGyroSleepConfig(char regVal);
Yajirushi 0:3807ce385b2a 403 char setGyroSleepConfig(char autoSleepDuration, char duration);
Yajirushi 0:3807ce385b2a 404
Yajirushi 0:3807ce385b2a 405 char getInterruptMask();
Yajirushi 0:3807ce385b2a 406 char setInterruptMask(char mask);
Yajirushi 0:3807ce385b2a 407
Yajirushi 0:3807ce385b2a 408 char getInterruptEnable();
Yajirushi 0:3807ce385b2a 409 char setInterruptEnable(char mask);
Yajirushi 0:3807ce385b2a 410
Yajirushi 0:3807ce385b2a 411 float getAccAnyMotionThreashold(bool ismg=true);
Yajirushi 0:3807ce385b2a 412 char setAccAnyMotionThreashold(bool ismg, float threashold);
Yajirushi 0:3807ce385b2a 413
Yajirushi 0:3807ce385b2a 414 char getAccInterruptSettings();
Yajirushi 0:3807ce385b2a 415 char setAccInterruptSettings(char settings);
Yajirushi 0:3807ce385b2a 416
Yajirushi 0:3807ce385b2a 417 unsigned short getAccHighGduration();
Yajirushi 0:3807ce385b2a 418 char setAccHighGduration(short ms);
Yajirushi 0:3807ce385b2a 419
Yajirushi 0:3807ce385b2a 420 float getAccHighGThreashold(bool ismg=true);
Yajirushi 0:3807ce385b2a 421 char setAccHighGThreashold(bool ismg, float threashold);
Yajirushi 0:3807ce385b2a 422
Yajirushi 0:3807ce385b2a 423 float getAccNMThreashold(bool ismg=true);
Yajirushi 0:3807ce385b2a 424 char setAccNMThreashold(bool ismg, float threashold);
Yajirushi 0:3807ce385b2a 425
Yajirushi 0:3807ce385b2a 426 char getAccNMsetting();
Yajirushi 0:3807ce385b2a 427 char setAccNMsetting(char setting);
Yajirushi 0:3807ce385b2a 428
Yajirushi 0:3807ce385b2a 429 char getGyroInterruptSettings();
Yajirushi 0:3807ce385b2a 430 char setGyroInterruptSettings(char settings);
Yajirushi 0:3807ce385b2a 431
Yajirushi 0:3807ce385b2a 432 char getGyroHighRateXsetting();
Yajirushi 0:3807ce385b2a 433 void getGyroHighRateXsetting_dps(float &hyst, float &thres);
Yajirushi 0:3807ce385b2a 434 char setGyroHighRateXsetting(char setting);
Yajirushi 0:3807ce385b2a 435 char setGyroHighRateXsetting_dps(float hystVal, float thresVal);
Yajirushi 0:3807ce385b2a 436 float getGyroHighRateXduration();
Yajirushi 0:3807ce385b2a 437 char setGyroHighRateXduration(float duration);
Yajirushi 0:3807ce385b2a 438
Yajirushi 0:3807ce385b2a 439 char getGyroHighRateYsetting();
Yajirushi 0:3807ce385b2a 440 void getGyroHighRateYsetting_dps(float &hyst, float &thres);
Yajirushi 0:3807ce385b2a 441 char setGyroHighRateYsetting(char setting);
Yajirushi 0:3807ce385b2a 442 char setGyroHighRateYsetting_dps(float hystVal, float thresVal);
Yajirushi 0:3807ce385b2a 443 float getGyroHighRateYduration();
Yajirushi 0:3807ce385b2a 444 char setGyroHighRateYduration(float duration);
Yajirushi 0:3807ce385b2a 445
Yajirushi 0:3807ce385b2a 446 char getGyroHighRateZsetting();
Yajirushi 0:3807ce385b2a 447 void getGyroHighRateZsetting_dps(float &hyst, float &thres);
Yajirushi 0:3807ce385b2a 448 char setGyroHighRateZsetting(char setting);
Yajirushi 0:3807ce385b2a 449 char setGyroHighRateZsetting_dps(float hystVal, float thresVal);
Yajirushi 0:3807ce385b2a 450 float getGyroHighRateZduration();
Yajirushi 0:3807ce385b2a 451 char setGyroHighRateZduration(float duration);
Yajirushi 0:3807ce385b2a 452
Yajirushi 0:3807ce385b2a 453 float getGyroAnyMotionThreashold();
Yajirushi 0:3807ce385b2a 454 char setGyroAnyMotionThreashold(float threashold);
Yajirushi 0:3807ce385b2a 455
Yajirushi 0:3807ce385b2a 456 char getAccAnyMotionSetting();
Yajirushi 0:3807ce385b2a 457 char setAccAnyMotionSetting(char setting);
Yajirushi 0:3807ce385b2a 458 };
Yajirushi 0:3807ce385b2a 459
Yajirushi 0:3807ce385b2a 460 #endif