Advanced RDS bugfixes

This commit is contained in:
Sjef Verhoeven PE5PVB
2023-07-09 00:27:56 +02:00
parent 93ac9fdcf7
commit e473a22fe1
2 changed files with 31 additions and 34 deletions
+27 -34
View File
@@ -187,7 +187,6 @@ int16_t SAvg;
int16_t SAvg2; int16_t SAvg2;
int16_t SStatus; int16_t SStatus;
IPAddress remoteip; IPAddress remoteip;
String afstringold;
String cryptedpassword; String cryptedpassword;
String CurrentThemeString; String CurrentThemeString;
String ECColdtxt; String ECColdtxt;
@@ -2605,14 +2604,14 @@ void ShowMemoryPos() {
if (tunemode == TUNE_MEM) { if (tunemode == TUNE_MEM) {
tft.setFreeFont(FONT7); tft.setFreeFont(FONT7);
tft.setTextColor(BackgroundColor); tft.setTextColor(BackgroundColor);
tft.drawString(String(memoryposold + 1), 80, 26, GFXFF); if (advancedRDS) tft.drawString(String(memoryposold + 1), 215, 30, GFXFF); else tft.drawString(String(memoryposold + 1), 80, 26, GFXFF);
tft.setTextColor(PrimaryColor); tft.setTextColor(PrimaryColor);
tft.drawString(String(memorypos + 1), 80, 26, GFXFF); if (advancedRDS) tft.drawString(String(memorypos + 1), 215, 30, GFXFF); else tft.drawString(String(memorypos + 1), 80, 26, GFXFF);
memoryposold = memorypos; memoryposold = memorypos;
} else { } else {
tft.setFreeFont(FONT7); tft.setFreeFont(FONT7);
tft.setTextColor(BackgroundColor); tft.setTextColor(BackgroundColor);
tft.drawString(String(memorypos + 1), 80, 26, GFXFF); if (advancedRDS) tft.drawString(String(memorypos + 1), 215, 30, GFXFF); else tft.drawString(String(memorypos + 1), 80, 26, GFXFF);
} }
} }
@@ -2783,8 +2782,6 @@ void ShowAdvancedRDS() {
if (radio.rds.hasLIC) tft.drawString(myLanguages[lic], 245, 205, GFXFF); else tft.drawString("N/A", 245, 205, GFXFF); if (radio.rds.hasLIC) tft.drawString(myLanguages[lic], 245, 205, GFXFF); else tft.drawString("N/A", 245, 205, GFXFF);
LIColdString = myLanguages[lic]; LIColdString = myLanguages[lic];
} }
if (radio.rds.hasLIC) tft.setTextColor(PrimaryColor); else tft.setTextColor(GreyoutColor);
tft.drawString("LIC", 170, 45, GFXFF);
licold = radio.rds.LIC; licold = radio.rds.LIC;
} }
@@ -2796,8 +2793,6 @@ void ShowAdvancedRDS() {
tft.drawString(pinstringold, 245, 220, GFXFF); tft.drawString(pinstringold, 245, 220, GFXFF);
tft.setTextColor(PrimaryColor); tft.setTextColor(PrimaryColor);
if (radio.rds.hasPIN) tft.drawString(pinstring, 245, 220, GFXFF); else tft.drawString("N/A", 245, 220, GFXFF); if (radio.rds.hasPIN) tft.drawString(pinstring, 245, 220, GFXFF); else tft.drawString("N/A", 245, 220, GFXFF);
if (radio.rds.hasPIN) tft.setTextColor(PrimaryColor); else tft.setTextColor(GreyoutColor);
tft.drawString("PIN", 122, 45, GFXFF);
pinstringold = pinstring; pinstringold = pinstring;
} }
@@ -2805,7 +2800,7 @@ void ShowAdvancedRDS() {
if (radio.rds.hasAF) for (byte i = 0; i < radio.af_counter; i++) afstring += String(radio.af[i].frequency / 100) + "." + (radio.af[i].frequency % 100 < 10 ? "0" : "") + String(radio.af[i].frequency % 100) + (radio.af[i].filler ? "(f)" : "") + (i == radio.af_counter - 1 ? " " : " | "); else afstring = myLanguage[language][87]; if (radio.rds.hasAF) for (byte i = 0; i < radio.af_counter; i++) afstring += String(radio.af[i].frequency / 100) + "." + (radio.af[i].frequency % 100 < 10 ? "0" : "") + String(radio.af[i].frequency % 100) + (radio.af[i].filler ? "(f)" : "") + (i == radio.af_counter - 1 ? " " : " | "); else afstring = myLanguage[language][87];
if (hasafold != radio.rds.hasAF) { if (hasafold != radio.rds.hasAF) {
if (radio.rds.hasAF) tft.setTextColor(PrimaryColor); else tft.setTextColor(GreyoutColor); if (radio.rds.hasAF) tft.setTextColor(PrimaryColor); else tft.setTextColor(GreyoutColor);
tft.drawString("AF", 40, 45, GFXFF); tft.drawString("AF", 62, 45, GFXFF);
hasafold = radio.rds.hasAF; hasafold = radio.rds.hasAF;
} }
if (millis() - afticker >= 350) { if (millis() - afticker >= 350) {
@@ -2821,10 +2816,10 @@ void ShowAdvancedRDS() {
} }
String eonstring; String eonstring;
if (radio.rds.hasEON) for (byte i = 0; i < radio.eon_counter; i++) eonstring += String(radio.eon[i].picode) + (radio.eon[i].ps.length() > 0 ? String(": " + String(radio.eon[i].ps)) : "") + (radio.eon[i].mappedfreq > 0 ? String(" " + String(radio.eon[i].mappedfreq / 100) + "." + (radio.eon[i].mappedfreq % 100 < 100 ? "0" : "") + String(radio.eon[i].mappedfreq % 100)) : "") + (i == radio.eon_counter - 1 ? " " : " | "); else eonstring = myLanguage[language][88]; if (radio.rds.hasEON) for (byte i = 0; i < radio.eon_counter; i++) eonstring += String(radio.eon[i].picode) + (radio.eon[i].ps.length() > 0 ? String(": " + String(radio.eon[i].ps)) : "") + (radio.eon[i].mappedfreq > 0 ? String(" " + String(radio.eon[i].mappedfreq / 100) + "." + (radio.eon[i].mappedfreq % 100 < 10 ? "0" : "") + String(radio.eon[i].mappedfreq % 100)) : "") + (i == radio.eon_counter - 1 ? " " : " | "); else eonstring = myLanguage[language][88];
if (haseonold != radio.rds.hasEON) { if (haseonold != radio.rds.hasEON) {
if (radio.rds.hasEON) tft.setTextColor(PrimaryColor); else tft.setTextColor(GreyoutColor); if (radio.rds.hasEON) tft.setTextColor(PrimaryColor); else tft.setTextColor(GreyoutColor);
tft.drawString("EON", 72, 45, GFXFF); tft.drawString("EON", 148, 45, GFXFF);
haseonold = radio.rds.hasEON; haseonold = radio.rds.hasEON;
} }
if (millis() - eonticker >= 350) { if (millis() - eonticker >= 350) {
@@ -2843,7 +2838,7 @@ void ShowAdvancedRDS() {
if (radio.rds.hasRDSplus) rtplusstring = "1\) " + String(radio.rds.RTContent1) + " - 2\) " + String(radio.rds.RTContent2) + " "; else rtplusstring = myLanguage[language][89]; if (radio.rds.hasRDSplus) rtplusstring = "1\) " + String(radio.rds.RTContent1) + " - 2\) " + String(radio.rds.RTContent2) + " "; else rtplusstring = myLanguage[language][89];
if (hasrtplusold != radio.rds.hasRDSplus) { if (hasrtplusold != radio.rds.hasRDSplus) {
if (radio.rds.hasRDSplus) tft.setTextColor(PrimaryColor); else tft.setTextColor(GreyoutColor); if (radio.rds.hasRDSplus) tft.setTextColor(PrimaryColor); else tft.setTextColor(GreyoutColor);
tft.drawString("RT+", 98, 45, GFXFF); tft.drawString("RT+", 116, 45, GFXFF);
hasrtplusold = radio.rds.hasRDSplus; hasrtplusold = radio.rds.hasRDSplus;
} }
if (millis() - rtplusticker >= 350) { if (millis() - rtplusticker >= 350) {
@@ -2868,7 +2863,7 @@ void ShowAdvancedRDS() {
if (TAold != radio.rds.hasTA) { if (TAold != radio.rds.hasTA) {
tft.setFreeFont(FONT7); tft.setFreeFont(FONT7);
if (radio.rds.hasTA == true) tft.setTextColor(PrimaryColor); else tft.setTextColor(GreyoutColor); if (radio.rds.hasTA == true) tft.setTextColor(PrimaryColor); else tft.setTextColor(GreyoutColor);
tft.drawString("TA", 22, 45, GFXFF); tft.drawString("TA", 34, 45, GFXFF);
TAold = radio.rds.hasTA; TAold = radio.rds.hasTA;
} }
@@ -2877,22 +2872,22 @@ void ShowAdvancedRDS() {
switch (radio.rds.MS) { switch (radio.rds.MS) {
case 0: case 0:
tft.setTextColor(GreyoutColor); tft.setTextColor(GreyoutColor);
tft.drawString("M", 190, 45, GFXFF); tft.drawString("M", 185, 45, GFXFF);
tft.drawString("S", 202, 45, GFXFF); tft.drawString("S", 198, 45, GFXFF);
break; break;
case 1: case 1:
tft.setTextColor(PrimaryColor); tft.setTextColor(PrimaryColor);
tft.drawString("M", 190, 45, GFXFF); tft.drawString("M", 185, 45, GFXFF);
tft.setTextColor(GreyoutColor); tft.setTextColor(GreyoutColor);
tft.drawString("S", 202, 45, GFXFF); tft.drawString("S", 198, 45, GFXFF);
break; break;
case 2: case 2:
tft.setTextColor(GreyoutColor); tft.setTextColor(GreyoutColor);
tft.drawString("M", 190, 45, GFXFF); tft.drawString("M", 185, 45, GFXFF);
tft.setTextColor(PrimaryColor); tft.setTextColor(PrimaryColor);
tft.drawString("S", 202, 45, GFXFF); tft.drawString("S", 198, 45, GFXFF);
break; break;
} }
MSold = radio.rds.MS; MSold = radio.rds.MS;
@@ -2908,12 +2903,12 @@ void ShowAdvancedRDS() {
} else { } else {
rds_clock = ""; rds_clock = "";
} }
if (rds_clock != rds_clockold) { if (rds_clock != rds_clockold) {
tft.setFreeFont(FONT7); tft.setFreeFont(FONT7);
tft.setTextColor(BackgroundColor); tft.setTextColor(BackgroundColor);
tft.drawRightString(rds_clockold, 205, 105, GFXFF); tft.drawRightString(rds_clockold, 205, 105, GFXFF);
tft.setTextColor(PrimaryColor); if (radio.rds.hasCT == true) tft.setTextColor(PrimaryColor); else tft.setTextColor(GreyoutColor); tft.drawString("CT", 88, 45, GFXFF);
tft.drawString("CT", 56, 45, GFXFF);
tft.drawRightString(rds_clock, 205, 105, GFXFF); tft.drawRightString(rds_clock, 205, 105, GFXFF);
rds_clockold = rds_clock; rds_clockold = rds_clock;
} }
@@ -3035,8 +3030,6 @@ void showECC() {
tft.drawString(ECColdtxt, 245, 190, GFXFF); tft.drawString(ECColdtxt, 245, 190, GFXFF);
tft.setTextColor(PrimaryColor); tft.setTextColor(PrimaryColor);
if (radio.rds.hasECC) tft.drawString(ECC, 245, 190, GFXFF); else tft.drawString("N/A", 245, 190, GFXFF); if (radio.rds.hasECC) tft.drawString(ECC, 245, 190, GFXFF); else tft.drawString("N/A", 245, 190, GFXFF);
if (radio.rds.hasECC) tft.setTextColor(PrimaryColor); else tft.setTextColor(GreyoutColor);
tft.drawString("ECC", 146, 45, GFXFF);
ECColdtxt = ECC; ECColdtxt = ECC;
} }
@@ -3126,7 +3119,7 @@ void showPS() {
} }
void showRadioText() { void showRadioText() {
if (RDSstatus == 1) { if (radio.rds.hasRT && RDSstatus) {
if (millis() - rtticker >= 350) { if (millis() - rtticker >= 350) {
xPos -= charWidth; xPos -= charWidth;
if (advancedRDS) { if (advancedRDS) {
@@ -3377,17 +3370,15 @@ void BuildAdvancedRDS() {
tft.setTextColor(GreyoutColor); tft.setTextColor(GreyoutColor);
tft.setFreeFont(FONT7); tft.setFreeFont(FONT7);
tft.drawString("TP", 6, 45, GFXFF); tft.drawString("TP", 6, 45, GFXFF);
tft.drawString("TA", 22, 45, GFXFF); tft.drawString("TA", 34, 45, GFXFF);
tft.drawString("AF", 40, 45, GFXFF); tft.drawString("AF", 62, 45, GFXFF);
tft.drawString("CT", 56, 45, GFXFF); tft.drawString("CT", 88, 45, GFXFF);
tft.drawString("EON", 72, 45, GFXFF); tft.drawString("RT+", 116, 45, GFXFF);
tft.drawString("RT+", 98, 45, GFXFF); tft.drawString("EON", 148, 45, GFXFF);
tft.drawString("PIN", 122, 45, GFXFF); tft.drawString("M", 185, 45, GFXFF);
tft.drawString("ECC", 146, 45, GFXFF); tft.drawString("S", 198, 45, GFXFF);
tft.drawString("LIC", 170, 45, GFXFF);
tft.drawString("M", 190, 45, GFXFF);
tft.drawString("S", 202, 45, GFXFF);
} }
RDSstatusold = false; RDSstatusold = false;
ShowFreq(0); ShowFreq(0);
Stereostatusold = false; Stereostatusold = false;
@@ -3419,6 +3410,7 @@ void BuildAdvancedRDS() {
haseonold = false; haseonold = false;
BWreset = true; BWreset = true;
pinstringold = ""; pinstringold = "";
ShowMemoryPos();
} }
void BuildDisplay() { void BuildDisplay() {
@@ -3710,6 +3702,7 @@ void ShowFreq(int mode) {
strcpy(programTypePrevious, "0"); strcpy(programTypePrevious, "0");
strcpy(radioIdPrevious, "0"); strcpy(radioIdPrevious, "0");
programServicePrevious = "0"; programServicePrevious = "0";
if (wifi) { if (wifi) {
Udp.beginPacket(remoteip, 9030); Udp.beginPacket(remoteip, 9030);
Udp.print("from=TEF tuner;freq="); Udp.print("from=TEF tuner;freq=");
+4
View File
@@ -434,6 +434,7 @@ void TEF6686::readRDS(bool showrdserrors)
case RDS_GROUP_2A: { case RDS_GROUP_2A: {
if (showrdserrors || rds.correct) { if (showrdserrors || rds.correct) {
// RT decoder // RT decoder
rds.hasRT = true;
rds.rtAB = (bitRead(rds.rdsB, 4)); // Get AB flag rds.rtAB = (bitRead(rds.rdsB, 4)); // Get AB flag
if (rds.rtAB != rtABold) { // Erase old RT, because of AB change if (rds.rtAB != rtABold) { // Erase old RT, because of AB change
@@ -632,6 +633,7 @@ void TEF6686::clearRDS (bool fullsearchrds)
rds.stationText = ""; rds.stationText = "";
rds.RTContent1 = ""; rds.RTContent1 = "";
rds.RTContent2 = ""; rds.RTContent2 = "";
rds.PTYN = "";
for (i = 0; i < 9; i++) { for (i = 0; i < 9; i++) {
ps_buffer[i] = 0; ps_buffer[i] = 0;
@@ -675,9 +677,11 @@ void TEF6686::clearRDS (bool fullsearchrds)
rds.hasRT = false; rds.hasRT = false;
rds.hasRDS = false; rds.hasRDS = false;
rds.hasTP = false; rds.hasTP = false;
rds.hasAF = false;
rds.hasTA = false; rds.hasTA = false;
rds.hasEON = false; rds.hasEON = false;
rds.hasCT = false; rds.hasCT = false;
rds.hasRDSplus = false;
rds.correct = false; rds.correct = false;
rt_process = false; rt_process = false;
ps_process = false; ps_process = false;