From 9ec8b1a90ae4e677dabc6fbf79164826bff81fbd Mon Sep 17 00:00:00 2001 From: Sjef Verhoeven PE5PVB Date: Tue, 21 Jan 2025 17:07:59 +0100 Subject: [PATCH] Only long BW press will cancel DX scan --- TEF6686_ESP32.ino | 41 +++++++++++++++++++++------- src/language.h | 69 ++++++++++++++++++++++++++++++----------------- src/logbook.cpp | 22 +++++++-------- src/touch.cpp | 3 ++- src/touch.h | 1 + 5 files changed, 91 insertions(+), 45 deletions(-) diff --git a/TEF6686_ESP32.ino b/TEF6686_ESP32.ino index ab50245..f2b118a 100644 --- a/TEF6686_ESP32.ino +++ b/TEF6686_ESP32.ino @@ -1880,7 +1880,8 @@ void BANDBUTTONPress() { if (seek) radio.setUnMute(); seek = false; if (scandxmode) { - cancelDXScan(); + ShowFreq(5); + ShowFreq(0); } else { if (memorystore) { EEPROM.writeByte(memorypos + EE_PRESETS_BAND_START, BAND_FM); @@ -2460,7 +2461,16 @@ void BWButtonPress() { if (seek) radio.setUnMute(); seek = false; if (scandxmode) { - cancelDXScan(); + unsigned long counterold = millis(); + unsigned long counter = millis(); + while (digitalRead(BWBUTTON) == LOW && counter - counterold <= 1000) counter = millis(); + + if (counter - counterold < 1000) { + ShowFreq(5); + ShowFreq(0); + } else { + cancelDXScan(); + } } else { if (!usesquelch) radio.setUnMute(); if (!BWtune && !menu) { @@ -2522,7 +2532,8 @@ void ModeButtonPress() { if (seek) radio.setUnMute(); seek = false; if (scandxmode) { - cancelDXScan(); + ShowFreq(5); + ShowFreq(0); } else { if (!usesquelch) radio.setUnMute(); if (advancedRDS) { @@ -2716,7 +2727,8 @@ void ButtonPress() { if (seek) radio.setUnMute(); seek = false; if (scandxmode) { - cancelDXScan(); + ShowFreq(5); + ShowFreq(0); } else { if (!usesquelch) radio.setUnMute(); if (advancedRDS) { @@ -2827,7 +2839,8 @@ void ButtonPress() { void KeyUp() { rotary = 0; if (scandxmode) { - cancelDXScan(); + ShowFreq(5); + ShowFreq(0); } else { if (!afscreen) { if (!BWtune && !menu) { @@ -2894,7 +2907,8 @@ void KeyUp() { void KeyDown() { rotary = 0; if (scandxmode) { - cancelDXScan(); + ShowFreq(5); + ShowFreq(0); } else { if (!afscreen) { if (!BWtune && !menu) { @@ -3221,15 +3235,21 @@ void ShowFreq(int mode) { case 3: FrequencySprite.fillSprite(BackgroundColor); FrequencySprite.pushSprite(46, 46); - tftPrint(0, myLanguage[language][291], 146, 58, ActiveColor, ActiveColorSmooth, 28); + tftPrint(0, myLanguage[language][291], 146, 58, ActiveColor, ActiveColorSmooth, 16); break; case 4: FrequencySprite.fillSprite(BackgroundColor); FrequencySprite.pushSprite(46, 46); - tftPrint(0, myLanguage[language][297], 146, 58, ActiveColor, ActiveColorSmooth, 28); + tftPrint(0, myLanguage[language][297], 146, 58, ActiveColor, ActiveColorSmooth, 16); break; + case 5: + FrequencySprite.fillSprite(BackgroundColor); + FrequencySprite.pushSprite(46, 46); + tftPrint(0, myLanguage[language][303], 146, 58, ActiveColor, ActiveColorSmooth, 16); + delay(400); + break; } FrequencySprite.unloadFont(); } @@ -5305,7 +5325,10 @@ void TuneFreq(int temp) { void NumpadProcess(int num) { if (scandxmode) { - if (num == 127) cancelDXScan(); + if (num == 127) { + ShowFreq(5); + ShowFreq(0); + } } else { if (num == 127) { freq_in = 0; diff --git a/src/language.h b/src/language.h index 77c92ba..384ff5a 100644 --- a/src/language.h +++ b/src/language.h @@ -5,7 +5,7 @@ // [number of languages][number of texts] -static const char* const myLanguage[21][303] PROGMEM = { +static const char* const myLanguage[21][304] PROGMEM = { { "English", // English "Rotary direction changed", // 1 "Please release button", // 2 @@ -308,7 +308,8 @@ static const char* const myLanguage[21][303] PROGMEM = { "Auto DST on NTP time", // 299 "The logbook contains over 130 entries, which the viewer cannot process. Please download the CSV file to process it.", // 300 "PI locked CT sync", // 301 - "Error! No RDS signal" // 302 + "Error! No RDS signal", // 302 + "Hold BW to stop" // 303 }, { "Nederlands", // Dutch @@ -613,7 +614,8 @@ static const char* const myLanguage[21][303] PROGMEM = { "Auto zomertijd\nop NTP tijd", // 299 "Het logboek bevat meer dan 130 items, die de viewer niet kan verwerken. Download alstublieft het CSV-bestand om het te bekijken.", // 300 "PI gebonden CT sync", // 301 - "Fout! Geen RDS!" // 302 + "Fout! Geen RDS!", // 302 + "Stoppen: BW lang indrukken" // 303 }, { "Polski", // Polish @@ -918,7 +920,8 @@ static const char* const myLanguage[21][303] PROGMEM = { "Auto czas letni wg NTP", // 299 "Wykaz zawiera ponad 130 wpisów, których przeglądarka nie może pokazać. Pobierz plik CSV, aby je przetworzyć.", // 300 "Synch. CT przy zablokowanym PI", // 301 - "Błąd! Brak sygnału RDS" // 302 + "Błąd! Brak sygnału RDS", // 302 + "Hold BW to stop" // 303 }, { "Hrvatski", // Croatian @@ -1223,7 +1226,8 @@ static const char* const myLanguage[21][303] PROGMEM = { "Auto DST on NTP time", // 299 "The logbook contains over 130 entries, which the viewer cannot process. Please download the CSV file to process it.", // 300 "PI locked CT sync", // 301 - "Error! No RDS signal" // 302 + "Error! No RDS signal", // 302 + "Hold BW to stop" // 303 }, { "Ελληνικά", // Greek @@ -1528,7 +1532,8 @@ static const char* const myLanguage[21][303] PROGMEM = { "Αυτόματο DST\nσε ώρα NTP", // 299 "Το βιβλίο περιέχει πάνω από 130 καταγραφές, και είναι αδύνατη η επεξεργασία τους από το χρήστη. Κάντε λήψη του αρχείου CSV για να το επεξεργαστείτε.", // 300 "Συγχρονισμός CT σε\nκλείδωμα PI ", // 301 - "Δεν υπάρχει σήμα RDS!" // 302 + "Δεν υπάρχει σήμα RDS!", // 302 + "Hold BW to stop" // 303 }, { "Română", // Romanian @@ -1833,7 +1838,8 @@ static const char* const myLanguage[21][303] PROGMEM = { "DST automat pe ora NTP", // 299 "Jurnalul conține peste 130 de intrări, pe care vizualizatorul nu le poate procesa. Te rog descarcă fișierul CSV pentru a le procesa.", // 300 "PI blocat pe sincronizare CT", // 301 - "Eroare! Fără semnal RDS" // 302 + "Eroare! Fără semnal RDS", // 302 + "Hold BW to stop" // 303 }, { "Deutsch", // German @@ -2138,7 +2144,8 @@ static const char* const myLanguage[21][303] PROGMEM = { "Auto-Sommerzeit\nüber NTP", // 299 "Das Logbuch enthält mehr als 130 Einträge, was das Anzeigeprogramm nicht verarbeiten kann. Bitte lade die CSV-Datei zum Verarbeiten herunter.", // 300 "Synchronisiere CT\nbei bestimmtem PI", // 301 - "Fehler! Kein RDS-Signal" // 302 + "Fehler! Kein RDS-Signal", // 302 + "Hold BW to stop" // 303 }, { "Čeština", // Czech @@ -2443,7 +2450,8 @@ static const char* const myLanguage[21][303] PROGMEM = { "Automatický letní čas u NTP času", // 299 "Logbook obsahuje více než 130 položek, které prohlížeč nedokáže zpracovat. Pro zpracování všech položek si stáhněte CSV soubor.", // 300 "Synchronizovat CT, když je PI uzamčeno", // 301 - "Chyba! Žádný RDS signál" // 302 + "Chyba! Žádný RDS signál", // 302 + "Hold BW to stop" // 303 }, { "Magyar", // Hungarian @@ -2748,7 +2756,8 @@ static const char* const myLanguage[21][303] PROGMEM = { "Auto DST on NTP time", // 299 "The logbook contains over 130 entries, which the viewer cannot process. Please download the CSV file to process it.", // 300 "PI locked CT sync", // 301 - "Error! No RDS signal" // 302 + "Error! No RDS signal", // 302 + "Hold BW to stop" // 303 }, { "Français", // French @@ -3053,7 +3062,8 @@ static const char* const myLanguage[21][303] PROGMEM = { "DST automatique\nsur l'heure NTP", // 299 "Le journal de bord contient plus de 130 entrées que le spectateur ne peut pas traiter. Télécharger le fichier CSV pour le traiter.", // 300 "Synch CT sur\nPI verrouillé", // 301 - "Erreur ! Pas de signal RDS" // 302 + "Erreur ! Pas de signal RDS", // 302 + "Hold BW to stop" // 303 }, { "Български", // Bulgarian @@ -3358,7 +3368,8 @@ static const char* const myLanguage[21][303] PROGMEM = { "Auto DST on NTP time", // 299 "The logbook contains over 130 entries, which the viewer cannot process. Please download the CSV file to process it.", // 300 "PI locked CT sync", // 301 - "Error! No RDS signal" // 302 + "Error! No RDS signal", // 302 + "Hold BW to stop" // 303 }, { "Русский", // Russian @@ -3663,7 +3674,8 @@ static const char* const myLanguage[21][303] PROGMEM = { "Автоматическое летнее время по времени NTP", // 299 "В журнале содержится более 130 записей, которые программа просмотра не может обработать. Загрузите файл CSV для его обработки.", // 300 "PI-синхронизация трансформатора тока с блокировкой", // 301 - "Ошибка! Нет сигнала RDS" // 302 + "Ошибка! Нет сигнала RDS", // 302 + "Hold BW to stop" // 303 }, { "Українська", // Ukranian @@ -3968,7 +3980,8 @@ static const char* const myLanguage[21][303] PROGMEM = { "Автоматичний літній час за часом NTP", // 299 "Журнал містить понад 130 записів, які програма перегляду не може обробити. Будь ласка, завантажте файл CSV, щоб обробити його.", // 300 "PI locked CT sync", // 301 - "Помилка! Немає сигналу RDS" // 302 + "Помилка! Немає сигналу RDS", // 302 + "Hold BW to stop" // 303 }, { "Italiano", // Italian @@ -4273,7 +4286,8 @@ static const char* const myLanguage[21][303] PROGMEM = { "Auto DST on NTP time", // 299 "The logbook contains over 130 entries, which the viewer cannot process. Please download the CSV file to process it.",// 300 "PI locked CT sync", // 301 - "Error! No RDS signal" // 302 + "Error! No RDS signal", // 302 + "Hold BW to stop" // 303 }, { "Simplified Chinese", // Simplified Chinese @@ -4578,7 +4592,8 @@ static const char* const myLanguage[21][303] PROGMEM = { "联网自动同步本机时间", // 299 "The logbook contains over 130 entries, which the viewer cannot process. Please download the CSV file to process it.", // 300 "PI locked CT sync", // 301 - "错误! 无RDS信号" // 302 + "错误! 无RDS信号", // 302 + "Hold BW to stop" // 303 }, { "Norsk", // Norwegian "Rotasjonsretning endret", // 1 @@ -4882,7 +4897,8 @@ static const char* const myLanguage[21][303] PROGMEM = { "Auto sommertid på NTP-tid", // 299 "Loggboken inneholder over 130 oppføringer, som en ikke kan behandle. Last ned CSV-filen for å behandle den.", // 300 "PI-låst CT-synk", // 301 - "Feil! Ingen RDS-signal" // 302 + "Feil! Ingen RDS-signal", // 302 + "Hold BW to stop" // 303 }, { "Español", // Spanish @@ -5187,7 +5203,8 @@ static const char* const myLanguage[21][303] PROGMEM = { "DST automático\nen hora NTP", // 299 "El libro de registro contiene más de 130 entradas que el visor no puede procesar. Descargue el archivo CSV para procesarlo.", // 300 "Sync CT en\nPI bloqueado", // 301 - "Error! No hay señal RDS" // 302 + "Error! No hay señal RDS", // 302 + "Hold BW to stop" // 303 }, { "Português", // Portuguese @@ -5492,7 +5509,8 @@ static const char* const myLanguage[21][303] PROGMEM = { "DST automático\nno horário NTP", // 299 "O diário de bordo contém mais de 130 entradas que o espectador não consegue processar. Descarregue o ficheiro CSV para processá-lo.", // 300 "Sincronizar CT\nno PI bloqueado", // 301 - "Erro! Sem sinal RDS" // 302 + "Erro! Sem sinal RDS", // 302 + "Hold BW to stop" // 303 }, { "Srpski", // Serbian @@ -5797,10 +5815,11 @@ static const char* const myLanguage[21][303] PROGMEM = { "Auto DST na\nNTP vremenu", // 299 "Dnevnik sadrži više od 130 unosa, što viewer ne može obraditi. Preuzmite CSV fajl za obradu.", // 300 "PI zaključan\nCT sinhronizacija", // 301 - "Nema RDS signala!" // 302 + "Nema RDS signala!", // 302 + "Hold BW to stop" // 303 }, -{ "Suomi", // Finnish + { "Suomi", // Finnish "Pyörimissuunta vaihtui", // 1 "Vapauta nappi", // 2 "Näyttö käännetty", // 3 @@ -6102,7 +6121,8 @@ static const char* const myLanguage[21][303] PROGMEM = { "Automaattinen\nkesäaika NTP-aikaa", // 299 "Lokikirjassa on yli 130 merkintää, joita katselija ei voi käsitellä. Lataa CSV-tiedosto käsitelläksesi sen.", // 300 "PI lukittu\nCT synkronointi", // 301 - "Ei RDS-signaalia!" // 302 + "Ei RDS-signaalia!", // 302 + "Hold BW to stop" // 303 }, { "Dansk", // Danish @@ -6407,7 +6427,8 @@ static const char* const myLanguage[21][303] PROGMEM = { "Auto DST på\nNTP tid", // 299 "Logbogen indeholder over 130 poster, som fremviseren ikke kan behandle. Download CSV-filen for at behandle den.", // 300 "PI låst CT sync", // 301 - "Fejl! Ingen RDS signal" // 302 + "Fejl! Ingen RDS signal", // 302 + "Hold BW to stop" // 303 } }; -#endif +#endif \ No newline at end of file diff --git a/src/logbook.cpp b/src/logbook.cpp index 8e871fb..b781543 100644 --- a/src/logbook.cpp +++ b/src/logbook.cpp @@ -265,17 +265,17 @@ byte addRowToCSV() { String stationName = radio.rds.stationName; stationName.replace(",", " "); // Replace commas in station name -// Handle ECC, PTY, TA, TP, and Stereo flag -String TA = radio.rds.hasTA ? "•" : " "; -String TP = radio.rds.hasTP ? "•" : " "; -String Stereo = radio.getStereoStatus() ? "•" : " "; -String pty = String(radio.rds.stationTypeCode); -String ECC = "--"; -if (radio.rds.hasECC) { - char eccBuffer[3]; // Buffer to hold 2-digit hex value + null terminator - snprintf(eccBuffer, sizeof(eccBuffer), "%02X", radio.rds.ECC); // Format ECC as uppercase 2-digit hex - ECC = String(eccBuffer); -} + // Handle ECC, PTY, TA, TP, and Stereo flag + String TA = radio.rds.hasTA ? "•" : " "; + String TP = radio.rds.hasTP ? "•" : " "; + String Stereo = radio.getStereoStatus() ? "•" : " "; + String pty = String(radio.rds.stationTypeCode); + String ECC = "--"; + if (radio.rds.hasECC) { + char eccBuffer[3]; // Buffer to hold 2-digit hex value + null terminator + snprintf(eccBuffer, sizeof(eccBuffer), "%02X", radio.rds.ECC); // Format ECC as uppercase 2-digit hex + ECC = String(eccBuffer); + } // Construct the CSV row data String row = currentDateTime + "," + diff --git a/src/touch.cpp b/src/touch.cpp index e1e43fe..2eb815d 100644 --- a/src/touch.cpp +++ b/src/touch.cpp @@ -8,7 +8,8 @@ void doTouchEvent(uint16_t x, uint16_t y) { if (seek) radio.setUnMute(); seek = false; if (scandxmode) { - cancelDXScan(); + ShowFreq(5); + ShowFreq(0); } else { if (menu) { if (x > 0 && x < 320 && y > 0 && y < 33) { diff --git a/src/touch.h b/src/touch.h index 7d04e98..17c4dfd 100644 --- a/src/touch.h +++ b/src/touch.h @@ -57,5 +57,6 @@ extern void updateiMS(); extern void updateEQ(); extern void DataPrint(String string); extern void BuildAFScreen(); +extern void ShowFreq(int mode); #endif \ No newline at end of file