use embedded_io_async::ErrorType;
pub type MacAddr = [u8; 6];
pub trait RawReceive: ErrorType {
async fn receive(&mut self, buffer: &mut [u8]) -> Result<(usize, MacAddr), Self::Error>;
}
pub trait RawSend: ErrorType {
async fn send(&mut self, addr: MacAddr, data: &[u8]) -> Result<(), Self::Error>;
}
impl<T> RawReceive for &mut T
where
T: RawReceive,
{
async fn receive(&mut self, buffer: &mut [u8]) -> Result<(usize, MacAddr), Self::Error> {
(**self).receive(buffer).await
}
}
impl<T> RawSend for &mut T
where
T: RawSend,
{
async fn send(&mut self, addr: MacAddr, data: &[u8]) -> Result<(), Self::Error> {
(**self).send(addr, data).await
}
}