@@ -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