@@ -307,6 +307,9 @@ Name: evDeactivate()
307
307
308
308
Description:
309
309
We report a deactivation event, and re-evaluate the FSM.
310
+ We also set a flag so that we're return the appropriate
311
+ status from the compliance entry point to the real
312
+ application.
310
313
311
314
Returns:
312
315
No explicit result.
@@ -344,8 +347,10 @@ Name: evJoinCommand()
344
347
void evJoinCommand(void);
345
348
346
349
Description:
347
- We report a join-command event, and the kick the FSM. This
348
- will cause the FSM to coordinate sending and the other activities.
350
+ We unjoin from the network, and then report a deactivation
351
+ of test mode. That will get us out of test mode and back
352
+ to the compliance app. The next message send will trigger
353
+ a join.
349
354
350
355
Returns:
351
356
No explicit result.
@@ -355,8 +360,8 @@ Name: evJoinCommand()
355
360
static void evJoinCommand (
356
361
void
357
362
) {
358
- LMIC_Compliance . eventflags |= LMIC_COMPLIANCE_EVENT_JOIN_CMD ;
359
- fsmEvalDeferred ();
363
+ LMIC_unjoin () ;
364
+ evDeactivate ();
360
365
}
361
366
362
367
/*
@@ -582,8 +587,6 @@ fsmDispatch(
582
587
}
583
588
if (eventflags_TestAndClear (LMIC_COMPLIANCE_EVENT_DEACTIVATE )) {
584
589
newState = LMIC_COMPLIANCE_FSMSTATE_INACTIVE ;
585
- } else if (eventflags_TestAndClear (LMIC_COMPLIANCE_EVENT_JOIN_CMD )) {
586
- newState = LMIC_COMPLIANCE_FSMSTATE_JOINING ;
587
590
} else if (eventflags_TestAndClear (LMIC_COMPLIANCE_EVENT_ECHO_REQUEST )) {
588
591
newState = LMIC_COMPLIANCE_FSMSTATE_ECHOING ;
589
592
} else {
@@ -592,16 +595,6 @@ fsmDispatch(
592
595
break ;
593
596
}
594
597
595
- case LMIC_COMPLIANCE_FSMSTATE_JOINING : {
596
- if (fEntry )
597
- acDoJoin ();
598
-
599
- if (eventflags_TestAndClear (LMIC_COMPLIANCE_EVENT_JOINED )) {
600
- newState = LMIC_COMPLIANCE_FSMSTATE_RECOVERY ;
601
- }
602
- break ;
603
- }
604
-
605
598
case LMIC_COMPLIANCE_FSMSTATE_ECHOING : {
606
599
if (fEntry )
607
600
acSendUplinkBuffer ();
@@ -625,8 +618,7 @@ fsmDispatch(
625
618
case LMIC_COMPLIANCE_FSMSTATE_RECOVERY : {
626
619
if (fEntry ) {
627
620
if (LMIC_Compliance .eventflags & (LMIC_COMPLIANCE_EVENT_DEACTIVATE |
628
- LMIC_COMPLIANCE_EVENT_ECHO_REQUEST |
629
- LMIC_COMPLIANCE_EVENT_JOIN_CMD )) {
621
+ LMIC_COMPLIANCE_EVENT_ECHO_REQUEST )) {
630
622
acSetTimer (sec2osticks (1 ));
631
623
} else {
632
624
acSetTimer (sec2osticks (5 ));
@@ -677,10 +669,7 @@ static void lmicEventCb(
677
669
}
678
670
679
671
// if it's a EV_JOINED, or a TXCMOMPLETE, we should tell the FSM.
680
- if (ev == EV_JOINED ) {
681
- LMIC_Compliance .eventflags |= LMIC_COMPLIANCE_EVENT_JOINED ;
682
- fsmEvalDeferred ();
683
- } else if (ev == EV_TXCOMPLETE ) {
672
+ if ((UINT32_C (1 ) << ev ) & (EV_JOINED | EV_TXCOMPLETE )) {
684
673
fsmEvalDeferred ();
685
674
}
686
675
}
@@ -764,13 +753,3 @@ static void acSendUplinkBuffer(void) {
764
753
static const char * txSuccessToString (int fSuccess ) {
765
754
return fSuccess ? "ok" : "failed" ;
766
755
}
767
-
768
- static void acDoJoin (void ) {
769
- LMIC_COMPLIANCE_PRINTF ("acDoJoin\n" );
770
-
771
- LMIC_Compliance .eventflags &= ~LMIC_COMPLIANCE_EVENT_JOINED ;
772
-
773
- LMIC_unjoin ();
774
- LMIC_Compliance .downlinkCount = 0 ;
775
- LMIC_startJoining ();
776
- }
0 commit comments