Use protocol constants for ACK airtime window sizing
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user