kopia lustrzana https://github.com/Aircoookie/WLED
87 wiersze
1.8 KiB
C++
87 wiersze
1.8 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;
|
|
}
|
|
|
|
void NetworkClass::localMAC(uint8_t* MAC)
|
|
{
|
|
#if defined(ARDUINO_ARCH_ESP32) && defined(WLED_USE_ETHERNET)
|
|
// ETH.macAddress(MAC); // Does not work because of missing ETHClass:: in ETH.ccp
|
|
|
|
// Start work around
|
|
String macString = ETH.macAddress();
|
|
char macChar[18];
|
|
char * octetEnd = macChar;
|
|
|
|
strlcpy(macChar, macString.c_str(), 18);
|
|
|
|
for (uint8_t i = 0; i < 6; i++) {
|
|
MAC[i] = (uint8_t)strtol(octetEnd, &octetEnd, 16);
|
|
octetEnd++;
|
|
}
|
|
// End work around
|
|
|
|
for (uint8_t i = 0; i < 6; i++) {
|
|
if (MAC[i] != 0x00) {
|
|
return;
|
|
}
|
|
}
|
|
#endif
|
|
WiFi.macAddress(MAC);
|
|
return;
|
|
}
|
|
|
|
bool NetworkClass::isConnected()
|
|
{
|
|
return (WiFi.localIP()[0] != 0 && WiFi.status() == WL_CONNECTED) || isEthernet();
|
|
}
|
|
|
|
bool NetworkClass::isEthernet()
|
|
{
|
|
#if defined(ARDUINO_ARCH_ESP32) && defined(WLED_USE_ETHERNET)
|
|
return (ETH.localIP()[0] != 0) && ETH.linkUp();
|
|
#endif
|
|
return false;
|
|
}
|
|
|
|
NetworkClass Network; |