#pragma once #include "sensors/i2c_sensor.hpp" // Address of the chip on the bus #define LSM6DS3_GYRO_I2C_ADDR 0x6A // Registers of the chip #define LSM6DS3_GYRO_I2C_REG_ID 0x0F #define LSM6DS3_GYRO_I2C_REG_CTRL2_G 0x11 #define LSM6DS3_GYRO_I2C_REG_OUTX_L_G 0x22 // Constants #define LSM6DS3_GYRO_CHIP_ID 0x69 #define LSM6DS3_GYRO_ODR_104HZ (0b0100 << 4) class LSM6DS3_Gyro : public I2CSensor { uint8_t get_device_address() {return LSM6DS3_GYRO_I2C_ADDR;} public: LSM6DS3_Gyro(I2CBus *bus); int init(); void get_event(cereal::SensorEventData::Builder &event); };