diff --git a/components/mitsubishi_heatpump/espmhp.cpp b/components/mitsubishi_heatpump/espmhp.cpp index 02223a1..0f1b9c8 100644 --- a/components/mitsubishi_heatpump/espmhp.cpp +++ b/components/mitsubishi_heatpump/espmhp.cpp @@ -42,15 +42,27 @@ MitsubishiHeatPump::MitsubishiHeatPump( this->traits_.set_visual_temperature_step(ESPMHP_TEMPERATURE_STEP); } -void MitsubishiHeatPump::check_logger_conflict_() { +bool MitsubishiHeatPump::verify_serial() { + if (!this->get_hw_serial_()) { + ESP_LOGCONFIG( + TAG, + "No HardwareSerial was provided. " + "Software serial ports are unsupported by this component." + ); + return false; + } + #ifdef USE_LOGGER if (this->get_hw_serial_() == logger::global_logger->get_hw_serial()) { ESP_LOGW(TAG, " You're using the same serial port for logging" " and the MitsubishiHeatPump component. Please disable" " logging over the serial port by setting" " logger:baud_rate to 0."); + return false; } #endif + // unless something went wrong, assume we have a valid serial configuration + return true; } void MitsubishiHeatPump::update() { @@ -414,18 +426,13 @@ void MitsubishiHeatPump::setup() { // This will be called by App.setup() this->banner(); ESP_LOGCONFIG(TAG, "Setting up UART..."); - if (!this->get_hw_serial_()) { - ESP_LOGCONFIG( - TAG, - "No HardwareSerial was provided. " - "Software serial ports are unsupported by this component." - ); + + if (!this->verify_serial()) { this->mark_failed(); return; } - this->check_logger_conflict_(); - ESP_LOGCONFIG(TAG, "Intializing new HeatPump object."); + ESP_LOGCONFIG(TAG, "Initializing new HeatPump object."); this->hp = new HeatPump(); this->current_temperature = NAN; this->target_temperature = NAN; diff --git a/components/mitsubishi_heatpump/espmhp.h b/components/mitsubishi_heatpump/espmhp.h index 7cb3a27..e82a8ea 100644 --- a/components/mitsubishi_heatpump/espmhp.h +++ b/components/mitsubishi_heatpump/espmhp.h @@ -113,8 +113,8 @@ class MitsubishiHeatPump : public PollingComponent, public climate::Climate { } //Print a warning message if we're using the sole hardware UART on an - //ESP8266 or UART0 on ESP32 - void check_logger_conflict_(); + //ESP8266 or UART0 on ESP32, or if no serial was provided + bool verify_serial(); // various prefs to save mode-specific temperatures, akin to how the IR // remote works.