ESPHome 2026.3.0
Loading...
Searching...
No Matches
uart_component_esp_idf.h
Go to the documentation of this file.
1#pragma once
2
3#ifdef USE_ESP32
4
5#include <driver/uart.h>
7#include "uart_component.h"
8#ifdef USE_UART_WAKE_LOOP_ON_RX
9#include <driver/uart_select.h>
10#endif
11
12namespace esphome::uart {
13
20 public:
21 void setup() override;
22 void dump_config() override;
23 float get_setup_priority() const override { return setup_priority::BUS; }
24
25 void set_rx_full_threshold(size_t rx_full_threshold) override;
26 void set_rx_timeout(size_t rx_timeout) override;
27
28 void write_array(const uint8_t *data, size_t len) override;
29
30 bool peek_byte(uint8_t *data) override;
31 bool read_array(uint8_t *data, size_t len) override;
32
33 size_t available() override;
34 FlushResult flush() override;
35
36 void set_flush_timeout(uint32_t flush_timeout_ms) override { this->flush_timeout_ms_ = flush_timeout_ms; }
37
38 uint8_t get_hw_serial_number() { return this->uart_num_; }
39
52 void load_settings(bool dump_config) override;
53 void load_settings() override { this->load_settings(true); }
54
55 protected:
56 void check_logger_conflict() override;
57 uart_port_t uart_num_;
58 uart_config_t get_config_();
59
60 bool has_peek_{false};
61 uint8_t peek_byte_;
63
64#ifdef USE_UART_WAKE_LOOP_ON_RX
65 // ISR callback for UART RX data notification — wakes the main loop directly.
66 static void uart_rx_isr_callback(uart_port_t uart_num, uart_select_notif_t uart_select_notif, BaseType_t *task_woken);
67#endif // USE_UART_WAKE_LOOP_ON_RX
68};
69
70} // namespace esphome::uart
71#endif // USE_ESP32
ESP-IDF UART driver wrapper.
void set_flush_timeout(uint32_t flush_timeout_ms) override
void set_rx_timeout(size_t rx_timeout) override
bool peek_byte(uint8_t *data) override
void write_array(const uint8_t *data, size_t len) override
void set_rx_full_threshold(size_t rx_full_threshold) override
bool read_array(uint8_t *data, size_t len) override
uint32_t flush_timeout_ms_
0 means wait indefinitely (portMAX_DELAY).
static void uart_rx_isr_callback(uart_port_t uart_num, uart_select_notif_t uart_select_notif, BaseType_t *task_woken)
float get_setup_priority() const override
constexpr float BUS
For communication buses like i2c/spi.
Definition component.h:25
FlushResult
Result of a flush() call.
std::string size_t len
Definition helpers.h:892
static void uint32_t