Bug related to downlink sequence counter rollover

pull/10154/head
itziar 2019-03-18 11:08:57 +01:00
parent 54602f55ba
commit 5beef7405c
1 changed files with 7 additions and 10 deletions

View File

@ -319,8 +319,11 @@ bool LoRaMac::message_integrity_check(const uint8_t *const payload,
sequence_counter_prev = (uint16_t) * downlink_counter;
sequence_counter_diff = sequence_counter - sequence_counter_prev;
*downlink_counter += sequence_counter_diff;
if (sequence_counter < sequence_counter_prev) {
*downlink_counter += 0x10000;
if (sequence_counter_diff >= _lora_phy->get_maximum_frame_counter_gap()) {
_mcps_indication.status = LORAMAC_EVENT_INFO_STATUS_DOWNLINK_TOO_MANY_FRAMES_LOST;
_mcps_indication.dl_frame_counter = *downlink_counter;
return false;
}
// sizeof nws_skey must be the same as _params.keys.nwk_skey,
@ -334,12 +337,6 @@ bool LoRaMac::message_integrity_check(const uint8_t *const payload,
return false;
}
if (sequence_counter_diff >= _lora_phy->get_maximum_frame_counter_gap()) {
_mcps_indication.status = LORAMAC_EVENT_INFO_STATUS_DOWNLINK_TOO_MANY_FRAMES_LOST;
_mcps_indication.dl_frame_counter = *downlink_counter;
return false;
}
return true;
}