diff --git a/wled00/net_debug.cpp b/wled00/net_debug.cpp index 715e99bd..6bcbe1e2 100644 --- a/wled00/net_debug.cpp +++ b/wled00/net_debug.cpp @@ -3,26 +3,7 @@ #ifdef WLED_DEBUG_HOST size_t NetworkDebugPrinter::write(uint8_t c) { - begin(); - if (!udpConnected) return 0; - return debugUdp.write(c); -} - -size_t NetworkDebugPrinter::write(const uint8_t *buf, size_t size) { - if (buf == nullptr) return 0; - begin(); - if (!udpConnected) return 0; - return debugUdp.write(buf, size); -} - -void NetworkDebugPrinter::begin() { - if (udpConnected) return; - if (!WLED_CONNECTED) { - debugUdp.stop(); - debugPrintHostIP = INADDR_NONE; - udpConnected = false; - return; - } + if (!WLED_CONNECTED) return 0; if (!debugPrintHostIP && !debugPrintHostIP.fromString(netDebugPrintHost)) { #ifdef ESP8266 @@ -36,13 +17,31 @@ void NetworkDebugPrinter::begin() { #endif } - udpConnected = debugUdp.beginPacket(debugPrintHostIP, netDebugPrintPort); + debugUdp.beginPacket(debugPrintHostIP, netDebugPrintPort); + debugUdp.write(c); + debugUdp.endPacket(); + return 1; } -void NetworkDebugPrinter::flush() { - if (udpConnected) { - if (!debugUdp.endPacket()) udpConnected = false; // we were not able to send packet +size_t NetworkDebugPrinter::write(const uint8_t *buf, size_t size) { + if (!WLED_CONNECTED || buf == nullptr) return 0; + + if (!debugPrintHostIP && !debugPrintHostIP.fromString(netDebugPrintHost)) { + #ifdef ESP8266 + WiFi.hostByName(netDebugPrintHost, debugPrintHostIP, 750); + #else + #ifdef WLED_USE_ETHERNET + ETH.hostByName(netDebugPrintHost, debugPrintHostIP); + #else + WiFi.hostByName(netDebugPrintHost, debugPrintHostIP); + #endif + #endif } + + debugUdp.beginPacket(debugPrintHostIP, netDebugPrintPort); + size = debugUdp.write(buf, size); + debugUdp.endPacket(); + return size; } NetworkDebugPrinter NetDebug; diff --git a/wled00/net_debug.h b/wled00/net_debug.h index bd39fd15..abe863fd 100644 --- a/wled00/net_debug.h +++ b/wled00/net_debug.h @@ -7,14 +7,10 @@ class NetworkDebugPrinter : public Print { private: WiFiUDP debugUdp; // needs to be here otherwise UDP messages get truncated upon destruction - IPAddress debugPrintHostIP = INADDR_NONE; - bool udpConnected = false; + IPAddress debugPrintHostIP; public: - virtual ~NetworkDebugPrinter() { flush(); } virtual size_t write(uint8_t c); virtual size_t write(const uint8_t *buf, size_t s); - void begin(); - void flush(); }; extern NetworkDebugPrinter NetDebug; diff --git a/wled00/wled.cpp b/wled00/wled.cpp index bfe60971..a811176b 100644 --- a/wled00/wled.cpp +++ b/wled00/wled.cpp @@ -218,7 +218,6 @@ void WLED::loop() debugTime = millis(); } loops++; - DEBUG_FLUSH(); #endif // WLED_DEBUG toki.resetTick(); @@ -447,8 +446,6 @@ void WLED::setup() #if defined(ARDUINO_ARCH_ESP32) && defined(WLED_DISABLE_BROWNOUT_DET) WRITE_PERI_REG(RTC_CNTL_BROWN_OUT_REG, 1); //enable brownout detector #endif - - DEBUG_FLUSH(); } void WLED::beginStrip() diff --git a/wled00/wled.h b/wled00/wled.h index 320e2208..ab7f5134 100644 --- a/wled00/wled.h +++ b/wled00/wled.h @@ -8,7 +8,7 @@ */ // version code in format yymmddb (b = daily build) -#define VERSION 2211110 +#define VERSION 2211111 //uncomment this if you have a "my_config.h" file you'd like to use //#define WLED_USE_MY_CONFIG @@ -695,24 +695,20 @@ WLED_GLOBAL volatile uint8_t jsonBufferLock _INIT(0); #define DEBUG_PRINT(x) DEBUGOUT.print(x) #define DEBUG_PRINTLN(x) DEBUGOUT.println(x) #define DEBUG_PRINTF(x...) DEBUGOUT.printf(x) - #define DEBUG_FLUSH() DEBUGOUT.flush() #else #define DEBUG_PRINT(x) #define DEBUG_PRINTLN(x) #define DEBUG_PRINTF(x...) - #define DEBUG_FLUSH() #endif #ifdef WLED_DEBUG_FS #define DEBUGFS_PRINT(x) DEBUGOUT.print(x) #define DEBUGFS_PRINTLN(x) DEBUGOUT.println(x) #define DEBUGFS_PRINTF(x...) DEBUGOUT.printf(x) - #define DEBUGFS_FLUSH() DEBUGOUT.flush() #else #define DEBUGFS_PRINT(x) #define DEBUGFS_PRINTLN(x) #define DEBUGFS_PRINTF(x...) - #define DEBUGFS_FLUSH() #endif // debug macro variable definitions