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:
8:a89b529b1d96
Parent:
7:9848196cb65e
Child:
9:ca6b5fecdd63
--- a/bmi160.cpp	Thu Dec 15 23:46:42 2016 +0000
+++ b/bmi160.cpp	Tue Dec 20 00:10:04 2016 +0000
@@ -84,3 +84,67 @@
     
     return rtnVal;
 }
+
+
+//*****************************************************************************
+int32_t BMI160::getSensorDataAndTime(uint8_t *data)
+{
+    return readBlock(DATA_0, SENSORTIME_2, data);
+}
+
+
+//*****************************************************************************
+int32_t BMI160::getAccAxis(SensorAxis axis, AxisData &data)
+{
+    uint8_t localData[2];
+    int32_t rtnVal;
+    
+    switch(axis)
+    {
+        case X_AXIS:
+            rtnVal = readBlock(DATA_14, DATA_15, localData);
+        break;
+        
+        case Y_AXIS:
+            rtnVal = readBlock(DATA_16, DATA_17, localData);
+        break;
+        
+        case Z_AXIS:
+            rtnVal = readBlock(DATA_18, DATA_19, localData);
+        break;
+        
+        default:
+            rtnVal = -1;
+        break;
+    }
+    
+    if(rtnVal == RTN_NO_ERROR)
+    {
+        data.raw = ((localData[1] << 8) | localData[0]);
+        data.scaled = (data.raw/16384.0F); //only 2G range right now
+    }
+    
+    return rtnVal;
+}
+    
+
+//*****************************************************************************    
+int32_t BMI160::getAccXYZ(SensorData &data)
+{
+    uint8_t localData[6];
+    int32_t rtnVal = readBlock(DATA_14, DATA_19, localData);
+    
+    if(rtnVal == RTN_NO_ERROR)
+    {
+        data.xAxis.raw = ((localData[1] << 8) | localData[0]);
+        data.yAxis.raw = ((localData[3] << 8) | localData[2]);
+        data.zAxis.raw = ((localData[5] << 8) | localData[4]);
+        
+        //only 2G range right now
+        data.xAxis.scaled = (data.xAxis.raw/16384.0F);
+        data.yAxis.scaled = (data.yAxis.raw/16384.0F);
+        data.zAxis.scaled = (data.zAxis.raw/16384.0F);
+    }
+    
+    return rtnVal;
+}