1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
use crate::frame::FrameError;
use crate::interface::can::CanError;
#[cfg(feature = "std")]
use crate::interface::serial::SerialError;
use crate::interface::usart::UsartError;
use crate::packet::Packet;
use crate::packet::PacketBuilderError;

pub mod can;
#[cfg(feature = "std")]
pub mod serial;
pub mod usart;

#[derive(Debug)]
pub enum InterfaceError {
    CanError(CanError),
    UsartError(UsartError),
    #[cfg(feature = "std")]
    SerialError(SerialError),
    BuilderError(PacketBuilderError),
    FrameError(FrameError),
    NoPacketReceived,
}

pub trait Interface {
    fn try_get_packet(&mut self) -> Result<Packet, InterfaceError>;
    fn try_send_packet(&mut self, packet: &Packet) -> Result<(), InterfaceError>;
}