bmx055 0.1.0

This is a platform agnostic Rust driver for the BMX055 small, versatile 9-axis sensor module: 3D accelerometer, 3D gyroscope and 3D magnetometer.
Documentation
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>>,
{
    /// Set gyroscope bandwidth.
    ///
    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(())
    }

    /// Get the gyroscope mode.
    pub fn get_gyro_mode(&mut self) -> GyroMode {
        GyroMode::Normal
    }

    /// Set gyroscope range.
    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(())
    }

    /// Get gyroscope range
    pub fn get_gyro_range(&self) -> GyroRange {
        self.range_g.range()
    }

    /// Get gyroscope mode
    pub fn gyroscope_mode(&mut self) -> Result<u8, Error<CommE, PinE>> {
        let reg = self.iface.read_gyro_register::<Lpm1G>()?;
        Ok(reg.bits())
    }
}