Show GPS status on OLED display

This commit is contained in:
Klaus K Wilting 2018-06-10 22:46:13 +02:00
parent c5c772f51a
commit e972375bcd

View File

@ -1,5 +1,7 @@
/* /*
Copyright 2018 Oliver Brandmueller <ob@sysadm.in> Copyright 2018 Oliver Brandmueller <ob@sysadm.in>
Copyright 2018 Klaus Wilting <verkehrsrot@arcor.de> Copyright 2018 Klaus Wilting <verkehrsrot@arcor.de>
@ -92,8 +94,8 @@ void reset_counters() {
macs_ble = 0; macs_ble = 0;
} }
/* begin LMIC specific parts /* begin LMIC specific parts
* ------------------------------------------------------------ */ * ------------------------------------------------------------ */
#ifdef VERBOSE #ifdef VERBOSE
void printKeys(void); void printKeys(void);
@ -146,11 +148,11 @@ void lorawan_loop(void *pvParameters) {
} }
} }
/* end LMIC specific parts /* end LMIC specific parts
* --------------------------------------------------------------- */ * --------------------------------------------------------------- */
/* beginn hardware specific parts /* beginn hardware specific parts
* -------------------------------------------------------- */ * -------------------------------------------------------- */
#ifdef HAS_DISPLAY #ifdef HAS_DISPLAY
HAS_DISPLAY u8x8(OLED_RST, OLED_SCL, OLED_SDA); HAS_DISPLAY u8x8(OLED_RST, OLED_SCL, OLED_SDA);
@ -287,16 +289,27 @@ void init_display(const char *Productname, const char *Version) {
} }
void refreshDisplay() { void refreshDisplay() {
// update counter display (lines 0-4) // update counter (lines 0-1)
char buff[16]; char buff[16];
snprintf( snprintf(
buff, sizeof(buff), "PAX:%-4d", buff, sizeof(buff), "PAX:%-4d",
(int)macs.size()); // convert 16-bit MAC counter to decimal counter value (int)macs.size()); // convert 16-bit MAC counter to decimal counter value
u8x8.draw2x2String(0, 0, u8x8.draw2x2String(0, 0,
buff); // display number on unique macs total Wifi + BLE buff); // display number on unique macs total Wifi + BLE
u8x8.setCursor(0, 4);
u8x8.printf("WIFI:%-4d", macs_wifi);
// update GPS status (line 2)
#ifdef HAS_GPS
u8x8.setCursor(8, 2);
if (!gps.location.isvalid()) // if no fix then display Sats value inverse
{
u8x8.setInverseFont(1);
u8x8.printf("Sats: %.3d", gps.satellites.value());
u8x8.setInverseFont(0);
} else
u8x8.printf("Sats: %.3d", gps.satellites.value());
#endif
// update bluetooth counter + LoRa SF (line 3)
#ifdef BLECOUNTER #ifdef BLECOUNTER
u8x8.setCursor(0, 3); u8x8.setCursor(0, 3);
if (cfg.blescan) if (cfg.blescan)
@ -304,8 +317,6 @@ void refreshDisplay() {
else else
u8x8.printf("%s", "BLTH:off"); u8x8.printf("%s", "BLTH:off");
#endif #endif
// update LoRa SF display (line 3)
u8x8.setCursor(11, 3); u8x8.setCursor(11, 3);
u8x8.printf("SF:"); u8x8.printf("SF:");
if (cfg.adrmode) // if ADR=on then display SF value inverse if (cfg.adrmode) // if ADR=on then display SF value inverse
@ -315,7 +326,9 @@ void refreshDisplay() {
if (cfg.adrmode) // switch off inverse if it was turned on if (cfg.adrmode) // switch off inverse if it was turned on
u8x8.setInverseFont(0); u8x8.setInverseFont(0);
// update wifi channel display (line 4) // update wifi counter + channel display (line 4)
u8x8.setCursor(0, 4);
u8x8.printf("WIFI:%-4d", macs_wifi);
u8x8.setCursor(11, 4); u8x8.setCursor(11, 4);
u8x8.printf("ch:%02d", channel); u8x8.printf("ch:%02d", channel);
@ -537,13 +550,13 @@ void setup() {
init_display(PROGNAME, PROGVERSION); init_display(PROGNAME, PROGVERSION);
DisplayState = cfg.screenon; DisplayState = cfg.screenon;
u8x8.setPowerSave(!cfg.screenon); // set display off if disabled u8x8.setPowerSave(!cfg.screenon); // set display off if disabled
u8x8.draw2x2String(0, 0, "PAX:0"); u8x8.draw2x2String(0, 0, "PAX:0")
u8x8.setCursor(0, 4);
u8x8.printf("WIFI:0");
#ifdef BLECOUNTER #ifdef BLECOUNTER
u8x8.setCursor(0, 3); u8x8.setCursor(0, 3);
u8x8.printf("BLTH:0"); u8x8.printf("BLTH:0");
#endif #endif
u8x8.setCursor(0, 4);
u8x8.printf("WIFI:0");
u8x8.setCursor(0, 5); u8x8.setCursor(0, 5);
u8x8.printf(!cfg.rssilimit ? "RLIM:off " : "RLIM:%d", cfg.rssilimit); u8x8.printf(!cfg.rssilimit ? "RLIM:off " : "RLIM:%d", cfg.rssilimit);