pub trait Can {
type Frame: Frame;
type Error: Error;
fn transmit(
&mut self,
frame: &Self::Frame
) -> Result<Option<Self::Frame>, Error<Self::Error>>;
fn receive(&mut self) -> Result<Self::Frame, Error<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>, Error<Self::Error>>
fn transmit(
&mut self,
frame: &Self::Frame
) -> Result<Option<Self::Frame>, Error<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.