From d2f37cf3f9a87576f7a1b069cf5d9774e9caffaa Mon Sep 17 00:00:00 2001 From: Jens-Christian Skibakk Date: Mon, 9 May 2022 06:17:22 +0200 Subject: [PATCH] Support for Arduino 2 and serial port on ESP32-S2 and ESP32-C3 (#3436) --- .../improv_serial/improv_serial_component.h | 2 +- esphome/components/logger/logger.cpp | 22 ++++++++++--------- esphome/components/logger/logger.h | 4 ++-- 3 files changed, 15 insertions(+), 13 deletions(-) diff --git a/esphome/components/improv_serial/improv_serial_component.h b/esphome/components/improv_serial/improv_serial_component.h index c6b980ab99..6be5704b71 100644 --- a/esphome/components/improv_serial/improv_serial_component.h +++ b/esphome/components/improv_serial/improv_serial_component.h @@ -51,7 +51,7 @@ class ImprovSerialComponent : public Component { void write_data_(std::vector &data); #ifdef USE_ARDUINO - HardwareSerial *hw_serial_{nullptr}; + Stream *hw_serial_{nullptr}; #endif #ifdef USE_ESP_IDF uart_port_t uart_num_; diff --git a/esphome/components/logger/logger.cpp b/esphome/components/logger/logger.cpp index 11c0733701..3f4e4e7753 100644 --- a/esphome/components/logger/logger.cpp +++ b/esphome/components/logger/logger.cpp @@ -149,13 +149,25 @@ void Logger::pre_setup() { case UART_SELECTION_UART0_SWAP: #endif this->hw_serial_ = &Serial; + Serial.begin(this->baud_rate_); +#ifdef USE_ESP8266 + if (this->uart_ == UART_SELECTION_UART0_SWAP) { + Serial.swap(); + } + Serial.setDebugOutput(ESPHOME_LOG_LEVEL >= ESPHOME_LOG_LEVEL_VERBOSE); +#endif break; case UART_SELECTION_UART1: this->hw_serial_ = &Serial1; + Serial1.begin(this->baud_rate_); +#ifdef USE_ESP8266 + Serial1.setDebugOutput(ESPHOME_LOG_LEVEL >= ESPHOME_LOG_LEVEL_VERBOSE); +#endif break; #if defined(USE_ESP32) && !defined(USE_ESP32_VARIANT_ESP32C3) && !defined(USE_ESP32_VARIANT_ESP32S2) case UART_SELECTION_UART2: this->hw_serial_ = &Serial2; + Serial2.begin(this->baud_rate_); break; #endif } @@ -186,16 +198,6 @@ void Logger::pre_setup() { // Install UART driver using an event queue here uart_driver_install(uart_num_, uart_buffer_size, uart_buffer_size, 10, nullptr, 0); #endif - -#ifdef USE_ARDUINO - this->hw_serial_->begin(this->baud_rate_); -#ifdef USE_ESP8266 - if (this->uart_ == UART_SELECTION_UART0_SWAP) { - this->hw_serial_->swap(); - } - this->hw_serial_->setDebugOutput(ESPHOME_LOG_LEVEL >= ESPHOME_LOG_LEVEL_VERBOSE); -#endif -#endif // USE_ARDUINO } #ifdef USE_ESP8266 else { diff --git a/esphome/components/logger/logger.h b/esphome/components/logger/logger.h index 8756bc2387..fa93972e19 100644 --- a/esphome/components/logger/logger.h +++ b/esphome/components/logger/logger.h @@ -40,7 +40,7 @@ class Logger : public Component { void set_baud_rate(uint32_t baud_rate); uint32_t get_baud_rate() const { return baud_rate_; } #ifdef USE_ARDUINO - HardwareSerial *get_hw_serial() const { return hw_serial_; } + Stream *get_hw_serial() const { return hw_serial_; } #endif #ifdef USE_ESP_IDF uart_port_t get_uart_num() const { return uart_num_; } @@ -119,7 +119,7 @@ class Logger : public Component { int tx_buffer_size_{0}; UARTSelection uart_{UART_SELECTION_UART0}; #ifdef USE_ARDUINO - HardwareSerial *hw_serial_{nullptr}; + Stream *hw_serial_{nullptr}; #endif #ifdef USE_ESP_IDF uart_port_t uart_num_;