diff --git a/udplogger.cpp b/udplogger.cpp index 369af22..5f087b1 100644 --- a/udplogger.cpp +++ b/udplogger.cpp @@ -16,15 +16,15 @@ void UDPLogger::setName(String name){ _name = name; } -void UDPLogger::logString(String logmessage){ - // wait 5 milliseconds if last send was less than 5 milliseconds before +void UDPLogger::logString(const String& logmessage){ + // wait 5 milliseconds if last send was less than 5 milliseconds before if(millis() < (_lastSend + 5)){ delay(5); } - logmessage = _name + ": " + logmessage; - Serial.println(logmessage); + // use fixed buffer instead of string concatenation to avoid heap fragmentation + snprintf(_packetBuffer, sizeof(_packetBuffer), "%s: %s", _name.c_str(), logmessage.c_str()); + Serial.println(_packetBuffer); _Udp.beginPacketMulticast(_multicastAddr, _port, _interfaceAddr); - logmessage.toCharArray(_packetBuffer, 100); _Udp.print(_packetBuffer); _Udp.endPacket(); _lastSend=millis(); diff --git a/udplogger.h b/udplogger.h index c26fa49..e4cac28 100644 --- a/udplogger.h +++ b/udplogger.h @@ -22,7 +22,7 @@ class UDPLogger{ UDPLogger(); UDPLogger(IPAddress interfaceAddr, IPAddress multicastAddr, int port); void setName(String name); - void logString(String logmessage); + void logString(const String& logmessage); void logColor24bit(uint32_t color); private: String _name;