Skip to content

Commit 23bb8cf

Browse files
Daniel Jaecklemluis1
authored andcommitted
Fixed issue with RX2 data rate in case of 0x0F for RxParamSetupReq and JoinAccept
1 parent c109048 commit 23bb8cf

File tree

1 file changed

+21
-6
lines changed

1 file changed

+21
-6
lines changed

src/mac/LoRaMac.c

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -998,10 +998,14 @@ static void ProcessRadioRxDone( void )
998998
}
999999

10001000
VerifyParams_t verifyRxDr;
1001-
bool rxDrValid = false;
1002-
verifyRxDr.DatarateParams.Datarate = macMsgJoinAccept.DLSettings.Bits.RX2DataRate;
1003-
verifyRxDr.DatarateParams.DownlinkDwellTime = Nvm.MacGroup2.MacParams.DownlinkDwellTime;
1004-
rxDrValid = RegionVerify( Nvm.MacGroup2.Region, &verifyRxDr, PHY_RX_DR );
1001+
bool rxDrValid = true;
1002+
1003+
if( macMsgJoinAccept.DLSettings.Bits.RX2DataRate != 0x0F )
1004+
{
1005+
verifyRxDr.DatarateParams.Datarate = macMsgJoinAccept.DLSettings.Bits.RX2DataRate;
1006+
verifyRxDr.DatarateParams.DownlinkDwellTime = Nvm.MacGroup2.MacParams.DownlinkDwellTime;
1007+
rxDrValid = RegionVerify( Nvm.MacGroup2.Region, &verifyRxDr, PHY_RX_DR );
1008+
}
10051009

10061010
if( ( LORAMAC_CRYPTO_SUCCESS == macCryptoStatus ) && ( rxDrValid == true ) )
10071011
{
@@ -1015,8 +1019,13 @@ static void ProcessRadioRxDone( void )
10151019

10161020
// DLSettings
10171021
Nvm.MacGroup2.MacParams.Rx1DrOffset = macMsgJoinAccept.DLSettings.Bits.RX1DRoffset;
1018-
Nvm.MacGroup2.MacParams.Rx2Channel.Datarate = macMsgJoinAccept.DLSettings.Bits.RX2DataRate;
1019-
Nvm.MacGroup2.MacParams.RxCChannel.Datarate = macMsgJoinAccept.DLSettings.Bits.RX2DataRate;
1022+
1023+
// Verify if we shall assign the new datarate
1024+
if( macMsgJoinAccept.DLSettings.Bits.RX2DataRate != 0x0F )
1025+
{
1026+
Nvm.MacGroup2.MacParams.Rx2Channel.Datarate = macMsgJoinAccept.DLSettings.Bits.RX2DataRate;
1027+
Nvm.MacGroup2.MacParams.RxCChannel.Datarate = macMsgJoinAccept.DLSettings.Bits.RX2DataRate;
1028+
}
10201029

10211030
// RxDelay
10221031
Nvm.MacGroup2.MacParams.ReceiveDelay1 = macMsgJoinAccept.RxDelay;
@@ -2289,6 +2298,12 @@ static void ProcessMacCommands( uint8_t *payload, uint8_t macIndex, uint8_t comm
22892298
rxParamSetupReq.Datarate = payload[macIndex] & 0x0F;
22902299
macIndex++;
22912300

2301+
if( rxParamSetupReq.Datarate == 0x0F )
2302+
{
2303+
// Keep the current datarate
2304+
rxParamSetupReq.Datarate = Nvm.MacGroup2.MacParams.Rx2Channel.Datarate;
2305+
}
2306+
22922307
rxParamSetupReq.Frequency = ( uint32_t ) payload[macIndex++];
22932308
rxParamSetupReq.Frequency |= ( uint32_t ) payload[macIndex++] << 8;
22942309
rxParamSetupReq.Frequency |= ( uint32_t ) payload[macIndex++] << 16;

0 commit comments

Comments
 (0)