15#define MDNS_STR(name) (reinterpret_cast<const esphome::mdns::MDNSString *>(name))
19#define MDNS_STR_ARG(s) ((PGM_P) (s))
21#define MDNS_STR_ARG(s) (reinterpret_cast<const char *>(s))
28 const MDNSString *
key;
45 void setup()
override;
48#if (defined(USE_ESP8266) || defined(USE_RP2040)) && defined(USE_ARDUINO)
53#ifdef USE_MDNS_EXTRA_SERVICES
57#ifdef USE_MDNS_STORE_SERVICES
63#ifdef USE_MDNS_DYNAMIC_TXT
76#ifdef USE_MDNS_STORE_SERVICES
80 auto &services = services_storage;
84#ifdef USE_MDNS_STORE_SERVICES
88 char mac_address[MAC_ADDRESS_BUFFER_SIZE];
90 char *mac_ptr = mac_address;
93 char *mac_ptr =
nullptr;
97 platform_register(
this, services);
100#ifdef USE_MDNS_DYNAMIC_TXT
107#if defined(USE_API) && defined(USE_MDNS_STORE_SERVICES)
111#ifdef USE_MDNS_STORE_SERVICES
Fixed-capacity vector - allocates once at runtime, never reallocates This avoids std::vector template...
Minimal static vector - saves memory by avoiding std::vector overhead.
void push_back(const T &value)
void on_shutdown() override
StaticVector< std::string, MDNS_DYNAMIC_TXT_COUNT > dynamic_txt_values_
Storage for runtime-generated TXT values from user lambdas Pre-sized at compile time via MDNS_DYNAMIC...
void dump_config() override
float get_setup_priority() const override
const char * add_dynamic_txt_value(const std::string &value)
Add a dynamic TXT value and return pointer to it for use in MDNSTXTRecord.
void compile_records_(StaticVector< MDNSService, MDNS_SERVICE_COUNT > &services, char *mac_address_buf)
void setup_buffers_and_register_(PlatformRegisterFn platform_register)
char mac_address_[MAC_ADDRESS_BUFFER_SIZE]
Fixed buffer for MAC address (only needed when services are stored)
void(*)(MDNSComponent *, StaticVector< MDNSService, MDNS_SERVICE_COUNT > &) PlatformRegisterFn
Helper to set up services and MAC buffers, then call platform-specific registration.
void add_extra_service(MDNSService service)
const StaticVector< MDNSService, MDNS_SERVICE_COUNT > & get_services() const
StaticVector< MDNSService, MDNS_SERVICE_COUNT > services_
const float AFTER_CONNECTION
For components that should be initialized after a data connection (API/MQTT) is connected.
void get_mac_address_into_buffer(std::span< char, MAC_ADDRESS_BUFFER_SIZE > buf)
Get the device MAC address into the given buffer, in lowercase hex notation.
TemplatableValue< uint16_t > port
FixedVector< MDNSTXTRecord > txt_records
const MDNSString * service_type