Skip to content

Commit b9d3aac

Browse files
author
Daniel Jäckle
committed
Add function to reset MAC parameters.
1 parent 21c9213 commit b9d3aac

File tree

1 file changed

+64
-1
lines changed

1 file changed

+64
-1
lines changed

src/mac/LoRaMac.c

Lines changed: 64 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -841,7 +841,10 @@ static int8_t AlternateDatarate( uint16_t nbTrials );
841841
*/
842842
LoRaMacStatus_t SendFrameOnChannel( ChannelParams_t channel );
843843

844-
844+
/*!
845+
* \brief Resets MAC specific parameters to default
846+
*/
847+
static void ResetMacParameters( void );
845848

846849
static 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+
27942857
LoRaMacStatus_t PrepareFrame( LoRaMacHeader_t *macHdr, LoRaMacFrameCtrl_t *fCtrl, uint8_t fPort, void *fBuffer, uint16_t fBufferSize )
27952858
{
27962859
uint16_t i;

0 commit comments

Comments
 (0)