pub trait Can {
type Frame: Frame;
type Error: Error;
// Required methods
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.
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".