diff --git a/esphome/components/logger/__init__.py b/esphome/components/logger/__init__.py index f30fe251ac..34556ed165 100644 --- a/esphome/components/logger/__init__.py +++ b/esphome/components/logger/__init__.py @@ -102,7 +102,7 @@ ESP_ARDUINO_UNSUPPORTED_USB_UARTS = [USB_SERIAL_JTAG] UART_SELECTION_RP2040 = [USB_CDC, UART0, UART1] -UART_SELECTION_NRF52 = [USB_CDC] +UART_SELECTION_NRF52 = [USB_CDC, UART0] HARDWARE_UART_TO_UART_SELECTION = { UART0: logger_ns.UART_SELECTION_UART0, diff --git a/esphome/components/logger/logger.cpp b/esphome/components/logger/logger.cpp index eaa673c631..238f70c4de 100644 --- a/esphome/components/logger/logger.cpp +++ b/esphome/components/logger/logger.cpp @@ -4,12 +4,6 @@ #include "esphome/core/hal.h" #include "esphome/core/log.h" -#ifdef USE_NRF52 -#ifdef USE_ARDUINO -#include // for Serial -#endif -#endif - namespace esphome { namespace logger { diff --git a/esphome/components/logger/logger.h b/esphome/components/logger/logger.h index 4378f1b272..792afe213e 100644 --- a/esphome/components/logger/logger.h +++ b/esphome/components/logger/logger.h @@ -35,10 +35,11 @@ enum UARTSelection { UART_SELECTION_DEFAULT = 0, UART_SELECTION_UART0, #else -#ifndef USE_NRF52 UART_SELECTION_UART0 = 0, #endif +#if !defined(USE_NRF52) || defined(PIN_SERIAL2_RX) && defined(PIN_SERIAL2_TX) UART_SELECTION_UART1, +#endif #if defined(USE_LIBRETINY) || defined(USE_ESP32_VARIANT_ESP32) UART_SELECTION_UART2, #endif diff --git a/esphome/components/logger/logger_nrf52.cpp b/esphome/components/logger/logger_nrf52.cpp new file mode 100644 index 0000000000..852d356aa5 --- /dev/null +++ b/esphome/components/logger/logger_nrf52.cpp @@ -0,0 +1,43 @@ +#ifdef USE_NRF52 +#ifdef USE_ARDUINO +#include // for Serial +#endif +#include "logger.h" +#include "esphome/core/log.h" + +namespace esphome { +namespace logger { + +static const char *const TAG = "logger"; + +void Logger::pre_setup() { + if (this->baud_rate_ > 0) { + switch (this->uart_) { + case UART_SELECTION_UART0: + this->hw_serial_ = &Serial1; + Serial1.begin(this->baud_rate_); + break; +#if defined(PIN_SERIAL2_RX) && defined(PIN_SERIAL2_TX) + case UART_SELECTION_UART1: + this->hw_serial_ = &Serial2; + Serial2.begin(this->baud_rate_); + break; +#endif + case UART_SELECTION_USB_CDC: + this->hw_serial_ = &Serial; + Serial.begin(this->baud_rate_); + break; + } + } + global_logger = this; + ESP_LOGI(TAG, "Log initialized"); +} + +const char *const UART_SELECTIONS[] = {"USB_CDC"}; + +const char *Logger::get_uart_selection_() { return UART_SELECTIONS[this->uart_]; } + +} // namespace logger +} // namespace esphome + +#endif