Library for Bosch Sensortech BMI160 IMU
Dependents: MAX32630FTHR_BALANCE_BOT MPSMAX_copy MAX32630FTHR_BALANCE_BOT SELF_BALANCING_BOT
Diff: bmi160.cpp
- Revision:
- 5:35e032c8d8aa
- Parent:
- 3:e1770675eca4
- Child:
- 6:9615aa90087d
--- a/bmi160.cpp Fri Dec 09 00:45:10 2016 +0000 +++ b/bmi160.cpp Wed Dec 14 23:48:07 2016 +0000 @@ -35,9 +35,43 @@ //***************************************************************************** -int32_t BMI160::getTemperature(float *temp) +int32_t BMI160::setSensorPowerMode(Sensors sensor, PowerModes pwrMode) { int32_t rtnVal = -1; + switch(sensor) + { + case MAG: + rtnVal = writeRegister(CMD, (MAG_SET_PMU_MODE | pwrMode)); + break; + + case GYRO: + rtnVal = writeRegister(CMD, (GYR_SET_PMU_MODE | pwrMode)); + break; + + case ACC: + rtnVal = writeRegister(CMD, (ACC_SET_PMU_MODE | pwrMode)); + break; + + default: + rtnVal = -1; + break; + } + return rtnVal; } + + +//***************************************************************************** +int32_t BMI160::getTemperature(float *temp) +{ + uint8_t data[2]; + + int32_t rtnVal = readBlock(TEMPERATURE_0, TEMPERATURE_1, data); + if(rtnVal == RTN_NO_ERROR) + { + *temp = (((data[1] << 8) | data[0])/512.0); + } + + return rtnVal; +}