diff --git a/esphome/components/logger/logger.cpp b/esphome/components/logger/logger.cpp index 238f70c4de..504822f57e 100644 --- a/esphome/components/logger/logger.cpp +++ b/esphome/components/logger/logger.cpp @@ -3,6 +3,7 @@ #include "esphome/core/hal.h" #include "esphome/core/log.h" +#include "esphome/core/application.h" namespace esphome { namespace logger { @@ -162,6 +163,24 @@ Logger::Logger(uint32_t baud_rate, size_t tx_buffer_size) : baud_rate_(baud_rate #endif } +#ifdef USE_USB_CDC +void Logger::loop() { +#ifdef USE_ARDUINO + if (this->uart_ != UART_SELECTION_USB_CDC) { + return; + } + static bool opened = false; + if (opened == Serial){ + return; + } + if(false == opened){ + App.schedule_dump_config(); + } + opened = !opened; +#endif +} +#endif + void Logger::set_baud_rate(uint32_t baud_rate) { this->baud_rate_ = baud_rate; } void Logger::set_log_level(const std::string &tag, int log_level) { this->log_levels_.push_back(LogLevelOverride{tag, log_level}); diff --git a/esphome/components/logger/logger.h b/esphome/components/logger/logger.h index 792afe213e..2ea2833d67 100644 --- a/esphome/components/logger/logger.h +++ b/esphome/components/logger/logger.h @@ -58,7 +58,9 @@ enum UARTSelection { class Logger : public Component { public: explicit Logger(uint32_t baud_rate, size_t tx_buffer_size); - +#ifdef USE_USB_CDC + void loop() override; +#endif /// Manually set the baud rate for serial, set to 0 to disable. void set_baud_rate(uint32_t baud_rate); uint32_t get_baud_rate() const { return baud_rate_; }