Library for Bosch Sensortec BMI160 IMU

Dependents:   Rocket MAX32630FTHR_JOYSTICK MAX32630FTHR_IMU_Hello_World Pike_the_Flipper_Main_Branch ... more

Fork of BMI160 by Justin Jordan

Revision:
5:35e032c8d8aa
Parent:
4:ebac8c8f6347
Child:
7:9848196cb65e
--- a/bmi160.h	Fri Dec 09 00:45:10 2016 +0000
+++ b/bmi160.h	Wed Dec 14 23:48:07 2016 +0000
@@ -56,6 +56,14 @@
     ///Return value on success.
     static const uint8_t RTN_NO_ERROR = 0;
     
+    ///BMI160 Sensors
+    enum Sensors
+    {
+        MAG = 0, ///<Optional external sensor
+        GYRO,    ///<Angular rate sensor
+        ACC      ///<g sensor
+    };
+    
     ///BMI160 registers
     enum Registers
     {
@@ -193,6 +201,7 @@
         PFD_USED_LPM         ///<Pre-filtered data are used in low power mode
     };
     
+    ///BMI160 Power Modes
     enum PowerModes
     {
         SUSPEND = 0,  ///<Acc and Gyro, No sampling, No FIFO data readout
@@ -201,6 +210,21 @@
         FAST_START_UP ///<Gyro start up delay time to normal mode <= 10 ms
     };
     
+    ///BMI160 Commands for CMD register
+    enum Commands
+    {
+        START_FOC = 0x03,        ///<Starts Fast Offset Calibrartion 
+        ACC_SET_PMU_MODE = 0x14, ///<Sets acc power mode
+        GYR_SET_PMU_MODE,        ///<Sets gyro power mode
+        MAG_SET_PMU_MODE,        ///<Sets mag power mode
+        PROG_NVM = 0xA0,         ///<Writes NVM backed registers into NVM
+        FIFO_FLUSH = 0xB0,       ///<Clears FIFO
+        INT_RESET,               ///<Clears interrupt engine, INT_STATUS, and 
+                                 ///<the interrupt pin
+        STEP_CNT_CLR,            ///<Triggers reset of the step counter
+        SOFT_RESET = 0xB6        ///<Triggers a reset including a reboot.
+    };
+    
     
     ///@brief BMI160 Destructor.\n
     ///
@@ -274,6 +298,20 @@
     const uint8_t *data) = 0;
     
     
+    ///@brief Sets sensors power mode through CMD register.\n
+    ///@details Observe command execution times given in datasheet.\n 
+    ///
+    ///On Entry:
+    ///@param[in] sensor - Sensor which power mode we are setting
+    ///@param[in] pwrMode - Desired powermode of the sensor
+    ///
+    ///On Exit:
+    ///@param[out] 
+    ///
+    ///@returns 0 on success, non 0 on failure
+    int32_t setSensorPowerMode(Sensors sensor, PowerModes pwrMode);
+    
+    
     ///@brief Get die temperature.\n
     ///
     ///On Entry:
@@ -295,8 +333,6 @@
     ///@param[out] none
     ///
     ///@returns none
-    
-private:
 
 };