embedded_hal::can::nb

Trait Can

source
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§

source

type Frame: Frame

Associated frame type.

source

type Error: Error

Associated error type.

Required Methods§

source

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.
source

fn receive(&mut self) -> Result<Self::Frame, Self::Error>

Returns a received frame if available.

Implementors§