Struct nrf52833_hal::ieee802154::Radio

source ·
pub struct Radio<'c> { /* private fields */ }
Expand description

IEEE 802.15.4 radio

Implementations§

source§

impl<'c> Radio<'c>

source

pub fn init<L, LSTAT>( radio: RADIO, _clocks: &'c Clocks<ExternalOscillator, L, LSTAT> ) -> Radio<'c>

Initializes the radio for IEEE 802.15.4 operation

source

pub fn set_channel(&mut self, channel: Channel)

Changes the radio channel

source

pub fn set_cca(&mut self, cca: Cca)

Changes the Clear Channel Assessment method

source

pub fn set_sfd(&mut self, sfd: u8)

Changes the Start of Frame Delimiter

source

pub fn set_txpower(&mut self, power: TxPower)

Changes the TX power

source

pub fn energy_detection_scan(&mut self, sample_cycles: u32) -> u8

Sample the received signal power (i.e. the presence of possibly interfering signals) within the bandwidth of the currently used channel for sample_cycles iterations. Note that one iteration has a sample time of 128μs, and that each iteration produces the average RSSI value measured during this sample time.

Returns the maximum measurement recorded during sampling as reported by the hardware (not in dBm!). The result can be used to find a suitable ED threshold for Energy Detection-based CCA mechanisms.

For details, see Section 6.20.12.3 Energy detection (ED) of the PS. RSSI samples are averaged over a measurement time of 8 symbol periods (128 μs).

source

pub fn recv(&mut self, packet: &mut Packet) -> Result<u16, u16>

Receives one radio packet and copies its contents into the given packet buffer

This methods returns the Ok variant if the CRC included the packet was successfully validated by the hardware; otherwise it returns the Err variant. In either case, packet will be updated with the received packet’s data

source

pub fn recv_timeout<I>( &mut self, packet: &mut Packet, timer: &mut Timer<I>, microseconds: u32 ) -> Result<u16, Error>
where I: Instance,

Listens for a packet for no longer than the specified amount of microseconds and copies its contents into the given packet buffer

If no packet is received within the specified time then the Timeout error is returned

If a packet is received within the time span then the packet CRC is checked. If the CRC is incorrect then the Crc error is returned; otherwise the Ok variant is returned. Note that packet will contain the packet in any case, even if the CRC check failed.

Note that the time it takes to switch the radio to RX mode is included in the timeout count. This transition may take up to a hundred of microseconds; see the section 6.20.15.8 in the Product Specification for more details about timing

source

pub fn try_send(&mut self, packet: &mut Packet) -> Result<(), ()>

Tries to send the given packet

This method performs Clear Channel Assessment (CCA) first and sends the packet only if the channel is observed to be clear (no transmission is currently ongoing), otherwise no packet is transmitted and the Err variant is returned

NOTE this method will not modify the packet argument. The mutable reference is used to ensure the packet buffer is allocated in RAM, which is required by the RADIO peripheral

source

pub fn send(&mut self, packet: &mut Packet)

Sends the given packet

This is utility method that consecutively calls the try_send method until it succeeds. Note that this approach is not IEEE spec compliant – there must be delay between failed CCA attempts to be spec compliant

NOTE this method will not modify the packet argument. The mutable reference is used to ensure the packet buffer is allocated in RAM, which is required by the RADIO peripheral

source

pub fn send_no_cca(&mut self, packet: &mut Packet)

Sends the specified packet without first performing CCA

Acknowledgment packets must be sent using this method

NOTE this method will not modify the packet argument. The mutable reference is used to ensure the packet buffer is allocated in RAM, which is required by the RADIO peripheral

Auto Trait Implementations§

§

impl<'c> Freeze for Radio<'c>

§

impl<'c> RefUnwindSafe for Radio<'c>

§

impl<'c> Send for Radio<'c>

§

impl<'c> !Sync for Radio<'c>

§

impl<'c> Unpin for Radio<'c>

§

impl<'c> UnwindSafe for Radio<'c>

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> Az for T

source§

fn az<Dst>(self) -> Dst
where T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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<Src, Dst> LosslessTryInto<Dst> for Src
where Dst: LosslessTryFrom<Src>,

source§

fn lossless_try_into(self) -> Option<Dst>

Performs the conversion.
source§

impl<Src, Dst> LossyInto<Dst> for Src
where Dst: LossyFrom<Src>,

source§

fn lossy_into(self) -> Dst

Performs the conversion.
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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

impl<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.