Struct Stack
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§
§impl<'d> Stack<'d>
impl<'d> Stack<'d>
pub fn hardware_address(&self) -> HardwareAddress
pub fn hardware_address(&self) -> HardwareAddress
Get the hardware address of the network interface.
pub fn is_link_up(&self) -> bool
pub fn is_link_up(&self) -> bool
Check whether the link is up.
pub fn is_config_up(&self) -> bool
pub fn is_config_up(&self) -> bool
Check 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
pub async fn wait_link_up(&self)
pub async fn wait_link_up(&self)
Wait for the network device to obtain a link signal.
pub async fn wait_link_down(&self)
pub async fn wait_link_down(&self)
Wait for the network device to lose link signal.
pub async fn wait_config_up(&self)
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
// ...
pub async fn wait_config_down(&self)
pub async fn wait_config_down(&self)
Wait for the network stack to lose a valid IP configuration.
pub fn config_v4(&self) -> Option<StaticConfigV4>
Available on crate feature proto-ipv4
only.
pub fn config_v4(&self) -> Option<StaticConfigV4>
proto-ipv4
only.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.
pub fn config_v6(&self) -> Option<StaticConfigV6>
Available on crate feature proto-ipv6
only.
pub fn config_v6(&self) -> Option<StaticConfigV6>
proto-ipv6
only.Get the current IPv6 configuration.
pub fn set_config_v4(&self, config: ConfigV4)
Available on crate feature proto-ipv4
only.
pub fn set_config_v4(&self, config: ConfigV4)
proto-ipv4
only.Set the IPv4 configuration.
pub fn set_config_v6(&self, config: ConfigV6)
Available on crate feature proto-ipv6
only.
pub fn set_config_v6(&self, config: ConfigV6)
proto-ipv6
only.Set the IPv6 configuration.