@@ -841,7 +841,10 @@ static int8_t AlternateDatarate( uint16_t nbTrials );
841841 */
842842LoRaMacStatus_t SendFrameOnChannel ( ChannelParams_t channel );
843843
844-
844+ /*!
845+ * \brief Resets MAC specific parameters to default
846+ */
847+ static void ResetMacParameters ( void );
845848
846849static void OnRadioTxDone ( void )
847850{
@@ -2791,6 +2794,66 @@ static int8_t AlternateDatarate( uint16_t nbTrials )
27912794 return datarate ;
27922795}
27932796
2797+ static void ResetMacParameters ( void )
2798+ {
2799+ IsLoRaMacNetworkJoined = false;
2800+
2801+ // Counters
2802+ UpLinkCounter = 1 ;
2803+ DownLinkCounter = 0 ;
2804+ AdrAckCounter = 0 ;
2805+
2806+ ChannelsNbRepCounter = 0 ;
2807+
2808+ AckTimeoutRetries = 1 ;
2809+ AckTimeoutRetriesCounter = 1 ;
2810+ AckTimeoutRetry = false;
2811+
2812+ MaxDCycle = 0 ;
2813+ AggregatedDCycle = 1 ;
2814+
2815+ MacCommandsBufferIndex = 0 ;
2816+ MacCommandsBufferToRepeatIndex = 0 ;
2817+
2818+ IsRxWindowsEnabled = true;
2819+
2820+ LoRaMacParams .ChannelsTxPower = LoRaMacParamsDefaults .ChannelsTxPower ;
2821+ LoRaMacParams .ChannelsDatarate = LoRaMacParamsDefaults .ChannelsDatarate ;
2822+
2823+ LoRaMacParams .MaxRxWindow = LoRaMacParamsDefaults .MaxRxWindow ;
2824+ LoRaMacParams .ReceiveDelay1 = LoRaMacParamsDefaults .ReceiveDelay1 ;
2825+ LoRaMacParams .ReceiveDelay2 = LoRaMacParamsDefaults .ReceiveDelay2 ;
2826+ LoRaMacParams .JoinAcceptDelay1 = LoRaMacParamsDefaults .JoinAcceptDelay1 ;
2827+ LoRaMacParams .JoinAcceptDelay2 = LoRaMacParamsDefaults .JoinAcceptDelay2 ;
2828+
2829+ LoRaMacParams .Rx1DrOffset = LoRaMacParamsDefaults .Rx1DrOffset ;
2830+ LoRaMacParams .ChannelsNbRep = LoRaMacParamsDefaults .ChannelsNbRep ;
2831+
2832+ LoRaMacParams .Rx2Channel = LoRaMacParamsDefaults .Rx2Channel ;
2833+
2834+ memcpy1 ( ( uint8_t * ) LoRaMacParams .ChannelsMask , ( uint8_t * ) LoRaMacParamsDefaults .ChannelsMask , sizeof ( LoRaMacParams .ChannelsMask ) );
2835+
2836+ #if defined( USE_BAND_915 ) || defined( USE_BAND_915_HYBRID )
2837+ memcpy1 ( ( uint8_t * ) ChannelsMaskRemaining , ( uint8_t * ) LoRaMacParamsDefaults .ChannelsMask , sizeof ( LoRaMacParams .ChannelsMask ) );
2838+ #endif
2839+
2840+
2841+ NodeAckRequested = false;
2842+ SrvAckRequested = false;
2843+ MacCommandsInNextTx = false;
2844+
2845+ // Reset Multicast downlink counters
2846+ MulticastParams_t * cur = MulticastChannels ;
2847+ while ( cur != NULL )
2848+ {
2849+ cur -> DownLinkCounter = 0 ;
2850+ cur = cur -> Next ;
2851+ }
2852+
2853+ // Initialize channel index.
2854+ Channel = LORA_MAX_NB_CHANNELS ;
2855+ }
2856+
27942857LoRaMacStatus_t PrepareFrame ( LoRaMacHeader_t * macHdr , LoRaMacFrameCtrl_t * fCtrl , uint8_t fPort , void * fBuffer , uint16_t fBufferSize )
27952858{
27962859 uint16_t i ;
0 commit comments