Use protocol constants for ACK airtime window sizing

This commit is contained in:
2026-02-04 14:40:34 +01:00
parent 373667ab8a
commit c3e5ba3a53
2 changed files with 11 additions and 3 deletions

View File

@@ -451,7 +451,7 @@ static void send_batch_ack(uint16_t batch_id, uint8_t sample_count) {
LoraPacket ack = {};
ack.msg_kind = LoraMsgKind::AckDown;
ack.device_id_short = g_short_id;
ack.payload_len = 7;
ack.payload_len = LORA_ACK_DOWN_PAYLOAD_LEN;
ack.payload[0] = time_valid;
write_u16_be(&ack.payload[1], batch_id);
write_u32_be(&ack.payload[3], epoch);
@@ -848,7 +848,7 @@ static void sender_loop() {
if (g_batch_ack_pending) {
LoraPacket ack_pkt = {};
const uint32_t ack_len = 3 + 7 + 2;
constexpr size_t ack_len = lora_frame_size(LORA_ACK_DOWN_PAYLOAD_LEN);
uint32_t ack_air_ms = lora_airtime_ms(ack_len);
uint32_t ack_window_ms = ack_air_ms + 300;
if (ack_window_ms < 1200) {
@@ -874,7 +874,7 @@ static void sender_loop() {
sender_note_rx_reject(lora_get_last_rx_reject_reason(), "ack");
} else if (ack_pkt.msg_kind != LoraMsgKind::AckDown) {
sender_note_rx_reject(RxRejectReason::InvalidMsgKind, "ack");
} else if (ack_pkt.payload_len < 7) {
} else if (ack_pkt.payload_len < LORA_ACK_DOWN_PAYLOAD_LEN) {
sender_note_rx_reject(RxRejectReason::LengthMismatch, "ack");
} else {
uint8_t time_valid = ack_pkt.payload[0] & 0x01;