From 9ee0a102c78dbdf51d5aa28ef98427faadda499d Mon Sep 17 00:00:00 2001 From: Sjef Verhoeven PE5PVB Date: Sat, 10 Jun 2023 20:13:39 +0200 Subject: [PATCH] Another attempt to mask special characters in RDS Fixed signallevel shown in menu edgebeep --- TEF6686_ESP32.ino | 5 ++--- src/TEF6686.cpp | 28 +++++++++++++++------------- src/TEF6686.h | 2 +- 3 files changed, 18 insertions(+), 17 deletions(-) diff --git a/TEF6686_ESP32.ino b/TEF6686_ESP32.ino index 6a48e50..ec71d22 100644 --- a/TEF6686_ESP32.ino +++ b/TEF6686_ESP32.ino @@ -11,6 +11,7 @@ #define FONT24 &Aura2CondensedPro_Regular24pt7b #define FONT14 &Aura2CondensedPro_Regular14pt8b #define FONT7 &Aura2CondensedPro_Light7pt8b + #define TFT_GREYOUT 0x38E7 #define ROTARY_PIN_A 34 #define ROTARY_PIN_B 36 @@ -479,7 +480,7 @@ void loop() { XDRGTKRoutine(); - if (menu == true && menuopen == true && menuoption == 110) { + if (menu == true && menuopen == true && menupage == 1 && menuoption == 110) { if (band == 0) radio.getStatus(SStatus, USN, WAM, OStatus, BW, MStatus); else radio.getStatusAM(SStatus, USN, WAM, OStatus, BW, MStatus); if (millis() >= lowsignaltimer + 500 || change2 == true) { lowsignaltimer = millis(); @@ -1206,7 +1207,6 @@ void KeyUp() { if (region == 0) region = 1; else region = 0; if (regionold == 0) tft.drawCentreString(myLanguage[language][47], 155, 110, GFXFF); if (regionold == 1) tft.drawCentreString(myLanguage[language][48], 155, 110, GFXFF); - if (edgebeep) edgebeep = false; else edgebeep = true; tft.setTextColor(TFT_YELLOW); if (region == 0) tft.drawCentreString(myLanguage[language][47], 155, 110, GFXFF); if (region == 1) tft.drawCentreString(myLanguage[language][48], 155, 110, GFXFF); @@ -1437,7 +1437,6 @@ void KeyDown() { if (region == 0) region = 1; else region = 0; if (regionold == 0) tft.drawCentreString(myLanguage[language][47], 155, 110, GFXFF); if (regionold == 1) tft.drawCentreString(myLanguage[language][48], 155, 110, GFXFF); - if (edgebeep) edgebeep = false; else edgebeep = true; tft.setTextColor(TFT_YELLOW); if (region == 0) tft.drawCentreString(myLanguage[language][47], 155, 110, GFXFF); if (region == 1) tft.drawCentreString(myLanguage[language][48], 155, 110, GFXFF); diff --git a/src/TEF6686.cpp b/src/TEF6686.cpp index c17b57b..21b0bdd 100644 --- a/src/TEF6686.cpp +++ b/src/TEF6686.cpp @@ -381,11 +381,11 @@ bool TEF6686::readRDS(bool showrdserrors) rt_buffer[offset + 1] = EBU_converter(rds.rdsC & 0xff); rt_buffer[offset + 2] = EBU_converter(rds.rdsD >> 8); rt_buffer[offset + 3] = EBU_converter(rds.rdsD & 0xff); - if (offset > offsetold) offsetold = offset; if (offset == offsetold) { strcpy(stationTextBuffer, rt_buffer); + for (int i = 0; i < 64; i++) stationTextBuffer[i] = EBU_converter(stationTextBuffer[i]); if (rt_timer < 64) { strcpy(rds.stationText, stationTextBuffer); rt_timer++; @@ -512,21 +512,23 @@ bool TEF6686::readRDS(bool showrdserrors) return rdsDataReady; } -uint16_t TEF6686::EBU_converter (uint8_t src) +char TEF6686::EBU_converter (uint8_t src) { switch (src) { - case 0xe4: return 0x61; break; - case 0xc4: return 0x41; break; - case 0xeb: return 0x65; break; - case 0xcb: return 0x45; break; - case 0xfc: return 0x75; break; - case 0xdc: return 0x55; break; - case 0xef: return 0x69; break; - case 0xcf: return 0x49; break; - case 0xf6: return 0x6f; break; - case 0xd6: return 0x4f; break; - default: return src; break; + case 0x91: return 0x69; break; // ï + case 0x93: return 0x65; break; // ë + case 0x95: return 0x69; break; // ï + case 0x97: return 0x6f; break; // ö + case 0x99: return 0x75; break; // ü + case 0xd1: return 0x41; break; // Ï + case 0xd3: return 0x45; break; // Ë + case 0xd5: return 0x49; break; // Ï + case 0xd7: return 0x4f; break; // Ö + case 0xd9: return 0x55; break; // Ü + case 0x20: return 0x20; break; // SPACE + case 0x30 ... 0x7d: return src; break; + default: return 0x20; break; } } diff --git a/src/TEF6686.h b/src/TEF6686.h index 32184d1..5963f81 100644 --- a/src/TEF6686.h +++ b/src/TEF6686.h @@ -172,7 +172,7 @@ class TEF6686 { bool mute; private: - uint16_t EBU_converter (uint8_t src); + char EBU_converter (uint8_t src); uint16_t rdsTimeOut = 32768; uint8_t ps_process; uint8_t rt_process;