pub trait Can {
type Frame: Frame;
type Error: Error;
fn transmit(
&mut self,
frame: &Self::Frame
) -> Result<Option<Self::Frame>, Self::Error>;
fn receive(&mut self) -> Result<Self::Frame, Self::Error>;
}
Expand description
A CAN interface that is able to transmit and receive frames.
Required Associated Types
Required Methods
sourcefn transmit(
&mut self,
frame: &Self::Frame
) -> Result<Option<Self::Frame>, Self::Error>
fn transmit(
&mut self,
frame: &Self::Frame
) -> Result<Option<Self::Frame>, Self::Error>
Puts a frame in the transmit buffer to be sent on the bus.
If the transmit buffer is full, this function will try to replace a pending
lower priority frame and return the frame that was replaced.
Returns Err(WouldBlock)
if the transmit buffer is full and no frame can be
replaced.
Notes for implementers
- Frames of equal identifier shall be transmited in FIFO fashion when more than one transmit buffer is available.
- When replacing pending frames make sure the frame is not in the process of being send to the bus.