Fork of Semtech LoRaWAN stack
Fork of LoRaWAN-lib by
Diff: LoRaMac.cpp
- Branch:
- v4.2.0
- Revision:
- 20:92764fda7371
- Parent:
- 19:838d3e8dffc6
- Child:
- 21:4ccde8ee9ac8
--- a/LoRaMac.cpp Thu Sep 15 19:47:38 2016 +0000
+++ b/LoRaMac.cpp Mon Sep 19 09:45:15 2016 +0000
@@ -15,7 +15,7 @@
License: Revised BSD License, see LICENSE.TXT file include in the project
-Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jäckle ( STACKFORCE )
+Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jäckle ( STACKFORCE )
*/
#include "board.h"
@@ -41,6 +41,17 @@
#define LORA_MAC_FRMPAYLOAD_OVERHEAD 13 // MHDR(1) + FHDR(7) + Port(1) + MIC(4)
/*!
+ * Minimum number of available channels in Frequency Hopping Mode
+ */
+#define FRQ_HOP_CHNLS_MIN 50
+
+/*!
+ * Minimum number of available channels in Hybrid Mode
+ */
+#define HYBRD_CHNLS_MIN 4
+
+
+/*!
* Device IEEE EUI
*/
static uint8_t *LoRaMacDevEui;
@@ -2230,7 +2241,7 @@
}
else
{
- if( CountNbEnabled125kHzChannels( ChannelsMask ) < 50 )
+ if( CountNbEnabled125kHzChannels( ChannelsMask ) < FRQ_HOP_CHNLS_MIN )
{// Limit tx power to max 21dBm
resultTxPower = MAX( txPower, TX_POWER_20_DBM );
}
@@ -2748,7 +2759,7 @@
status &= 0xFD; // Datarate KO
}
- if( CountNbEnabled125kHzChannels( channelsMask ) < 6 )
+ if( ( CountNbEnabled125kHzChannels( channelsMask ) > 0 ) && ( CountNbEnabled125kHzChannels( channelsMask ) < HYBRD_CHNLS_MIN ) )
{
status &= 0xFE; // Channel mask KO
}
@@ -2764,6 +2775,7 @@
if( ( status & 0x07 ) == 0x07 )
{
ChannelsDatarate = datarate;
+ ChannelsDefaultDatarate = datarate;
ChannelsTxPower = txPower;
ChannelsMask[0] = channelsMask[0];
@@ -3547,7 +3559,7 @@
#endif
if( chanMaskState == true )
{
- if( ( CountNbEnabled125kHzChannels( mibSet->Param.ChannelsMask ) < 6 ) &&
+ if( ( CountNbEnabled125kHzChannels( mibSet->Param.ChannelsMask ) < HYBRD_CHNLS_MIN ) &&
( CountNbEnabled125kHzChannels( mibSet->Param.ChannelsMask ) > 0 ) )
{
status = LORAMAC_STATUS_PARAMETER_INVALID;
