diff --git a/ESPAsyncE131.cpp b/ESPAsyncE131.cpp index 6927d0d..4e3f19e 100644 --- a/ESPAsyncE131.cpp +++ b/ESPAsyncE131.cpp @@ -100,16 +100,21 @@ bool ESPAsyncE131::initMulticast(uint16_t universe, uint8_t n) { if (udp.listenMulticast(address, E131_ListenPort)) { ip4_addr_t ifaddr; ip4_addr_t multicast_addr; - - ifaddr.addr = static_cast(WiFi.localIP()); - for (uint8_t i = 1; i < n; i++) { + + if(ETH.linkUp()) + ifaddr.addr = static_cast(ETH.localIP()); + else if(WiFi.isConnected()) + ifaddr.addr = static_cast(WiFi.localIP()); + else + ifaddr.addr = static_cast(IPAddress(0,0,0,0)); + for (uint8_t i = 1; i < n; i++) { multicast_addr.addr = static_cast(IPAddress(239, 255, (((universe + i) >> 8) & 0xff), (((universe + i) >> 0) & 0xff))); igmp_joingroup(&ifaddr, &multicast_addr); } - udp.onPacket(std::bind(&ESPAsyncE131::parsePacket, this, + udp.onPacket(std::bind(&ESPAsyncE131::parsePacket, this, std::placeholders::_1)); success = true; @@ -160,7 +165,7 @@ void ESPAsyncE131::parsePacket(AsyncUDPPacket _packet) break; } - // Are we looknig for a new source? + // Are we looking for a new source? if((0 != LastAcceptedSource.PdusToIgnore) && (sbuff->priority < LastAcceptedSource.priority)) { diff --git a/ESPAsyncE131.h b/ESPAsyncE131.h index ae3af04..3bd6080 100644 --- a/ESPAsyncE131.h +++ b/ESPAsyncE131.h @@ -21,14 +21,15 @@ #define ESPASYNCE131_H_ #ifdef ESP32 -#include -#include -#elif defined (ESP8266) -#include -#include -#include + #include + #include + #include +#elif defined(ESP8266) + #include + #include + #include #else -#error Platform not supported + #error Platform not supported #endif #include