24#ifndef PROTOCORE_MDNS_ADAPTIVE_H
25#define PROTOCORE_MDNS_ADAPTIVE_H
31#if PC_ENABLE_MDNS_ADAPTIVE
43uint32_t pc_mdns_refresh_interval(uint32_t ttl_s);
46void pc_mdns_beacon_init(MdnsBeacon *b, uint32_t base_ms, uint32_t max_ms, uint16_t hi_thresh);
54uint32_t pc_mdns_beacon_adapt(MdnsBeacon *b, uint16_t contention);
57bool pc_mdns_beacon_due(
const MdnsBeacon *b, uint32_t last_ms, uint32_t now_ms);
64bool pc_mdns_beacon_presleep_due(
const MdnsBeacon *b, uint32_t last_ms, uint32_t now_ms, uint32_t sleep_ms);
78struct MdnsContentionWindow
86void pc_mdns_contention_init(MdnsContentionWindow *w, uint32_t window_ms, uint32_t frames_now, uint32_t now_ms);
95bool pc_mdns_contention_sample(MdnsContentionWindow *w, uint32_t frames_now, uint32_t now_ms, uint16_t *out);
97#if defined(ARDUINO) && PC_ENABLE_MDNS && PC_ENABLE_PROMISC
113struct MdnsAdaptiveCfg
118 uint32_t max_interval_ms;
120 uint16_t hi_contention;
129bool pc_mdns_adaptive_begin(
const MdnsAdaptiveCfg *cfg);
135void pc_mdns_adaptive_tick(
void);
138void pc_mdns_adaptive_end(
void);
141uint32_t pc_mdns_adaptive_interval_ms(
void);
144uint16_t pc_mdns_adaptive_contention(
void);
147uint32_t pc_mdns_adaptive_announces(
void);
User-facing configuration for ProtoCore.