#pragma once #include #include "driver/i2c_master.h" #include "esp_err.h" #ifdef __cplusplus extern "C" { #endif typedef struct { i2c_master_dev_handle_t device; uint8_t address; } l3g4200d_t; typedef struct { int16_t x; int16_t y; int16_t z; } l3g4200d_sample_t; #define L3G4200D_STATUS_ZYXDA 0x08 #define L3G4200D_STATUS_ZYXOR 0x80 /** Detect, identify, and configure an L3G4200D for 100 Hz, 25 Hz BW, +/-500 dps. */ esp_err_t l3g4200d_init(l3g4200d_t *sensor, i2c_master_bus_handle_t bus, uint32_t bus_speed_hz); /** Remove the sensor from its I2C bus. Safe to call on an uninitialized handle. */ esp_err_t l3g4200d_deinit(l3g4200d_t *sensor); /** Read STATUS_REG followed by one sensor-native, uncalibrated XYZ sample. */ esp_err_t l3g4200d_read_raw(const l3g4200d_t *sensor, l3g4200d_sample_t *sample, uint8_t *status); uint8_t l3g4200d_address(const l3g4200d_t *sensor); #ifdef __cplusplus } #endif