riot_wrappers::socket_embedded_nal

Struct Stack

Source
pub struct Stack<const UDPCOUNT: usize> {
    udp_sockets: Vec<sock_udp_t, UDPCOUNT>,
}
Available on riot_module_sock_udp and crate feature with_embedded_nal only.
Expand description

The operating system’s network stack, used to get an implementation of embedded_nal::UdpClientStack.

Using this is not trivial, as RIOT needs its sockets pinned to memory for their lifetime. Without a heap allocator, this is achieved by allocating all the required UDP sockets in a stack object. To ensure that it is not moved, sockets on it can only be created in (and live only for the duration of) a the run callback, which gives the actual implementation of UdpClientStack.

The number of UDP sockets allocated is configurable using the UDPCOUNT const generic.

Fields§

§udp_sockets: Vec<sock_udp_t, UDPCOUNT>

Implementations§

Source§

impl<const UDPCOUNT: usize> Stack<UDPCOUNT>

Source

pub fn new() -> Self

Source

pub fn run(&mut self, runner: impl for<'a> FnOnce(StackAccessor<'a, UDPCOUNT>))

Trait Implementations§

Source§

impl<const UDPCOUNT: usize> Debug for Stack<UDPCOUNT>

Source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<const UDPCOUNT: usize> Freeze for Stack<UDPCOUNT>

§

impl<const UDPCOUNT: usize> RefUnwindSafe for Stack<UDPCOUNT>

§

impl<const UDPCOUNT: usize> !Send for Stack<UDPCOUNT>

§

impl<const UDPCOUNT: usize> !Sync for Stack<UDPCOUNT>

§

impl<const UDPCOUNT: usize> Unpin for Stack<UDPCOUNT>

§

impl<const UDPCOUNT: usize> UnwindSafe for Stack<UDPCOUNT>

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

Source§

fn into_switch<ActiveLevel>(self) -> Switch<T, ActiveLevel>

Consumes the IoPin returning a Switch of the appropriate ActiveLevel. Read more
Source§

fn into_active_low_switch(self) -> Switch<Self, ActiveLow>
where Self: Sized,

Consumes the IoPin returning a Switch<IoPin, ActiveLow>. Read more
Source§

fn into_active_high_switch(self) -> Switch<Self, ActiveHigh>
where Self: Sized,

Consumes the IoPin returning a Switch<IoPin, ActiveHigh>. Read more
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.

Layout§

Note: Unable to compute type layout, possibly due to this type having generic parameters. Layout can only be computed for concrete, fully-instantiated types.