Set TX indicators off at three more events

Set Tx indicators off at EV_JOINED, EV_JOIN_TXCOMPLETE, EV_TXCANCELLED.
This commit is contained in:
Leonel Lopes Parente 2021-05-16 15:39:14 +02:00
parent 479ca9347e
commit 8fbfd2065c
2 changed files with 51 additions and 29 deletions

View file

@ -198,7 +198,10 @@ void printEvent(ostime_t timestamp,
#endif #endif
} }
void printEvent(ostime_t timestamp, ev_t ev, PrintTarget target = PrintTarget::All, bool clearDisplayStatusRow = true) void printEvent(ostime_t timestamp,
ev_t ev,
PrintTarget target = PrintTarget::All,
bool clearDisplayStatusRow = true)
{ {
#if defined(USE_DISPLAY) || defined(USE_SERIAL) #if defined(USE_DISPLAY) || defined(USE_SERIAL)
printEvent(timestamp, lmicEventNames[ev], target, clearDisplayStatusRow, true); printEvent(timestamp, lmicEventNames[ev], target, clearDisplayStatusRow, true);
@ -262,7 +265,7 @@ void printSessionKeys()
} }
void printDownlinkInfo() void printDownlinkInfo(void)
{ {
#if defined(USE_SERIAL) || defined(USE_DISPLAY) #if defined(USE_SERIAL) || defined(USE_DISPLAY)
@ -464,9 +467,11 @@ void printHeader(void)
#endif //ABP_ACTIVATION #endif //ABP_ACTIVATION
void initLmic(bit_t adrEnabled = 1, dr_t dataRate = DR_SF7, s1_t txPower = 14, bool setDrTxPowForOtaaExplicit = false) void initLmic(bit_t adrEnabled = 1,
dr_t dataRate = DR_SF7,
s1_t txPower = 14,
bool setDrTxPowForOtaaExplicit = false)
{ {
// Initialize LMIC runtime environment // Initialize LMIC runtime environment
os_init(); os_init();
// Reset MAC state // Reset MAC state
@ -532,16 +537,18 @@ void onEvent(ev_t ev)
break; break;
case EV_TXSTART: case EV_TXSTART:
#ifdef USE_LED setTxIndicatorsOn();
led.on(); printEvent(timestamp, ev);
#endif break;
#ifdef USE_DISPLAY
displayTxSymbol(); case EV_JOIN_TXCOMPLETE:
#endif case EV_TXCANCELED:
setTxIndicatorsOn(false);
printEvent(timestamp, ev); printEvent(timestamp, ev);
break; break;
#endif #endif
case EV_JOINED: case EV_JOINED:
setTxIndicatorsOn(false);
printEvent(timestamp, ev); printEvent(timestamp, ev);
printSessionKeys(); printSessionKeys();
@ -554,12 +561,7 @@ void onEvent(ev_t ev)
case EV_TXCOMPLETE: case EV_TXCOMPLETE:
// Transmit completed, includes waiting for RX windows. // Transmit completed, includes waiting for RX windows.
#ifdef USE_LED setTxIndicatorsOn(false);
led.off();
#endif
#ifdef USE_DISPLAY
displayTxSymbol(false);
#endif
printEvent(timestamp, ev); printEvent(timestamp, ev);
printFrameCounters(); printFrameCounters();
@ -593,8 +595,6 @@ void onEvent(ev_t ev)
#ifdef MCCI_LMIC #ifdef MCCI_LMIC
// Only supported in MCCI LMIC library: // Only supported in MCCI LMIC library:
case EV_SCAN_FOUND: // This event is defined but not used in code case EV_SCAN_FOUND: // This event is defined but not used in code
case EV_TXCANCELED:
case EV_JOIN_TXCOMPLETE:
#endif #endif
printEvent(timestamp, ev); printEvent(timestamp, ev);
break; break;
@ -632,22 +632,20 @@ lmic_tx_error_t scheduleUplink(uint8_t fPort, uint8_t* data, uint8_t dataLength,
// transmission of an uplink message that was prepared by processWork(). // transmission of an uplink message that was prepared by processWork().
// Transmission will be performed at the next possible time // Transmission will be performed at the next possible time
#ifdef CLASSIC_LMIC
// For MCCI_LMIC this will be handled in EV_TXSTART
#ifdef USE_LED
led.on();
#endif
#ifdef USE_DISPLAY
displayTxSymbol();
#endif
#endif
ostime_t timestamp = os_getTime(); ostime_t timestamp = os_getTime();
printEvent(timestamp, "Packet queued"); printEvent(timestamp, "Packet queued");
lmic_tx_error_t retval = LMIC_setTxData2(fPort, data, dataLength, confirmed ? 1 : 0); lmic_tx_error_t retval = LMIC_setTxData2(fPort, data, dataLength, confirmed ? 1 : 0);
timestamp = os_getTime(); timestamp = os_getTime();
if (retval != LMIC_ERROR_SUCCESS) if (retval == LMIC_ERROR_SUCCESS)
{
#ifdef CLASSIC_LMIC
// For MCCI_LMIC this will be handled in EV_TXSTART
setTxIndicatorsOn();
#endif
}
else
{ {
String errmsg; String errmsg;
#ifdef USE_SERIAL #ifdef USE_SERIAL

View file

@ -46,6 +46,7 @@ enum class PrintTarget { All, Serial, Display };
// Forward declarations // Forward declarations
void processWork(ostime_t timestamp); void processWork(ostime_t timestamp);
void processDownlink(ostime_t eventTimestamp, uint8_t fPort, uint8_t* data, uint8_t dataLength); void processDownlink(ostime_t eventTimestamp, uint8_t fPort, uint8_t* data, uint8_t dataLength);
void displayTxSymbol(bool visible);
#ifndef DO_WORK_INTERVAL_SECONDS // Should be set in platformio.ini #ifndef DO_WORK_INTERVAL_SECONDS // Should be set in platformio.ini
#define DO_WORK_INTERVAL_SECONDS 300 // Default 5 minutes if not set #define DO_WORK_INTERVAL_SECONDS 300 // Default 5 minutes if not set
@ -226,6 +227,29 @@ enum class ActivationType {OTAA, ABP};
} }
} }
void setTxIndicatorsOn(bool on = true)
{
if (on)
{
#ifdef USE_LED
led.on();
#endif
#ifdef USE_DISPLAY
displayTxSymbol(true);
#endif
}
else
{
#ifdef USE_LED
led.off();
#endif
#ifdef USE_DISPLAY
displayTxSymbol(false);
#endif
}
}
#endif // USE_SERIAL || USE_DISPLAY #endif // USE_SERIAL || USE_DISPLAY