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..86a26b6 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; };