* Avoid redundant localIP calls, each call takes 0.700 us on ESP32 240Mhz * Fall through to check Wifi local ip if not connected to ETH * Changed local var from ipAddress to localIP to better reflect content
63 lines
1.3 KiB
C++
63 lines
1.3 KiB
C++
#include "Network.h"
|
|
|
|
IPAddress NetworkClass::localIP()
|
|
{
|
|
IPAddress localIP;
|
|
#if defined(ARDUINO_ARCH_ESP32) && defined(WLED_USE_ETHERNET)
|
|
localIP = ETH.localIP();
|
|
if (localIP[0] != 0) {
|
|
return localIP;
|
|
}
|
|
#endif
|
|
localIP = WiFi.localIP();
|
|
if (localIP[0] != 0) {
|
|
return localIP;
|
|
}
|
|
|
|
return INADDR_NONE;
|
|
}
|
|
|
|
IPAddress NetworkClass::subnetMask()
|
|
{
|
|
#if defined(ARDUINO_ARCH_ESP32) && defined(WLED_USE_ETHERNET)
|
|
if (ETH.localIP()[0] != 0) {
|
|
return ETH.subnetMask();
|
|
}
|
|
#endif
|
|
if (WiFi.localIP()[0] != 0) {
|
|
return WiFi.subnetMask();
|
|
}
|
|
return IPAddress(255, 255, 255, 0);
|
|
}
|
|
|
|
IPAddress NetworkClass::gatewayIP()
|
|
{
|
|
#if defined(ARDUINO_ARCH_ESP32) && defined(WLED_USE_ETHERNET)
|
|
if (ETH.localIP()[0] != 0) {
|
|
return ETH.gatewayIP();
|
|
}
|
|
#endif
|
|
if (WiFi.localIP()[0] != 0) {
|
|
return WiFi.gatewayIP();
|
|
}
|
|
return INADDR_NONE;
|
|
}
|
|
|
|
bool NetworkClass::isConnected()
|
|
{
|
|
#if defined(ARDUINO_ARCH_ESP32) && defined(WLED_USE_ETHERNET)
|
|
return (WiFi.localIP()[0] != 0 && WiFi.status() == WL_CONNECTED) || ETH.localIP()[0] != 0;
|
|
#else
|
|
return (WiFi.localIP()[0] != 0 && WiFi.status() == WL_CONNECTED);
|
|
#endif
|
|
}
|
|
|
|
bool NetworkClass::isEthernet()
|
|
{
|
|
#if defined(ARDUINO_ARCH_ESP32) && defined(WLED_USE_ETHERNET)
|
|
return (ETH.localIP()[0] != 0);
|
|
#endif
|
|
return false;
|
|
}
|
|
|
|
NetworkClass Network; |