max170xx 1.0.0

Platform-agnostic Rust driver for the MAX170xx 1-cell/2-cell fuel-gauge systems with ModelGauge for lithium-ion (Li+) batteries. Compatible with MAX17043, MAX17044, MAX17048 MAX17049, MAX17058 and MAX17059.
Documentation
use embedded_hal_mock::eh1::i2c::{Mock as I2cMock, Transaction as I2cTrans};
use max170xx::{Max17043, Max17044, Max17048, Max17049, Max17058, Max17059};

pub const ADDR: u8 = 0b011_0110;

pub struct Register;
impl Register {
    pub const VCELL: u8 = 0x02;
    pub const SOC: u8 = 0x04;
    pub const MODE: u8 = 0x06;
    pub const VERSION: u8 = 0x08;
    pub const CRATE: u8 = 0x16;
    pub const COMMAND: u8 = 0xFE;
}

pub struct Command;
impl Command {
    pub const POR_43_44: u16 = 0x0054;
    pub const POR_X8_X9: u16 = 0x5400;
    pub const QSTRT: u16 = 0x4000;
}

macro_rules! create_destroy {
    ($create:ident, $destroy:ident, $ic:ident) => {
        #[allow(unused)]
        pub fn $create(transactions: &[I2cTrans]) -> $ic<I2cMock> {
            $ic::new(I2cMock::new(transactions))
        }

        #[allow(unused)]
        pub fn $destroy(sensor: $ic<I2cMock>) {
            sensor.destroy().done();
        }
    };
}

create_destroy!(new_43, destroy_43, Max17043);
create_destroy!(new_44, destroy_44, Max17044);
create_destroy!(new_48, destroy_48, Max17048);
create_destroy!(new_49, destroy_49, Max17049);
create_destroy!(new_58, destroy_58, Max17058);
create_destroy!(new_59, destroy_59, Max17059);