iNEMO inertial module: 3D accelerometer and 3D gyroscope.
Dependencies: X_NUCLEO_COMMON ST_INTERFACES
Diff: LSM6DSOXSensor.h
- Revision:
- 1:fe40aec6e97a
- Parent:
- 0:f27ce43dee4f
- Child:
- 2:6f62c931be0b
diff -r f27ce43dee4f -r fe40aec6e97a LSM6DSOXSensor.h --- a/LSM6DSOXSensor.h Wed Jul 10 12:08:49 2019 +0000 +++ b/LSM6DSOXSensor.h Thu Oct 29 12:45:14 2020 +0000 @@ -48,6 +48,7 @@ #include "lsm6dsox_reg.h" #include "MotionSensor.h" #include "GyroSensor.h" +#include "mbed.h" #include <assert.h> /* Defines -------------------------------------------------------------------*/ @@ -72,6 +73,19 @@ LSM6DSOX_INT2_PIN, } LSM6DSOX_Interrupt_Pin_t; +typedef enum +{ + LSM6DSOX_ACC_HIGH_PERFORMANCE_MODE, + LSM6DSOX_ACC_LOW_POWER_NORMAL_MODE, + LSM6DSOX_ACC_ULTRA_LOW_POWER_MODE +} LSM6DSOX_ACC_Operating_Mode_t; + +typedef enum +{ + LSM6DSOX_GYRO_HIGH_PERFORMANCE_MODE, + LSM6DSOX_GYRO_LOW_POWER_NORMAL_MODE +} LSM6DSOX_GYRO_Operating_Mode_t; + typedef struct { unsigned int FreeFallStatus : 1; @@ -84,6 +98,26 @@ unsigned int SleepStatus : 1; } LSM6DSOX_Event_Status_t; +typedef union{ + int16_t i16bit[3]; + uint8_t u8bit[6]; +} LSM6DSOX_Axis3bit16_t; + +typedef union{ + int16_t i16bit; + uint8_t u8bit[2]; +} LSM6DSOX_Axis1bit16_t; + +typedef union{ + int32_t i32bit[3]; + uint8_t u8bit[12]; +} LSM6DSOX_Axis3bit32_t; + +typedef union{ + int32_t i32bit; + uint8_t u8bit[4]; +} LSM6DSOX_Axis1bit32_t; + /* Class Declaration ---------------------------------------------------------*/ @@ -108,7 +142,9 @@ virtual int get_x_odr(float *odr); virtual int get_g_odr(float *odr); virtual int set_x_odr(float odr); + virtual int set_x_odr_with_mode(float odr, LSM6DSOX_ACC_Operating_Mode_t mode); virtual int set_g_odr(float odr); + virtual int set_g_odr_with_mode(float odr, LSM6DSOX_GYRO_Operating_Mode_t mode); virtual int get_x_fs(float *full_scale); virtual int get_g_fs(float *full_scale); virtual int set_x_fs(float full_scale);