@@ -20,6 +20,7 @@ Author:
20
20
#include < arduino_lmic_lorawan_compliance.h>
21
21
22
22
#include < SPI.h>
23
+ class cEventQueue ;
23
24
24
25
//
25
26
// For compliance tests with the RWC5020A, we use the default addresses
@@ -93,8 +94,10 @@ public:
93
94
ostime_t time;
94
95
ostime_t txend;
95
96
u4_t freq;
96
- rps_t rps;
97
97
u2_t opmode;
98
+ u2_t fcntDn;
99
+ u2_t fcntUp;
100
+ rps_t rps;
98
101
u1_t txChnl;
99
102
u1_t datarate;
100
103
u1_t txrxFlags;
@@ -125,10 +128,12 @@ public:
125
128
pn->pMessage = pMessage;
126
129
pn->datum = datum;
127
130
pn->freq = LMIC.freq ;
128
- pn->txChnl = LMIC.txChnl ;
131
+ pn->opmode = LMIC.opmode ;
132
+ pn->fcntDn = (u2_t ) LMIC.seqnoDn ;
133
+ pn->fcntUp = (u2_t ) LMIC.seqnoUp ;
129
134
pn->rps = LMIC.rps ;
135
+ pn->txChnl = LMIC.txChnl ;
130
136
pn->datarate = LMIC.datarate ;
131
- pn->opmode = LMIC.opmode ;
132
137
pn->txrxFlags = LMIC.txrxFlags ;
133
138
pn->saveIrqFlags = LMIC.saveIrqFlags ;
134
139
m_tail = i;
@@ -187,6 +192,8 @@ void myEventCb(void *pUserData, ev_t ev) {
187
192
}
188
193
189
194
void eventPrint (cEventQueue::eventnode_t &e);
195
+ void printFcnts (cEventQueue::eventnode_t &e);
196
+
190
197
191
198
void eventPrintAll (void ) {
192
199
while (eventPrintOne ())
@@ -233,6 +240,11 @@ void printHex2(unsigned v) {
233
240
Serial.print (v, HEX);
234
241
}
235
242
243
+ void printHex4 (unsigned v) {
244
+ printHex2 (v >> 8u );
245
+ printHex2 (v);
246
+ }
247
+
236
248
void printFreq (u4_t freq) {
237
249
Serial.print (F (" : freq=" ));
238
250
Serial.print (freq / 1000000 );
@@ -280,6 +292,13 @@ void printSaveIrqFlags(u1_t saveIrqFlags) {
280
292
printHex2 (saveIrqFlags);
281
293
}
282
294
295
+ void printFcnts (cEventQueue::eventnode_t &e) {
296
+ Serial.print (F (" , FcntUp=" ));
297
+ printHex4 (e.fcntUp );
298
+ Serial.print (F (" , FcntDn=" ));
299
+ printHex4 (e.fcntDn );
300
+ }
301
+
283
302
// dump all the registers. Must have printf setup.
284
303
void printAllRegisters (void ) {
285
304
uint8_t regbuf[0x80 ];
@@ -409,6 +428,7 @@ void eventPrint(cEventQueue::eventnode_t &e) {
409
428
printTxChnl (e.txChnl );
410
429
printRps (e.rps );
411
430
printTxrxflags (e.txrxFlags );
431
+ printFcnts (e);
412
432
break ;
413
433
case EV_LOST_TSYNC:
414
434
break ;
@@ -610,7 +630,7 @@ void setup() {
610
630
// Reset the MAC state. Session and pending data transfers will be discarded.
611
631
LMIC_reset ();
612
632
613
- LMIC_setClockError (5 * MAX_CLOCK_ERROR / 100 );
633
+ LMIC_setClockError (1 * MAX_CLOCK_ERROR / 100 );
614
634
615
635
// do the network-specific setup prior to join.
616
636
setupForNetwork (false );
@@ -680,10 +700,10 @@ void setupForNetwork(bool preJoin) {
680
700
681
701
void loop () {
682
702
os_runloop_once ();
683
- while ((LMIC.opmode & OP_TXRXPEND) == 0 &&
684
- ! os_queryTimeCriticalJobs (ms2osticks (1000 )) &&
685
- eventPrintOne ())
686
- ;
703
+ if ((LMIC.opmode & OP_TXRXPEND) == 0 &&
704
+ ! os_queryTimeCriticalJobs (ms2osticks (1000 ))) {
705
+ eventPrintOne ();
706
+ }
687
707
}
688
708
689
709
// there's a problem with running 2.5 of the MCCI STM32 BSPs;
0 commit comments