Make telemetry values available on device display

This is probably not the cleanest coding so apologies in advance.
Tested on TTGO.
pull/191/head
eben80 2021-09-24 14:55:53 +02:00 zatwierdzone przez GitHub
rodzic 8d24d2fe78
commit 5be57a02b5
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 4AEE18F83AFDEB23
1 zmienionych plików z 29 dodań i 0 usunięć

Wyświetl plik

@ -809,6 +809,10 @@ void Display::parseDispElement(char *text, DispEntry *de)
de->extra = strdup(text+1);
//Serial.printf("parsing 'f' entry: extra is '%s'\n", de->extra);
break;
case 'm':
de->func = disp.drawTelemetry;
de->extra = strdup(text+1);
break;
case 'n':
// IP address / small always uses tiny font on TFT for backward compatibility
// Large font can be used arbitrarily
@ -1283,6 +1287,31 @@ void Display::drawSite(DispEntry *de) {
drawString(de, buf);
}
void Display::drawTelemetry(DispEntry *de) {
rdis->setFont(de->fmt);
float value=0;
switch(de->extra[0]) {
case 't':
value = sonde.si()->d.temperature;
if(value!=0xffff) snprintf(buf, 8, "%3.2f", value);
else strcpy(buf, " ");
break;
case 'p':
value = sonde.si()->d.pressure;
if(value!=0xffff) snprintf(buf, 7, "%4.2f", value);
else strcpy(buf, " ");
break;
case 'h':
value = sonde.si()->d.relativeHumidity;
if(value!=0xffff) snprintf(buf, 5, "%3.1f", value);
else strcpy(buf, " ");
break;
case 'b':
value = sonde.si()->d.batteryVoltage;
if(value!=0xffff) snprintf(buf, 5, "%1.2f", value);
else strcpy(buf, " ");
break;
}
drawString(de,buf);
}
void Display::drawKilltimer(DispEntry *de) {