From 972424b8d7152eda0042cc638c7720a0fbbcfe70 Mon Sep 17 00:00:00 2001 From: Sjef Verhoeven PE5PVB Date: Tue, 6 Aug 2024 16:01:35 +0200 Subject: [PATCH 1/4] Added check for double PI in memory scanner Added sensitivity setting in both DX mode and auto memory menu --- TEF6686_ESP32.ino | 25 +++++++++- src/constants.h | 13 +++-- src/gui.cpp | 122 ++++++++++++++++++++++++++++++++++++++++++++-- src/gui.h | 3 +- src/language.h | 92 ++++++++++++++++++++++++++-------- 5 files changed, 226 insertions(+), 29 deletions(-) diff --git a/TEF6686_ESP32.ino b/TEF6686_ESP32.ino index 049381b..b5c9568 100644 --- a/TEF6686_ESP32.ino +++ b/TEF6686_ESP32.ino @@ -175,6 +175,7 @@ byte iMSset; byte language; byte licold; byte longbandpress; +byte memdoublepi; byte memorypos; byte memoryposold; byte memoryposstatus; @@ -536,6 +537,7 @@ void setup() { memstartpos = EEPROM.readByte(EE_BYTE_MEMSTARTPOS); memstoppos = EEPROM.readByte(EE_BYTE_MEMSTOPPOS); mempionly = EEPROM.readByte(EE_BYTE_MEMPIONLY); + memdoublepi = EEPROM.readByte(EE_BYTE_MEMDOUBLEPI); if (spispeed == SPI_SPEED_DEFAULT) { tft.setSPISpeed(SPI_FREQUENCY / 1000000); @@ -4293,6 +4295,7 @@ void DefaultSettings(byte userhardwaremodel) { EEPROM.writeByte(EE_BYTE_MEMSTARTPOS, 1); EEPROM.writeByte(EE_BYTE_MEMSTOPPOS, 10); EEPROM.writeByte(EE_BYTE_MEMPIONLY, 1); + EEPROM.writeByte(EE_BYTE_MEMDOUBLEPI, 0); for (int i = 0; i < EE_PRESETS_CNT; i++) { EEPROM.writeByte(i + EE_PRESETS_BAND_START, BAND_FM); @@ -4528,6 +4531,7 @@ void endMenu() { EEPROM.writeByte(EE_BYTE_MEMSTARTPOS, memstartpos); EEPROM.writeByte(EE_BYTE_MEMSTOPPOS, memstoppos); EEPROM.writeByte(EE_BYTE_MEMPIONLY, mempionly); + EEPROM.writeByte(EE_BYTE_MEMDOUBLEPI, memdoublepi); EEPROM.commit(); if (af == 2) radio.rds.afreg = true; else radio.rds.afreg = false; Serial.end(); @@ -4624,7 +4628,7 @@ void setAutoSpeedSPI() { } } -uint8_t doAutoMemory(uint16_t startfreq, uint16_t stopfreq, uint8_t startmem, uint8_t stopmem, bool rdsonly) { +uint8_t doAutoMemory(uint16_t startfreq, uint16_t stopfreq, uint8_t startmem, uint8_t stopmem, bool rdsonly, uint8_t doublepi) { uint8_t error = 0; uint8_t counter = 0; uint16_t _current = frequency; @@ -4633,6 +4637,7 @@ uint8_t doAutoMemory(uint16_t startfreq, uint16_t stopfreq, uint8_t startmem, ui uint8_t percent = 0; uint8_t percentold = 0; bool stopScanning = false; + bool dostore = false; radio.setMute(); radio.power(0); @@ -4660,7 +4665,22 @@ uint8_t doAutoMemory(uint16_t startfreq, uint16_t stopfreq, uint8_t startmem, ui delay(50); radio.readRDS(showrdserrors); } - if ((rdsonly && radio.rds.hasRDS) || !rdsonly) { + + dostore = true; + if (doublepi != 0) { + for (byte x = (doublepi == 1 ? startmem : 0); x <= (doublepi == 1 ? stopmem : EE_PRESETS_CNT - 1); x++) { + if (presets[memorypos].RDSPI[0] != '\0') { + for (byte i = 0; i < 4; i++) { + if (presets[memorypos].RDSPI[i] != radio.rds.picode[i]) { + dostore = false; + break; + } + } + } + } + } + + if (((rdsonly && radio.rds.hasRDS) || !rdsonly) && dostore) { StoreMemoryPos(startmem); counter ++; startmem++; @@ -4669,6 +4689,7 @@ uint8_t doAutoMemory(uint16_t startfreq, uint16_t stopfreq, uint8_t startmem, ui stopScanning = true; break; } + dostore = false; } } diff --git a/src/constants.h b/src/constants.h index 5c9c36b..3bc512a 100644 --- a/src/constants.h +++ b/src/constants.h @@ -209,9 +209,9 @@ #define EE_CHECKBYTE_VALUE 10 // 0 ~ 255,add new entry, change for new value #define EE_PRESETS_FREQUENCY 0 // Default value when memory channel should be skipped! #ifdef HAS_AIR_BAND -#define EE_TOTAL_CNT 2235 // Total occupied eeprom bytes +#define EE_TOTAL_CNT 2236 // Total occupied eeprom bytes #else -#define EE_TOTAL_CNT 2229 // Total occupied eeprom bytes +#define EE_TOTAL_CNT 2230 // Total occupied eeprom bytes #endif #define EE_PRESETS_BAND_START 0 // 99 * 1 byte @@ -319,9 +319,10 @@ #define EE_BYTE_MEMSTARTPOS 2226 #define EE_BYTE_MEMSTOPPOS 2227 #define EE_BYTE_MEMPIONLY 2228 +#define EE_BYTE_MEMDOUBLEPI 2229 #ifdef HAS_AIR_BAND -#define EE_BYTE_AIRSTEPSIZE 2229 -#define EE_UINT16_FREQUENCY_AIR 2230 +#define EE_BYTE_AIRSTEPSIZE 2230 +#define EE_UINT16_FREQUENCY_AIR 2231 #endif // End of EEPROM index defines @@ -344,6 +345,10 @@ enum LONGBANDBUTTONPRESS { STANDBY = 0, SCREENOFF }; +enum AUTOMEMPIMODES { + MEMPI_OFF = 0, MEMPI_RANGE, MEMPI_FULL +}; + enum SCAN_CANCEL { SCAN_CANCEL = OFF, CORRECTPI, SIGNAL }; diff --git a/src/gui.cpp b/src/gui.cpp index 3b4dcf4..6a85af5 100644 --- a/src/gui.cpp +++ b/src/gui.cpp @@ -8,7 +8,7 @@ #include byte menuitem; -byte items[10] = {10, static_cast(dynamicspi ? 10 : 9), 7, 10, 10, 10, 9, 6, 7, 7}; +byte items[10] = {10, static_cast(dynamicspi ? 10 : 9), 7, 10, 10, 10, 9, 6, 8, 9}; extern mem presets[]; bool setWiFiConnectParam = false; @@ -1255,7 +1255,16 @@ void ShowOneLine(byte position, byte item, bool selected) { case AUTOMEM: FullLineSprite.setTextDatum(TL_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); - FullLineSprite.drawString(removeNewline(myLanguage[language][276]), 6, 2); + FullLineSprite.drawString(removeNewline(myLanguage[language][278]), 6, 2); + + FullLineSprite.setTextDatum(TR_DATUM); + FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + + switch (memdoublepi) { + case MEMPI_OFF: FullLineSprite.drawString(myLanguage[language][30], 298, 2); break; + case MEMPI_RANGE: FullLineSprite.drawString(myLanguage[language][279], 298, 2); break; + default: FullLineSprite.drawString(myLanguage[language][280], 298, 2); break; + } break; } break; @@ -1356,6 +1365,26 @@ void ShowOneLine(byte position, byte item, bool selected) { FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); FullLineSprite.drawString("kHz", 298, 2); break; + + case DXMODE: + FullLineSprite.setTextDatum(TL_DATUM); + FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); + FullLineSprite.drawString(removeNewline(myLanguage[language][82]), 6, 2); + + FullLineSprite.setTextDatum(TR_DATUM); + FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + FullLineSprite.drawString(String(fmscansens), 298, 2); + break; + + case AUTOMEM: + FullLineSprite.setTextDatum(TL_DATUM); + FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); + FullLineSprite.drawString(removeNewline(myLanguage[language][82]), 6, 2); + + FullLineSprite.setTextDatum(TR_DATUM); + FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + FullLineSprite.drawString(String(fmscansens), 298, 2); + break; } break; @@ -1423,6 +1452,12 @@ void ShowOneLine(byte position, byte item, bool selected) { FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); FullLineSprite.drawString(String(amscansens), 298, 2); break; + + case AUTOMEM: + FullLineSprite.setTextDatum(TL_DATUM); + FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); + FullLineSprite.drawString(removeNewline(myLanguage[language][276]), 6, 2); + break; } break; @@ -2618,6 +2653,14 @@ void MenuUp() { OneBigLineSprite.drawString((scanmute ? myLanguage[language][42] : myLanguage[language][30]), 135, 0); OneBigLineSprite.pushSprite(24, 118); break; + + case ITEM8: + fmscansens++; + if (fmscansens > 30) fmscansens = 1; + + OneBigLineSprite.drawString(String(fmscansens), 135, 0); + OneBigLineSprite.pushSprite(24, 118); + break; } break; @@ -2669,6 +2712,26 @@ void MenuUp() { OneBigLineSprite.drawString((mempionly ? myLanguage[language][42] : myLanguage[language][30]), 135, 0); OneBigLineSprite.pushSprite(24, 118); break; + + case ITEM7: + memdoublepi++; + if (memdoublepi > 2) memdoublepi = 0; + + switch (memdoublepi) { + case MEMPI_OFF: OneBigLineSprite.drawString(myLanguage[language][30], 135, 0); break; + case MEMPI_RANGE: OneBigLineSprite.drawString(myLanguage[language][279], 135, 0); break; + default: OneBigLineSprite.drawString(myLanguage[language][280], 135, 0); break; + } + OneBigLineSprite.pushSprite(24, 118); + break; + + case ITEM8: + fmscansens++; + if (fmscansens > 30) fmscansens = 1; + + OneBigLineSprite.drawString(String(fmscansens), 135, 0); + OneBigLineSprite.pushSprite(24, 118); + break; } break; } @@ -3531,6 +3594,14 @@ void MenuDown() { OneBigLineSprite.drawString((scanmute ? myLanguage[language][42] : myLanguage[language][30]), 135, 0); OneBigLineSprite.pushSprite(24, 118); break; + + case ITEM8: + fmscansens--; + if (fmscansens == 0) fmscansens = 30; + + OneBigLineSprite.drawString(String(fmscansens), 135, 0); + OneBigLineSprite.pushSprite(24, 118); + break; } break; @@ -3582,6 +3653,26 @@ void MenuDown() { OneBigLineSprite.drawString((mempionly ? myLanguage[language][42] : myLanguage[language][30]), 135, 0); OneBigLineSprite.pushSprite(24, 118); break; + + case ITEM7: + memdoublepi--; + if (memdoublepi > 2) memdoublepi = 2; + + switch (memdoublepi) { + case MEMPI_OFF: OneBigLineSprite.drawString(myLanguage[language][30], 135, 0); break; + case MEMPI_RANGE: OneBigLineSprite.drawString(myLanguage[language][279], 135, 0); break; + default: OneBigLineSprite.drawString(myLanguage[language][280], 135, 0); break; + } + OneBigLineSprite.pushSprite(24, 118); + break; + + case ITEM8: + fmscansens--; + if (fmscansens == 0) fmscansens = 30; + + OneBigLineSprite.drawString(String(fmscansens), 135, 0); + OneBigLineSprite.pushSprite(24, 118); + break; } break; } @@ -4473,6 +4564,13 @@ void DoMenu() { OneBigLineSprite.drawString((scanmute ? myLanguage[language][42] : myLanguage[language][30]), 135, 0); OneBigLineSprite.pushSprite(24, 118); break; + + case ITEM8: + Infoboxprint(myLanguage[language][82]); + + OneBigLineSprite.drawString(String(fmscansens), 135, 0); + OneBigLineSprite.pushSprite(24, 118); + break; } break; @@ -4480,7 +4578,7 @@ void DoMenu() { switch (menuoption) { case ITEM1: Infoboxprint(myLanguage[language][270]); - switch (doAutoMemory(memstartfreq, memstopfreq, memstartpos, memstoppos, mempionly)) { + switch (doAutoMemory(memstartfreq, memstopfreq, memstartpos, memstoppos, mempionly, memdoublepi)) { case 0: tftPrint(0, myLanguage[language][275], 160, 175, ActiveColor, ActiveColorSmooth, 16); break; @@ -4541,6 +4639,24 @@ void DoMenu() { break; case ITEM7: + Infoboxprint(myLanguage[language][278]); + + switch (memdoublepi) { + case MEMPI_OFF: OneBigLineSprite.drawString(myLanguage[language][30], 135, 0); break; + case MEMPI_RANGE: OneBigLineSprite.drawString(myLanguage[language][279], 135, 0); break; + default: OneBigLineSprite.drawString(myLanguage[language][280], 135, 0); break; + } + OneBigLineSprite.pushSprite(24, 118); + break; + + case ITEM8: + Infoboxprint(myLanguage[language][82]); + + OneBigLineSprite.drawString(String(fmscansens), 135, 0); + OneBigLineSprite.pushSprite(24, 118); + break; + + case ITEM9: Infoboxprint(myLanguage[language][276]); ClearMemoryRange(memstartpos, memstoppos); diff --git a/src/gui.h b/src/gui.h index f220d02..69bb606 100644 --- a/src/gui.h +++ b/src/gui.h @@ -103,6 +103,7 @@ extern byte language; extern byte licold; extern byte longbandpress; extern byte memorypos; +extern byte memdoublepi; extern byte mempionly; extern byte memstartpos; extern byte memstoppos; @@ -243,6 +244,6 @@ extern void UpdateFonts(byte mode); extern void tftPrint(int8_t offset, const String & text, int16_t x, int16_t y, int color, int smoothcolor, uint8_t fontsize); extern void setAutoSpeedSPI(); extern void showAutoSquelch(bool mode); -extern uint8_t doAutoMemory(uint16_t startfreq, uint16_t stopfreq, uint8_t startmem, uint8_t stopmem, bool pisearch); +extern uint8_t doAutoMemory(uint16_t startfreq, uint16_t stopfreq, uint8_t startmem, uint8_t stopmem, bool rdsonly, uint8_t doublepi); extern void ClearMemoryRange(uint8_t start, uint8_t stop); #endif \ No newline at end of file diff --git a/src/language.h b/src/language.h index 11a4549..eb96967 100644 --- a/src/language.h +++ b/src/language.h @@ -5,7 +5,7 @@ // [number of languages][number of texts] -static const char* const myLanguage[18][278] PROGMEM = { +static const char* const myLanguage[18][281] PROGMEM = { { "English", // English "Rotary direction changed", // 1 "Please release button", // 2 @@ -283,7 +283,10 @@ static const char* const myLanguage[18][278] PROGMEM = { "Abort! User pressed button", // 274 "Scan finished without errors", // 275 "Clear memory channels", // 276 - "cleared" // 277 + "cleared", // 277 + "Prevent double PI", // 278 + "Range", // 279 + "Full" // 280 }, { "Nederlands", // Dutch @@ -563,7 +566,10 @@ static const char* const myLanguage[18][278] PROGMEM = { "Afgebroken! Knop ingedrukt", // 274 "Zoeken zonder fouten voltooid", // 275 "Wis geheugenkanalen", // 276 - "gewist" // 277 + "gewist", // 277 + "Voorkom dubbele PI", // 278 + "Bereik", // 279 + "Volledig" // 280 }, { "Polski", // Polish @@ -843,7 +849,10 @@ static const char* const myLanguage[18][278] PROGMEM = { "Abort! User pressed button", // 274 "Scan finished without errors", // 275 "Clear memory channels", // 276 - "cleared" // 277 + "cleared", // 277 + "Prevent double PI", // 278 + "Range", // 279 + "Full" // 280 }, { "Hrvatski", // Croatian @@ -1123,7 +1132,10 @@ static const char* const myLanguage[18][278] PROGMEM = { "Abort! User pressed button", // 274 "Scan finished without errors", // 275 "Clear memory channels", // 276 - "cleared" // 277 + "cleared", // 277 + "Prevent double PI", // 278 + "Range", // 279 + "Full" // 280 }, { "Ελληνικά", // Greek @@ -1403,7 +1415,10 @@ static const char* const myLanguage[18][278] PROGMEM = { "Ματαίωση! Πιέση\nπλήκτρου χρήστη", // 274 "Η ανίχνευση ολοκληρώθηκε\nχωρίς σφάλματα", // 275 "Εκκαθάριση καναλιών μνήμης", // 276 - "εγινε εκκαθάριση" // 277 + "εγινε εκκαθάριση", // 277 + "Prevent double PI", // 278 + "Range", // 279 + "Full" // 280 }, { "Română", // Romanian @@ -1683,7 +1698,10 @@ static const char* const myLanguage[18][278] PROGMEM = { "Abort! User pressed button", // 274 "Scan finished without errors", // 275 "Clear memory channels", // 276 - "cleared" // 277 + "cleared", // 277 + "Prevent double PI", // 278 + "Range", // 279 + "Full" // 280 }, { "Deutsch", // German @@ -1963,7 +1981,10 @@ static const char* const myLanguage[18][278] PROGMEM = { "Abort! User pressed button", // 274 "Scan finished without errors", // 275 "Clear memory channels", // 276 - "cleared" // 277 + "cleared", // 277 + "Prevent double PI", // 278 + "Range", // 279 + "Full" // 280 }, { "Český", // Czech @@ -2243,7 +2264,10 @@ static const char* const myLanguage[18][278] PROGMEM = { "Abort! User pressed button", // 274 "Scan finished without errors", // 275 "Clear memory channels", // 276 - "cleared" // 277 + "cleared", // 277 + "Prevent double PI", // 278 + "Range", // 279 + "Full" // 280 }, { "Magyar", // Hungarian @@ -2523,7 +2547,10 @@ static const char* const myLanguage[18][278] PROGMEM = { "Abort! User pressed button", // 274 "Scan finished without errors", // 275 "Clear memory channels", // 276 - "cleared" // 277 + "cleared", // 277 + "Prevent double PI", // 278 + "Range", // 279 + "Full" // 280 }, { "Français", // French @@ -2803,7 +2830,10 @@ static const char* const myLanguage[18][278] PROGMEM = { "Abandonner! Bouton\nappuyé par l'user", // 274 "Analyse terminée\nsans erreurs", // 275 "Effacer les canaux\nde mémoire", // 276 - "effacé" // 277 + "effacé", // 277 + "Prevent double PI", // 278 + "Range", // 279 + "Full" // 280 }, { "Български", // Bulgarian @@ -3083,7 +3113,10 @@ static const char* const myLanguage[18][278] PROGMEM = { "Abort! User pressed button", // 274 "Scan finished without errors", // 275 "Clear memory channels", // 276 - "cleared" // 277 + "cleared", // 277 + "Prevent double PI", // 278 + "Range", // 279 + "Full" // 280 }, { "Русский", // Russian @@ -3363,7 +3396,10 @@ static const char* const myLanguage[18][278] PROGMEM = { "Abort! User pressed button", // 274 "Scan finished without errors", // 275 "Clear memory channels", // 276 - "cleared" // 277 + "cleared", // 277 + "Prevent double PI", // 278 + "Range", // 279 + "Full" // 280 }, { "Українська", // Ukranian @@ -3643,7 +3679,10 @@ static const char* const myLanguage[18][278] PROGMEM = { "Abort! User pressed button", // 274 "Scan finished without errors", // 275 "Clear memory channels", // 276 - "cleared" // 277 + "cleared", // 277 + "Prevent double PI", // 278 + "Range", // 279 + "Full" // 280 }, { "Italiano", // Italian @@ -3923,7 +3962,10 @@ static const char* const myLanguage[18][278] PROGMEM = { "Abort! User pressed button", // 274 "Scan finished without errors", // 275 "Clear memory channels", // 276 - "cleared" // 277 + "cleared", // 277 + "Prevent double PI", // 278 + "Range", // 279 + "Full" // 280 }, { "Simplified Chinese", // Simplified Chinese @@ -4203,7 +4245,10 @@ static const char* const myLanguage[18][278] PROGMEM = { "Abort! User pressed button", // 274 "Scan finished without errors", // 275 "Clear memory channels", // 276 - "cleared" // 277 + "cleared", // 277 + "Prevent double PI", // 278 + "Range", // 279 + "Full" // 280 }, { "Norsk", // Norwegian @@ -4483,7 +4528,10 @@ static const char* const myLanguage[18][278] PROGMEM = { "Abort! User pressed button", // 274 "Scan finished without errors", // 275 "Clear memory channels", // 276 - "cleared" // 277 + "cleared", // 277 + "Prevent double PI", // 278 + "Range", // 279 + "Full" // 280 }, { "Español", // Spanish @@ -4763,7 +4811,10 @@ static const char* const myLanguage[18][278] PROGMEM = { "¡Abortar! Usuario\npresionó el botón", // 274 "Escaneo finalizado\nsin errores", // 275 "Borrar canales\nde memoria", // 276 - "borrado" // 277 + "borrado", // 277 + "Prevent double PI", // 278 + "Range", // 279 + "Full" // 280 }, { "Português", // Portuguese @@ -5043,7 +5094,10 @@ static const char* const myLanguage[18][278] PROGMEM = { "Abortar! Usuário\npressionou o botão", // 274 "Verificação concluída\nsem erros", // 275 "Limpar canais\nde memória", // 276 - "limpo" // 277 + "limpo", // 277 + "Prevent double PI", // 278 + "Range", // 279 + "Full" // 280 } }; #endif \ No newline at end of file From 81ee1413b1b7beb8a960b07cb7eef786ba7b345b Mon Sep 17 00:00:00 2001 From: Sjef Verhoeven PE5PVB Date: Tue, 6 Aug 2024 16:13:04 +0200 Subject: [PATCH 2/4] Made selectors smaller --- TEF6686_ESP32.ino | 52 +++++++++++++++++++++++------------------------ 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/TEF6686_ESP32.ino b/TEF6686_ESP32.ino index b5c9568..7d30988 100644 --- a/TEF6686_ESP32.ino +++ b/TEF6686_ESP32.ino @@ -870,10 +870,10 @@ void loop() { if (millis() >= flashingtimer + 500) { flashing = !flashing; if (flashing) { - tft.fillRoundRect(1, 79, 42, 20, 5, SecondaryColor); + tft.fillRoundRect(2, 80, 40, 18, 5, SecondaryColor); tftPrint(0, "MEM", 22, 82, BackgroundColor, SecondaryColor, 16); } else { - tft.fillRoundRect(1, 79, 42, 20, 5, GreyoutColor); + tft.fillRoundRect(2, 80, 40, 18, 5, GreyoutColor); tftPrint(0, "MEM", 22, 82, BackgroundColor, GreyoutColor, 16); } flashingtimer = millis(); @@ -2204,9 +2204,9 @@ void SelectBand() { tftPrint(-1, "RT:", 3, 221, GreyoutColor, BackgroundColor, 16); tftPrint(-1, "PTY:", 3, 163, GreyoutColor, BackgroundColor, 16); tft.drawBitmap(122, 5, RDSLogo, 35, 22, GreyoutColor); - tft.fillRoundRect(248, 56, 32, 20, 5, GreyoutColor); + tft.fillRoundRect(249, 57, 30, 18, 5, GreyoutColor); tftPrint(0, "iMS", 265, 59, BackgroundColor, BackgroundColor, 16); - tft.fillRoundRect(286, 56, 32, 20, 5, GreyoutColor); + tft.fillRoundRect(287, 57, 30, 18, 5, GreyoutColor); tftPrint(0, "EQ", 301, 59, BackgroundColor, BackgroundColor, 16); tftReplace(-1, "MHz", "kHz", 258, 76, ActiveColor, ActiveColorSmooth, BackgroundColor, 28); // todo @@ -3509,13 +3509,13 @@ void doSquelch() { void updateBW() {//todo air if (BWset == 0) { if (!screenmute && !advancedRDS && !afscreen) { - tft.fillRoundRect(247, 35, 71, 20, 5, SecondaryColor); + tft.fillRoundRect(248, 36, 69, 18, 5, SecondaryColor); tftPrint(0, "AUTO BW", 282, 38, BackgroundColor, SecondaryColor, 16); } radio.setFMABandw(); } else { if (!screenmute && !advancedRDS && !afscreen) { - tft.fillRoundRect(247, 35, 71, 20, 5, GreyoutColor); + tft.fillRoundRect(248, 36, 69, 18, 5, GreyoutColor); tftPrint(0, "AUTO BW", 282, 38, BackgroundColor, GreyoutColor, 16); } } @@ -3525,13 +3525,13 @@ void updateiMS() { if (band < BAND_GAP) { if (iMSset == 0) { if (!screenmute && !advancedRDS && !afscreen) { - tft.fillRoundRect(248, 56, 32, 20, 5, SecondaryColor); + tft.fillRoundRect(249, 57, 30, 18, 5, SecondaryColor); tftPrint(0, "iMS", 265, 59, BackgroundColor, SecondaryColor, 16); } radio.setiMS(1); } else { if (!screenmute && !advancedRDS && !afscreen) { - tft.fillRoundRect(248, 56, 32, 20, 5, GreyoutColor); + tft.fillRoundRect(249, 57, 30, 18, 5, GreyoutColor); tftPrint(0, "iMS", 265, 59, BackgroundColor, GreyoutColor, 16); } radio.setiMS(0); @@ -3543,13 +3543,13 @@ void updateEQ() { if (band < BAND_GAP) { if (EQset == 0) { if (!screenmute && !advancedRDS && !afscreen) { - tft.fillRoundRect(286, 56, 32, 20, 5, SecondaryColor); + tft.fillRoundRect(287, 57, 30, 18, 5, SecondaryColor); tftPrint(0, "EQ", 301, 59, BackgroundColor, SecondaryColor, 16); } radio.setEQ(1); } else { if (!screenmute && !advancedRDS && !afscreen) { - tft.fillRoundRect(286, 56, 32, 20, 5, GreyoutColor); + tft.fillRoundRect(287, 57, 30, 18, 5, GreyoutColor); tftPrint(0, "EQ", 301, 59, BackgroundColor, GreyoutColor, 16); } radio.setEQ(0); @@ -3703,29 +3703,29 @@ void ShowTuneMode() { case TUNE_MAN: if (band == BAND_SW && nowToggleSWMIBand) { tftPrint(0, "AUTO", 22, 60, GreyoutColor, GreyoutColor, 16); - tft.fillRoundRect(1, 57, 42, 20, 5, GreyoutColor); + tft.fillRoundRect(2, 58, 40, 18, 5, GreyoutColor); tftPrint(0, "BAND", 22, 60, BackgroundColor, GreyoutColor, 16); } else { tftPrint(0, "BAND", 22, 60, GreyoutColor, GreyoutColor, 16); - tft.fillRoundRect(1, 57, 42, 20, 5, GreyoutColor); + tft.fillRoundRect(2, 58, 40, 18, 5, GreyoutColor); tftPrint(0, "AUTO", 22, 60, BackgroundColor, GreyoutColor, 16); } - tft.fillRoundRect(1, 35, 42, 20, 5, SecondaryColor); + tft.fillRoundRect(2, 36, 40, 18, 5, SecondaryColor); tftPrint(0, "MAN", 22, 38, BackgroundColor, SecondaryColor, 16); - tft.fillRoundRect(1, 79, 42, 20, 5, GreyoutColor); + tft.fillRoundRect(2, 80, 40, 18, 5, GreyoutColor); tftPrint(0, "MEM", 22, 82, BackgroundColor, GreyoutColor, 16); break; case TUNE_AUTO: - tft.fillRoundRect(1, 57, 42, 20, 5, SecondaryColor); + tft.fillRoundRect(2, 58, 40, 18, 5, SecondaryColor); tftPrint(0, "AUTO", 22, 60, BackgroundColor, SecondaryColor, 16); - tft.fillRoundRect(1, 35, 42, 20, 5, GreyoutColor); + tft.fillRoundRect(2, 36, 40, 18, 5, GreyoutColor); tftPrint(0, "MAN", 22, 38, BackgroundColor, GreyoutColor, 16); - tft.fillRoundRect(1, 79, 42, 20, 5, GreyoutColor); + tft.fillRoundRect(2, 80, 40, 18, 5, GreyoutColor); tftPrint(0, "MEM", 22, 82, BackgroundColor, GreyoutColor, 16); break; @@ -3733,35 +3733,35 @@ void ShowTuneMode() { if (band == BAND_SW && nowToggleSWMIBand) { tftPrint(0, "AUTO", 22, 60, GreyoutColor, GreyoutColor, 16); - tft.fillRoundRect(1, 57, 42, 20, 5, GreyoutColor); + tft.fillRoundRect(2, 58, 40, 18, 5, GreyoutColor); tftPrint(0, "BAND", 22, 60, BackgroundColor, GreyoutColor, 16); } else { tftPrint(0, "BAND", 22, 60, BackgroundColor, GreyoutColor, 16); - tft.fillRoundRect(1, 57, 42, 20, 5, GreyoutColor); + tft.fillRoundRect(2, 58, 40, 18, 5, GreyoutColor); tftPrint(0, "AUTO", 22, 60, BackgroundColor, GreyoutColor, 16); } - tft.fillRoundRect(1, 35, 42, 20, 5, GreyoutColor); + tft.fillRoundRect(2, 36, 40, 18, 5, GreyoutColor); tftPrint(0, "MAN", 22, 38, BackgroundColor, GreyoutColor, 16); if (memorystore) { - tft.fillRoundRect(1, 79, 42, 20, 5, SignificantColor); + tft.fillRoundRect(2, 80, 40, 18, 5, SignificantColor); tftPrint(0, "MEM", 22, 82, BackgroundColor, SignificantColor, 16); } else { - tft.fillRoundRect(1, 79, 42, 20, 5, SecondaryColor); + tft.fillRoundRect(2, 80, 40, 18, 5, SecondaryColor); tftPrint(0, "MEM", 22, 82, BackgroundColor, SecondaryColor, 16); } break; case TUNE_MI_BAND: - tft.fillRoundRect(1, 57, 42, 20, 5, SecondaryColor); + tft.fillRoundRect(2, 58, 40, 18, 5, SecondaryColor); tftPrint(0, "BAND", 22, 60, BackgroundColor, SecondaryColor, 16); - tft.fillRoundRect(1, 35, 42, 20, 5, GreyoutColor); + tft.fillRoundRect(2, 36, 40, 18, 5, GreyoutColor); tftPrint(0, "MAN", 22, 38, BackgroundColor, GreyoutColor, 16); - tft.fillRoundRect(1, 79, 42, 20, 5, GreyoutColor); + tft.fillRoundRect(2, 80, 40, 18, 5, GreyoutColor); tftPrint(0, "MEM", 22, 82, BackgroundColor, GreyoutColor, 16); break; } @@ -4429,7 +4429,7 @@ void cancelDXScan() { tft.drawBitmap(92, 4, Speaker, 26, 22, GreyoutColor); if (!flashing) { - tft.fillRoundRect(1, 79, 42, 20, 5, SecondaryColor); + tft.fillRoundRect(2, 80, 40, 18, 5, SecondaryColor); tftPrint(0, "MEM", 22, 82, BackgroundColor, SecondaryColor, 16); } From 5baf2a9d3cb90940b2a91fc5a3962a27aca6849a Mon Sep 17 00:00:00 2001 From: MCelliotG Date: Tue, 6 Aug 2024 21:16:20 +0300 Subject: [PATCH 3/4] Smoother selector edges --- TEF6686_ESP32.ino | 60 +++++++++++++++++++++++------------------------ 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/TEF6686_ESP32.ino b/TEF6686_ESP32.ino index 7d30988..583fe1d 100644 --- a/TEF6686_ESP32.ino +++ b/TEF6686_ESP32.ino @@ -870,10 +870,10 @@ void loop() { if (millis() >= flashingtimer + 500) { flashing = !flashing; if (flashing) { - tft.fillRoundRect(2, 80, 40, 18, 5, SecondaryColor); + tft.fillRoundRect(2, 80, 40, 18, 2, SecondaryColor); tftPrint(0, "MEM", 22, 82, BackgroundColor, SecondaryColor, 16); } else { - tft.fillRoundRect(2, 80, 40, 18, 5, GreyoutColor); + tft.fillRoundRect(2, 80, 40, 18, 2, GreyoutColor); tftPrint(0, "MEM", 22, 82, BackgroundColor, GreyoutColor, 16); } flashingtimer = millis(); @@ -910,8 +910,8 @@ void loop() { SQ = true; if (!screenmute) { if (advancedRDS) { - tft.drawRoundRect(10, 30, 300, 170, 5, ActiveColor); - tft.fillRoundRect(12, 32, 296, 166, 5, BackgroundColor); + tft.drawRoundRect(10, 30, 300, 170, 2, ActiveColor); + tft.fillRoundRect(12, 32, 296, 166, 2, BackgroundColor); tftPrint(0, myLanguage[language][34], 160, 100, ActiveColor, ActiveColorSmooth, 28); } else { ShowFreq(1); @@ -2204,10 +2204,10 @@ void SelectBand() { tftPrint(-1, "RT:", 3, 221, GreyoutColor, BackgroundColor, 16); tftPrint(-1, "PTY:", 3, 163, GreyoutColor, BackgroundColor, 16); tft.drawBitmap(122, 5, RDSLogo, 35, 22, GreyoutColor); - tft.fillRoundRect(249, 57, 30, 18, 5, GreyoutColor); - tftPrint(0, "iMS", 265, 59, BackgroundColor, BackgroundColor, 16); - tft.fillRoundRect(287, 57, 30, 18, 5, GreyoutColor); - tftPrint(0, "EQ", 301, 59, BackgroundColor, BackgroundColor, 16); + tft.fillRoundRect(249, 57, 30, 18, 2, GreyoutColor); + tftPrint(0, "iMS", 265, 59, BackgroundColor, GreyoutColor, 16); + tft.fillRoundRect(287, 57, 30, 18, 2, GreyoutColor); + tftPrint(0, "EQ", 301, 59, BackgroundColor, GreyoutColor, 16); tftReplace(-1, "MHz", "kHz", 258, 76, ActiveColor, ActiveColorSmooth, BackgroundColor, 28); // todo // if (band == AM_BAND_AIR) tftPrint(-1, "MHz", 258, 76, ActiveColor, ActiveColorSmooth, 28); @@ -3509,13 +3509,13 @@ void doSquelch() { void updateBW() {//todo air if (BWset == 0) { if (!screenmute && !advancedRDS && !afscreen) { - tft.fillRoundRect(248, 36, 69, 18, 5, SecondaryColor); + tft.fillRoundRect(248, 36, 69, 18, 2, SecondaryColor); tftPrint(0, "AUTO BW", 282, 38, BackgroundColor, SecondaryColor, 16); } radio.setFMABandw(); } else { if (!screenmute && !advancedRDS && !afscreen) { - tft.fillRoundRect(248, 36, 69, 18, 5, GreyoutColor); + tft.fillRoundRect(248, 36, 69, 18, 2, GreyoutColor); tftPrint(0, "AUTO BW", 282, 38, BackgroundColor, GreyoutColor, 16); } } @@ -3525,13 +3525,13 @@ void updateiMS() { if (band < BAND_GAP) { if (iMSset == 0) { if (!screenmute && !advancedRDS && !afscreen) { - tft.fillRoundRect(249, 57, 30, 18, 5, SecondaryColor); + tft.fillRoundRect(249, 57, 30, 18, 2, SecondaryColor); tftPrint(0, "iMS", 265, 59, BackgroundColor, SecondaryColor, 16); } radio.setiMS(1); } else { if (!screenmute && !advancedRDS && !afscreen) { - tft.fillRoundRect(249, 57, 30, 18, 5, GreyoutColor); + tft.fillRoundRect(249, 57, 30, 18, 2, GreyoutColor); tftPrint(0, "iMS", 265, 59, BackgroundColor, GreyoutColor, 16); } radio.setiMS(0); @@ -3543,13 +3543,13 @@ void updateEQ() { if (band < BAND_GAP) { if (EQset == 0) { if (!screenmute && !advancedRDS && !afscreen) { - tft.fillRoundRect(287, 57, 30, 18, 5, SecondaryColor); + tft.fillRoundRect(287, 57, 30, 18, 2, SecondaryColor); tftPrint(0, "EQ", 301, 59, BackgroundColor, SecondaryColor, 16); } radio.setEQ(1); } else { if (!screenmute && !advancedRDS && !afscreen) { - tft.fillRoundRect(287, 57, 30, 18, 5, GreyoutColor); + tft.fillRoundRect(287, 57, 30, 18, 2, GreyoutColor); tftPrint(0, "EQ", 301, 59, BackgroundColor, GreyoutColor, 16); } radio.setEQ(0); @@ -3703,29 +3703,29 @@ void ShowTuneMode() { case TUNE_MAN: if (band == BAND_SW && nowToggleSWMIBand) { tftPrint(0, "AUTO", 22, 60, GreyoutColor, GreyoutColor, 16); - tft.fillRoundRect(2, 58, 40, 18, 5, GreyoutColor); + tft.fillRoundRect(2, 58, 40, 18, 2, GreyoutColor); tftPrint(0, "BAND", 22, 60, BackgroundColor, GreyoutColor, 16); } else { tftPrint(0, "BAND", 22, 60, GreyoutColor, GreyoutColor, 16); - tft.fillRoundRect(2, 58, 40, 18, 5, GreyoutColor); + tft.fillRoundRect(2, 58, 40, 18, 2, GreyoutColor); tftPrint(0, "AUTO", 22, 60, BackgroundColor, GreyoutColor, 16); } - tft.fillRoundRect(2, 36, 40, 18, 5, SecondaryColor); + tft.fillRoundRect(2, 36, 40, 18, 2, SecondaryColor); tftPrint(0, "MAN", 22, 38, BackgroundColor, SecondaryColor, 16); - tft.fillRoundRect(2, 80, 40, 18, 5, GreyoutColor); + tft.fillRoundRect(2, 80, 40, 18, 2, GreyoutColor); tftPrint(0, "MEM", 22, 82, BackgroundColor, GreyoutColor, 16); break; case TUNE_AUTO: - tft.fillRoundRect(2, 58, 40, 18, 5, SecondaryColor); + tft.fillRoundRect(2, 58, 40, 18, 2, SecondaryColor); tftPrint(0, "AUTO", 22, 60, BackgroundColor, SecondaryColor, 16); - tft.fillRoundRect(2, 36, 40, 18, 5, GreyoutColor); + tft.fillRoundRect(2, 36, 40, 18, 2, GreyoutColor); tftPrint(0, "MAN", 22, 38, BackgroundColor, GreyoutColor, 16); - tft.fillRoundRect(2, 80, 40, 18, 5, GreyoutColor); + tft.fillRoundRect(2, 80, 40, 18, 2, GreyoutColor); tftPrint(0, "MEM", 22, 82, BackgroundColor, GreyoutColor, 16); break; @@ -3733,35 +3733,35 @@ void ShowTuneMode() { if (band == BAND_SW && nowToggleSWMIBand) { tftPrint(0, "AUTO", 22, 60, GreyoutColor, GreyoutColor, 16); - tft.fillRoundRect(2, 58, 40, 18, 5, GreyoutColor); + tft.fillRoundRect(2, 58, 40, 18, 2, GreyoutColor); tftPrint(0, "BAND", 22, 60, BackgroundColor, GreyoutColor, 16); } else { tftPrint(0, "BAND", 22, 60, BackgroundColor, GreyoutColor, 16); - tft.fillRoundRect(2, 58, 40, 18, 5, GreyoutColor); + tft.fillRoundRect(2, 58, 40, 18, 2, GreyoutColor); tftPrint(0, "AUTO", 22, 60, BackgroundColor, GreyoutColor, 16); } - tft.fillRoundRect(2, 36, 40, 18, 5, GreyoutColor); + tft.fillRoundRect(2, 36, 40, 18, 2, GreyoutColor); tftPrint(0, "MAN", 22, 38, BackgroundColor, GreyoutColor, 16); if (memorystore) { - tft.fillRoundRect(2, 80, 40, 18, 5, SignificantColor); + tft.fillRoundRect(2, 80, 40, 18, 2, SignificantColor); tftPrint(0, "MEM", 22, 82, BackgroundColor, SignificantColor, 16); } else { - tft.fillRoundRect(2, 80, 40, 18, 5, SecondaryColor); + tft.fillRoundRect(2, 80, 40, 18, 2, SecondaryColor); tftPrint(0, "MEM", 22, 82, BackgroundColor, SecondaryColor, 16); } break; case TUNE_MI_BAND: - tft.fillRoundRect(2, 58, 40, 18, 5, SecondaryColor); + tft.fillRoundRect(2, 58, 40, 18, 2, SecondaryColor); tftPrint(0, "BAND", 22, 60, BackgroundColor, SecondaryColor, 16); - tft.fillRoundRect(2, 36, 40, 18, 5, GreyoutColor); + tft.fillRoundRect(2, 36, 40, 18, 2, GreyoutColor); tftPrint(0, "MAN", 22, 38, BackgroundColor, GreyoutColor, 16); - tft.fillRoundRect(2, 80, 40, 18, 5, GreyoutColor); + tft.fillRoundRect(2, 80, 40, 18, 2, GreyoutColor); tftPrint(0, "MEM", 22, 82, BackgroundColor, GreyoutColor, 16); break; } @@ -4429,7 +4429,7 @@ void cancelDXScan() { tft.drawBitmap(92, 4, Speaker, 26, 22, GreyoutColor); if (!flashing) { - tft.fillRoundRect(2, 80, 40, 18, 5, SecondaryColor); + tft.fillRoundRect(2, 80, 40, 18, 2, SecondaryColor); tftPrint(0, "MEM", 22, 82, BackgroundColor, SecondaryColor, 16); } From b35240f958c81c5c5459c695c39cc0cb2fb06e02 Mon Sep 17 00:00:00 2001 From: MCelliotG Date: Tue, 6 Aug 2024 21:16:59 +0300 Subject: [PATCH 4/4] Translation updates --- src/language.h | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/src/language.h b/src/language.h index eb96967..a56f5ec 100644 --- a/src/language.h +++ b/src/language.h @@ -1415,10 +1415,10 @@ static const char* const myLanguage[18][281] PROGMEM = { "Ματαίωση! Πιέση\nπλήκτρου χρήστη", // 274 "Η ανίχνευση ολοκληρώθηκε\nχωρίς σφάλματα", // 275 "Εκκαθάριση καναλιών μνήμης", // 276 - "εγινε εκκαθάριση", // 277 - "Prevent double PI", // 278 - "Range", // 279 - "Full" // 280 + "έγινε εκκαθάριση", // 277 + "Αποφυγή διπλού PI", // 278 + "Εύρος", // 279 + "Πλήρης" // 280 }, { "Română", // Romanian @@ -2831,9 +2831,10 @@ static const char* const myLanguage[18][281] PROGMEM = { "Analyse terminée\nsans erreurs", // 275 "Effacer les canaux\nde mémoire", // 276 "effacé", // 277 - "Prevent double PI", // 278 - "Range", // 279 - "Full" // 280 + "Prévenir double PI", // 278 + "Plage", // 279 + "Complet" // 280 + }, { "Български", // Bulgarian @@ -4812,9 +4813,10 @@ static const char* const myLanguage[18][281] PROGMEM = { "Escaneo finalizado\nsin errores", // 275 "Borrar canales\nde memoria", // 276 "borrado", // 277 - "Prevent double PI", // 278 - "Range", // 279 - "Full" // 280 + "Prevenir doble PI", // 278 + "Rango", // 279 + "Completo" // 280 + }, { "Português", // Portuguese @@ -5095,9 +5097,10 @@ static const char* const myLanguage[18][281] PROGMEM = { "Verificação concluída\nsem erros", // 275 "Limpar canais\nde memória", // 276 "limpo", // 277 - "Prevent double PI", // 278 - "Range", // 279 - "Full" // 280 + "Prevenir PI duplo", // 278 + "Intervalo", // 279 + "Completo" // 280 + } }; #endif \ No newline at end of file