ESPHome 2026.1.0-dev
Loading...
Searching...
No Matches
uart.h
Go to the documentation of this file.
1#pragma once
2
3#include <vector>
5#include "esphome/core/hal.h"
6#include "esphome/core/log.h"
7#include "uart_component.h"
8
9namespace esphome::uart {
10
12 public:
13 UARTDevice() = default;
14 UARTDevice(UARTComponent *parent) : parent_(parent) {}
15
16 void set_uart_parent(UARTComponent *parent) { this->parent_ = parent; }
17
18 void write_byte(uint8_t data) { this->parent_->write_byte(data); }
19
20 void set_rx_full_threshold(size_t rx_full_threshold) { this->parent_->set_rx_full_threshold(rx_full_threshold); }
21 void set_rx_full_threshold_ms(size_t time) { this->parent_->set_rx_full_threshold_ms(time); }
23 void set_rx_timeout(size_t rx_timeout) { this->parent_->set_rx_timeout(rx_timeout); }
24 size_t get_rx_timeout() { return this->parent_->get_rx_timeout(); }
25
26 void write_array(const uint8_t *data, size_t len) { this->parent_->write_array(data, len); }
27 void write_array(const std::vector<uint8_t> &data) { this->parent_->write_array(data); }
28 template<size_t N> void write_array(const std::array<uint8_t, N> &data) {
29 this->parent_->write_array(data.data(), data.size());
30 }
31
32 void write_str(const char *str) { this->parent_->write_str(str); }
33
34 bool read_byte(uint8_t *data) { return this->parent_->read_byte(data); }
35 bool peek_byte(uint8_t *data) { return this->parent_->peek_byte(data); }
36
37 bool read_array(uint8_t *data, size_t len) { return this->parent_->read_array(data, len); }
38 template<size_t N> optional<std::array<uint8_t, N>> read_array() { // NOLINT
39 std::array<uint8_t, N> res;
40 if (!this->read_array(res.data(), N)) {
41 return {};
42 }
43 return res;
44 }
45
46 int available() { return this->parent_->available(); }
47
48 void flush() { this->parent_->flush(); }
49
50 // Compat APIs
51 int read() {
52 uint8_t data;
53 if (!this->read_byte(&data))
54 return -1;
55 return data;
56 }
57 size_t write(uint8_t data) {
58 this->write_byte(data);
59 return 1;
60 }
61 int peek() {
62 uint8_t data;
63 if (!this->peek_byte(&data))
64 return -1;
65 return data;
66 }
67
69 void check_uart_settings(uint32_t baud_rate, uint8_t stop_bits = 1,
70 UARTParityOptions parity = UART_CONFIG_PARITY_NONE, uint8_t data_bits = 8);
71
72 protected:
74};
75
76} // namespace esphome::uart
void write_byte(uint8_t data)
void write_array(const std::vector< uint8_t > &data)
void write_str(const char *str)
void set_rx_full_threshold_ms(uint8_t time)
virtual void set_rx_full_threshold(size_t rx_full_threshold)
bool read_byte(uint8_t *data)
virtual bool peek_byte(uint8_t *data)=0
virtual void set_rx_timeout(size_t rx_timeout)
virtual bool read_array(uint8_t *data, size_t len)=0
optional< std::array< uint8_t, N > > read_array()
Definition uart.h:38
void check_uart_settings(uint32_t baud_rate, uint8_t stop_bits=1, UARTParityOptions parity=UART_CONFIG_PARITY_NONE, uint8_t data_bits=8)
Check that the configuration of the UART bus matches the provided values and otherwise print a warnin...
Definition uart.cpp:12
bool peek_byte(uint8_t *data)
Definition uart.h:35
UARTComponent * parent_
Definition uart.h:73
void set_rx_full_threshold(size_t rx_full_threshold)
Definition uart.h:20
void write_array(const std::array< uint8_t, N > &data)
Definition uart.h:28
void set_rx_full_threshold_ms(size_t time)
Definition uart.h:21
void write_str(const char *str)
Definition uart.h:32
bool read_byte(uint8_t *data)
Definition uart.h:34
void write_byte(uint8_t data)
Definition uart.h:18
void set_rx_timeout(size_t rx_timeout)
Definition uart.h:23
void write_array(const uint8_t *data, size_t len)
Definition uart.h:26
size_t write(uint8_t data)
Definition uart.h:57
void write_array(const std::vector< uint8_t > &data)
Definition uart.h:27
size_t get_rx_full_threshold()
Definition uart.h:22
size_t get_rx_timeout()
Definition uart.h:24
UARTDevice(UARTComponent *parent)
Definition uart.h:14
void set_uart_parent(UARTComponent *parent)
Definition uart.h:16
bool read_array(uint8_t *data, size_t len)
Definition uart.h:37
std::string size_t len
Definition helpers.h:533