From 73133f3e61db50ebd3d0292da651aa992e60d09f Mon Sep 17 00:00:00 2001 From: "Hansi, dl9rdz" Date: Sat, 21 Dec 2019 17:43:26 +0100 Subject: [PATCH] large font for IP address --- RX_FSK/data/screens.txt | 33 ++++++++++++++++++++++++++++++++- libraries/SondeLib/Display.cpp | 16 +++++++++++++--- 2 files changed, 45 insertions(+), 4 deletions(-) diff --git a/RX_FSK/data/screens.txt b/RX_FSK/data/screens.txt index 635d755..ab440bb 100644 --- a/RX_FSK/data/screens.txt +++ b/RX_FSK/data/screens.txt @@ -37,7 +37,7 @@ # T type string (RS41/DFM9/DFM6/RS92) # C afC value # N ip address (only tiny font) -# S scan list entry info: l/empty: launch site name, #=entry nr, t=total entries, a=active entries +# S scan list entry info: l/empty: launch site name, #=entry nr, t=total entries, a=active entries, /: #/t # K RS41 kill timer values: Kl launch timer, Kb burst timer, Kc kill countdown # format: K_4: h:mm k_6: h:mm:ss k_s: sssss, nothing shown for other sonde # Mx telemetry value x (t temp p preassure h hyg) [not yet implemented, maybe some day in future] @@ -317,3 +317,34 @@ fonts=0,1 6,0=xTemp: 6,5=bT C +### Alternative display layouts based on https://gist.github.com/bazjo +# Scan display for large 2" TFT dispaly +@Scan.TFT.Bazjo +timer=-1,0,0 +key1action=D,#,F,W +key2action=#,#,#,# +timeaction=#,D,+ +scale=11,10 +fonts=0,2 +color=e0e0e0 +#Row 1 +0.5,0=XScanning... +#Row 2 +3,0=xIndex +4,0=S/ +3,9=xSite +4,9=S +#Row 3 +6,0=xType +7,0=T +6,9=xFrequency +7,9=F +#Row 4 +9,0=xWeb UI IP +10,0=N +#Row 5 +#Footer +color=6C757D +15,0=xScan Mode +15,18=bVV + diff --git a/libraries/SondeLib/Display.cpp b/libraries/SondeLib/Display.cpp index f129fd1..7444387 100644 --- a/libraries/SondeLib/Display.cpp +++ b/libraries/SondeLib/Display.cpp @@ -457,9 +457,9 @@ void ILI9225Display::welcome() { } void ILI9225Display::drawIP(uint8_t x, uint8_t y, int16_t width, uint16_t fg, uint16_t bg) { - setFont(0); char buf[20]; - snprintf(buf, 20, "%c %s", sonde.isAP?'A':' ', sonde.ipaddr.c_str()); + if(sonde.isAP) strcpy(buf, "A "); else *buf=0; + strncat(buf, sonde.ipaddr.c_str(), 16); drawString(x, y, buf, width, fg, bg); } @@ -672,6 +672,9 @@ void Display::parseDispElement(char *text, DispEntry *de) Serial.printf("parsing 'f' entry: extra is '%s'\n", de->extra); break; case 'n': + // IP address / small always uses tiny font on TFT for backward compatibility + // Large font can be used arbitrarily + if(de->fmt==fontsma) de->fmt=0; de->func = disp.drawIP; break; case 's': de->func = disp.drawSite; @@ -1061,6 +1064,7 @@ void Display::drawAFC(DispEntry *de) { drawString(de, buf+strlen(buf)-8); } void Display::drawIP(DispEntry *de) { + rdis->setFont(de->fmt); rdis->drawIP(de->x, de->y, de->width, de->fg, de->bg); } void Display::drawSite(DispEntry *de) { @@ -1070,9 +1074,11 @@ void Display::drawSite(DispEntry *de) { // currentSonde is index in array starting with 0; // but we draw "1" for the first entrie and so on... snprintf(buf, 3, "%2d", sonde.currentSonde+1); + buf[2]=0; break; case 't': snprintf(buf, 3, "%d", sonde.config.maxsonde); + buf[2]=0; break; case 'a': { @@ -1081,13 +1087,17 @@ void Display::drawSite(DispEntry *de) { if(sonde.sondeList[i].active) active++; } snprintf(buf, 3, "%d", active); + buf[2]=0; } break; + case '/': + snprintf(buf, 6, "%d/%d ", sonde.currentSonde+1, sonde.config.maxsonde); + buf[5]=0; + break; case 0: case 'l': default: // launch site drawString(de, sonde.si()->launchsite); return; } - buf[2]=0; if(de->extra[0]) strcat(buf, de->extra+1); drawString(de, buf); }