pub struct CanTx<'d> { /* private fields */ }
Expand description
CAN driver, transmit half.
Implementations§
source§impl<'d> CanTx<'d>
impl<'d> CanTx<'d>
sourcepub async fn write(&mut self, frame: &Frame) -> TransmitStatus
pub async fn write(&mut self, frame: &Frame) -> TransmitStatus
Queues the message to be sent.
If the TX queue is full, this will wait until there is space, therefore exerting backpressure.
sourcepub fn try_write(
&mut self,
frame: &Frame,
) -> Result<TransmitStatus, TryWriteError>
pub fn try_write( &mut self, frame: &Frame, ) -> Result<TransmitStatus, TryWriteError>
Attempts to transmit a frame without blocking.
Returns [Err(TryWriteError::Full)] if the frame can not be queued for transmission now.
If FIFO scheduling is enabled, any empty mailbox will be used.
Otherwise, the frame will only be accepted if there is no frame with the same priority already queued. This is done to work around a hardware limitation that could lead to out-of-order delivery of frames with the same priority.
sourcepub async fn flush_any(&self)
pub async fn flush_any(&self)
Waits until any of the transmit mailboxes become empty
Note that Self::try_write()
may fail with TryWriteError::Full
,
even after the future returned by this function completes.
This will happen if FIFO scheduling of outgoing frames is not enabled,
and a frame with equal priority is already queued for transmission.
sourcepub fn abort(&mut self, mailbox: Mailbox) -> bool
pub fn abort(&mut self, mailbox: Mailbox) -> bool
Attempts to abort the sending of a frame that is pending in a mailbox.
If there is no frame in the provided mailbox, or its transmission succeeds before it can be
aborted, this function has no effect and returns false
.
If there is a frame in the provided mailbox, and it is canceled successfully, this function
returns true
.
sourcepub fn buffered<const TX_BUF_SIZE: usize>(
self,
txb: &'static mut TxBuf<TX_BUF_SIZE>,
) -> BufferedCanTx<'d, TX_BUF_SIZE>
pub fn buffered<const TX_BUF_SIZE: usize>( self, txb: &'static mut TxBuf<TX_BUF_SIZE>, ) -> BufferedCanTx<'d, TX_BUF_SIZE>
Return a buffered instance of driver. User must supply Buffers