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
#![deny(unsafe_code)]
#![no_std]

use core::marker::PhantomData;
mod accel_settings;
mod device_impl;
mod gyro_settings;
pub mod interface;
mod mag_compensation;
mod mag_settings;
mod types;

use register_address::{
    BgwSpi3WdtG, BwG, IntEn0G, IntEn1A, OpmOdrStM, PmuRangeA, PwrCntl1M, RangeG,
};
use types::TrimData;

pub use crate::types::{
    mode, AccelBandwidth, AccelMode, AccelRange, Acceleration, AccelerometerId, Error,
    GyroFilterBandwidth, GyroMode, GyroRange, GyroscopeId, ModeChangeError, Status,
};
mod register_address;
use crate::register_address::PmuBwA;

/// BMX055 device driver
#[allow(dead_code)]
#[derive(Debug)]
pub struct Bmx055<DI, MODE> {
    /// Digital interface: I2C or SPI
    iface: DI,
    int_en_1_a: IntEn1A,
    pmu_range_a: PmuRangeA,
    pmu_bw_a: PmuBwA,
    int_en_0_g: IntEn0G,
    bgw_spi3_wdt_g: BgwSpi3WdtG,
    bw_g: BwG,
    range_g: RangeG,
    pwr_cntl_1_m: PwrCntl1M,
    opm_odr_st_m: OpmOdrStM,
    mag_trim_data: Option<TrimData>,
    _mag_mode: PhantomData<MODE>,
}

mod private {
    use crate::interface;
    pub trait Sealed {}

    impl<SPI, CSXL, CSGYR, CSMAG> Sealed for interface::SpiInterface<SPI, CSXL, CSGYR, CSMAG> {}
    impl<I2C> Sealed for interface::I2cInterface<I2C> {}
}