33 template<
size_t N>
void write_array(
const std::array<uint8_t, N> &data) {
43 template<
size_t N> optional<std::array<uint8_t, N>>
read_array() {
45 optional<std::array<uint8_t, N>> res(std::in_place);
61 static_assert(N > 0,
"read buffer size must be non-zero");
64 const size_t len = std::min(
count, N);
82 [&on_byte](
const uint8_t *data,
size_t len) {
83 for (
const uint8_t *p = data; p != data +
len; p++) {
117 ESPDEPRECATED(
"Use uart.final_validate_device_schema() in Python instead. Removed in 2027.3.0",
"2026.9.0")
123 template<typename F, typename... A> static
bool continue_after(F &f, A... args) {
124 using R = std::invoke_result_t<F &, A...>;
125 if constexpr (std::is_void_v<R>) {
129 static_assert(std::is_same_v<std::remove_cvref_t<R>,
bool>,
"callback must return void or bool");
void write_byte(uint8_t data)
void write_array_progmem(const uint8_t *data, size_t len)
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 UARTFlushResult flush()=0
virtual size_t available()=0
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
size_t get_rx_full_threshold()
optional< std::array< uint8_t, N > > read_array()
bool peek_byte(uint8_t *data)
ESPDEPRECATED("Use uart.final_validate_device_schema() in Python instead. Removed in 2027.3.0", "2026.9.0") void check_uart_settings(uint32_t baud_rate
Check that the configuration of the UART bus matches the provided values and otherwise print a warnin...
bool read_available_chunks(F &&on_chunk, size_t count)
Same, reading exactly count bytes; count must not exceed available().
void set_rx_full_threshold(size_t rx_full_threshold)
void write_array(const std::array< uint8_t, N > &data)
void write_array_progmem(const uint8_t *data, size_t len)
bool read_available_chunks(F &&on_chunk)
Pass the bytes available now to on_chunk(data, len) in N byte chunks; returning false stops.
void discard_available()
Read and drop every byte waiting in the receive buffer.
void set_rx_full_threshold_ms(size_t time)
void write_str(const char *str)
bool read_available(F &&on_byte, size_t count)
bool read_byte(uint8_t *data)
void write_byte(uint8_t data)
void set_rx_timeout(size_t rx_timeout)
static bool continue_after(F &f, A... args)
Call f(args...) and return its result; a void callback always continues.
bool read_available(F &&on_byte)
Same as read_available_chunks(), calling on_byte(uint8_t) once per byte.
void write_array(const uint8_t *data, size_t len)
uint8_t UARTParityOptions parity
size_t write(uint8_t data)
void write_array(const std::vector< uint8_t > &data)
uint8_t UARTParityOptions uint8_t data_bits
size_t get_rx_full_threshold()
UARTDevice(UARTComponent *parent)
void set_uart_parent(UARTComponent *parent)
bool read_array(uint8_t *data, size_t len)
@ UART_CONFIG_PARITY_NONE
UARTFlushResult
Result of a flush() call.