Module duty_gate

Module duty_gate 

Source
Expand description

Duty-cycle admission gate for the device node’s radio path.

PROP_PHY_DUTY_LIMIT bounds the combined airtime of every radio client (device-node plan increment 4). The session already prices and records its own transmissions against the shared [DutyLedger]; this wrapper is the node-side counterpart: it sits between the node’s MAC and its virtual mux bundle, admits each transmit against the combined budget, and records the airtime once the transmit completes.

A refused transmit is reported as [TxError::CadTimeout] — the one transmit error the MAC treats as “channel unavailable right now”: it backs off with jitter, retries a bounded number of times, and then drops the frame. Any other error would surface as a fatal MacError::Transmit and kill the node pump, which must never be a consequence of duty limiting. A budget exhausted this hour rarely recovers within the MAC’s short backoff horizon, so a refused frame is effectively shed — exactly the spec’s posture (transmits never wait for duty-cycle allowance).

Structs§

DutyGatedRadio
A [Radio] decorator enforcing the shared duty budget.