@@ -315,11 +315,6 @@ ostime_t calcAirTime (rps_t rps, u1_t plen) {
315
315
return (((ostime_t )tmp << sfx ) * OSTICKS_PER_SEC + div /2 ) / div ;
316
316
}
317
317
318
- extern inline s1_t rssi2s1 (int v );
319
- extern inline int s12rssi (s1_t v );
320
- extern inline float s12snr (s1_t v );
321
- extern inline s1_t snr2s1 (double v );
322
-
323
318
extern inline rps_t updr2rps (dr_t dr );
324
319
extern inline rps_t dndr2rps (dr_t dr );
325
320
extern inline int isFasterDR (dr_t dr1 , dr_t dr2 );
@@ -612,7 +607,7 @@ void LMIC_disableChannel (u1_t channel) {
612
607
613
608
static u4_t convFreq (xref2u1_t ptr ) {
614
609
u4_t freq = (os_rlsbf4 (ptr - 1 ) >> 8 ) * 100 ;
615
- if ( freq >= EU868_FREQ_MIN && freq <= EU868_FREQ_MAX )
610
+ if ( freq < EU868_FREQ_MIN || freq > EU868_FREQ_MAX )
616
611
freq = 0 ;
617
612
return freq ;
618
613
}
@@ -741,7 +736,7 @@ static void initDefaultChannels (void) {
741
736
742
737
static u4_t convFreq (xref2u1_t ptr ) {
743
738
u4_t freq = (os_rlsbf4 (ptr - 1 ) >> 8 ) * 100 ;
744
- if ( freq >= US915_FREQ_MIN && freq <= US915_FREQ_MAX )
739
+ if ( freq < US915_FREQ_MIN || freq > US915_FREQ_MAX )
745
740
freq = 0 ;
746
741
return freq ;
747
742
}
@@ -1375,14 +1370,15 @@ static bit_t processJoinAccept (void) {
1375
1370
initDefaultChannels (0 );
1376
1371
#endif
1377
1372
if ( dlen > LEN_JA ) {
1378
- dlen = OFF_CFLIST ;
1379
- #if defined(CFG_eu868 )
1380
- u1_t chidx = 3 ;
1381
- #elif defined(CFG_us915 )
1382
- u1_t chidx = 72 ;
1373
+ #if defined(CFG_us915 )
1374
+ goto badframe ;
1383
1375
#endif
1384
- for ( ; chidx < 8 ; chidx ++ , dlen += 3 )
1385
- LMIC_setupChannel (chidx , os_rlsbf4 (& LMIC .frame [dlen - 1 ]) >> 8 , 0 , -1 );
1376
+ dlen = OFF_CFLIST ;
1377
+ for ( u1_t chidx = 3 ; chidx < 8 ; chidx ++ , dlen += 3 ) {
1378
+ u4_t freq = convFreq (& LMIC .frame [dlen ]);
1379
+ if ( freq )
1380
+ LMIC_setupChannel (chidx , freq , 0 , -1 );
1381
+ }
1386
1382
}
1387
1383
1388
1384
// already incremented when JOIN REQ got sent off
@@ -1543,7 +1539,7 @@ static void buildDataFrame (void) {
1543
1539
}
1544
1540
if ( LMIC .snchAns ) {
1545
1541
LMIC .frame [end + 0 ] = MCMD_SNCH_ANS ;
1546
- LMIC .frame [end + 1 ] = LMIC .snchAns ;
1542
+ LMIC .frame [end + 1 ] = LMIC .snchAns & ~ MCMD_SNCH_ANS_RFU ;
1547
1543
end += 2 ;
1548
1544
LMIC .snchAns = 0 ;
1549
1545
}
@@ -1929,6 +1925,7 @@ static void engineUpdate (void) {
1929
1925
// Earliest possible time vs overhead to setup radio
1930
1926
if ( txbeg - (now + TX_RAMPUP ) < 0 ) {
1931
1927
// We could send right now!
1928
+ txbeg = now ;
1932
1929
dr_t txdr = (dr_t )LMIC .datarate ;
1933
1930
if ( jacc ) {
1934
1931
u1_t ftype ;
@@ -2155,6 +2152,12 @@ void LMIC_setSession (u4_t netid, devaddr_t devaddr, xref2u1_t nwkKey, xref2u1_t
2155
2152
LMIC .opmode &= ~(OP_JOINING |OP_TRACK |OP_REJOIN |OP_TXRXPEND |OP_PINGINI );
2156
2153
LMIC .opmode |= OP_NEXTCHNL ;
2157
2154
stateJustJoined ();
2155
+ DO_DEVDB (LMIC .netid , netid );
2156
+ DO_DEVDB (LMIC .devaddr , devaddr );
2157
+ DO_DEVDB (LMIC .nwkKey , nwkkey );
2158
+ DO_DEVDB (LMIC .artKey , artkey );
2159
+ DO_DEVDB (LMIC .seqnoUp , seqnoUp );
2160
+ DO_DEVDB (LMIC .seqnoDn , seqnoDn );
2158
2161
}
2159
2162
2160
2163
// Enable/disable link check validation.
0 commit comments