driver cleanup

This commit is contained in:
Lars Wilko Sentse 2024-07-03 16:40:03 +02:00
parent 67748f9e1a
commit ac1479739d
2 changed files with 44 additions and 41 deletions

View File

@ -1,7 +1,10 @@
#ifndef STA_DRIVERS_BMI088_HPP
#define STA_DRIVERS_BMI088_HPP
#include <sta/devices/stm32/bus/spi.hpp>
//#include <sta/devices/stm32/bus/spi.hpp>
//#include <sta/devices/stm32/bus/i2c.hpp>
#include <sta/bus/spi/device.hpp>
#include <sta/bus/i2c/device.hpp>
#include <sta/drivers/bmi088_defs.hpp>
@ -18,22 +21,22 @@ namespace sta
};
enum GyroRange
{
TWOTHOUSAND = 0x00,
ONETHOUSAND = 0x01,
FIVEHUNDRED = 0x02,
TWOFIFTY = 0x03,
ONETWENTYFIVE = 0x04
_2000 = 0x00,
_1000 = 0x01,
_500 = 0x02,
_250 = 0x03,
_125 = 0x04
};
enum GyroBandwidth
{
TWOTHOUSAND_FIVETHIRTYTWO = 0x00,
TWOTHOUSAND_TWOTHIRTY = 0x01,
ONETHOUSAND_ONESIXTEEN = 0x02,
FOURHUNDRED_FORTYSEVEN = 0x03,
TWOHUNDRED_TWENTYTHREE = 0x04,
ONEHUNDRED_TWELVE = 0x05,
TWOHUNDRED_SIXTYFOUR = 0x06,
ONEHUNDRED_THIRTYTWO = 0x07
_2000_532 = 0x00,
_2000_230 = 0x01,
_1000_116 = 0x02,
_400_47 = 0x03,
_200_23 = 0x04,
_100_12 = 0x05,
_200_64 = 0x06,
_100_32 = 0x07
};
enum AccelMode
@ -43,10 +46,10 @@ namespace sta
};
enum AccelRange
{
THREEG = 0x00,
SIXG = 0x01,
TWELVEG = 0x02,
TWENTYFOURG = 0x03
_3G = 0x00,
_6G = 0x01,
_12G = 0x02,
_24G = 0x03
};
enum AccelBandwidth
{
@ -56,14 +59,14 @@ namespace sta
};
enum AccelODR
{
TWELVE_FIVE = 0x05,
TWENTYFIVE = 0x06,
FIFTY = 0x07,
ONEHUNDRED = 0x08,
TWOHUNDRED = 0x09,
FOURHUNDRED = 0x0A,
EIGHTHUNDRED = 0x0B,
ONESIXHUNDRED = 0x0C
_12_5 = 0x05,
_25 = 0x06,
_50 = 0x07,
_100 = 0x08,
_200 = 0x09,
_400 = 0x0A,
_800 = 0x0B,
_1600 = 0x0C
};
private:
@ -74,7 +77,7 @@ namespace sta
};
public:
BMI088(STM32SPIDevice* gyro_device, STM32SPIDevice* accel_device);
BMI088(Device* gyro_device, Device* accel_device);
bool init();

View File

@ -4,7 +4,7 @@
namespace sta
{
BMI088::BMI088(STM32SPIDevice* gyro_device, STM32SPIDevice* accel_device)
BMI088::BMI088(Device* gyro_device, Device* accel_device)
: gyro_device{gyro_device}, accel_device(accel_device)
{
STA_ASSERT(gyro_device != nullptr);
@ -17,15 +17,15 @@ namespace sta
busRead(GYROSCOPE, BMI088_REG_GYRO_CHIP_ID, &id);
if(id != BMI088_GYRO_CHIP_ID) return false;
setGyroscopeRange(GyroRange::ONETHOUSAND);
setGyroscopeBandwidth(GyroBandwidth::TWOHUNDRED_SIXTYFOUR);
setGyroscopeRange(GyroRange::_1000);
setGyroscopeBandwidth(GyroBandwidth::_200_64);
setGyroscopeMode(GyroMode::NORMAL_AWAKE);
busRead(ACCELEROMETER, BMI088_REG_ACC_CHIP_ID, &id);
if(id != BMI088_ACC_CHIP_ID) return false;
setAccelerometerRange(AccelRange::TWENTYFOURG);
setAccelerometerBandwidth(AccelBandwidth::NORMAL_BANDWIDTH, AccelODR::ONEHUNDRED);
setAccelerometerRange(AccelRange::_24G);
setAccelerometerBandwidth(AccelBandwidth::NORMAL_BANDWIDTH, AccelODR::_100);
setAccelerometerMode(AccelMode::ON);
return true;
@ -41,19 +41,19 @@ namespace sta
switch(range)
{
case TWOTHOUSAND:
case _2000:
f_gyro_range = 2000;
break;
case ONETHOUSAND:
case _1000:
f_gyro_range = 1000;
break;
case FIVEHUNDRED:
case _500:
f_gyro_range = 500;
break;
case TWOFIFTY:
case _250:
f_gyro_range = 250;
break;
case ONETWENTYFIVE:
case _125:
f_gyro_range = 125;
break;
default:
@ -102,16 +102,16 @@ namespace sta
switch(range)
{
case THREEG:
case _3G:
f_accel_range = 3*9.80665;
break;
case SIXG:
case _6G:
f_accel_range = 6*9.80665;
break;
case TWELVEG:
case _12G:
f_accel_range = 12*9.80665;
break;
case TWENTYFOURG:
case _24G:
f_accel_range = 24*9.80665;
break;
default: