pub enum AckState {
Queued {
needs_forward_confirmation: bool,
},
AwaitingForward {
confirm_deadline_ms: u64,
},
RetryQueued,
AwaitingAck,
}Expand description
Tracks which phase of the two-stage ACK lifecycle a pending transmission is in.
UMSH ACK-requested sends go through several waiting phases before the coordinator either confirms delivery or gives up:
-
Queued— the send has been accepted by the coordinator but has not yet gone on-air. Deadlines do not begin running until the first successful transmit. -
AwaitingForward— after a forwarded send is transmitted, the coordinator listens to see if the frame is re-broadcast by a repeater withinconfirm_deadline_ms. Because LoRa links are half-duplex, the sender may not be in direct range of the destination but can hear the repeater that retransmitted the frame, providing an early, cheap confirmation that the packet made it to the next hop. -
RetryQueued— the forwarding-confirmation timer expired, so the coordinator scheduled a retransmission after jittered retry backoff. No forwarding-confirmation timer runs in this state; a new one is armed only after the retransmission actually goes on-air. -
AwaitingAck— the coordinator waits for the destination to return a MAC ACK packet containing the correct ACK tag (a CMAC-derived value only the destination can compute after successfully decrypting the original frame). The absolute deadline isPendingAck::ack_deadline_ms; expiry means the send failed.
Nodes in direct radio range of the destination skip AwaitingForward entirely and move
from Queued straight to AwaitingAck after the first successful transmit.
Variants§
Queued
Accepted for transmission but not yet sent.
AwaitingForward
Waiting to overhear forwarding confirmation from the next hop.
RetryQueued
Retransmission is queued with a retry backoff delay.
AwaitingAck
Waiting for the final destination’s transport ACK.
Trait Implementations§
impl Copy for AckState
impl Eq for AckState
impl StructuralPartialEq for AckState
Auto Trait Implementations§
impl Freeze for AckState
impl RefUnwindSafe for AckState
impl Send for AckState
impl Sync for AckState
impl Unpin for AckState
impl UnwindSafe for AckState
Blanket Implementations§
§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§unsafe fn clone_to_uninit(&self, dest: *mut u8)
unsafe fn clone_to_uninit(&self, dest: *mut u8)
clone_to_uninit)