Skip to content

Commit 14ea892

Browse files
committed
Fix #441: handle TX busy at FSMSTATE_TESTMODE
1 parent a253285 commit 14ea892

File tree

2 files changed

+17
-4
lines changed

2 files changed

+17
-4
lines changed

src/lmic/lmic_compliance.c

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -575,15 +575,26 @@ fsmDispatch(
575575
acEnterActiveMode();
576576
acSetTimer(sec2osticks(1));
577577
}
578-
if (eventflags_TestAndClear(LMIC_COMPLIANCE_EVENT_TIMER_EXPIRED))
578+
if (eventflags_TestAndClear(LMIC_COMPLIANCE_EVENT_TIMER_EXPIRED)) {
579+
newState = LMIC_COMPLIANCE_FSMSTATE_TESTMODE;
580+
}
581+
break;
582+
}
583+
584+
case LMIC_COMPLIANCE_FSMSTATE_TXBUSY: {
585+
if (fEntry) {
586+
acSetTimer(sec2osticks(1));
587+
}
588+
if (eventflags_TestAndClear(LMIC_COMPLIANCE_EVENT_TIMER_EXPIRED)) {
579589
newState = LMIC_COMPLIANCE_FSMSTATE_TESTMODE;
590+
}
580591
break;
581592
}
582593

583594
case LMIC_COMPLIANCE_FSMSTATE_TESTMODE: {
584595
if (LMIC.opmode & OP_TXDATA) {
585-
// stay here until we can do something
586-
break;
596+
// go back and wait some more.
597+
newState = LMIC_COMPLIANCE_FSMSTATE_TXBUSY;
587598
}
588599
if (eventflags_TestAndClear(LMIC_COMPLIANCE_EVENT_DEACTIVATE)) {
589600
newState = LMIC_COMPLIANCE_FSMSTATE_INACTIVE;
@@ -628,6 +639,7 @@ fsmDispatch(
628639
if (eventflags_TestAndClear(LMIC_COMPLIANCE_EVENT_TIMER_EXPIRED)) {
629640
newState = LMIC_COMPLIANCE_FSMSTATE_TESTMODE;
630641
}
642+
break;
631643
}
632644

633645
default: {

src/lmic/lmic_compliance.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,11 +77,12 @@ enum lmic_compliance_fsmstate_e {
7777
LMIC_COMPLIANCE_FSMSTATE_ECHOING = 5,
7878
LMIC_COMPLIANCE_FSMSTATE_REPORTING = 6,
7979
LMIC_COMPLIANCE_FSMSTATE_RECOVERY = 7,
80+
LMIC_COMPLIANCE_FSMSTATE_TXBUSY = 8,
8081
};
8182

8283
#define LMIC_COMPLIANCE_FSMSTATE__NAMES \
8384
"INITIAL", "NOCHANGE", "ACTIVE", "INACTIVE", "TESTMODE", \
84-
"ECHOING", "REPORTING", "RECOVERY"
85+
"ECHOING", "REPORTING", "RECOVERY", "TXBUSY"
8586

8687
typedef struct lmic_compliance_eventcb_s lmic_compliance_eventcb_t;
8788
struct lmic_compliance_eventcb_s {

0 commit comments

Comments
 (0)