From 12be162d9a697f7fa7593818379b288646027825 Mon Sep 17 00:00:00 2001 From: Alex <15167344+frostmorn@users.noreply.github.com> Date: Mon, 16 Mar 2026 13:37:45 +0200 Subject: [PATCH 1/2] Use static buffer in serial --- lib/lilka/src/lilka/serial.cpp | 21 ++++++++++++--------- lib/lilka/src/lilka/serial.h | 1 + 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/lib/lilka/src/lilka/serial.cpp b/lib/lilka/src/lilka/serial.cpp index 650cabd..65f4460 100644 --- a/lib/lilka/src/lilka/serial.cpp +++ b/lib/lilka/src/lilka/serial.cpp @@ -68,40 +68,43 @@ void SerialInterface::begin(unsigned long baud) { } void SerialInterface::log(const char* format, ...) { - char buffer[TX_BUFFER_SIZE]; va_list args; va_start(args, format); - vsnprintf(buffer, sizeof(buffer), format, args); + lock(); + vsnprintf(msgbuffer, sizeof(msgbuffer), format, args); + unlock(); va_end(args); serial.lock(); char millisCstr[11]; // 10 digits + 1 for null terminator snprintf(millisCstr, sizeof(millisCstr), "%010lu", millis()); - serialQueue.push(String("[ ") + millisCstr + " ]" + String(LILKA_LOG_FORMAT) + buffer); + serialQueue.push(String("[ ") + millisCstr + " ]" + String(LILKA_LOG_FORMAT) + msgbuffer); serial.unlock(); } void SerialInterface::err(const char* format, ...) { - char buffer[TX_BUFFER_SIZE]; va_list args; va_start(args, format); - vsnprintf(buffer, sizeof(buffer), format, args); + lock(); + vsnprintf(msgbuffer, sizeof(msgbuffer), format, args); + unlock(); va_end(args); serial.lock(); char millisCstr[11]; // 10 digits + 1 for null terminator snprintf(millisCstr, sizeof(millisCstr), "%010lu", millis()); - serialQueue.push(String("[ ") + millisCstr + " ]" + String(LILKA_ERR_FORMAT) + buffer); + serialQueue.push(String("[ ") + millisCstr + " ]" + String(LILKA_ERR_FORMAT) + msgbuffer); serial.unlock(); } void SerialInterface::idf(const char* format, ...) { - char buffer[TX_BUFFER_SIZE]; va_list args; va_start(args, format); - vsnprintf(buffer, sizeof(buffer), format, args); + lock(); + vsnprintf(msgbuffer, sizeof(msgbuffer), format, args); + unlock(); va_end(args); serial.lock(); char millisCstr[11]; // 10 digits + 1 for null terminator snprintf(millisCstr, sizeof(millisCstr), "%010lu", millis()); - serialQueue.push(String("[ ") + millisCstr + " ]" + String(LILKA_IDF_FORMAT) + buffer); + serialQueue.push(String("[ ") + millisCstr + " ]" + String(LILKA_IDF_FORMAT) + msgbuffer); serial.unlock(); } diff --git a/lib/lilka/src/lilka/serial.h b/lib/lilka/src/lilka/serial.h index b3e9962..f05b3cb 100644 --- a/lib/lilka/src/lilka/serial.h +++ b/lib/lilka/src/lilka/serial.h @@ -69,6 +69,7 @@ class SerialInterface { // Storage and mutex for this storage SemaphoreHandle_t serialMutex = xSemaphoreCreateMutex(); + char msgbuffer[TX_BUFFER_SIZE]; std::queue serialQueue; }; From 63698126367de4b208571cf8373b6e79d9a00747 Mon Sep 17 00:00:00 2001 From: Alex <15167344+frostmorn@users.noreply.github.com> Date: Mon, 16 Mar 2026 14:45:49 +0200 Subject: [PATCH 2/2] cppcheck --- lib/lilka/src/lilka/serial.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/lilka/src/lilka/serial.h b/lib/lilka/src/lilka/serial.h index f05b3cb..86a26b6 100644 --- a/lib/lilka/src/lilka/serial.h +++ b/lib/lilka/src/lilka/serial.h @@ -69,7 +69,7 @@ class SerialInterface { // Storage and mutex for this storage SemaphoreHandle_t serialMutex = xSemaphoreCreateMutex(); - char msgbuffer[TX_BUFFER_SIZE]; + char msgbuffer[TX_BUFFER_SIZE] = {}; std::queue serialQueue; };