use crate::{
interface::{ReadData, WriteData},
register_address::Lpm1G,
types::{GyroFilterBandwidth, GyroMode, GyroRange},
Bmx055, Error,
};
impl<DI, CommE, PinE, MODE> Bmx055<DI, MODE>
where
DI: ReadData<Error = Error<CommE, PinE>> + WriteData<Error = Error<CommE, PinE>>,
{
pub fn set_gyro_bw(&mut self, bw: GyroFilterBandwidth) -> Result<(), Error<CommE, PinE>> {
let reg = self.bw_g.with_bw(bw);
self.iface.write_gyro_register(reg)?;
self.bw_g = reg;
Ok(())
}
pub fn get_gyro_mode(&mut self) -> GyroMode {
GyroMode::Normal
}
pub fn set_gyro_range(&mut self, range: GyroRange) -> Result<(), Error<CommE, PinE>> {
let reg = self.range_g.with_range(range);
self.iface.write_gyro_register(reg)?;
self.range_g = reg;
Ok(())
}
pub fn get_gyro_range(&self) -> GyroRange {
self.range_g.range()
}
pub fn gyroscope_mode(&mut self) -> Result<u8, Error<CommE, PinE>> {
let reg = self.iface.read_gyro_register::<Lpm1G>()?;
Ok(reg.bits())
}
}