ESPHome 2026.10.0
Loading...
Searching...
No Matches
uart_tcp.h
Go to the documentation of this file.
1#pragma once
2
4#ifdef USE_BINARY_SENSOR
6#endif
7#ifdef USE_SENSOR
9#endif
11#ifdef USE_SOCKET_TCP_LISTENER
13#endif
16
17#include <cstdint>
18#include <memory>
19
20namespace esphome::uart_tcp {
21
23class UartTcp final : public Component, public uart::UARTDevice {
24 public:
25 void set_host(const char *host) { this->link_.set_host(host); }
26 void set_port(uint16_t port) { this->link_.set_port(port); }
28#ifdef USE_BINARY_SENSOR
30#endif
31#ifdef USE_SENSOR
33#endif
34#ifdef USE_SOCKET_TCP_LISTENER
35 void set_server(bool server) { this->server_ = server; }
36#ifdef USE_SOCKET_IPV4_ALLOW
37 void set_allow(const socket::Ipv4AllowEntry *entries, size_t count) { this->listener_.set_allow(entries, count); }
38#endif
39#endif
40
41 void setup() override;
42 void loop() override;
43 void dump_config() override;
44 void on_shutdown() override;
45 float get_setup_priority() const override { return setup_priority::AFTER_WIFI; }
46
47 protected:
48 void sync_link_();
49 void read_socket_();
50 void read_uart_();
51 void discard_uart_();
52
53 static constexpr size_t READ_CHUNK = 128;
54 // Scratch size for dropping stale UART bytes on connect.
55 static constexpr size_t DISCARD_CHUNK = 32;
56
58#ifdef USE_SOCKET_TCP_LISTENER
60#endif
61#ifdef USE_BINARY_SENSOR
63#endif
64 // Loop start time of the last socket-to-UART write; sizes the next paced write.
66#ifdef USE_SENSOR
69#endif
70 bool server_{false};
71 // The link state loop() saw last; edges clear the buffer and publish the sensor.
72 bool link_was_up_{false};
73 // A read stopped before EAGAIN. ready() stays false until new data arrives.
74 bool rx_pending_{false};
75};
76
77} // namespace esphome::uart_tcp
Base class for all binary_sensor-type classes.
Base-class for all sensors.
Definition sensor.h:47
The server side of a bridged TCP link: owns the listen socket and the allow list, accepts one peer at...
void set_allow(const Ipv4AllowEntry *entries, size_t count)
Copies raw bytes between one hardware UART and one TCP socket.
Definition uart_tcp.h:23
static constexpr size_t DISCARD_CHUNK
Definition uart_tcp.h:55
socket::TcpClientLink link_
Definition uart_tcp.h:57
void set_reconnect_interval(uint32_t ms)
Definition uart_tcp.h:27
void set_disconnects_sensor(sensor::Sensor *sensor)
Definition uart_tcp.h:32
sensor::Sensor * disconnects_sensor_
Definition uart_tcp.h:67
void on_shutdown() override
Definition uart_tcp.cpp:53
static constexpr size_t READ_CHUNK
Definition uart_tcp.h:53
socket::TcpListener listener_
Definition uart_tcp.h:59
void set_host(const char *host)
Definition uart_tcp.h:25
binary_sensor::BinarySensor * connected_sensor_
Definition uart_tcp.h:62
void set_server(bool server)
Definition uart_tcp.h:35
void set_allow(const socket::Ipv4AllowEntry *entries, size_t count)
Definition uart_tcp.h:37
void set_connected_sensor(binary_sensor::BinarySensor *sensor)
Definition uart_tcp.h:29
void dump_config() override
Definition uart_tcp.cpp:34
void set_port(uint16_t port)
Definition uart_tcp.h:26
float get_setup_priority() const override
Definition uart_tcp.h:45
void setup() override
Definition uart_tcp.cpp:17
unsigned count
Definition gif.cpp:51
constexpr float AFTER_WIFI
For components that should be initialized after WiFi is connected.
Definition component.h:55
static void uint32_t
One allowed IPv4 network, network byte order, host bits cleared.
Definition ipv4_allow.h:14