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},
    AccelBandwidth, AccelMode, AccelRange, Bmx055, Error,
};

impl<DI, CommE, PinE, MODE> Bmx055<DI, MODE>
where
    DI: ReadData<Error = Error<CommE, PinE>> + WriteData<Error = Error<CommE, PinE>>,
{
    /// Set accelerometer bandwidth.
    ///
    pub fn set_accel_bw(&mut self, bw: AccelBandwidth) -> Result<(), Error<CommE, PinE>> {
        let reg = self.pmu_bw_a.with_bw(bw);
        self.iface.write_accel_register(reg)?;
        self.pmu_bw_a = reg;

        Ok(())
    }

    /// Get the accelerometer mode.
    pub fn get_accel_mode(&mut self) -> AccelMode {
        AccelMode::Normal
    }

    /// Set accelerometer g-range.
    ///
    /// This changes the selection of accelerometer g-range.
    /// `AccelRange::G2` for example can return values between -2g and +2g
    /// where g is the gravity of the earth (~9.82 m/s²).
    pub fn set_accel_range(&mut self, range: AccelRange) -> Result<(), Error<CommE, PinE>> {
        let reg = self.pmu_range_a.with_range(range);
        self.iface.write_accel_register(reg)?;
        self.pmu_range_a = reg;
        Ok(())
    }

    /// Get accelerometer g-range
    pub fn get_accel_range(&self) -> AccelRange {
        self.pmu_range_a.range()
    }
}