Small, versatile 9-axis sensor module by Bosch Sensortec 3D Accelerometer + 3D Gyroscope + 3D Magnetometer

Dependents:   Pruebas_Flex_IMU_copy BMX055_Madgwick

Committer:
kenjiArai
Date:
Mon Mar 04 04:10:59 2019 +0000
Revision:
2:1bea0ef16d84
Parent:
0:4196bd8bb88f
magnetic part -> Bug fix

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kenjiArai 0:4196bd8bb88f 1 /*
kenjiArai 0:4196bd8bb88f 2 * mbed library program
kenjiArai 0:4196bd8bb88f 3 * BMX055 Small, versatile 9-axis sensor module
kenjiArai 0:4196bd8bb88f 4 * by Bosch Sensortec
kenjiArai 0:4196bd8bb88f 5 *
kenjiArai 2:1bea0ef16d84 6 * Copyright (c) 2018,'19 Kenji Arai / JH1PJL
kenjiArai 0:4196bd8bb88f 7 * http://www.page.sannet.ne.jp/kenjia/index.html
kenjiArai 0:4196bd8bb88f 8 * http://mbed.org/users/kenjiArai/
kenjiArai 0:4196bd8bb88f 9 * Started: October 24th, 2018
kenjiArai 2:1bea0ef16d84 10 * Revised: March 3rd, 2019
kenjiArai 0:4196bd8bb88f 11 */
kenjiArai 0:4196bd8bb88f 12 /*
kenjiArai 0:4196bd8bb88f 13 *---------------- REFERENCE ---------------------------------------------------
kenjiArai 0:4196bd8bb88f 14 * Original Information
kenjiArai 0:4196bd8bb88f 15 * https://www.bosch-sensortec.com/bst/products/all_products/bmx055
kenjiArai 0:4196bd8bb88f 16 * Data Sheet BST-BMX055-DS000-02 Rev.1.1 November 7th, 2014
kenjiArai 0:4196bd8bb88f 17 * Sample software
kenjiArai 0:4196bd8bb88f 18 * BMX055 - Combination of bma2x2 + bmg160 + bmm050 APIs
kenjiArai 0:4196bd8bb88f 19 * https://github.com/BoschSensortec/BMA2x2_driver
kenjiArai 0:4196bd8bb88f 20 * https://github.com/BoschSensortec/BMG160_driver
kenjiArai 0:4196bd8bb88f 21 * https://github.com/BoschSensortec/BMM050_driver
kenjiArai 0:4196bd8bb88f 22 * Aplied Board
kenjiArai 0:4196bd8bb88f 23 * AE-BMX055 Module
kenjiArai 0:4196bd8bb88f 24 * http://akizukidenshi.com/catalog/g/gK-13010/
kenjiArai 0:4196bd8bb88f 25 */
kenjiArai 0:4196bd8bb88f 26
kenjiArai 0:4196bd8bb88f 27 // NO Interrupt functions are supported due to no pin on AE-BMX055 Module
kenjiArai 0:4196bd8bb88f 28 // Only supprt normal mode (No sleep and/or standby mode)
kenjiArai 0:4196bd8bb88f 29
kenjiArai 0:4196bd8bb88f 30 #ifndef BMX055_H
kenjiArai 0:4196bd8bb88f 31 #define BMX055_H
kenjiArai 0:4196bd8bb88f 32
kenjiArai 0:4196bd8bb88f 33 #include "mbed.h"
kenjiArai 0:4196bd8bb88f 34
kenjiArai 0:4196bd8bb88f 35 #define AKIZUKI_BOARD
kenjiArai 0:4196bd8bb88f 36
kenjiArai 0:4196bd8bb88f 37 // BMX055
kenjiArai 0:4196bd8bb88f 38 // Automatic detection for the address!!
kenjiArai 0:4196bd8bb88f 39 // AE-BMX055 board default setting (All jumpers are open)
kenjiArai 0:4196bd8bb88f 40 #define BMX055_GYR_CHIP_ADDR (0x69 << 1)
kenjiArai 0:4196bd8bb88f 41 #define BMX055_ACC_CHIP_ADDR (0x19 << 1)
kenjiArai 0:4196bd8bb88f 42 #define BMX055_MAG_CHIP_ADDR (0x13 << 1)
kenjiArai 0:4196bd8bb88f 43
kenjiArai 0:4196bd8bb88f 44 // ID's
kenjiArai 0:4196bd8bb88f 45 #define I_AM_BMX055_ACC 0xfa // ACC ID
kenjiArai 0:4196bd8bb88f 46 #define I_AM_BMX055_GYR 0x0f // GYR ID
kenjiArai 0:4196bd8bb88f 47 #define I_AM_BMX055_MAG 0x32 // MAG ID
kenjiArai 0:4196bd8bb88f 48
kenjiArai 0:4196bd8bb88f 49 ////////////// PARAMETER DEFINITION ///////////////////////
kenjiArai 0:4196bd8bb88f 50 // ACC full scale
kenjiArai 0:4196bd8bb88f 51 #define ACC_2G 3
kenjiArai 0:4196bd8bb88f 52 #define ACC_4G 5
kenjiArai 0:4196bd8bb88f 53 #define ACC_8G 8
kenjiArai 0:4196bd8bb88f 54 #define ACC_16G 12
kenjiArai 0:4196bd8bb88f 55
kenjiArai 0:4196bd8bb88f 56 // Support only "filtered mode"
kenjiArai 0:4196bd8bb88f 57 // ACC Bandwidth (BW = ODR/2 (ODR = Output Data Rate))
kenjiArai 0:4196bd8bb88f 58 #define ACC_BW7R81Hz 8 // 64 ms
kenjiArai 0:4196bd8bb88f 59 #define ACC_BW15R63Hz 9 // 32 ms
kenjiArai 0:4196bd8bb88f 60 #define ACC_BW31R25Hz 10 // 16 ms
kenjiArai 0:4196bd8bb88f 61 #define ACC_BW62R5Hz 11 // 8 ms
kenjiArai 0:4196bd8bb88f 62 #define ACC_BW125Hz 12 // 4 ms
kenjiArai 0:4196bd8bb88f 63 #define ACC_BW250Hz 13 // 2 ms
kenjiArai 0:4196bd8bb88f 64 #define ACC_BW500Hz 14 // 1 ms
kenjiArai 0:4196bd8bb88f 65 #define ACC_BW1kHz 15 // 0.5 ms
kenjiArai 0:4196bd8bb88f 66
kenjiArai 0:4196bd8bb88f 67 // Gyro Sampling (Data per Second)
kenjiArai 0:4196bd8bb88f 68 #define GYR_2000DPS 0 // full scal +/- 2000 Deg/s(61.0 mDeg/sec/LSB)
kenjiArai 0:4196bd8bb88f 69 #define GYR_1000DPS 1 // +/- 1000 Deg/s(30.5 mDeg/sec/LSB)
kenjiArai 0:4196bd8bb88f 70 #define GYR_500DPS 2 // +/- 500 Deg/s(15.3 mDeg/sec/LSB)
kenjiArai 0:4196bd8bb88f 71 #define GYR_250DPS 3 // +/- 250 Deg/s(7.6 mDeg/sec/LSB)
kenjiArai 0:4196bd8bb88f 72 #define GYR_125DPS 4 // +/- 125 Deg/s(3.8 mDeg/sec/LSB)
kenjiArai 0:4196bd8bb88f 73
kenjiArai 0:4196bd8bb88f 74 // Gyro Bandwidth
kenjiArai 0:4196bd8bb88f 75 #define GYR_2000Hz523Hz 0 // 2000 Hz ODR and unfiltered (BW(bandwidth) 523Hz)
kenjiArai 0:4196bd8bb88f 76 #define GYR_2000Hz230Hz 1 // 2000 Hz ODR 230 Hz BW
kenjiArai 0:4196bd8bb88f 77 #define GYR_1000Hz116Hz 2 // 1000 Hz ODR 116 Hz BW
kenjiArai 0:4196bd8bb88f 78 #define GYR_400Hz47Hz 3 // 400 Hz ODR 47 Hz BW
kenjiArai 0:4196bd8bb88f 79 #define GYR_200Hz23Hz 4 // 200 Hz ODR 23 Hz BW
kenjiArai 0:4196bd8bb88f 80 #define GYR_100Hz12Hz 5 // 100 Hz ODR 12 Hz BW
kenjiArai 0:4196bd8bb88f 81 #define GYR_200Hz64Hz 6 // 200 Hz ODR 64 Hz BW
kenjiArai 0:4196bd8bb88f 82 #define GYR_100Hz32Hz 7 // 100 Hz ODR 32 Hz BW
kenjiArai 0:4196bd8bb88f 83
kenjiArai 0:4196bd8bb88f 84 // MAG
kenjiArai 0:4196bd8bb88f 85 #define MAG_ODR10Hz 0 // 10 Hz ODR(default)
kenjiArai 0:4196bd8bb88f 86 #define MAG_ODR2Hz 1 // 2 Hz ODR
kenjiArai 0:4196bd8bb88f 87 #define MAG_ODR6Hz 2 // 6 Hz ODR
kenjiArai 0:4196bd8bb88f 88 #define MAG_ODR8Hz 3 // 8 Hz ODR
kenjiArai 0:4196bd8bb88f 89 #define MAG_ODR15Hz 4 // 15 Hz ODR
kenjiArai 0:4196bd8bb88f 90 #define MAG_ODR20Hz 5 // 20 Hz ODR
kenjiArai 0:4196bd8bb88f 91 #define MAG_ODR25Hz 6 // 25 Hz ODR
kenjiArai 0:4196bd8bb88f 92 #define MAG_ODR30Hz 7 // 30 Hz ODR
kenjiArai 0:4196bd8bb88f 93
kenjiArai 0:4196bd8bb88f 94 ////////////// DATA TYPE DEFINITION ///////////////////////
kenjiArai 0:4196bd8bb88f 95 typedef struct {
kenjiArai 0:4196bd8bb88f 96 // ACC
kenjiArai 0:4196bd8bb88f 97 uint8_t acc_fs; // Accelerometer full scale range
kenjiArai 0:4196bd8bb88f 98 uint8_t acc_bw; // Accelerometer filtered bandwidth
kenjiArai 0:4196bd8bb88f 99 // GYR
kenjiArai 0:4196bd8bb88f 100 uint8_t gyr_fs; // Gyroscope full scale range
kenjiArai 0:4196bd8bb88f 101 uint8_t gyr_bw; // Gyroscope filtered bandwidth
kenjiArai 0:4196bd8bb88f 102 // MAG
kenjiArai 0:4196bd8bb88f 103 uint8_t mag_odr; // Magnetometer Output Data Rate
kenjiArai 0:4196bd8bb88f 104 } BMX055_TypeDef;
kenjiArai 0:4196bd8bb88f 105
kenjiArai 0:4196bd8bb88f 106 ////////////// DEFAULT SETTING ////////////////////////////
kenjiArai 0:4196bd8bb88f 107 // Standard parameter for easy set-up
kenjiArai 0:4196bd8bb88f 108 const BMX055_TypeDef bmx055_std_paramtr = {
kenjiArai 0:4196bd8bb88f 109 // ACC
kenjiArai 0:4196bd8bb88f 110 ACC_2G,
kenjiArai 0:4196bd8bb88f 111 ACC_BW250Hz,
kenjiArai 0:4196bd8bb88f 112 // GYR
kenjiArai 0:4196bd8bb88f 113 GYR_125DPS,
kenjiArai 0:4196bd8bb88f 114 GYR_100Hz32Hz,
kenjiArai 0:4196bd8bb88f 115 // MAG
kenjiArai 0:4196bd8bb88f 116 MAG_ODR10Hz
kenjiArai 0:4196bd8bb88f 117 };
kenjiArai 0:4196bd8bb88f 118
kenjiArai 0:4196bd8bb88f 119 ////////////// DATA TYPE DEFINITION ///////////////////////
kenjiArai 0:4196bd8bb88f 120 typedef struct {
kenjiArai 0:4196bd8bb88f 121 uint8_t acc_addr;
kenjiArai 0:4196bd8bb88f 122 uint8_t mag_addr;
kenjiArai 0:4196bd8bb88f 123 uint8_t gyr_addr;
kenjiArai 0:4196bd8bb88f 124 } BMX055_ADDR_INF_TypeDef;
kenjiArai 0:4196bd8bb88f 125
kenjiArai 0:4196bd8bb88f 126 typedef struct {
kenjiArai 0:4196bd8bb88f 127 uint8_t acc_id;
kenjiArai 0:4196bd8bb88f 128 uint8_t mag_id;
kenjiArai 0:4196bd8bb88f 129 uint8_t gyr_id;
kenjiArai 0:4196bd8bb88f 130 } BMX055_ID_INF_TypeDef;
kenjiArai 0:4196bd8bb88f 131
kenjiArai 0:4196bd8bb88f 132 typedef struct {
kenjiArai 0:4196bd8bb88f 133 float x;
kenjiArai 0:4196bd8bb88f 134 float y;
kenjiArai 0:4196bd8bb88f 135 float z;
kenjiArai 0:4196bd8bb88f 136 } BMX055_ACCEL_TypeDef;
kenjiArai 0:4196bd8bb88f 137
kenjiArai 0:4196bd8bb88f 138 typedef struct {
kenjiArai 0:4196bd8bb88f 139 float x;
kenjiArai 0:4196bd8bb88f 140 float y;
kenjiArai 0:4196bd8bb88f 141 float z;
kenjiArai 0:4196bd8bb88f 142 } BMX055_GRAVITY_TypeDef;
kenjiArai 0:4196bd8bb88f 143
kenjiArai 0:4196bd8bb88f 144 typedef struct {
kenjiArai 0:4196bd8bb88f 145 float x;
kenjiArai 0:4196bd8bb88f 146 float y;
kenjiArai 0:4196bd8bb88f 147 float z;
kenjiArai 0:4196bd8bb88f 148 } BMX055_GYRO_TypeDef;
kenjiArai 0:4196bd8bb88f 149
kenjiArai 0:4196bd8bb88f 150 typedef struct {
kenjiArai 0:4196bd8bb88f 151 float x;
kenjiArai 0:4196bd8bb88f 152 float y;
kenjiArai 0:4196bd8bb88f 153 float z;
kenjiArai 0:4196bd8bb88f 154 } BMX055_MAGNET_TypeDef;
kenjiArai 0:4196bd8bb88f 155
kenjiArai 0:4196bd8bb88f 156 /** BMX055 Small, versatile 9-axis sensor module by Bosch Sensortec
kenjiArai 0:4196bd8bb88f 157 * @code
kenjiArai 0:4196bd8bb88f 158 * #include "mbed.h"
kenjiArai 0:4196bd8bb88f 159 * #include "BMX055.h"
kenjiArai 0:4196bd8bb88f 160 *
kenjiArai 0:4196bd8bb88f 161 * Serial pc(USBTX,USBRX);
kenjiArai 0:4196bd8bb88f 162 * I2C (I2C_SDA, I2C_SCL);
kenjiArai 0:4196bd8bb88f 163 * BMX055 imu(i2c);
kenjiArai 0:4196bd8bb88f 164 *
kenjiArai 0:4196bd8bb88f 165 * const BMX055_TypeDef bmx055_my_parameters = {
kenjiArai 0:4196bd8bb88f 166 * // ACC
kenjiArai 0:4196bd8bb88f 167 * ACC_2G,
kenjiArai 0:4196bd8bb88f 168 * ACC_BW250Hz,
kenjiArai 0:4196bd8bb88f 169 * // GYR
kenjiArai 0:4196bd8bb88f 170 * GYR_125DPS,
kenjiArai 0:4196bd8bb88f 171 * GYR_200Hz23Hz,
kenjiArai 0:4196bd8bb88f 172 * // MAG
kenjiArai 0:4196bd8bb88f 173 * MAG_ODR10Hz
kenjiArai 0:4196bd8bb88f 174 * };
kenjiArai 0:4196bd8bb88f 175 *
kenjiArai 0:4196bd8bb88f 176 * int main() {
kenjiArai 0:4196bd8bb88f 177 * BMX055_ACCEL_TypeDef acc;
kenjiArai 0:4196bd8bb88f 178 * BMX055_GYRO_TypeDef gyr;
kenjiArai 0:4196bd8bb88f 179 * BMX055_MAGNET_TypeDef mag;
kenjiArai 0:4196bd8bb88f 180 *
kenjiArai 0:4196bd8bb88f 181 * if (imu.imu.chip_ready() == 0){
kenjiArai 0:4196bd8bb88f 182 * pc.printf("Bosch BMX055 is NOT avirable!!\r\n");
kenjiArai 0:4196bd8bb88f 183 * }
kenjiArai 0:4196bd8bb88f 184 * imu.set_parameter(&bmx055_my_parameters);
kenjiArai 0:4196bd8bb88f 185 * while(1) {
kenjiArai 0:4196bd8bb88f 186 * imu.get_accel(&acc);
kenjiArai 0:4196bd8bb88f 187 * pc.printf("//ACC: x=%+3.2f y=%+3.2f z=%+3.2f //",
kenjiArai 0:4196bd8bb88f 188 * acc.x, acc.y, acc.z);
kenjiArai 0:4196bd8bb88f 189 * imu.get_gyro(&gyr);
kenjiArai 0:4196bd8bb88f 190 * pc.printf("GYR: x=%+3.2f y=%+3.2f z=%+3.2f //",
kenjiArai 0:4196bd8bb88f 191 * gyr.x, gyr.y, gyr.z);
kenjiArai 0:4196bd8bb88f 192 * imu.get_magnet(&mag);
kenjiArai 0:4196bd8bb88f 193 * pc.printf("MAG: x=%+3.2f y=%+3.2f z=%+3.2f , passed %u sec\r\n",
kenjiArai 0:4196bd8bb88f 194 * mag.x, mag.y, mag.z, n++);
kenjiArai 0:4196bd8bb88f 195 * wait(0.5f);
kenjiArai 0:4196bd8bb88f 196 * }
kenjiArai 0:4196bd8bb88f 197 * }
kenjiArai 0:4196bd8bb88f 198 * @endcode
kenjiArai 0:4196bd8bb88f 199 */
kenjiArai 0:4196bd8bb88f 200
kenjiArai 0:4196bd8bb88f 201 class BMX055
kenjiArai 0:4196bd8bb88f 202 {
kenjiArai 0:4196bd8bb88f 203 public:
kenjiArai 0:4196bd8bb88f 204 /** Configure data pin
kenjiArai 0:4196bd8bb88f 205 * @param data SDA and SCL pins
kenjiArai 0:4196bd8bb88f 206 * @param Other parameters are set automatically
kenjiArai 0:4196bd8bb88f 207 */
kenjiArai 0:4196bd8bb88f 208 BMX055(PinName p_sda, PinName p_scl);
kenjiArai 0:4196bd8bb88f 209
kenjiArai 0:4196bd8bb88f 210 /** Configure data pin (with other devices on I2C line)
kenjiArai 0:4196bd8bb88f 211 * @param I2C previous definition
kenjiArai 0:4196bd8bb88f 212 * @param Other parameters are set automatically
kenjiArai 0:4196bd8bb88f 213 */
kenjiArai 0:4196bd8bb88f 214 BMX055(I2C& p_i2c);
kenjiArai 0:4196bd8bb88f 215
kenjiArai 0:4196bd8bb88f 216 /** Get accel data
kenjiArai 0:4196bd8bb88f 217 * @param float type of 3D data address
kenjiArai 0:4196bd8bb88f 218 */
kenjiArai 0:4196bd8bb88f 219 void get_accel(BMX055_ACCEL_TypeDef *acc);
kenjiArai 0:4196bd8bb88f 220
kenjiArai 0:4196bd8bb88f 221 /** Get gyroscope data
kenjiArai 0:4196bd8bb88f 222 * @param float type of 3D data address
kenjiArai 0:4196bd8bb88f 223 */
kenjiArai 0:4196bd8bb88f 224 void get_gyro(BMX055_GYRO_TypeDef *gyr);
kenjiArai 0:4196bd8bb88f 225
kenjiArai 0:4196bd8bb88f 226 /** Get magnet data
kenjiArai 0:4196bd8bb88f 227 * @param float type of 3D data address
kenjiArai 0:4196bd8bb88f 228 */
kenjiArai 0:4196bd8bb88f 229 void get_magnet(BMX055_MAGNET_TypeDef *mag);
kenjiArai 0:4196bd8bb88f 230
kenjiArai 0:4196bd8bb88f 231 /** Get Chip temperature data both Acc & Gyro
kenjiArai 0:4196bd8bb88f 232 * @param none
kenjiArai 0:4196bd8bb88f 233 * @return temperature data
kenjiArai 0:4196bd8bb88f 234 */
kenjiArai 0:4196bd8bb88f 235 float get_chip_temperature(void);
kenjiArai 0:4196bd8bb88f 236
kenjiArai 0:4196bd8bb88f 237 /** Read BMX055 ID information
kenjiArai 0:4196bd8bb88f 238 * @param ID information address
kenjiArai 0:4196bd8bb88f 239 * @return none
kenjiArai 0:4196bd8bb88f 240 */
kenjiArai 0:4196bd8bb88f 241 void read_id_inf(BMX055_ID_INF_TypeDef *id);
kenjiArai 0:4196bd8bb88f 242
kenjiArai 0:4196bd8bb88f 243 /** Check chip is avairable or not
kenjiArai 0:4196bd8bb88f 244 * @param none
kenjiArai 0:4196bd8bb88f 245 * @return OK = true, NG = false;
kenjiArai 0:4196bd8bb88f 246 */
kenjiArai 0:4196bd8bb88f 247 bool chip_ready(void);
kenjiArai 0:4196bd8bb88f 248
kenjiArai 0:4196bd8bb88f 249 /** Check chip is avairable or not
kenjiArai 0:4196bd8bb88f 250 * @param configration parameter
kenjiArai 0:4196bd8bb88f 251 * @return none
kenjiArai 0:4196bd8bb88f 252 */
kenjiArai 0:4196bd8bb88f 253 void set_parameter(const BMX055_TypeDef *bmx055_parameter);
kenjiArai 0:4196bd8bb88f 254
kenjiArai 0:4196bd8bb88f 255 /** Set I2C clock frequency
kenjiArai 0:4196bd8bb88f 256 * @param freq.
kenjiArai 0:4196bd8bb88f 257 * @return none
kenjiArai 0:4196bd8bb88f 258 */
kenjiArai 0:4196bd8bb88f 259 void frequency(int hz);
kenjiArai 0:4196bd8bb88f 260
kenjiArai 0:4196bd8bb88f 261 /** Read register
kenjiArai 0:4196bd8bb88f 262 * @param register's address
kenjiArai 0:4196bd8bb88f 263 * @return register data
kenjiArai 0:4196bd8bb88f 264 */
kenjiArai 0:4196bd8bb88f 265 uint8_t read_reg(uint8_t addr);
kenjiArai 0:4196bd8bb88f 266
kenjiArai 0:4196bd8bb88f 267 /** Write register
kenjiArai 0:4196bd8bb88f 268 * @param register's address
kenjiArai 0:4196bd8bb88f 269 * @param data
kenjiArai 0:4196bd8bb88f 270 * @return register data
kenjiArai 0:4196bd8bb88f 271 */
kenjiArai 0:4196bd8bb88f 272 uint8_t write_reg(uint8_t addr, uint8_t data);
kenjiArai 0:4196bd8bb88f 273
kenjiArai 0:4196bd8bb88f 274 protected:
kenjiArai 0:4196bd8bb88f 275 void initialize(void);
kenjiArai 0:4196bd8bb88f 276 void check_id(void);
kenjiArai 0:4196bd8bb88f 277 void set_parameters_to_regs(void);
kenjiArai 0:4196bd8bb88f 278
kenjiArai 0:4196bd8bb88f 279 I2C *_i2c_p;
kenjiArai 0:4196bd8bb88f 280 I2C &_i2c;
kenjiArai 0:4196bd8bb88f 281
kenjiArai 0:4196bd8bb88f 282 private:
kenjiArai 0:4196bd8bb88f 283 char dt[16]; // working buffer
kenjiArai 0:4196bd8bb88f 284 uint8_t chip_addr;
kenjiArai 0:4196bd8bb88f 285 BMX055_ADDR_INF_TypeDef inf_addr;
kenjiArai 0:4196bd8bb88f 286 BMX055_ID_INF_TypeDef inf_id;
kenjiArai 0:4196bd8bb88f 287
kenjiArai 0:4196bd8bb88f 288 uint8_t ready_flag;
kenjiArai 0:4196bd8bb88f 289
kenjiArai 2:1bea0ef16d84 290
kenjiArai 2:1bea0ef16d84 291
kenjiArai 0:4196bd8bb88f 292 BMX055_TypeDef bmx055_parameters;
kenjiArai 0:4196bd8bb88f 293 uint8_t acc_id;
kenjiArai 0:4196bd8bb88f 294 uint8_t mag_id;
kenjiArai 0:4196bd8bb88f 295 uint8_t gyr_id;
kenjiArai 0:4196bd8bb88f 296 };
kenjiArai 0:4196bd8bb88f 297
kenjiArai 0:4196bd8bb88f 298 #endif // BMX055_H