hello world

Fork of lmic_MOTE_L152RC by Semtech

Revision:
9:83ae7f34e88c
Parent:
8:0faa1bb768b5
Child:
10:6c0830baf10f
--- a/lmic.cpp	Wed Oct 21 01:03:34 2015 +0000
+++ b/lmic.cpp	Mon Nov 16 23:52:45 2015 +0000
@@ -11,7 +11,7 @@
 
 //! \file
 #include "lmic.h"
-#include "debug.h"  // tmp wbr
+#include "debug.h"
 
 #if !defined(MINRX_SYMS)
 #define MINRX_SYMS 5
@@ -802,6 +802,13 @@
 #endif /* JOIN_REQ_DEBUG */  
     if( chnl < 64 ) {
         LMIC.freq = US915_125kHz_UPFBASE + chnl*US915_125kHz_UPFSTEP;
+
+        if (LMIC.opmode & OP_JOINING) {
+            /* use max allowed power for joining */
+            if (LMIC.txpow <  LMIC.txpow_limit)
+                LMIC.txpow = LMIC.txpow_limit;
+        }
+
 #ifdef JOIN_REQ_DEBUG
     printf("%d (125khz)\r\n", LMIC.freq);
 #endif /* JOIN_REQ_DEBUG */    
@@ -919,9 +926,15 @@
 
 static void initJoinLoop (void) {
     LMIC.chRnd = 0;
+#ifdef CHNL_HYBRID
+    LMIC.joinBlockChnl = 0;
+    LMIC.joinBlock = CHNL_HYBRID;
+    LMIC.txChnl = LMIC.joinBlock << 3;
+#else
     LMIC.txChnl = 0;
     LMIC.joinBlockChnl = 0;
     LMIC.joinBlock = 0;
+#endif
     LMIC.datarate = DR_SF10;
     LMIC.adrTxPow = LMIC.txpow_limit;
     ASSERT((LMIC.opmode & OP_NEXTCHNL)==0);
@@ -1162,8 +1175,9 @@
 
     // We heard from network
     LMIC.adrChanged = LMIC.rejoinCnt = 0;
-    if( LMIC.adrAckReq != LINK_CHECK_OFF )
+    if( LMIC.adrAckReq != LINK_CHECK_OFF ) {
         LMIC.adrAckReq = LINK_CHECK_INIT;
+    }
 
     // Process OPTS
     int m = LMIC.rssi - RSSI_OFF - getSensitivity(LMIC.rps);
@@ -1427,7 +1441,7 @@
 
     if( LMIC.dataLen == 0 ) {
       nojoinframe:
-        if( (LMIC.opmode & OP_JOINING) == 0 ) {
+        /* keep retrying re-joining after failed attempt -- if( (LMIC.opmode & OP_JOINING) == 0 ) {
             ASSERT((LMIC.opmode & OP_REJOIN) != 0);
             // REJOIN attempt for roaming
             LMIC.opmode &= ~(OP_REJOIN|OP_TXRXPEND);
@@ -1435,7 +1449,7 @@
                 LMIC.rejoinCnt++;
             reportEvent(EV_REJOIN_FAILED);
             return 1;
-        }
+        }*/
         LMIC.opmode &= ~OP_TXRXPEND;
         ostime_t delay = nextJoinState();
         EV(devCond, DEBUG, (e_.reason = EV::devCond_t::NO_JACC,
@@ -1461,7 +1475,6 @@
                            e_.info   = dlen < 4 ? 0 : mic,
                            e_.info2  = hdr + (dlen<<8)));
       badframe:
-        printf("pja badframe dlen:%d, hdr:%02x\r\n", dlen, hdr);
         if( (LMIC.txrxFlags & TXRX_DNW1) != 0 )
             return 0;
         goto nojoinframe;
@@ -1689,7 +1702,6 @@
 
     if( LMIC.txCnt == 0 ) {
         LMIC.seqnoUp += 1;
-        //printf("seqnoUp inc %d\r\n", LMIC.seqnoUp);
         DO_DEVDB(LMIC.seqnoUp,seqnoUp);
     } else {
         EV(devCond, INFO, (e_.reason = EV::devCond_t::RE_TX,
@@ -1891,8 +1903,9 @@
             // Nothing received - implies no port
             LMIC.txrxFlags = TXRX_NOPORT;
         }
-        if( LMIC.adrAckReq != LINK_CHECK_OFF )
+        if( LMIC.adrAckReq != LINK_CHECK_OFF ) {
             LMIC.adrAckReq += 1;
+        }
         LMIC.dataBeg = LMIC.dataLen = 0;
       txcomplete:
         LMIC.opmode &= ~(OP_TXDATA|OP_TXRXPEND);
@@ -2011,8 +2024,9 @@
 // Decide what to do next for the MAC layer of a device
 static void engineUpdate (void) {
     // Check for ongoing state: scan or TX/RX transaction
-    if( (LMIC.opmode & (OP_SCAN|OP_TXRXPEND|OP_SHUTDOWN)) != 0 ) 
+    if( (LMIC.opmode & (OP_SCAN|OP_TXRXPEND|OP_SHUTDOWN)) != 0 ) {
         return;
+    }
 
     if( LMIC.devaddr == 0 && (LMIC.opmode & OP_JOINING) == 0 ) {
         LMIC_startJoining();
@@ -2028,7 +2042,7 @@
         ASSERT( now + RX_RAMPUP - LMIC.bcnRxtime <= 0 );
         rxtime = LMIC.bcnRxtime - RX_RAMPUP;
     }
-
+    
     if( (LMIC.opmode & (OP_JOINING|OP_REJOIN|OP_TXDATA|OP_POLL)) != 0 ) {
         // Need to TX some data...
         // Assuming txChnl points to channel which first becomes available again.
@@ -2062,7 +2076,8 @@
                 u1_t ftype;
                 if( (LMIC.opmode & OP_REJOIN) != 0 ) {
                     txdr = lowerDR(txdr, LMIC.rejoinCnt);
-                    ftype = HDR_FTYPE_REJOIN;
+                    //ftype = HDR_FTYPE_REJOIN;
+                    ftype = HDR_FTYPE_JREQ;
                 } else {
                     ftype = HDR_FTYPE_JREQ;
                 }