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

Dependents:   BNO055_BME280_ Yabusame2_gyro GRhanawaizman test_deg_read

Committer:
Yajirushi
Date:
Mon May 13 14:46:38 2019 +0000
Revision:
5:64b033b30802
Parent:
3:363ec3772dce
change comment

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 3:363ec3772dce 141 virtual char rrc(bool isPage1, char startRegAddr, unsigned 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 3:363ec3772dce 159 virtual char rrc(bool isPage1, char startRegAddr, unsigned 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 3:363ec3772dce 176 virtual char rrc(bool isPage1, char startRegAddr, unsigned 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 3:363ec3772dce 209 char customReadC(bool isPage1, char startRegAddr, unsigned 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 1:7dbc931127c0 258 void getEulerFromQ(double &E_heading, double &E_roll, double &E_pitch);
Yajirushi 0:3807ce385b2a 259
Yajirushi 0:3807ce385b2a 260 void getLinearAccDataAll(short &L_accX, short &L_accY, short &L_accZ);
Yajirushi 0:3807ce385b2a 261 short getLinearAccDataX();
Yajirushi 0:3807ce385b2a 262 short getLinearAccDataY();
Yajirushi 0:3807ce385b2a 263 short getLinearAccDataZ();
Yajirushi 0:3807ce385b2a 264
Yajirushi 0:3807ce385b2a 265 void getGVectorDataAll(short &gvX, short &gvY, short &gvZ);
Yajirushi 0:3807ce385b2a 266 short getGVectorDataX();
Yajirushi 0:3807ce385b2a 267 short getGVectorDataY();
Yajirushi 0:3807ce385b2a 268 short getGVectorDataZ();
Yajirushi 0:3807ce385b2a 269
Yajirushi 0:3807ce385b2a 270 char getTemperature();
Yajirushi 0:3807ce385b2a 271
Yajirushi 0:3807ce385b2a 272 void getCalibStatusAll(char &sys, char &acc, char &mag, char &gyro);
Yajirushi 0:3807ce385b2a 273 char getCalibStatusSys();
Yajirushi 0:3807ce385b2a 274 char getCalibStatusAcc();
Yajirushi 0:3807ce385b2a 275 char getCalibStatusMag();
Yajirushi 0:3807ce385b2a 276 char getCalibStatusGyro();
Yajirushi 0:3807ce385b2a 277
Yajirushi 0:3807ce385b2a 278 char getSelfTestResultAll();
Yajirushi 0:3807ce385b2a 279 bool getSelfTestResultMCU();
Yajirushi 0:3807ce385b2a 280 bool getSelfTestResultAcc();
Yajirushi 0:3807ce385b2a 281 bool getSelfTestResultMag();
Yajirushi 0:3807ce385b2a 282 bool getSelfTestResultGyro();
Yajirushi 0:3807ce385b2a 283
Yajirushi 0:3807ce385b2a 284 char triggeredIntALL();
Yajirushi 0:3807ce385b2a 285 bool triggeredACC_NM();
Yajirushi 0:3807ce385b2a 286 bool triggeredACC_AM();
Yajirushi 0:3807ce385b2a 287 bool triggeredACC_HIGH_G();
Yajirushi 0:3807ce385b2a 288 bool triggeredGYR_HIGH_RATE();
Yajirushi 0:3807ce385b2a 289 bool triggeredGYRO_AM();
Yajirushi 0:3807ce385b2a 290
Yajirushi 0:3807ce385b2a 291 bool isSystemClockFixed();
Yajirushi 0:3807ce385b2a 292
Yajirushi 0:3807ce385b2a 293 char getSystemStatus();
Yajirushi 0:3807ce385b2a 294 char getSystemError();
Yajirushi 0:3807ce385b2a 295
Yajirushi 0:3807ce385b2a 296 char getUNIT_SEL();
Yajirushi 0:3807ce385b2a 297 char setUNIT_SEL(char selectValue);
Yajirushi 0:3807ce385b2a 298 char setUNIT_AccUnit(bool isMeterPerSec2=true);
Yajirushi 0:3807ce385b2a 299 char setUNIT_GyroUnit(bool isDps=true);
Yajirushi 0:3807ce385b2a 300 char setUNIT_EulerUnit(bool isDegrees=true);
Yajirushi 0:3807ce385b2a 301 char setUNIT_Temperature(bool isCelsius=true);
Yajirushi 0:3807ce385b2a 302 char setUNIT_OrientationMode(bool ori_Android=true);
Yajirushi 0:3807ce385b2a 303
Yajirushi 0:3807ce385b2a 304 char getOperationMode();
Yajirushi 0:3807ce385b2a 305 char setOperationMode(char modeValue);
Yajirushi 0:3807ce385b2a 306 char setOperation_CONFIG();
Yajirushi 0:3807ce385b2a 307 char setOperation_ACCONRY();
Yajirushi 0:3807ce385b2a 308 char setOperation_MAGONRY();
Yajirushi 0:3807ce385b2a 309 char setOperation_GYROONRY();
Yajirushi 0:3807ce385b2a 310 char setOperation_ACCMAG();
Yajirushi 0:3807ce385b2a 311 char setOperation_ACCGYRO();
Yajirushi 0:3807ce385b2a 312 char setOperation_MAGGYRO();
Yajirushi 0:3807ce385b2a 313 char setOperation_AMG();
Yajirushi 0:3807ce385b2a 314 char setOperation_Fusion_IMU();
Yajirushi 0:3807ce385b2a 315 char setOperation_Fusion_COMPASS();
Yajirushi 0:3807ce385b2a 316 char setOperation_Fusion_M4G();
Yajirushi 0:3807ce385b2a 317 char setOperation_Fusion_NDOF_FMC_OFF();
Yajirushi 0:3807ce385b2a 318 char setOperation_Fusion_NDOF();
Yajirushi 0:3807ce385b2a 319
Yajirushi 0:3807ce385b2a 320 char getPowerMode();
Yajirushi 0:3807ce385b2a 321 char setPowerMode(unsigned char modeValue);
Yajirushi 0:3807ce385b2a 322 char setPowerMode_Normal();
Yajirushi 0:3807ce385b2a 323 char setPowerMode_LowPower();
Yajirushi 0:3807ce385b2a 324 char setPowerMode_Suspend();
Yajirushi 0:3807ce385b2a 325
Yajirushi 0:3807ce385b2a 326 char setSysTrigger(char regVal);
Yajirushi 0:3807ce385b2a 327 char setSys_ExternalCrystal(bool isExternal=true);
Yajirushi 0:3807ce385b2a 328 char resetInterrupt();
Yajirushi 0:3807ce385b2a 329 char soft_reset();
Yajirushi 0:3807ce385b2a 330 char execSelfTest();
Yajirushi 0:3807ce385b2a 331
Yajirushi 0:3807ce385b2a 332 char getTempSource();
Yajirushi 0:3807ce385b2a 333 char setTempSource(bool Accelerometer=true);
Yajirushi 0:3807ce385b2a 334
Yajirushi 0:3807ce385b2a 335 char getAxisMapConfig();
Yajirushi 0:3807ce385b2a 336 char setAxisMapConfig(char val);
Yajirushi 0:3807ce385b2a 337 char getAxisMapSign();
Yajirushi 0:3807ce385b2a 338 char setAxisMapSign(char val);
Yajirushi 0:3807ce385b2a 339 char setAxisRemap_topview_topleft();
Yajirushi 0:3807ce385b2a 340 char setAxisRemap_topview_topright();
Yajirushi 0:3807ce385b2a 341 char setAxisRemap_topview_bottomleft();
Yajirushi 0:3807ce385b2a 342 char setAxisRemap_topview_bottomright();
Yajirushi 0:3807ce385b2a 343 char setAxisRemap_bottomview_topleft();
Yajirushi 0:3807ce385b2a 344 char setAxisRemap_bottomview_topright();
Yajirushi 0:3807ce385b2a 345 char setAxisRemap_bottomview_bottomleft();
Yajirushi 0:3807ce385b2a 346 char setAxisRemap_bottomview_bottomright();
Yajirushi 0:3807ce385b2a 347 char getAxisRemap_type();
Yajirushi 0:3807ce385b2a 348
Yajirushi 0:3807ce385b2a 349 void getAccOffsetAll(float &offsetX, float &offsetY, float &offsetZ);
Yajirushi 0:3807ce385b2a 350 float getAccOffsetX();
Yajirushi 0:3807ce385b2a 351 float getAccOffsetY();
Yajirushi 0:3807ce385b2a 352 float getAccOffsetZ();
Yajirushi 0:3807ce385b2a 353 char setAccOffsetAll(float offsetX, float offsetY, float offsetZ);
Yajirushi 0:3807ce385b2a 354 char setAccOffsetX(float offset);
Yajirushi 0:3807ce385b2a 355 char setAccOffsetY(float offset);
Yajirushi 0:3807ce385b2a 356 char setAccOffsetZ(float offset);
Yajirushi 0:3807ce385b2a 357
Yajirushi 0:3807ce385b2a 358 void getMagOffsetAll(float &offsetX, float &offsetY, float &offsetZ);
Yajirushi 0:3807ce385b2a 359 float getMagOffsetX();
Yajirushi 0:3807ce385b2a 360 float getMagOffsetY();
Yajirushi 0:3807ce385b2a 361 float getMagOffsetZ();
Yajirushi 0:3807ce385b2a 362 char setMagOffsetAll(float offsetX, float offsetY, float offsetZ);
Yajirushi 0:3807ce385b2a 363 char setMagOffsetX(float offset);
Yajirushi 0:3807ce385b2a 364 char setMagOffsetY(float offset);
Yajirushi 0:3807ce385b2a 365 char setMagOffsetZ(float offset);
Yajirushi 0:3807ce385b2a 366
Yajirushi 0:3807ce385b2a 367 void getGyroOffsetAll(float &offsetX, float &offsetY, float &offsetZ);
Yajirushi 0:3807ce385b2a 368 float getGyroOffsetX();
Yajirushi 0:3807ce385b2a 369 float getGyroOffsetY();
Yajirushi 0:3807ce385b2a 370 float getGyroOffsetZ();
Yajirushi 0:3807ce385b2a 371 char setGyroOffsetAll(float offsetX, float offsetY, float offsetZ);
Yajirushi 0:3807ce385b2a 372 char setGyroOffsetX(float offset);
Yajirushi 0:3807ce385b2a 373 char setGyroOffsetY(float offset);
Yajirushi 0:3807ce385b2a 374 char setGyroOffsetZ(float offset);
Yajirushi 0:3807ce385b2a 375
Yajirushi 0:3807ce385b2a 376 short getAccRadius();
Yajirushi 0:3807ce385b2a 377 char setAccRadius(short LSB);
Yajirushi 0:3807ce385b2a 378
Yajirushi 0:3807ce385b2a 379 short getMagRadius();
Yajirushi 0:3807ce385b2a 380 char setMagRadius(short LSB);
Yajirushi 0:3807ce385b2a 381
Yajirushi 0:3807ce385b2a 382 char getAccConfig();
Yajirushi 0:3807ce385b2a 383 char setAccConfig(char regVal);
Yajirushi 0:3807ce385b2a 384 char setAccConfig(char gRange, char bandWidth, char powMode);
Yajirushi 0:3807ce385b2a 385 char setAccRange(unsigned char G);
Yajirushi 0:3807ce385b2a 386
Yajirushi 0:3807ce385b2a 387 char getMagConfig();
Yajirushi 0:3807ce385b2a 388 char setMagConfig(char regVal);
Yajirushi 0:3807ce385b2a 389 char setMagConfig(char rate, char oprMode, char powMode);
Yajirushi 0:3807ce385b2a 390
Yajirushi 0:3807ce385b2a 391 char getGyroConfig_0();
Yajirushi 0:3807ce385b2a 392 char setGyroConfig_0(char regVal);
Yajirushi 0:3807ce385b2a 393 char setGyroConfig_0(char range, char bandWidth);
Yajirushi 0:3807ce385b2a 394 char getGyroConfig_1();
Yajirushi 0:3807ce385b2a 395 char setGyroConfig_1(char powMode);
Yajirushi 0:3807ce385b2a 396 char setGyroRange(unsigned short dps);
Yajirushi 0:3807ce385b2a 397
Yajirushi 0:3807ce385b2a 398 char getAccSleepConfig();
Yajirushi 0:3807ce385b2a 399 char setAccSleepConfig(char regVal);
Yajirushi 0:3807ce385b2a 400 char setAccSleepConfig(char duration, char mode);
Yajirushi 0:3807ce385b2a 401
Yajirushi 0:3807ce385b2a 402 char getGyroSleepConfig();
Yajirushi 0:3807ce385b2a 403 char setGyroSleepConfig(char regVal);
Yajirushi 0:3807ce385b2a 404 char setGyroSleepConfig(char autoSleepDuration, char duration);
Yajirushi 0:3807ce385b2a 405
Yajirushi 0:3807ce385b2a 406 char getInterruptMask();
Yajirushi 0:3807ce385b2a 407 char setInterruptMask(char mask);
Yajirushi 0:3807ce385b2a 408
Yajirushi 0:3807ce385b2a 409 char getInterruptEnable();
Yajirushi 0:3807ce385b2a 410 char setInterruptEnable(char mask);
Yajirushi 0:3807ce385b2a 411
Yajirushi 0:3807ce385b2a 412 float getAccAnyMotionThreashold(bool ismg=true);
Yajirushi 0:3807ce385b2a 413 char setAccAnyMotionThreashold(bool ismg, float threashold);
Yajirushi 0:3807ce385b2a 414
Yajirushi 0:3807ce385b2a 415 char getAccInterruptSettings();
Yajirushi 0:3807ce385b2a 416 char setAccInterruptSettings(char settings);
Yajirushi 0:3807ce385b2a 417
Yajirushi 0:3807ce385b2a 418 unsigned short getAccHighGduration();
Yajirushi 0:3807ce385b2a 419 char setAccHighGduration(short ms);
Yajirushi 0:3807ce385b2a 420
Yajirushi 0:3807ce385b2a 421 float getAccHighGThreashold(bool ismg=true);
Yajirushi 0:3807ce385b2a 422 char setAccHighGThreashold(bool ismg, float threashold);
Yajirushi 0:3807ce385b2a 423
Yajirushi 0:3807ce385b2a 424 float getAccNMThreashold(bool ismg=true);
Yajirushi 0:3807ce385b2a 425 char setAccNMThreashold(bool ismg, float threashold);
Yajirushi 0:3807ce385b2a 426
Yajirushi 0:3807ce385b2a 427 char getAccNMsetting();
Yajirushi 0:3807ce385b2a 428 char setAccNMsetting(char setting);
Yajirushi 0:3807ce385b2a 429
Yajirushi 0:3807ce385b2a 430 char getGyroInterruptSettings();
Yajirushi 0:3807ce385b2a 431 char setGyroInterruptSettings(char settings);
Yajirushi 0:3807ce385b2a 432
Yajirushi 0:3807ce385b2a 433 char getGyroHighRateXsetting();
Yajirushi 0:3807ce385b2a 434 void getGyroHighRateXsetting_dps(float &hyst, float &thres);
Yajirushi 0:3807ce385b2a 435 char setGyroHighRateXsetting(char setting);
Yajirushi 0:3807ce385b2a 436 char setGyroHighRateXsetting_dps(float hystVal, float thresVal);
Yajirushi 0:3807ce385b2a 437 float getGyroHighRateXduration();
Yajirushi 0:3807ce385b2a 438 char setGyroHighRateXduration(float duration);
Yajirushi 0:3807ce385b2a 439
Yajirushi 0:3807ce385b2a 440 char getGyroHighRateYsetting();
Yajirushi 0:3807ce385b2a 441 void getGyroHighRateYsetting_dps(float &hyst, float &thres);
Yajirushi 0:3807ce385b2a 442 char setGyroHighRateYsetting(char setting);
Yajirushi 0:3807ce385b2a 443 char setGyroHighRateYsetting_dps(float hystVal, float thresVal);
Yajirushi 0:3807ce385b2a 444 float getGyroHighRateYduration();
Yajirushi 0:3807ce385b2a 445 char setGyroHighRateYduration(float duration);
Yajirushi 0:3807ce385b2a 446
Yajirushi 0:3807ce385b2a 447 char getGyroHighRateZsetting();
Yajirushi 0:3807ce385b2a 448 void getGyroHighRateZsetting_dps(float &hyst, float &thres);
Yajirushi 0:3807ce385b2a 449 char setGyroHighRateZsetting(char setting);
Yajirushi 0:3807ce385b2a 450 char setGyroHighRateZsetting_dps(float hystVal, float thresVal);
Yajirushi 0:3807ce385b2a 451 float getGyroHighRateZduration();
Yajirushi 0:3807ce385b2a 452 char setGyroHighRateZduration(float duration);
Yajirushi 0:3807ce385b2a 453
Yajirushi 0:3807ce385b2a 454 float getGyroAnyMotionThreashold();
Yajirushi 0:3807ce385b2a 455 char setGyroAnyMotionThreashold(float threashold);
Yajirushi 0:3807ce385b2a 456
Yajirushi 0:3807ce385b2a 457 char getAccAnyMotionSetting();
Yajirushi 0:3807ce385b2a 458 char setAccAnyMotionSetting(char setting);
Yajirushi 0:3807ce385b2a 459 };
Yajirushi 0:3807ce385b2a 460
Yajirushi 0:3807ce385b2a 461 #endif