From e6b35e33d23715a0cd5265979ded3aca155076ea Mon Sep 17 00:00:00 2001 From: me-no-dev Date: Fri, 7 Nov 2025 12:54:39 +0200 Subject: [PATCH 1/2] feat(net): Add method Network.isOnline() --- libraries/Network/src/NetworkManager.cpp | 12 ++++++++++++ libraries/Network/src/NetworkManager.h | 3 +++ 2 files changed, 15 insertions(+) diff --git a/libraries/Network/src/NetworkManager.cpp b/libraries/Network/src/NetworkManager.cpp index 12276b2e242..67e966567fe 100644 --- a/libraries/Network/src/NetworkManager.cpp +++ b/libraries/Network/src/NetworkManager.cpp @@ -185,6 +185,18 @@ NetworkInterface *NetworkManager::getDefaultInterface() { return NULL; } +bool NetworkManager::isOnline() { + for (int i = 0; i < ESP_NETIF_ID_MAX; ++i) { + if (i != ESP_NETIF_ID_AP) { + NetworkInterface *iface = getNetifByID((Network_Interface_ID)i); + if (iface != NULL && (iface->hasIp() || iface->hasGlobalIPv6())) { + return true; + } + } + } + return false; +} + size_t NetworkManager::printTo(Print &out) const { size_t bytes = 0; diff --git a/libraries/Network/src/NetworkManager.h b/libraries/Network/src/NetworkManager.h index 6b9d5e16cfc..063de721792 100644 --- a/libraries/Network/src/NetworkManager.h +++ b/libraries/Network/src/NetworkManager.h @@ -22,6 +22,9 @@ class NetworkManager : public NetworkEvents, public Printable { bool setDefaultInterface(NetworkInterface &ifc); NetworkInterface *getDefaultInterface(); + // Returns true if any interface (except AP) has assigned IPv4 or global IPv6 + bool isOnline(); + size_t printTo(Print &out) const; static const char *getHostname(); From 301ee9cf7e29c8b881c0178a2fd4b3bdfa959684 Mon Sep 17 00:00:00 2001 From: me-no-dev Date: Fri, 7 Nov 2025 13:08:24 +0200 Subject: [PATCH 2/2] fix(net): Fix typo --- libraries/Network/src/NetworkManager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/Network/src/NetworkManager.cpp b/libraries/Network/src/NetworkManager.cpp index 67e966567fe..c4ff6d2ce23 100644 --- a/libraries/Network/src/NetworkManager.cpp +++ b/libraries/Network/src/NetworkManager.cpp @@ -189,7 +189,7 @@ bool NetworkManager::isOnline() { for (int i = 0; i < ESP_NETIF_ID_MAX; ++i) { if (i != ESP_NETIF_ID_AP) { NetworkInterface *iface = getNetifByID((Network_Interface_ID)i); - if (iface != NULL && (iface->hasIp() || iface->hasGlobalIPv6())) { + if (iface != NULL && (iface->hasIP() || iface->hasGlobalIPv6())) { return true; } }