summaryrefslogtreecommitdiff
path: root/embassy-net
diff options
context:
space:
mode:
authorDario Nieuwenhuis <dirbaio@dirbaio.net>2021-04-13 17:14:23 +0200
committerDario Nieuwenhuis <dirbaio@dirbaio.net>2021-04-13 17:14:23 +0200
commit4eecb3cfa982abfd4fe97108f14d15236addb9b2 (patch)
treedbb09764cdb2e5965efc8a24238ee72b18ce0df5 /embassy-net
parent4f528d8fae0c57fad5c5a57f5a61fd0fc4435044 (diff)
downloadembassy-4eecb3cfa982abfd4fe97108f14d15236addb9b2.zip
add is_link_up, is_config_up
Diffstat (limited to 'embassy-net')
-rw-r--r--embassy-net/src/lib.rs2
-rw-r--r--embassy-net/src/stack.rs13
2 files changed, 14 insertions, 1 deletions
diff --git a/embassy-net/src/lib.rs b/embassy-net/src/lib.rs
index efa5f3cb..13f14b83 100644
--- a/embassy-net/src/lib.rs
+++ b/embassy-net/src/lib.rs
@@ -18,7 +18,7 @@ pub use config::{Config, Configurator, Event as ConfigEvent, StaticConfigurator}
pub use device::{Device, LinkState};
pub use packet_pool::{Packet, PacketBox, PacketBoxExt, PacketBuf};
-pub use stack::{init, is_init, run};
+pub use stack::{init, is_config_up, is_init, is_link_up, run};
#[cfg(feature = "tcp")]
mod tcp_socket;
diff --git a/embassy-net/src/stack.rs b/embassy-net/src/stack.rs
index 83cd7170..e436beb1 100644
--- a/embassy-net/src/stack.rs
+++ b/embassy-net/src/stack.rs
@@ -46,6 +46,7 @@ pub(crate) struct Stack {
iface: Interface,
pub sockets: SocketSet,
link_up: bool,
+ config_up: bool,
next_local_port: u16,
configurator: &'static mut dyn Configurator,
waker: WakerRegistration,
@@ -102,6 +103,8 @@ impl Stack {
for (i, s) in config.dns_servers.iter().enumerate() {
debug!(" DNS server {}: {}", i, s);
}
+
+ self.config_up = true;
}
Event::Deconfigured => {
debug!("Lost IP configuration");
@@ -110,6 +113,7 @@ impl Stack {
if medium == Medium::Ethernet {
self.iface.routes_mut().remove_default_ipv4_route();
}
+ self.config_up = false;
}
}
}
@@ -209,6 +213,7 @@ pub fn init(device: &'static mut dyn Device, configurator: &'static mut dyn Conf
iface,
sockets,
link_up: false,
+ config_up: false,
configurator,
next_local_port: local_port,
waker: WakerRegistration::new(),
@@ -221,6 +226,14 @@ pub fn is_init() -> bool {
STACK.borrow().borrow().is_some()
}
+pub fn is_link_up() -> bool {
+ STACK.borrow().borrow().as_ref().unwrap().link_up
+}
+
+pub fn is_config_up() -> bool {
+ STACK.borrow().borrow().as_ref().unwrap().config_up
+}
+
pub async fn run() {
futures::future::poll_fn(|cx| {
Stack::with(|stack| stack.poll(cx));