device_runner

Function device_runner 

Source
pub async fn device_runner<RK, DLY, M, const RX: usize, const TX: usize>(
    lora: LoRa<RK, DLY>,
    ch: &'static Channels<M, RX, TX>,
    ctl: &'static DeviceControl<M>,
    rx_preamble: u16,
    tx_preamble: u16,
) -> !
where RK: RadioKind, DLY: DelayNs, M: RawMutex,
Expand description

Device variant of runner: same RX/TX state machine, but the modulation parameters, frequency, and power come from an DeviceControl at runtime instead of being fixed at spawn.

The radio starts idle (in standby) until the first enabled settings arrive. While disabled, TX requests stay queued — the ULCP session rejects transmits with STATUS_INVALID_STATE before they reach this queue, so nothing accumulates in practice.

Cancellation-safety analysis is identical to runner: only wait_for_irq and the two channel/signal waits are cancelled by the select; IRQ processing and TX always run to completion.