63 const char *format, va_list args) {
66 va_copy(args_copy, args);
67 int ret = vsnprintf(
nullptr, 0, format, args_copy);
75 static constexpr size_t MAX_TEXT_SIZE = 255;
76 size_t text_length = (
static_cast<size_t>(ret) > MAX_TEXT_SIZE) ? MAX_TEXT_SIZE : ret;
79 size_t total_size =
sizeof(
LogMessage) + text_length + 1;
82 void *acquired_memory =
nullptr;
83 BaseType_t result = xRingbufferSendAcquire(ring_buffer_, &acquired_memory, total_size, 0);
85 if (result != pdTRUE || acquired_memory ==
nullptr) {
98 const char *thread_name = pcTaskGetName(task_handle);
99 if (thread_name !=
nullptr) {
109 ret = vsnprintf(text_area, text_length + 1, format, args);
113 vRingbufferReturnItem(ring_buffer_, acquired_memory);
118 while (text_length > 0 && text_area[text_length - 1] ==
'\n') {
124 result = xRingbufferSendComplete(ring_buffer_, acquired_memory);
126 if (result != pdTRUE) {
131 message_counter_.fetch_add(1, std::memory_order_relaxed);