2#if defined(USE_RP2040) && defined(USE_MDNS)
13#pragma push_macro("IRAM_ATTR")
15#include <ESP8266mDNS.h>
16#pragma pop_macro("IRAM_ATTR")
20static void register_rp2040(MDNSComponent *, StaticVector<MDNSService, MDNS_SERVICE_COUNT> &services) {
23 for (
const auto &service : services) {
25 auto *proto = MDNS_STR_ARG(service.proto);
26 while (*proto ==
'_') {
29 auto *service_type = MDNS_STR_ARG(service.service_type);
30 while (*service_type ==
'_') {
33 uint16_t port = service.port.value();
34 MDNS.addService(service_type, proto, port);
35 for (
const auto &record : service.txt_records) {
36 MDNS.addServiceTxt(service_type, proto, MDNS_STR_ARG(record.key), MDNS_STR_ARG(record.value));
41#ifdef USE_MDNS_EVENT_DRIVEN_POLLING
54#ifdef USE_MDNS_WIFI_LISTENER
60 if (ips[0].is_set()) {
66#ifdef USE_MDNS_ETHERNET_LISTENER
70 if (ips[0].is_set()) {
71 this->
on_ip_state(ips, network::IPAddress{}, network::IPAddress{});
77#ifdef USE_MDNS_EVENT_DRIVEN_POLLING
79 const network::IPAddress &) {
81 if (!ips[0].is_set()) {
88 MDNS.notifyAPChange();
const StringRef & get_name() const
Get the name of this Application set by pre_setup().
ESPDEPRECATED("Use const char* or uint32_t overload instead. Removed in 2026.7.0", "2026.1.0") void set_timeout(const std voi set_timeout)(const char *name, uint32_t timeout, std::function< void()> &&f)
Set a timeout function with a unique name.
ESPDEPRECATED("Use const char* or uint32_t overload instead. Removed in 2026.7.0", "2026.1.0") void set_interval(const std voi set_interval)(const char *name, uint32_t interval, std::function< void()> &&f)
Set an interval function with a unique name.
ESPDEPRECATED("Use const char* or uint32_t overload instead. Removed in 2026.7.0", "2026.1.0") bool cancel_interval(const std boo cancel_interval)(const char *name)
Cancel an interval function.
constexpr const char * c_str() const
network::IPAddresses get_ip_addresses()
void add_ip_state_listener(EthernetIPStateListener *listener)
void on_shutdown() override
static constexpr uint32_t MDNS_POLL_STOP_ID
void start_polling_window_()
Arm a fresh MDNS_POLL_WINDOW_MS polling window.
void on_ip_state(const network::IPAddresses &ips, const network::IPAddress &dns1, const network::IPAddress &dns2) override
static constexpr uint32_t MDNS_POLL_WINDOW_MS
void setup_buffers_and_register_(PlatformRegisterFn platform_register)
static constexpr uint32_t MDNS_POLL_ID
static constexpr uint32_t MDNS_UPDATE_INTERVAL_MS
void add_ip_state_listener(WiFiIPStateListener *listener)
Add a listener for IP state changes.
network::IPAddresses wifi_sta_ip_addresses()
EthernetComponent * global_eth_component
std::array< IPAddress, 5 > IPAddresses
ESPHOME_ALWAYS_INLINE bool is_connected()
Return whether the node is connected to the network (through wifi, eth, ...)
WiFiComponent * global_wifi_component
void HOT delay(uint32_t ms)
Application App
Global storage of Application pointer - only one Application can exist.