Sending IKS01A1 temperature sensor to LoRaWAN port-5 uplink

Dependencies:   X_NUCLEO_IKS01A1 mbed LoRaWAN-lib SX1276Lib

Fork of LoRaWAN-demo-76 by Semtech

Use IKS01A1 sensor shield with SX1272 shield or SX1276 shield.

Sends temperature sensor to LoRaWAN uplink port 5.


Remove SB22 and SB23 from IKS01A1 before using

SB28 conflicts with DIO0 on radio. (TxDone RxDone)

SB22 conflicts with RxTx on radio. (antenna switch)

Revision:
7:3173f0508a98
Parent:
5:1e9f6a365854
Child:
8:7b1d5fb9cf72
--- a/app/main.cpp	Wed May 18 11:34:12 2016 +0000
+++ b/app/main.cpp	Tue Jul 05 15:01:57 2016 +0000
@@ -21,11 +21,6 @@
 #include "SerialDisplay.h"
 
 /*!
- * Join requests trials duty cycle.
- */
-#define OVER_THE_AIR_ACTIVATION_DUTYCYCLE           10000000 // 10 [s] value in us
-
-/*!
  * Defines the application data transmission duty cycle. 5s, value in [us].
  */
 #define APP_TX_DUTYCYCLE                            5000000
@@ -96,13 +91,11 @@
 
 #endif
 
-#if( OVER_THE_AIR_ACTIVATION != 0 )
-
 static uint8_t DevEui[] = LORAWAN_DEVICE_EUI;
 static uint8_t AppEui[] = LORAWAN_APPLICATION_EUI;
 static uint8_t AppKey[] = LORAWAN_APPLICATION_KEY;
 
-#else
+#if( OVER_THE_AIR_ACTIVATION == 0 )
 
 static uint8_t NwkSKey[] = LORAWAN_NWKSKEY;
 static uint8_t AppSKey[] = LORAWAN_APPSKEY;
@@ -251,11 +244,10 @@
     SerialDisplayUpdateDevAddr( DevAddr );
     SerialDisplayUpdateKey( 12, NwkSKey );
     SerialDisplayUpdateKey( 13, AppSKey );
-#else
+#endif
     SerialDisplayUpdateEui( 5, DevEui );
     SerialDisplayUpdateEui( 6, AppEui );
     SerialDisplayUpdateKey( 7, AppKey );
-#endif
 
     mibReq.Type = MIB_NETWORK_JOINED;
     LoRaMacMibGetRequestConfirm( &mibReq );
@@ -483,6 +475,11 @@
         LoRaMacUplinkStatus.Datarate = mcpsConfirm->Datarate;
         LoRaMacUplinkStatus.UplinkCounter = mcpsConfirm->UpLinkCounter;
 
+        // Switch LED 1 ON
+        Led1State = true;
+        Led1StateChanged = true;
+        TimerStart( &Led1Timer );
+
         UplinkStatusUpdated = true;
     }
     NextTx = true;
@@ -644,6 +641,20 @@
                         LoRaMacMlmeRequest( &mlmeReq );
                     }
                     break;
+                case 6: // (ix)
+                    {
+                        MlmeReq_t mlmeReq;
+
+                        mlmeReq.Type = MLME_JOIN;
+
+                        mlmeReq.Req.Join.DevEui = DevEui;
+                        mlmeReq.Req.Join.AppEui = AppEui;
+                        mlmeReq.Req.Join.AppKey = AppKey;
+
+                        LoRaMacMlmeRequest( &mlmeReq );
+                        DeviceState = DEVICE_STATE_SLEEP;
+                    }
+                    break;
                 default:
                     break;
                 }
@@ -677,6 +688,8 @@
             {
                 // Status is OK, node has joined the network
                 IsNetworkJoinedStatusUpdate = true;
+                DeviceState = DEVICE_STATE_SEND;
+                NextTx = true;
                 break;
             }
             case MLME_LINK_CHECK:
@@ -711,6 +724,17 @@
     BoardInit( );
     SerialDisplayInit( );
 
+    SerialDisplayUpdateEui( 5, DevEui );
+    SerialDisplayUpdateEui( 6, AppEui );
+    SerialDisplayUpdateKey( 7, AppKey );
+
+#if( OVER_THE_AIR_ACTIVATION == 0 )
+    SerialDisplayUpdateNwkId( LORAWAN_NETWORK_ID );
+    SerialDisplayUpdateDevAddr( DevAddr );
+    SerialDisplayUpdateKey( 12, NwkSKey );
+    SerialDisplayUpdateKey( 13, AppSKey );
+#endif
+
     DeviceState = DEVICE_STATE_INIT;
 
     while( 1 )
@@ -788,6 +812,10 @@
                 LoRaMacChannelAdd( 7, ( ChannelParams_t )LC8 );
                 LoRaMacChannelAdd( 8, ( ChannelParams_t )LC9 );
                 LoRaMacChannelAdd( 9, ( ChannelParams_t )LC10 );
+
+                mibReq.Type = MIB_RX2_CHANNEL;
+                mibReq.Param.Rx2Channel = ( Rx2ChannelParams_t ){ 869525000, DR_3 };
+                LoRaMacMibSetRequestConfirm( &mibReq );
 #endif
 
 #endif
@@ -815,15 +843,7 @@
                 {
                     LoRaMacMlmeRequest( &mlmeReq );
                 }
-
-                SerialDisplayUpdateEui( 5, DevEui );
-                SerialDisplayUpdateEui( 6, AppEui );
-                SerialDisplayUpdateKey( 7, AppKey );
-
-                // Schedule next packet transmission
-                TxDutyCycleTime = OVER_THE_AIR_ACTIVATION_DUTYCYCLE;
-                DeviceState = DEVICE_STATE_CYCLE;
-
+                DeviceState = DEVICE_STATE_SLEEP;
 #else
                 mibReq.Type = MIB_NET_ID;
                 mibReq.Param.NetID = LORAWAN_NETWORK_ID;
@@ -845,11 +865,6 @@
                 mibReq.Param.IsNetworkJoined = true;
                 LoRaMacMibSetRequestConfirm( &mibReq );
 
-                SerialDisplayUpdateNwkId( LORAWAN_NETWORK_ID );
-                SerialDisplayUpdateDevAddr( DevAddr );
-                SerialDisplayUpdateKey( 12, NwkSKey );
-                SerialDisplayUpdateKey( 13, AppSKey );
-
                 DeviceState = DEVICE_STATE_SEND;
 #endif
                 IsNetworkJoinedStatusUpdate = true;
@@ -864,11 +879,6 @@
                     PrepareTxFrame( AppPort );
 
                     NextTx = SendFrame( );
-
-                    // Switch LED 1 ON
-                    Led1State = true;
-                    Led1StateChanged = true;
-                    TimerStart( &Led1Timer );
                 }
                 if( ComplianceTest.Running == true )
                 {