use crate::readwrite::{Read, Write};
use crate::errors::Error;
pub(crate) trait ReadWrite: Read + Write {}
impl<U> ReadWrite for U where U: Read + Write {}
pub trait Xfer {
fn recv(&mut self, dest: &mut [u8]) -> Result<(), Error>;
fn send(&mut self, src: &[u8]) -> Result<(), Error>;
fn switch_to_high_speed(&mut self) {}
fn delay_us(&mut self, _delay: u32) {}
}
impl<U> Xfer for U
where
U: ReadWrite,
{
fn recv(&mut self, dest: &mut [u8]) -> Result<(), Error> {
self.read_exact(dest).map_err(|_| Error::ReadError)
}
fn send(&mut self, src: &[u8]) -> Result<(), Error> {
self.write(src).map_err(|_| Error::WriteError)?;
Ok(())
}
}