Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of LMiC-10secs by
Revision 10:8f33a411b53f, committed 2016-09-23
- Comitter:
- pnysten
- Date:
- Fri Sep 23 09:15:43 2016 +0000
- Parent:
- 9:c5820ce68bd6
- Commit message:
- LMIC lib Lora Personalized device for Everynet
Changed in this revision
lmic.cpp | Show annotated file Show diff for this revision Revisions of this file |
lmic.h | Show annotated file Show diff for this revision Revisions of this file |
diff -r c5820ce68bd6 -r 8f33a411b53f lmic.cpp --- a/lmic.cpp Tue Feb 23 08:41:36 2016 +0000 +++ b/lmic.cpp Fri Sep 23 09:15:43 2016 +0000 @@ -1052,6 +1052,7 @@ //debug_val("olen: ", olen); if( addr != LMIC.devaddr ) { + debug_str("Device Address not correct!"); EV(specCond, WARN, (e_.reason = EV::specCond_t::ALIEN_ADDRESS, e_.eui = MAIN::CDEV->getEui(), e_.info = addr, @@ -1097,6 +1098,7 @@ } // Replay of previous sequence number allowed only if // previous frame and repeated both requested confirmation + debug_str("Replay Conf\n\r"); replayConf = 1; } else { @@ -1289,7 +1291,7 @@ //if( port >= 0 && pend-poff > 0 ) //aes_cipher(port <= 0 ? LMIC.nwkKey : LMIC.artKey, LMIC.devaddr, seqno, /*dn*/1, d+poff, pend-poff); - + debug_str("HANDLING PAYLOAD...\r\n"); if( port >= 0 && port != 1 && pend-poff > 0 ) { debug_str("Payload decrypting...\r\n"); @@ -1622,7 +1624,11 @@ goto badframe; } - u4_t addr = os_rlsbf4(LMIC.frame+OFF_JA_DEVADDR); + //u4_t addr = os_rlsbf4(LMIC.frame+OFF_JA_DEVADDR); + debug_str( "Join accept = "); + debug_buf(LMIC.frame, dlen); + u4_t addr = os_rlsbf4(&LMIC.frame[OFF_JA_DEVADDR]); + debug_val( "Dev Addr = ", addr ); LMIC.devaddr = addr; LMIC.netid = os_rlsbf4(&LMIC.frame[OFF_JA_NETID]) & 0xFFFFFF; @@ -1855,12 +1861,20 @@ } LMIC.frame[end] = LMIC.pendTxPort; os_copyMem(LMIC.frame+end+1, LMIC.pendTxData, dlen); + +// debug_str("Data frame before encrypting: "); + debug_buf(LMIC.frame, dlen); +// debug_str("Encrypting data frame\r\n"); aes_cipher(LMIC.pendTxPort==0 ? LMIC.nwkKey : LMIC.artKey, LMIC.devaddr, LMIC.seqnoUp-1, /*up*/0, LMIC.frame+end+1, dlen); +// debug_str("Encrypted data frame: "); + debug_buf(LMIC.frame, dlen); } aes_appendMic(LMIC.nwkKey, LMIC.devaddr, LMIC.seqnoUp-1, /*up*/0, LMIC.frame, flen-4); - +// debug_str("Frame to be sent: "); + debug_buf(LMIC.frame, dlen); + EV(dfinfo, DEBUG, (e_.deveui = MAIN::CDEV->getEui(), e_.devaddr = LMIC.devaddr, e_.seqno = LMIC.seqnoUp-1, @@ -2009,7 +2023,7 @@ // ================================================================================ static void processPingRx (xref2osjob_t osjob) { - //debug_str("processPingRx\r\n"); + debug_str("processPingRx\r\n"); if( LMIC.dataLen != 0 ) { LMIC.txrxFlags = TXRX_PING; if( decodeFrame() ) { @@ -2023,7 +2037,7 @@ static bit_t processDnData (void) { - //debug_str("processDnData\r\n"); + debug_str("processDnData\r\n"); ASSERT((LMIC.opmode & OP_TXRXPEND)!=0); if( LMIC.dataLen == 0 ) { @@ -2082,7 +2096,9 @@ } return 1; } + debug_str("processDnData - decodeFrame\r\n"); if( !decodeFrame() ) { + debug_str("decode Frame deconne\r\n"); if( (LMIC.txrxFlags & TXRX_DNW1) != 0 ) return 0; goto norx; @@ -2223,7 +2239,7 @@ goto checkrx; } // Earliest possible time vs overhead to setup radio - /*PANYif( txbeg - (now + TX_RAMPUP) < 0 ) {PANY*/ + if( txbeg - (now + TX_RAMPUP) < 0 ) { // We could send right now! debug_str("We could send right now!"); debug_char( '\r' ); @@ -2270,7 +2286,7 @@ updateTx(txbeg); os_radio(RADIO_TX); return; - /*PANY}PANY*/ + } // Cannot yet TX if( (LMIC.opmode & OP_TRACK) == 0 ) { @@ -2425,7 +2441,7 @@ // -int LMIC_setTxData2 (u1_t port, xref2u1_t data, u1_t dlen, u1_t confirmed) { +int LMIC_setTxData2 (u1_t port, xref2u1_t data, u1_t dlen, u1_t confirmed, int encrypted) { //debug_str("LMIC_setTxData2\r\n"); /* debug_val("Data Length: ", dlen); debug_val("Data Length: ", SIZEOFEXPR(LMIC.pendTxData));*/ @@ -2433,12 +2449,27 @@ return -2; if( data != (xref2u1_t)0 ) { - os_copyMem(LMIC.pendTxData, data, dlen); + if (encrypted == 1) { + debug_str("ENCRYPTING PAYLOAD\n\r"); + debug_val("COUNTER UP: ", LMIC.seqnoUp); + debug_str("Network Key: "); + debug_buf(LMIC.nwkKey, 16); + debug_val("Device Address: ", LMIC.devaddr); + debug_str("Data before encryption: "); + debug_buf(data, dlen); + aes_cipher(LMIC.nwkKey, LMIC.devaddr, LMIC.seqnoUp, 0, data, dlen); + debug_str("Data after encryption: "); + debug_buf(data, dlen); + } + os_copyMem(LMIC.pendTxData, data, dlen); } //debug_str("Send Data\r\n"); LMIC.pendTxConf = confirmed; LMIC.pendTxPort = port; LMIC.pendTxLen = dlen; + /* aes_cipher(LMIC.pendTxPort==0 ? LMIC.nwkKey : LMIC.artKey, + LMIC.devaddr, LMIC.seqnoUp-1, + 0, LMIC.frame+end+1, dlen);*/ LMIC_setTxData(); return 0; }
diff -r c5820ce68bd6 -r 8f33a411b53f lmic.h --- a/lmic.h Tue Feb 23 08:41:36 2016 +0000 +++ b/lmic.h Fri Sep 23 09:15:43 2016 +0000 @@ -44,18 +44,20 @@ LINK_CHECK_INIT = -12 , // UP frame count until we inc datarate LINK_CHECK_OFF =-128 }; // link check disabled -/*enum { TIME_RESYNC = 6*128 }; // secs +enum { TIME_RESYNC = 6*128 }; // secs enum { TXRX_GUARD_ms = 6000 }; // msecs - don't start TX-RX transaction before beacon enum { JOIN_GUARD_ms = 9000 }; // msecs - don't start Join Req/Acc transaction before beacon enum { TXRX_BCNEXT_secs = 2 }; // secs - earliest start after beacon time -enum { RETRY_PERIOD_secs = 3 }; // secs - random period for retrying a confirmed send*/ +enum { RETRY_PERIOD_secs = 3 }; // secs - random period for retrying a confirmed send //PANY +/* enum { TIME_RESYNC = 6*128 }; // secs enum { TXRX_GUARD_ms = 1000 }; // msecs - don't start TX-RX transaction before beacon enum { JOIN_GUARD_ms = 1000 }; // msecs - don't start Join Req/Acc transaction before beacon enum { TXRX_BCNEXT_secs = 1 }; // secs - earliest start after beacon time enum { RETRY_PERIOD_secs = 1 }; // secs - random period for retrying a confirmed send +*/ //PANY #if defined(CFG_eu868) // EU868 spectrum ==================================================== @@ -263,7 +265,7 @@ void LMIC_reset (void); void LMIC_clrTxData (void); void LMIC_setTxData (void); -int LMIC_setTxData2 (u1_t port, xref2u1_t data, u1_t dlen, u1_t confirmed); +int LMIC_setTxData2 (u1_t port, xref2u1_t data, u1_t dlen, u1_t confirmed, int encrypted); void LMIC_sendAlive (void); bit_t LMIC_enableTracking (u1_t tryBcnInfo);