mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-30 22:53:59 +00:00 
			
		
		
		
	Extends UART change at runtime to ESP8266 (#6019)
This commit is contained in:
		| @@ -122,7 +122,7 @@ class UARTComponent { | ||||
|   // @return Baud rate in bits per second. | ||||
|   uint32_t get_baud_rate() const { return baud_rate_; } | ||||
|  | ||||
| #ifdef USE_ESP32 | ||||
| #if defined(USE_ESP8266) || defined(USE_ESP32) | ||||
|   /** | ||||
|    * Load the UART settings. | ||||
|    * @param dump_config If true (default), output the new settings to logs; otherwise, change settings quietly. | ||||
| @@ -147,7 +147,7 @@ class UARTComponent { | ||||
|    * This will load the current UART interface with the latest settings (baud_rate, parity, etc). | ||||
|    */ | ||||
|   virtual void load_settings(){}; | ||||
| #endif  // USE_ESP32 | ||||
| #endif  // USE_ESP8266 || USE_ESP32 | ||||
|  | ||||
| #ifdef USE_UART_DEBUGGER | ||||
|   void add_debug_callback(std::function<void(UARTDirection, uint8_t)> &&callback) { | ||||
|   | ||||
| @@ -98,10 +98,26 @@ void ESP8266UartComponent::setup() { | ||||
|   } | ||||
| } | ||||
|  | ||||
| void ESP8266UartComponent::load_settings(bool dump_config) { | ||||
|   ESP_LOGCONFIG(TAG, "Loading UART bus settings..."); | ||||
|   if (this->hw_serial_ != nullptr) { | ||||
|     SerialConfig config = static_cast<SerialConfig>(get_config()); | ||||
|     this->hw_serial_->begin(this->baud_rate_, config); | ||||
|     this->hw_serial_->setRxBufferSize(this->rx_buffer_size_); | ||||
|   } else { | ||||
|     this->sw_serial_->setup(this->tx_pin_, this->rx_pin_, this->baud_rate_, this->stop_bits_, this->data_bits_, | ||||
|                             this->parity_, this->rx_buffer_size_); | ||||
|   } | ||||
|   if (dump_config) { | ||||
|     ESP_LOGCONFIG(TAG, "UART bus was reloaded."); | ||||
|     this->dump_config(); | ||||
|   } | ||||
| } | ||||
|  | ||||
| void ESP8266UartComponent::dump_config() { | ||||
|   ESP_LOGCONFIG(TAG, "UART Bus:"); | ||||
|   LOG_PIN("  TX Pin: ", tx_pin_); | ||||
|   LOG_PIN("  RX Pin: ", rx_pin_); | ||||
|   LOG_PIN("  TX Pin: ", this->tx_pin_); | ||||
|   LOG_PIN("  RX Pin: ", this->rx_pin_); | ||||
|   if (this->rx_pin_ != nullptr) { | ||||
|     ESP_LOGCONFIG(TAG, "  RX Buffer Size: %u", this->rx_buffer_size_);  // NOLINT | ||||
|   } | ||||
|   | ||||
| @@ -63,6 +63,21 @@ class ESP8266UartComponent : public UARTComponent, public Component { | ||||
|  | ||||
|   uint32_t get_config(); | ||||
|  | ||||
|   /** | ||||
|    * Load the UART with the current settings. | ||||
|    * @param dump_config (Optional, default `true`): True for displaying new settings or | ||||
|    * false to change it quitely | ||||
|    * | ||||
|    * Example: | ||||
|    * ```cpp | ||||
|    * id(uart1).load_settings(); | ||||
|    * ``` | ||||
|    * | ||||
|    * This will load the current UART interface with the latest settings (baud_rate, parity, etc). | ||||
|    */ | ||||
|   void load_settings(bool dump_config) override; | ||||
|   void load_settings() override { this->load_settings(true); } | ||||
|  | ||||
|  protected: | ||||
|   void check_logger_conflict() override; | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user