use embassy_time::Delay;
use oxstack_drivers::bmi270::{self, ADDRESS_SDO_HIGH, Bmi270};
pub use oxstack_drivers::bmi270::{AccelRange, Config, DataRate, GyroRange, RawSample, Sample};
use crate::i2c::{SysI2cBus, SysI2cDevice, device};
pub type Imu = Bmi270<SysI2cDevice>;
pub type Error =
bmi270::Error<embassy_embedded_hal::shared_bus::I2cDeviceError<esp_hal::i2c::master::Error>>;
pub struct ImuResources {
pub(crate) _private: (),
}
impl ImuResources {
pub async fn init(self, bus: &'static SysI2cBus, config: Config) -> Result<Imu, Error> {
let mut imu = Bmi270::new(device(bus), ADDRESS_SDO_HIGH);
imu.init(config, &mut Delay).await?;
Ok(imu)
}
}