Skip to content

Commit 0e938d4

Browse files
author
Daniel Jäckle
committed
AckTimeoutRetriesCounter must be reset every time a new request (unconfirmed or confirmed) is performed.
If the counter isn't reset when switching between Confirmed and Unconfirmed messages we could end-up by increment the UpLinkCounter by 2. This situation happens only if one of the PrepareRxDoneAbort conditions is fulfilled between Confirmed messages and Unconfirmed messages.
1 parent 94290fd commit 0e938d4

File tree

1 file changed

+3
-1
lines changed

1 file changed

+3
-1
lines changed

src/mac/LoRaMac.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3231,6 +3231,9 @@ LoRaMacStatus_t LoRaMacMcpsRequest( McpsReq_t *mcpsRequest )
32313231
memset1 ( ( uint8_t* ) &McpsConfirm, 0, sizeof( McpsConfirm ) );
32323232
McpsConfirm.Status = LORAMAC_EVENT_INFO_STATUS_ERROR;
32333233

3234+
// AckTimeoutRetriesCounter must be reset every time a new request (unconfirmed or confirmed) is performed.
3235+
AckTimeoutRetriesCounter = 1;
3236+
32343237
switch( mcpsRequest->Type )
32353238
{
32363239
case MCPS_UNCONFIRMED:
@@ -3248,7 +3251,6 @@ LoRaMacStatus_t LoRaMacMcpsRequest( McpsReq_t *mcpsRequest )
32483251
case MCPS_CONFIRMED:
32493252
{
32503253
readyToSend = true;
3251-
AckTimeoutRetriesCounter = 1;
32523254
AckTimeoutRetries = mcpsRequest->Req.Confirmed.NbTrials;
32533255

32543256
macHdr.Bits.MType = FRAME_TYPE_DATA_CONFIRMED_UP;

0 commit comments

Comments
 (0)