ESPHome 2026.11.0-dev
Loading...
Searching...
No Matches
udp_component.h
Go to the documentation of this file.
1#pragma once
2
4#ifdef USE_NETWORK
7#include <array>
8#include <initializer_list>
9#include <span>
10#include <vector>
11
12namespace esphome::udp {
13
14static const size_t MAX_PACKET_SIZE = 508;
15class UDPComponent final : public Component {
16 public:
18 void set_addresses(const char *const *addresses) { this->addresses_ = addresses; }
20 void set_listen_address(const char *listen_addr) { this->listen_address_ = listen_addr; }
21 void set_listen_port(uint16_t port) { this->listen_port_ = port; }
22 void set_broadcast_port(uint16_t port) { this->broadcast_port_ = port; }
23 void set_should_broadcast() { this->should_broadcast_ = true; }
24 void set_should_listen() { this->should_listen_ = true; }
25 template<typename F> void add_listener(F &&listener) { this->packet_listeners_.add(std::forward<F>(listener)); }
26 void setup() override;
27 void loop() override;
28 void dump_config() override;
29 void send_packet(const uint8_t *data, size_t size);
30 void send_packet(const std::vector<uint8_t> &buf) { this->send_packet(buf.data(), buf.size()); }
31 float get_setup_priority() const override { return setup_priority::AFTER_WIFI; };
32
33 protected:
34 bool join_multicast_();
35
36 uint16_t listen_port_{};
37 uint16_t broadcast_port_{};
42 CallbackManager<void(std::span<const uint8_t>)> packet_listeners_{};
43
44 std::unique_ptr<socket::UDPSendSocket> broadcast_socket_ = nullptr;
45 std::unique_ptr<socket::UDPSocket> listen_socket_ = nullptr;
46 std::vector<struct sockaddr> sockaddrs_{};
47 const char *const *addresses_{nullptr};
48
49 const char *listen_address_{nullptr};
50};
51
52} // namespace esphome::udp
53#endif
float get_setup_priority() const override
void send_packet(const uint8_t *data, size_t size)
void set_listen_address(const char *listen_addr)
Multicast group literal; must outlive the component.
std::unique_ptr< socket::UDPSendSocket > broadcast_socket_
void set_broadcast_port(uint16_t port)
CallbackManager< void(std::span< const uint8_t >)> packet_listeners_
void add_listener(F &&listener)
const char *const * addresses_
std::unique_ptr< socket::UDPSocket > listen_socket_
void set_addresses(const char *const *addresses)
nullptr-terminated table of addresses; must outlive the component.
void set_listen_port(uint16_t port)
void send_packet(const std::vector< uint8_t > &buf)
std::vector< struct sockaddr > sockaddrs_
constexpr float AFTER_WIFI
For components that should be initialized after WiFi is connected.
Definition component.h:55
uint16_t size
Definition helpers.cpp:33