mirror of
https://github.com/esphome/esphome.git
synced 2026-05-28 04:55:48 +08:00
[logger] Fix loop disable optimization using wrong preprocessor guard (#14158)
This commit is contained in:
@@ -170,19 +170,19 @@ void Logger::init_log_buffer(size_t total_buffer_size) {
|
|||||||
// NOLINTNEXTLINE(cppcoreguidelines-owning-memory) - allocated once, never freed
|
// NOLINTNEXTLINE(cppcoreguidelines-owning-memory) - allocated once, never freed
|
||||||
this->log_buffer_ = new logger::TaskLogBuffer(total_buffer_size);
|
this->log_buffer_ = new logger::TaskLogBuffer(total_buffer_size);
|
||||||
|
|
||||||
// Zephyr needs loop working to check when CDC port is open
|
#if !(defined(USE_ZEPHYR) && defined(USE_LOGGER_UART_SELECTION_USB_CDC))
|
||||||
#if !(defined(USE_ZEPHYR) || defined(USE_LOGGER_USB_CDC))
|
// Start with loop disabled when using task buffer
|
||||||
// Start with loop disabled when using task buffer (unless using USB CDC on ESP32)
|
|
||||||
// The loop will be enabled automatically when messages arrive
|
// The loop will be enabled automatically when messages arrive
|
||||||
|
// Zephyr with USB CDC needs loop active to poll port readiness via cdc_loop_()
|
||||||
this->disable_loop_when_buffer_empty_();
|
this->disable_loop_when_buffer_empty_();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(USE_ESPHOME_TASK_LOG_BUFFER) || (defined(USE_ZEPHYR) && defined(USE_LOGGER_USB_CDC))
|
#if defined(USE_ESPHOME_TASK_LOG_BUFFER) || (defined(USE_ZEPHYR) && defined(USE_LOGGER_UART_SELECTION_USB_CDC))
|
||||||
void Logger::loop() {
|
void Logger::loop() {
|
||||||
this->process_messages_();
|
this->process_messages_();
|
||||||
#if defined(USE_ZEPHYR) && defined(USE_LOGGER_USB_CDC)
|
#if defined(USE_ZEPHYR) && defined(USE_LOGGER_UART_SELECTION_USB_CDC)
|
||||||
this->cdc_loop_();
|
this->cdc_loop_();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@@ -204,8 +204,7 @@ void Logger::process_messages_() {
|
|||||||
this->write_log_buffer_to_console_(buf);
|
this->write_log_buffer_to_console_(buf);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Zephyr needs loop working to check when CDC port is open
|
#if !(defined(USE_ZEPHYR) && defined(USE_LOGGER_UART_SELECTION_USB_CDC))
|
||||||
#if !(defined(USE_ZEPHYR) || defined(USE_LOGGER_USB_CDC))
|
|
||||||
else {
|
else {
|
||||||
// No messages to process, disable loop if appropriate
|
// No messages to process, disable loop if appropriate
|
||||||
// This reduces overhead when there's no async logging activity
|
// This reduces overhead when there's no async logging activity
|
||||||
|
|||||||
@@ -147,7 +147,7 @@ class Logger : public Component {
|
|||||||
#ifdef USE_ESPHOME_TASK_LOG_BUFFER
|
#ifdef USE_ESPHOME_TASK_LOG_BUFFER
|
||||||
void init_log_buffer(size_t total_buffer_size);
|
void init_log_buffer(size_t total_buffer_size);
|
||||||
#endif
|
#endif
|
||||||
#if defined(USE_ESPHOME_TASK_LOG_BUFFER) || (defined(USE_ZEPHYR) && defined(USE_LOGGER_USB_CDC))
|
#if defined(USE_ESPHOME_TASK_LOG_BUFFER) || (defined(USE_ZEPHYR) && defined(USE_LOGGER_UART_SELECTION_USB_CDC))
|
||||||
void loop() override;
|
void loop() override;
|
||||||
#endif
|
#endif
|
||||||
/// Manually set the baud rate for serial, set to 0 to disable.
|
/// Manually set the baud rate for serial, set to 0 to disable.
|
||||||
@@ -229,7 +229,7 @@ class Logger : public Component {
|
|||||||
void log_vprintf_non_main_thread_(uint8_t level, const char *tag, int line, const char *format, va_list args,
|
void log_vprintf_non_main_thread_(uint8_t level, const char *tag, int line, const char *format, va_list args,
|
||||||
const char *thread_name);
|
const char *thread_name);
|
||||||
#endif
|
#endif
|
||||||
#if defined(USE_ZEPHYR) && defined(USE_LOGGER_USB_CDC)
|
#if defined(USE_ZEPHYR) && defined(USE_LOGGER_UART_SELECTION_USB_CDC)
|
||||||
void cdc_loop_();
|
void cdc_loop_();
|
||||||
#endif
|
#endif
|
||||||
void process_messages_();
|
void process_messages_();
|
||||||
@@ -465,9 +465,9 @@ class Logger : public Component {
|
|||||||
inline RecursionGuard make_non_main_task_guard_() { return RecursionGuard(non_main_task_recursion_guard_); }
|
inline RecursionGuard make_non_main_task_guard_() { return RecursionGuard(non_main_task_recursion_guard_); }
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Zephyr needs loop working to check when CDC port is open
|
#if defined(USE_ESPHOME_TASK_LOG_BUFFER) && !(defined(USE_ZEPHYR) && defined(USE_LOGGER_UART_SELECTION_USB_CDC))
|
||||||
#if defined(USE_ESPHOME_TASK_LOG_BUFFER) && !(defined(USE_ZEPHYR) || defined(USE_LOGGER_USB_CDC))
|
// Disable loop when task buffer is empty
|
||||||
// Disable loop when task buffer is empty (with USB CDC check on ESP32)
|
// Zephyr with USB CDC needs loop active to poll port readiness via cdc_loop_()
|
||||||
inline void disable_loop_when_buffer_empty_() {
|
inline void disable_loop_when_buffer_empty_() {
|
||||||
// Thread safety note: This is safe even if another task calls enable_loop_soon_any_context()
|
// Thread safety note: This is safe even if another task calls enable_loop_soon_any_context()
|
||||||
// concurrently. If that happens between our check and disable_loop(), the enable request
|
// concurrently. If that happens between our check and disable_loop(), the enable request
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ __attribute__((section(".noinit"))) struct {
|
|||||||
|
|
||||||
static const char *const TAG = "logger";
|
static const char *const TAG = "logger";
|
||||||
|
|
||||||
#ifdef USE_LOGGER_USB_CDC
|
#ifdef USE_LOGGER_UART_SELECTION_USB_CDC
|
||||||
void Logger::cdc_loop_() {
|
void Logger::cdc_loop_() {
|
||||||
if (this->uart_ != UART_SELECTION_USB_CDC || this->uart_dev_ == nullptr) {
|
if (this->uart_ != UART_SELECTION_USB_CDC || this->uart_dev_ == nullptr) {
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -270,10 +270,12 @@
|
|||||||
|
|
||||||
#if defined(USE_ESP32_VARIANT_ESP32S2)
|
#if defined(USE_ESP32_VARIANT_ESP32S2)
|
||||||
#define USE_LOGGER_USB_CDC
|
#define USE_LOGGER_USB_CDC
|
||||||
|
#define USE_LOGGER_UART_SELECTION_USB_CDC
|
||||||
#elif defined(USE_ESP32_VARIANT_ESP32C3) || defined(USE_ESP32_VARIANT_ESP32C5) || \
|
#elif defined(USE_ESP32_VARIANT_ESP32C3) || defined(USE_ESP32_VARIANT_ESP32C5) || \
|
||||||
defined(USE_ESP32_VARIANT_ESP32C6) || defined(USE_ESP32_VARIANT_ESP32C61) || defined(USE_ESP32_VARIANT_ESP32H2) || \
|
defined(USE_ESP32_VARIANT_ESP32C6) || defined(USE_ESP32_VARIANT_ESP32C61) || defined(USE_ESP32_VARIANT_ESP32H2) || \
|
||||||
defined(USE_ESP32_VARIANT_ESP32P4) || defined(USE_ESP32_VARIANT_ESP32S3)
|
defined(USE_ESP32_VARIANT_ESP32P4) || defined(USE_ESP32_VARIANT_ESP32S3)
|
||||||
#define USE_LOGGER_USB_CDC
|
#define USE_LOGGER_USB_CDC
|
||||||
|
#define USE_LOGGER_UART_SELECTION_USB_CDC
|
||||||
#define USE_LOGGER_USB_SERIAL_JTAG
|
#define USE_LOGGER_USB_SERIAL_JTAG
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
@@ -335,6 +337,8 @@
|
|||||||
#ifdef USE_NRF52
|
#ifdef USE_NRF52
|
||||||
#define USE_ESPHOME_TASK_LOG_BUFFER
|
#define USE_ESPHOME_TASK_LOG_BUFFER
|
||||||
#define USE_LOGGER_EARLY_MESSAGE
|
#define USE_LOGGER_EARLY_MESSAGE
|
||||||
|
#define USE_LOGGER_UART_SELECTION_USB_CDC
|
||||||
|
#define USE_LOGGER_USB_CDC
|
||||||
#define USE_LOGGER_WAIT_FOR_CDC
|
#define USE_LOGGER_WAIT_FOR_CDC
|
||||||
#define USE_NRF52_DFU
|
#define USE_NRF52_DFU
|
||||||
#define USE_NRF52_REG0_VOUT 5
|
#define USE_NRF52_REG0_VOUT 5
|
||||||
|
|||||||
Reference in New Issue
Block a user