centralize display writes (part 3)

This commit is contained in:
Klaus K Wilting 2018-04-15 23:50:53 +02:00
parent 3efd3890f3
commit 4bc888d78d
3 changed files with 29 additions and 21 deletions

View File

@ -44,6 +44,7 @@ extern configData_t cfg;
extern uint8_t mydata[];
extern uint64_t uptimecounter;
extern osjob_t sendjob;
extern char display_lora[], display_lmic[];
extern int countermode, screensaver, adrmode, lorasf, txpower, rlim;
extern bool joinstate;
extern std::set<uint16_t> wifis;

View File

@ -135,15 +135,14 @@ void do_send(osjob_t* j){
//mydata[5] = data & 0xff;
// Check if there is not a current TX/RX job running
u8x8.clearLine(7);
if (LMIC.opmode & OP_TXRXPEND) {
ESP_LOGI(TAG, "OP_TXRXPEND, not sending");
u8x8.drawString(0, 7, "LORA BUSY");
sprintf(display_lmic, "LORA BUSY");
} else {
// Prepare upstream data transmission at the next possible time.
LMIC_setTxData2(1, mydata, sizeof(mydata), (cfg.countermode & 0x02));
ESP_LOGI(TAG, "Packet queued");
u8x8.drawString(0, 7, "PACKET QUEUED");
sprintf(display_lmic, "PACKET QUEUED");
}
// Next TX is scheduled after TX_COMPLETE event.
}
@ -168,7 +167,7 @@ void onEvent (ev_t ev) {
case EV_JOINED:
strcpy_P(buff, PSTR("JOINED"));
u8x8.clearLine(6); // erase "Join Wait" message from display, see main.cpp
sprintf(display_lora, " "); // erase "Join Wait" message from display
// Disable link check validation (automatically enabled
// during join, but not supported by TTN at this time).
LMIC_setLinkCheckMode(0);
@ -182,23 +181,21 @@ void onEvent (ev_t ev) {
break;
case EV_TXCOMPLETE:
ESP_LOGI(TAG, "EV_TXCOMPLETE (includes waiting for RX windows)");
u8x8.clearLine(7);
if (LMIC.txrxFlags & TXRX_ACK) {
ESP_LOGI(TAG, "Received ack");
u8x8.drawString(0, 7, "RECEIVED ACK");
sprintf(display_lmic, "RECEIVED ACK");
} else {
u8x8.drawString(0, 7, "TX COMPLETE");
sprintf(display_lmic, "TX COMPLETE");
}
if (LMIC.dataLen) {
ESP_LOGI(TAG, "Received %d bytes of payload", LMIC.dataLen);
u8x8.clearLine(6);
u8x8.setCursor(0, 6);
u8x8.printf("Rcvd %d bytes", LMIC.dataLen);
u8x8.clearLine(7);
u8x8.setCursor(0, 7);
sprintf(display_lora, "Rcvd %d bytes", LMIC.dataLen);
// LMIC.snr = SNR twos compliment [dB] * 4
// LMIC.rssi = RSSI [dBm] (-196...+63)
u8x8.printf("RSSI %d SNR %d", LMIC.rssi, (signed char)LMIC.snr / 4);
sprintf(display_lmic, "RSSI %d SNR %d", LMIC.rssi, (signed char)LMIC.snr / 4 );
// check if payload received on command port, then call remote command interpreter
if ( (LMIC.txrxFlags & TXRX_PORT) && (LMIC.frame[LMIC.dataBeg-1] == RCMDPORT ) ) {
// caution: buffering LMIC values here because rcommand() can modify LMIC.frame
@ -217,8 +214,7 @@ void onEvent (ev_t ev) {
// Log & Display if asked
if (*buff) {
ESP_LOGI(TAG, "EV_%s", buff);
u8x8.clearLine(7);
u8x8.drawString(0, 7, buff);
sprintf(display_lmic, buff);
}

View File

@ -45,6 +45,7 @@ configData_t cfg; // struct holds current device configuration
osjob_t sendjob, initjob; // LMIC
// Initialize global variables
char display_lora[16], display_lmic[16];
uint8_t channel = 0;
int macnum = 0;
uint64_t uptimecounter = 0;
@ -289,15 +290,13 @@ void sniffer_loop(void * pvParameters) {
bles.clear(); // clear BLE macs counter
#endif
salt_reset(); // get new salt for salting hashes
u8x8.clearLine(0); // clear Display counter
u8x8.clearLine(1);
}
// wait until payload is sent, while wifi scanning and mac counting task continues
lorawait = 0;
while(LMIC.opmode & OP_TXRXPEND) {
if(!lorawait)
u8x8.drawString(0,6,"LoRa wait ");
sprintf(display_lora, "LoRa wait");
lorawait++;
// in case sending really fails: reset and rejoin network
if( (lorawait % MAXLORARETRY ) == 0) {
@ -473,7 +472,7 @@ void setup() {
#endif
u8x8.setCursor(0,5);
u8x8.printf(!cfg.rssilimit ? "RLIM: off" : "RLIM: %d", cfg.rssilimit);
u8x8.drawString(0,6,"Join Wait ");
sprintf(display_lora, "Join wait");
// output LoRaWAN keys to console
#ifdef VERBOSE
@ -524,6 +523,7 @@ void loop() {
#endif
#ifdef HAS_DISPLAY
// display counters (lines 0-4)
char buff[16];
snprintf(buff, sizeof(buff), "PAX:%-4d", (int) macs.size()); // convert 16-bit MAC counter to decimal counter value
@ -534,12 +534,23 @@ void loop() {
u8x8.setCursor(0,3);
u8x8.printf("BLTH: %-4d", (int) bles.size());
#endif
// display actual wifi channel (line 4)
u8x8.setCursor(11,4);
u8x8.printf("ch:%02i", channel);
// display RSSI status (line 5)
u8x8.setCursor(0,5);
u8x8.printf(!cfg.rssilimit ? "RLIM: off" : "RLIM: %-3d", cfg.rssilimit);
// display LoRa status (line 6)
u8x8.setCursor(0,6);
u8x8.printf("%-16s", display_lora);
// display LMiC event (line 7)
u8x8.setCursor(0,7);
u8x8.printf("%-16s", display_lmic);
#endif
vTaskDelay(DISPLAYREFRESH/portTICK_PERIOD_MS);