diff --git a/libraries/Network/src/NetworkManager.cpp b/libraries/Network/src/NetworkManager.cpp index 12276b2e242..a19cf52dd87 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->connected() && (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();