Skip to content

Commit b532a2b

Browse files
committed
Update implementation to restore the default channelsmask after a join request
1 parent a3039c9 commit b532a2b

File tree

12 files changed

+81
-3
lines changed

12 files changed

+81
-3
lines changed

src/mac/LoRaMac.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2112,6 +2112,9 @@ static void ResetMacParameters( void )
21122112
LoRaMacParams.MaxEirp = LoRaMacParamsDefaults.MaxEirp;
21132113
LoRaMacParams.AntennaGain = LoRaMacParamsDefaults.AntennaGain;
21142114

2115+
// Reset to application defaults
2116+
RegionInitDefaults( LoRaMacRegion, INIT_TYPE_APP_DEFAULTS );
2117+
21152118
NodeAckRequested = false;
21162119
SrvAckRequested = false;
21172120
MacCommandsInNextTx = false;

src/mac/region/Region.h

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -659,13 +659,19 @@ typedef enum ePhyAttribute
659659
typedef enum eInitType
660660
{
661661
/*!
662-
* Performs an initialization and overwrites all existing data.
662+
* Initializes the region specific data to defaults, according to the
663+
* LoRaWAN specification.
663664
*/
664665
INIT_TYPE_INIT,
665666
/*!
666-
* Restores default channels only.
667+
* Restores default channels defined by the LoRaWAN specification only.
667668
*/
668-
INIT_TYPE_RESTORE
669+
INIT_TYPE_RESTORE,
670+
/*!
671+
* Initializes the region specific data to the defaults which were set by
672+
* the application.
673+
*/
674+
INIT_TYPE_APP_DEFAULTS
669675
}InitType_t;
670676

671677
typedef enum eChannelsMask

src/mac/region/RegionAS923.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -363,6 +363,12 @@ void RegionAS923InitDefaults( InitType_t type )
363363
ChannelsMask[0] |= ChannelsDefaultMask[0];
364364
break;
365365
}
366+
case INIT_TYPE_APP_DEFAULTS:
367+
{
368+
// Update the channels mask defaults
369+
RegionCommonChanMaskCopy( ChannelsMask, ChannelsDefaultMask, 1 );
370+
break;
371+
}
366372
default:
367373
{
368374
break;

src/mac/region/RegionAU915.c

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -333,6 +333,15 @@ void RegionAU915InitDefaults( InitType_t type )
333333
}
334334
break;
335335
}
336+
case INIT_TYPE_APP_DEFAULTS:
337+
{
338+
// Copy channels default mask
339+
RegionCommonChanMaskCopy( ChannelsMask, ChannelsDefaultMask, 6 );
340+
341+
// Copy into channels mask remaining
342+
RegionCommonChanMaskCopy( ChannelsMaskRemaining, ChannelsMask, 6 );
343+
break;
344+
}
336345
default:
337346
{
338347
break;

src/mac/region/RegionCN470.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -313,6 +313,12 @@ void RegionCN470InitDefaults( InitType_t type )
313313
RegionCommonChanMaskCopy( ChannelsMask, ChannelsDefaultMask, 6 );
314314
break;
315315
}
316+
case INIT_TYPE_APP_DEFAULTS:
317+
{
318+
// Update the channels mask defaults
319+
RegionCommonChanMaskCopy( ChannelsMask, ChannelsDefaultMask, 6 );
320+
break;
321+
}
316322
default:
317323
{
318324
break;

src/mac/region/RegionCN779.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -325,6 +325,12 @@ void RegionCN779InitDefaults( InitType_t type )
325325
ChannelsMask[0] |= ChannelsDefaultMask[0];
326326
break;
327327
}
328+
case INIT_TYPE_APP_DEFAULTS:
329+
{
330+
// Update the channels mask defaults
331+
RegionCommonChanMaskCopy( ChannelsMask, ChannelsDefaultMask, 1 );
332+
break;
333+
}
328334
default:
329335
{
330336
break;

src/mac/region/RegionEU433.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -325,6 +325,12 @@ void RegionEU433InitDefaults( InitType_t type )
325325
ChannelsMask[0] |= ChannelsDefaultMask[0];
326326
break;
327327
}
328+
case INIT_TYPE_APP_DEFAULTS:
329+
{
330+
// Update the channels mask defaults
331+
RegionCommonChanMaskCopy( ChannelsMask, ChannelsDefaultMask, 1 );
332+
break;
333+
}
328334
default:
329335
{
330336
break;

src/mac/region/RegionEU868.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -354,6 +354,12 @@ void RegionEU868InitDefaults( InitType_t type )
354354
ChannelsMask[0] |= ChannelsDefaultMask[0];
355355
break;
356356
}
357+
case INIT_TYPE_APP_DEFAULTS:
358+
{
359+
// Update the channels mask defaults
360+
RegionCommonChanMaskCopy( ChannelsMask, ChannelsDefaultMask, 1 );
361+
break;
362+
}
357363
default:
358364
{
359365
break;

src/mac/region/RegionIN865.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -329,6 +329,12 @@ void RegionIN865InitDefaults( InitType_t type )
329329
ChannelsMask[0] |= ChannelsDefaultMask[0];
330330
break;
331331
}
332+
case INIT_TYPE_APP_DEFAULTS:
333+
{
334+
// Update the channels mask defaults
335+
RegionCommonChanMaskCopy( ChannelsMask, ChannelsDefaultMask, 1 );
336+
break;
337+
}
332338
default:
333339
{
334340
break;

src/mac/region/RegionKR920.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -348,6 +348,12 @@ void RegionKR920InitDefaults( InitType_t type )
348348
ChannelsMask[0] |= ChannelsDefaultMask[0];
349349
break;
350350
}
351+
case INIT_TYPE_APP_DEFAULTS:
352+
{
353+
// Update the channels mask defaults
354+
RegionCommonChanMaskCopy( ChannelsMask, ChannelsDefaultMask, 1 );
355+
break;
356+
}
351357
default:
352358
{
353359
break;

0 commit comments

Comments
 (0)