embassy-net

Crates

git

Versions

default

Flavors

Struct embassy_net::Stack

source ·
pub struct Stack<'d> { /* private fields */ }
Expand description

Network stack handle

Use this to create sockets. It’s Copy, so you can pass it by value instead of by reference.

Implementations§

source§

impl<'d> Stack<'d>

source

pub fn hardware_address(&self) -> HardwareAddress

Get the hardware address of the network interface.

Get whether the link is up.

source

pub fn is_config_up(&self) -> bool

Get whether the network stack has a valid IP configuration. This is true if the network stack has a static IP configuration or if DHCP has completed

Wait for the network device to obtain a link signal.

Wait for the network device to lose link signal.

source

pub async fn wait_config_up(&self)

Wait for the network stack to obtain a valid IP configuration.

§Notes:
  • Ensure Runner::run has been started before using this function.

  • This function may never return (e.g. if no configuration is obtained through DHCP). The caller is supposed to handle a timeout for this case.

§Example
let config = embassy_net::Config::dhcpv4(Default::default());
// Init network stack
// NOTE: DHCP and DNS need one socket slot if enabled. This is why we're
// provisioning space for 3 sockets here: one for DHCP, one for DNS, and one for your code (e.g. TCP).
// If you use more sockets you must increase this. If you don't enable DHCP or DNS you can decrease it.
static RESOURCES: StaticCell<embassy_net::StackResources<3>> = StaticCell::new();
let (stack, runner) = embassy_net::new(
   driver,
   config,
   RESOURCES.init(embassy_net::StackResources::new()),
   seed
);
// Launch network task that runs `runner.run().await`
spawner.spawn(net_task(runner)).unwrap();
// Wait for DHCP config
stack.wait_config_up().await;
// use the network stack
// ...
source

pub async fn wait_config_down(&self)

Wait for the network stack to lose a valid IP configuration.

source

pub fn config_v4(&self) -> Option<StaticConfigV4>

Get the current IPv4 configuration.

If using DHCP, this will be None if DHCP hasn’t been able to acquire an IP address, or Some if it has.

source

pub fn config_v6(&self) -> Option<StaticConfigV6>

Get the current IPv6 configuration.

source

pub fn set_config_v4(&self, config: ConfigV4)

Set the IPv4 configuration.

source

pub fn set_config_v6(&self, config: ConfigV6)

Set the IPv6 configuration.

source

pub async fn dns_query( &self, name: &str, qtype: DnsQueryType, ) -> Result<Vec<IpAddress, { smoltcp::config::DNS_MAX_RESULT_COUNT }>, Error>

Make a query for a given name and return the corresponding IP addresses.

source§

impl<'d> Stack<'d>

source

pub fn join_multicast_group( &self, addr: impl Into<IpAddress>, ) -> Result<(), MulticastError>

Join a multicast group.

source

pub fn leave_multicast_group( &self, addr: impl Into<IpAddress>, ) -> Result<(), MulticastError>

Leave a multicast group.

source

pub fn has_multicast_group(&self, addr: impl Into<IpAddress>) -> bool

Get whether the network stack has joined the given multicast group.

Trait Implementations§

source§

impl<'d> Clone for Stack<'d>

source§

fn clone(&self) -> Stack<'d>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<'d> Copy for Stack<'d>

Auto Trait Implementations§

§

impl<'d> Freeze for Stack<'d>

§

impl<'d> !RefUnwindSafe for Stack<'d>

§

impl<'d> !Send for Stack<'d>

§

impl<'d> !Sync for Stack<'d>

§

impl<'d> Unpin for Stack<'d>

§

impl<'d> !UnwindSafe for Stack<'d>

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> CloneToUninit for T
where T: Clone,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. 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.