@@ -2880,12 +2880,12 @@ static LoRaMacStatus_t ScheduleTx( void )
28802880
28812881 // Compute Rx1 windows parameters
28822882#if ( defined( USE_BAND_915 ) || defined( USE_BAND_915_HYBRID ) )
2883- RxWindowsParams [0 ] = ComputeRxWindowParameters ( DatarateOffsets [LoRaMacParams .ChannelsDatarate ][LoRaMacParams .Rx1DrOffset ], DEFAULT_SYSTEM_MAX_RX_ERROR );
2883+ RxWindowsParams [0 ] = ComputeRxWindowParameters ( DatarateOffsets [LoRaMacParams .ChannelsDatarate ][LoRaMacParams .Rx1DrOffset ], LoRaMacParams . SystemMaxRxError );
28842884#else
2885- RxWindowsParams [0 ] = ComputeRxWindowParameters ( MAX ( DR_0 , LoRaMacParams .ChannelsDatarate - LoRaMacParams .Rx1DrOffset ), DEFAULT_SYSTEM_MAX_RX_ERROR );
2885+ RxWindowsParams [0 ] = ComputeRxWindowParameters ( MAX ( DR_0 , LoRaMacParams .ChannelsDatarate - LoRaMacParams .Rx1DrOffset ), LoRaMacParams . SystemMaxRxError );
28862886#endif
28872887 // Compute Rx2 windows parameters
2888- RxWindowsParams [1 ] = ComputeRxWindowParameters ( LoRaMacParams .Rx2Channel .Datarate , DEFAULT_SYSTEM_MAX_RX_ERROR );
2888+ RxWindowsParams [1 ] = ComputeRxWindowParameters ( LoRaMacParams .Rx2Channel .Datarate , LoRaMacParams . SystemMaxRxError );
28892889
28902890 if ( IsLoRaMacNetworkJoined == false )
28912891 {
@@ -3047,6 +3047,8 @@ static void ResetMacParameters( void )
30473047 LoRaMacParams .ChannelsTxPower = LoRaMacParamsDefaults .ChannelsTxPower ;
30483048 LoRaMacParams .ChannelsDatarate = LoRaMacParamsDefaults .ChannelsDatarate ;
30493049
3050+ LoRaMacParams .SystemMaxRxError = LoRaMacParamsDefaults .SystemMaxRxError ;
3051+ LoRaMacParams .MinRxSymbols = LoRaMacParamsDefaults .MinRxSymbols ;
30503052 LoRaMacParams .MaxRxWindow = LoRaMacParamsDefaults .MaxRxWindow ;
30513053 LoRaMacParams .ReceiveDelay1 = LoRaMacParamsDefaults .ReceiveDelay1 ;
30523054 LoRaMacParams .ReceiveDelay2 = LoRaMacParamsDefaults .ReceiveDelay2 ;
@@ -3386,6 +3388,8 @@ LoRaMacStatus_t LoRaMacInitialization( LoRaMacPrimitives_t *primitives, LoRaMacC
33863388 LoRaMacParamsDefaults .ChannelsTxPower = LORAMAC_DEFAULT_TX_POWER ;
33873389 LoRaMacParamsDefaults .ChannelsDatarate = LORAMAC_DEFAULT_DATARATE ;
33883390
3391+ LoRaMacParamsDefaults .SystemMaxRxError = 10 ;
3392+ LoRaMacParamsDefaults .MinRxSymbols = 6 ;
33893393 LoRaMacParamsDefaults .MaxRxWindow = MAX_RX_WINDOW ;
33903394 LoRaMacParamsDefaults .ReceiveDelay1 = RECEIVE_DELAY1 ;
33913395 LoRaMacParamsDefaults .ReceiveDelay2 = RECEIVE_DELAY2 ;
@@ -3675,6 +3679,16 @@ LoRaMacStatus_t LoRaMacMibGetRequestConfirm( MibRequestConfirm_t *mibGet )
36753679 mibGet -> Param .MulticastList = MulticastChannels ;
36763680 break ;
36773681 }
3682+ case MIB_SYSTEM_MAX_RX_ERROR :
3683+ {
3684+ mibGet -> Param .SystemMaxRxError = LoRaMacParams .SystemMaxRxError ;
3685+ break ;
3686+ }
3687+ case MIB_MIN_RX_SYMBOLS :
3688+ {
3689+ mibGet -> Param .MinRxSymbols = LoRaMacParams .MinRxSymbols ;
3690+ break ;
3691+ }
36783692 default :
36793693 status = LORAMAC_STATUS_SERVICE_UNKNOWN ;
36803694 break ;
@@ -3990,6 +4004,16 @@ LoRaMacStatus_t LoRaMacMibSetRequestConfirm( MibRequestConfirm_t *mibSet )
39904004 DownLinkCounter = mibSet -> Param .DownLinkCounter ;
39914005 break ;
39924006 }
4007+ case MIB_SYSTEM_MAX_RX_ERROR :
4008+ {
4009+ LoRaMacParams .SystemMaxRxError = LoRaMacParamsDefaults .SystemMaxRxError = mibSet -> Param .SystemMaxRxError ;
4010+ break ;
4011+ }
4012+ case MIB_MIN_RX_SYMBOLS :
4013+ {
4014+ LoRaMacParams .MinRxSymbols = LoRaMacParamsDefaults .MinRxSymbols = mibSet -> Param .MinRxSymbols ;
4015+ break ;
4016+ }
39934017 default :
39944018 status = LORAMAC_STATUS_SERVICE_UNKNOWN ;
39954019 break ;
@@ -4475,7 +4499,7 @@ static RxConfigParams_t ComputeRxWindowParameters( int8_t datarate, uint32_t rxE
44754499 tSymbol = ( ( double )( 1 << Datarates [datarate ] ) / ( double )Bandwidths [datarate ] ) * 1e3 ;
44764500 }
44774501
4478- rxConfigParams .RxWindowTimeout = MAX ( ( uint32_t )ceil ( ( ( 2 * DEFAULT_MIN_RX_SYMBOLS - 8 ) * tSymbol + 2 * rxError ) / tSymbol ), DEFAULT_MIN_RX_SYMBOLS ); // Computed number of symbols
4502+ rxConfigParams .RxWindowTimeout = MAX ( ( uint32_t )ceil ( ( ( 2 * LoRaMacParams . MinRxSymbols - 8 ) * tSymbol + 2 * rxError ) / tSymbol ), LoRaMacParams . MinRxSymbols ); // Computed number of symbols
44794503
44804504 rxConfigParams .RxOffset = ( int32_t )ceil ( ( 4.0 * tSymbol ) - ( ( rxConfigParams .RxWindowTimeout * tSymbol ) / 2.0 ) - RADIO_WAKEUP_TIME );
44814505
0 commit comments