BMI160 Initial
Dependents: MAX32630HSP3_IMU_HelloWorld MAX32630HSP3_IMU_HelloWorld MAX32630HSP3_Pitch_Charles Maxim_Squeeks
Diff: bmi160.cpp
- Revision:
- 12:64931a80340d
- Parent:
- 10:9e219f2f1fb3
- Child:
- 14:646eb94fa2eb
--- a/bmi160.cpp Tue Dec 20 01:29:56 2016 +0000
+++ b/bmi160.cpp Tue Dec 20 18:38:42 2016 +0000
@@ -66,38 +66,19 @@
//*****************************************************************************
-int32_t BMI160::getTemperature(float *temp)
+int32_t setAccConfig(const AccConfig &config)
{
+ int32_t rtnVal = -1;
uint8_t data[2];
- uint16_t rawTemp;
- int32_t rtnVal = readBlock(TEMPERATURE_0, TEMPERATURE_1, data);
- if(rtnVal == RTN_NO_ERROR)
- {
- rawTemp = ((data[1] << 8) | data[0]);
- if(rawTemp & 0x8000)
- {
- *temp = (23.0F - ((0x10000 - rawTemp)/512.0F));
- }
- else
- {
- *temp = ((rawTemp/512.0F) + 23.0F);
- }
- }
+
return rtnVal;
}
//*****************************************************************************
-int32_t BMI160::getSensorDataAndTime(uint8_t *data)
-{
- return readBlock(DATA_0, SENSORTIME_2, data);
-}
-
-
-//*****************************************************************************
-int32_t BMI160::getAccAxis(SensorAxis axis, AxisData &data, AccConfig accConfig)
+int32_t BMI160::getAccAxis(SensorAxis axis, AxisData &data, AccRange range)
{
uint8_t localData[2];
int32_t rtnVal;
@@ -124,7 +105,7 @@
if(rtnVal == RTN_NO_ERROR)
{
data.raw = ((localData[1] << 8) | localData[0]);
- switch(accConfig.range)
+ switch(range)
{
//magic numbers are typical values for LSB/g from EC table
case SENS_2G:
@@ -150,7 +131,7 @@
//*****************************************************************************
-int32_t BMI160::getAccXYZ(SensorData &data, AccConfig accConfig)
+int32_t BMI160::getAccXYZ(SensorData &data, AccRange range)
{
uint8_t localData[6];
int32_t rtnVal = readBlock(DATA_14, DATA_19, localData);
@@ -161,7 +142,7 @@
data.yAxis.raw = ((localData[3] << 8) | localData[2]);
data.zAxis.raw = ((localData[5] << 8) | localData[4]);
- switch(accConfig.range)
+ switch(range)
{
//magic numbers are typical values for LSB/g from EC table
case SENS_2G:
@@ -208,3 +189,26 @@
return rtnVal;
}
+
+//*****************************************************************************
+int32_t BMI160::getTemperature(float *temp)
+{
+ uint8_t data[2];
+ uint16_t rawTemp;
+
+ int32_t rtnVal = readBlock(TEMPERATURE_0, TEMPERATURE_1, data);
+ if(rtnVal == RTN_NO_ERROR)
+ {
+ rawTemp = ((data[1] << 8) | data[0]);
+ if(rawTemp & 0x8000)
+ {
+ *temp = (23.0F - ((0x10000 - rawTemp)/512.0F));
+ }
+ else
+ {
+ *temp = ((rawTemp/512.0F) + 23.0F);
+ }
+ }
+
+ return rtnVal;
+}