| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- /*
- * SPDX-FileCopyrightText: 2026 Benjamin Harris
- * SPDX-License-Identifier: Apache-2.0
- *
- * Dante mDNS advertisement — clean-room, from docs/dante-protocol-notes.md.
- *
- * Publishes this device's presence over mDNS/DNS-SD so Dante Controller and
- * peer devices can see it. Advertises the device-level services:
- * _netaudio-arc._udp (control endpoint, ARC port)
- * _netaudio-cmc._udp (announce endpoint, CMC port)
- * and, per transmit channel, _netaudio-chan._udp.
- *
- * WARNING: advertising is only half the story. A device that appears in
- * discovery but cannot answer ARC/CMC queries is worse than an invisible one
- * (it shows up broken in Dante Controller). Only enable this once the CMC and
- * ARC responders are running. It is gated OFF by default in Kconfig.
- *
- * PROTOTYPE / UNTESTED: TXT version strings mimic values observed on real
- * Dante hardware and may need tuning against a specific Dante Controller
- * version. Verify against a capture.
- */
- #pragma once
- #include "dante_device.h"
- #include "esp_err.h"
- #ifdef __cplusplus
- extern "C" {
- #endif
- /*
- * Start advertising the device-level Dante services (_netaudio-arc and
- * _netaudio-cmc) from `id`. Sets the mDNS hostname/instance to id->hostname.
- * Shares the process-wide ESP-IDF mDNS instance (init is idempotent).
- * The identity is copied internally.
- */
- esp_err_t dante_advertise_start(const dante_identity_t *id);
- /*
- * Advertise a transmit channel as _netaudio-chan._udp. `index` is 0-based
- * (published as the 1-based Dante channel id); `name` is the channel name
- * (the DNS-SD instance becomes "<name>@<hostname>"). Call after
- * dante_advertise_start().
- */
- esp_err_t dante_advertise_tx_channel(uint8_t index, const char *name);
- /* Remove the Dante mDNS services advertised by this module. Does not touch
- * services owned by other components (e.g. the AES67 _ravenna records). */
- void dante_advertise_stop(void);
- #ifdef __cplusplus
- }
- #endif
|