pub mod blocking;
#[cfg(feature = "eh02")]
pub mod eh02;
use crate::register::Register;
pub trait Interface {
type Error;
fn read(&mut self, reg: Register) -> Result<u8, Self::Error>;
fn read_many<'b>(&mut self, reg: Register, buf: &'b mut [u8]) -> Result<&'b [u8], Self::Error>;
fn write(&mut self, reg: Register, val: u8) -> Result<(), Self::Error>;
fn write_many(&mut self, reg: Register, bytes: &[u8]) -> Result<(), Self::Error>;
fn rmw<F>(&mut self, reg: Register, f: F) -> Result<(), Self::Error>
where
F: FnOnce(u8) -> u8,
{
let byte = self.read(reg)?;
self.write(reg, f(byte))?;
Ok(())
}
}