Struct TxMode

Source
pub struct TxMode<D: Device> { /* private fields */ }
Expand description

Represents TX Mode and the associated TX Settling and Standby-II states

§Timing

The datasheet states the follwing:

It is important to never keep the nRF24L01 in TX mode for more than 4ms at a time.

No effects have been observed when exceeding this limit. The warranty could get void.

Implementations§

Source§

impl<D: Device> TxMode<D>

Source

pub async fn standby(self) -> Result<StandbyMode<D>, D::Error>

Disable CE so that you can switch into RX mode.

Source

pub async fn is_empty(&mut self) -> Result<bool, D::Error>

Is TX FIFO empty?

Source

pub async fn is_full(&mut self) -> Result<bool, D::Error>

Is TX FIFO full?

Source

pub async fn can_send(&mut self) -> Result<bool, D::Error>

Does the TX FIFO have space?

Source

pub async fn send(&mut self, packet: &[u8]) -> Result<Status, D::Error>

Send asynchronously

Source

pub async fn poll_send(&mut self) -> Result<bool, D::Error>

Poll completion of one or multiple send operations and check whether transmission was successful.

This function behaves like wait_empty(), except that it returns whether sending was successful and that it provides an asynchronous interface.

Automatic retransmission (set_auto_retransmit) and acks (set_auto_ack) have to be enabled if you actually want to know if transmission was successful. Else the nrf24 just transmits the packet once and assumes it was received.

Source

pub async fn wait_empty(&mut self) -> Result<(), D::Error>

Wait until TX FIFO is empty

If any packet cannot be delivered and the maximum amount of retries is reached, the TX FIFO is flushed and all other packets in the FIFO are lost.

Source

pub async fn observe(&mut self) -> Result<ObserveTx, D::Error>

Read the OBSERVE_TX register

Trait Implementations§

Source§

impl<D: Device> Configuration for TxMode<D>

Source§

type Inner = D

Underlying trait Device
Source§

fn device(&mut self) -> &mut Self::Inner

Get a mutable reference to the underlying device
Source§

async fn flush_rx( &mut self, ) -> Result<(), <<Self as Configuration>::Inner as Device>::Error>

Flush RX queue Read more
Source§

async fn flush_tx( &mut self, ) -> Result<(), <<Self as Configuration>::Inner as Device>::Error>

Flush TX queue, discarding any unsent packets
Source§

async fn get_frequency( &mut self, ) -> Result<u8, <<Self as Configuration>::Inner as Device>::Error>

Get frequency offset (channel)
Source§

async fn set_frequency( &mut self, freq_offset: u8, ) -> Result<(), <<Self as Configuration>::Inner as Device>::Error>

Set frequency offset (channel)
Source§

async fn set_rf( &mut self, rate: &DataRate, power: u8, ) -> Result<(), <<Self as Configuration>::Inner as Device>::Error>

power: 0: -18 dBm, 3: 0 dBm
Source§

async fn set_crc( &mut self, mode: CrcMode, ) -> Result<(), <<Self as Configuration>::Inner as Device>::Error>

Set CRC mode
Source§

async fn set_interrupt_mask( &mut self, data_ready_rx: bool, data_sent_tx: bool, max_retransmits_tx: bool, ) -> Result<(), <<Self as Configuration>::Inner as Device>::Error>

Sets the interrupt mask Read more
Source§

async fn set_pipes_rx_enable( &mut self, bools: &[bool; 6], ) -> Result<(), <<Self as Configuration>::Inner as Device>::Error>

Configure which RX pipes to enable
Source§

async fn set_rx_addr( &mut self, pipe_no: usize, addr: &[u8], ) -> Result<(), <<Self as Configuration>::Inner as Device>::Error>

Set address addr of pipe number pipe_no
Source§

async fn set_tx_addr( &mut self, addr: &[u8], ) -> Result<(), <<Self as Configuration>::Inner as Device>::Error>

Set address of the TX pipe
Source§

async fn set_auto_retransmit( &mut self, delay: u8, count: u8, ) -> Result<(), <<Self as Configuration>::Inner as Device>::Error>

Configure auto-retransmit Read more
Source§

async fn get_auto_ack( &mut self, ) -> Result<[bool; 6], <<Self as Configuration>::Inner as Device>::Error>

Obtain auto-acknowledgment configuration for all pipes
Source§

async fn set_auto_ack( &mut self, bools: &[bool; 6], ) -> Result<(), <<Self as Configuration>::Inner as Device>::Error>

Configure auto-acknowledgment for all RX pipes Read more
Source§

async fn get_address_width( &mut self, ) -> Result<u8, <<Self as Configuration>::Inner as Device>::Error>

Get address width configuration
Source§

async fn set_address_width( &mut self, width: u8, ) -> Result<(), <<Self as Configuration>::Inner as Device>::Error>

Set address width configuration
Source§

async fn get_interrupts( &mut self, ) -> Result<(bool, bool, bool), <<Self as Configuration>::Inner as Device>::Error>

Obtain interrupt pending status as (RX_DR, TX_DR, MAX_RT) where RX_DR indicates new data in the RX FIFO, TX_DR indicates that a packet has been sent, and MAX_RT indicates maximum retransmissions without auto-ack.
Source§

async fn clear_interrupts( &mut self, ) -> Result<(), <<Self as Configuration>::Inner as Device>::Error>

Clear all interrupts
Source§

async fn set_pipes_rx_lengths( &mut self, lengths: &[Option<u8>; 6], ) -> Result<(), <<Self as Configuration>::Inner as Device>::Error>

bools Read more
Source§

impl<D: Device> Debug for TxMode<D>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<D> Freeze for TxMode<D>
where D: Freeze,

§

impl<D> RefUnwindSafe for TxMode<D>
where D: RefUnwindSafe,

§

impl<D> Send for TxMode<D>
where D: Send,

§

impl<D> Sync for TxMode<D>
where D: Sync,

§

impl<D> Unpin for TxMode<D>
where D: Unpin,

§

impl<D> UnwindSafe for TxMode<D>
where D: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.