ESPHome 2026.1.5
Loading...
Searching...
No Matches
esphome::logger::TaskLogBuffer Class Reference

Task log buffer for ESP32 platform using FreeRTOS ring buffer. More...

#include <task_log_buffer_esp32.h>

Data Structures

struct  LogMessage
 

Public Member Functions

 TaskLogBuffer (size_t total_buffer_size)
 
 ~TaskLogBuffer ()
 
bool borrow_message_main_loop (LogMessage **message, const char **text, void **received_token)
 
void release_message_main_loop (void *token)
 
bool send_message_thread_safe (uint8_t level, const char *tag, uint16_t line, TaskHandle_t task_handle, const char *format, va_list args)
 
bool HOT has_messages () const
 
size_t size () const
 

Detailed Description

Task log buffer for ESP32 platform using FreeRTOS ring buffer.

Threading Model: Multi-Producer Single-Consumer (MPSC)

This uses the FreeRTOS ring buffer (RINGBUF_TYPE_NOSPLIT) which provides built-in thread-safety for the MPSC pattern. The ring buffer ensures message integrity - each message is stored contiguously.

Design:

  • Variable-size messages with header + text stored contiguously
  • FreeRTOS ring buffer handles synchronization internally
  • Atomic counter for fast has_messages() check without ring buffer lock

Definition at line 34 of file task_log_buffer_esp32.h.

Constructor & Destructor Documentation

◆ TaskLogBuffer()

esphome::logger::TaskLogBuffer::TaskLogBuffer ( size_t total_buffer_size)
explicit

Definition at line 11 of file task_log_buffer_esp32.cpp.

◆ ~TaskLogBuffer()

esphome::logger::TaskLogBuffer::~TaskLogBuffer ( )

Definition at line 21 of file task_log_buffer_esp32.cpp.

Member Function Documentation

◆ borrow_message_main_loop()

bool esphome::logger::TaskLogBuffer::borrow_message_main_loop ( LogMessage ** message,
const char ** text,
void ** received_token )

Definition at line 34 of file task_log_buffer_esp32.cpp.

◆ has_messages()

bool HOT esphome::logger::TaskLogBuffer::has_messages ( ) const
inline

Definition at line 65 of file task_log_buffer_esp32.h.

◆ release_message_main_loop()

void esphome::logger::TaskLogBuffer::release_message_main_loop ( void * token)

Definition at line 53 of file task_log_buffer_esp32.cpp.

◆ send_message_thread_safe()

bool esphome::logger::TaskLogBuffer::send_message_thread_safe ( uint8_t level,
const char * tag,
uint16_t line,
TaskHandle_t task_handle,
const char * format,
va_list args )

Definition at line 62 of file task_log_buffer_esp32.cpp.

◆ size()

size_t esphome::logger::TaskLogBuffer::size ( ) const
inline

Definition at line 70 of file task_log_buffer_esp32.h.


The documentation for this class was generated from the following files: