Uttam Bhat / LoRaWAN-SX1276-Application-Demo

Dependencies:   X_NUCLEO_IKS01A1 LoRaWAN-lib SX1276Lib mbed

Files at this revision

API Documentation at this revision

Comitter:
ubhat
Date:
Wed Jul 18 22:26:26 2018 +0000
Parent:
5:8654260e3d16
Commit message:
Add Channel Block option in Config.h; Fix board specific DevEUI allocation

Changed in this revision

app/Config.h Show annotated file Show diff for this revision Revisions of this file
app/LoRaDeviceStateProc.cpp Show annotated file Show diff for this revision Revisions of this file
app/main.cpp Show annotated file Show diff for this revision Revisions of this file
board/board.cpp Show annotated file Show diff for this revision Revisions of this file
mac/LoRaWAN-lib.lib Show annotated file Show diff for this revision Revisions of this file
--- a/app/Config.h	Sun Nov 26 03:26:34 2017 +0000
+++ b/app/Config.h	Wed Jul 18 22:26:26 2018 +0000
@@ -28,6 +28,12 @@
  */
 #define USE_BAND_915
 
+#else
+/*!
+ * Configure Channel Block A thru H
+ */
+#define USE_BAND_915_HYBRID_BLOCK_A
+
 #endif
 
 /*!
@@ -45,14 +51,14 @@
  * \remark 1 : Confirmed messages enabled. Must receive ACK from network server
            0 : Confirmed messages disabled. 
  */
-#define LORAWAN_CONFIRMED_MSG_ON                    1
+#define LORAWAN_CONFIRMED_MSG_ON                    0
 
 /*!
  * LoRaWAN Adaptive Data Rate
  *
  * \remark Please note that when ADR is enabled the end-device uses default datarate of DR_0
  */
-#define LORAWAN_ADR_ON                              0
+#define LORAWAN_ADR_ON                              1
 
 /*!
  * Default mote datarate
@@ -70,7 +76,7 @@
  *
  * \remark The Tx power level is set as TX_POWER_P_DBM, where 10 <= P <= 30 and P is even value { i.e. P = 10, 12, 14 ... 28 or 30 }
  */
-#define LORAWAN_TX_POWER                            TX_POWER_20_DBM
+#define LORAWAN_TX_POWER                            TX_POWER_14_DBM
 
 #if ( LORAWAN_APP_PORT == 5 )
 /*====================================================
--- a/app/LoRaDeviceStateProc.cpp	Sun Nov 26 03:26:34 2017 +0000
+++ b/app/LoRaDeviceStateProc.cpp	Wed Jul 18 22:26:26 2018 +0000
@@ -30,6 +30,7 @@
 
 MlmeReq_t mlmeReq;
 
+uint16_t ChannelMaskTemp[6] = {0};
 
 /*!
  * \brief Function executed on TxNextPacket Timeout event
@@ -79,6 +80,86 @@
     LoRaMibReq.Type = MIB_CHANNELS_TX_POWER;
     LoRaMibReq.Param.ChannelsTxPower = LORAWAN_TX_POWER;
     LoRaMacMibSetRequestConfirm( &LoRaMibReq );
+    
+    LoRaMibReq.Type = MIB_CHANNELS_MASK;
+    LoRaMibReq.Param.ChannelsMask = ChannelMaskTemp;    
+    
+#ifdef USE_BAND_915_HYBRID_BLOCK_A
+
+    ChannelMaskTemp[0] = 0x00FF;
+    ChannelMaskTemp[1] = 0x0000;
+    ChannelMaskTemp[2] = 0x0000;
+    ChannelMaskTemp[3] = 0x0000;
+    ChannelMaskTemp[4] = 0x0001;
+
+#elif defined USE_BAND_915_HYBRID_BLOCK_B
+
+    ChannelMaskTemp[0] = 0xFF00;
+    ChannelMaskTemp[1] = 0x0000;
+    ChannelMaskTemp[2] = 0x0000;
+    ChannelMaskTemp[3] = 0x0000;
+    ChannelMaskTemp[4] = 0x0002;
+
+#elif defined USE_BAND_915_HYBRID_BLOCK_C
+
+    ChannelMaskTemp[0] = 0x0000;
+    ChannelMaskTemp[1] = 0x00FF;    
+    ChannelMaskTemp[2] = 0x0000;
+    ChannelMaskTemp[3] = 0x0000;
+    ChannelMaskTemp[4] = 0x0004;
+
+#elif defined USE_BAND_915_HYBRID_BLOCK_D
+
+    ChannelMaskTemp[0] = 0x0000;
+    ChannelMaskTemp[1] = 0xFF00;    
+    ChannelMaskTemp[2] = 0x0000;
+    ChannelMaskTemp[3] = 0x0000;
+    ChannelMaskTemp[4] = 0x0008;
+
+#elif defined USE_BAND_915_HYBRID_BLOCK_E
+
+    ChannelMaskTemp[0] = 0x0000;
+    ChannelMaskTemp[1] = 0x0000;
+    ChannelMaskTemp[2] = 0x00FF;    
+    ChannelMaskTemp[3] = 0x0000;
+    ChannelMaskTemp[4] = 0x0010;
+
+#elif defined USE_BAND_915_HYBRID_BLOCK_F
+
+    ChannelMaskTemp[0] = 0x0000;
+    ChannelMaskTemp[1] = 0x0000;
+    ChannelMaskTemp[2] = 0xFF00;    
+    ChannelMaskTemp[3] = 0x0000;
+    ChannelMaskTemp[4] = 0x0020;
+
+#elif defined USE_BAND_915_HYBRID_BLOCK_G
+
+    ChannelMaskTemp[0] = 0x0000;
+    ChannelMaskTemp[1] = 0x0000;
+    ChannelMaskTemp[2] = 0x0000;
+    ChannelMaskTemp[3] = 0x00FF;    
+    ChannelMaskTemp[4] = 0x0040;
+
+#elif defined USE_BAND_915_HYBRID_BLOCK_H
+
+    ChannelMaskTemp[0] = 0x0000;
+    ChannelMaskTemp[1] = 0x0000;
+    ChannelMaskTemp[2] = 0x0000;
+    ChannelMaskTemp[3] = 0xFF00;    
+    ChannelMaskTemp[4] = 0x0080;
+
+#elif defined USE_BAND_915
+
+    ChannelMaskTemp[0] = 0xFFFF;
+    ChannelMaskTemp[1] = 0xFFFF;
+    ChannelMaskTemp[2] = 0xFFFF;
+    ChannelMaskTemp[3] = 0xFFFF;
+    ChannelMaskTemp[4] = 0x00FF;
+    ChannelMaskTemp[5] = 0x0000;
+
+#endif
+
+    LoRaMacMibSetRequestConfirm( &LoRaMibReq );    
 
     LoRaMacDownlinkStatus.DownlinkCounter = 0;
 }
--- a/app/main.cpp	Sun Nov 26 03:26:34 2017 +0000
+++ b/app/main.cpp	Wed Jul 18 22:26:26 2018 +0000
@@ -169,7 +169,7 @@
             case DEVICE_STATE_JOIN:
             {
 #if( OVER_THE_AIR_ACTIVATION != 0 )                // OTA 
-
+                
                 // Generate DevEUI if not defined by User
                 BoardGetDevEUI( DevEui );
 
--- a/board/board.cpp	Sun Nov 26 03:26:34 2017 +0000
+++ b/board/board.cpp	Wed Jul 18 22:26:26 2018 +0000
@@ -51,12 +51,16 @@
 
 void BoardGetDevEUI( uint8_t *id )
 {
-    uint32_t *pDevEuiHWord = ( uint32_t* )&id[4];
+    uint32_t DevEuiHWord = 0;
 
-    if( *pDevEuiHWord == 0 )
+    if( ( id[7] == 0 ) && ( id[6] == 0 ) && ( id[5] == 0 ) && ( id[4] == 0 ) )
     {        
-        *pDevEuiHWord = BoardGetRandomSeed( );
-    }
+        DevEuiHWord = BoardGetRandomSeed( );
+        id[7] = (DevEuiHWord >> 3) & 0xFF;
+        id[6] = (DevEuiHWord >> 2) & 0xFF;
+        id[5] = (DevEuiHWord >> 1) & 0xFF;
+        id[4] = (DevEuiHWord >> 0) & 0xFF;
+    }    
     
 }
 
--- a/mac/LoRaWAN-lib.lib	Sun Nov 26 03:26:34 2017 +0000
+++ b/mac/LoRaWAN-lib.lib	Wed Jul 18 22:26:26 2018 +0000
@@ -1,1 +1,1 @@
-http://developer.mbed.org/teams/Semtech/code/LoRaWAN-lib/#d7a34ded7c87
+http://developer.mbed.org/teams/Semtech/code/LoRaWAN-lib/#2426a05fe29e