iNEMO inertial module: 3D accelerometer and 3D gyroscope.

Dependencies:   X_NUCLEO_COMMON ST_INTERFACES

Revision:
1:fe40aec6e97a
Parent:
0:f27ce43dee4f
Child:
2:6f62c931be0b
--- 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);