From 2d3d2f74544ba7e9a4e03b9c32545af48ba806df Mon Sep 17 00:00:00 2001 From: Sjef Verhoeven PE5PVB Date: Wed, 29 May 2024 15:47:36 +0200 Subject: [PATCH 01/12] Fix store wrong AM frequency --- TEF6686_ESP32.ino | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/TEF6686_ESP32.ino b/TEF6686_ESP32.ino index cb8932a..efdbe4a 100644 --- a/TEF6686_ESP32.ino +++ b/TEF6686_ESP32.ino @@ -1666,6 +1666,14 @@ void BANDBUTTONPress() { } void StoreFrequency() { + switch (band) { + case BAND_LW: freqold = frequency_LW; frequency_AM = frequency_LW; break; + case BAND_MW: freqold = frequency_MW; frequency_AM = frequency_MW; break; + case BAND_SW: freqold = frequency_SW; frequency_AM = frequency_SW; break; +#ifdef HAS_AIR_BAND + case BAND_AIR: freqold = frequency_AIR; frequency_AM = frequency_AIR; break; +#endif + } EEPROM.writeUInt(EE_UINT16_FREQUENCY_FM, frequency); EEPROM.writeUInt(EE_UINT16_FREQUENCY_OIRT, frequency_OIRT); EEPROM.writeUInt(EE_UINT16_FREQUENCY_AM, frequency_AM); @@ -2353,16 +2361,9 @@ void RoundStep() {//todo air } } - while (digitalRead(ROTARY_BUTTON) == LOW) delay(50); + StoreFrequency(); - if (band == BAND_FM) { - EEPROM.writeUInt(EE_UINT16_FREQUENCY_FM, frequency); - } else if (band == BAND_OIRT) { - EEPROM.writeUInt(EE_UINT16_FREQUENCY_OIRT, frequency_OIRT); - } else { - EEPROM.writeUInt(EE_UINT16_FREQUENCY_AM, frequency_AM); - } - EEPROM.commit(); + while (digitalRead(ROTARY_BUTTON) == LOW) delay(50); } void ButtonPress() { From 632c56cca858985d0daba0bd21b7b7311f0fd2bc Mon Sep 17 00:00:00 2001 From: Sjef Verhoeven PE5PVB Date: Wed, 29 May 2024 15:50:52 +0200 Subject: [PATCH 02/12] Replaced Slovak with Hungarian language --- src/language.h | 482 ++++++++++++++++++++++++------------------------- 1 file changed, 241 insertions(+), 241 deletions(-) diff --git a/src/language.h b/src/language.h index 0e323e0..68b79ae 100644 --- a/src/language.h +++ b/src/language.h @@ -2118,268 +2118,268 @@ static const char* const myLanguage[18][262] PROGMEM = { "Vždy" //261 }, - { "SloveSlovenský", // Slovak - "Smer enkóderu bol zmenený", // 1 - "Prosím, pusťte tlačidlo", // 2 - "Obrazovka otočená", // 3 - "Kalibrácia analog. merača", // 4 - "Po dokončení pusťte tlačidlo", // 5 - "enkóder nastavený na optický", // 6 - "enkóder nastavený na štandardný", // 7 - "FM/AM prijímač", // 8 - "Tuner: !ŽIADNY!", // 9 - "Hlasitosť:", // 10 - "Konvertor:", // 11 - "Spodok pásma:", // 12 - "Vrch pásma:", // 13 - "FM Offset frekvencie:", // 14 - "Prah pre stereo:", // 15 - "Prah utlmenia:", // 16 - "Prah zvuku:", // 17 - "Prah nizkeho signálu:", // 18 - "Kontrast:", // 19 - "Hlasitost", // 20 - "Offset frekvencie", // 21 - "Spodok pásma", // 22 - "Vrch pásma", // 23 - "Offset signálu", // 24 - "Prah pro stereo", // 25 - "Prah utlmenia", // 26 - "Prah signálu pre utlmenie", // 27 - "Prah nízkého signálu", // 28 - "Jas", // 29 - "Vyp", // 30 - "Obrazovka je stlmená!", // 31 - "Pre spustenie odčiarknite RF+", // 32 - "VYP", // 33 - "SKENUJEM...", // 34 - "Tuner nedetekovaný", // 35 - "AM Antenna gain", // 36 + { "Magyar", // Hungarian + "Forgási irány megváltozott", // 1 + "Engedd el a gombot", // 2 + "Képernyő megfordítva", // 3 + "Analóg mérő kalibrálása", // 4 + "Engedd el a gombot, ha kész", // 5 + "Kódoló optikaira állítva", // 6 + "Kódoló szabványosra állítva", // 7 + "FM/AM vevő", // 8 + "Tuner: !Nincs!", // 9 + "Hangerő", // 10 + "Átalakító", // 11 + "Legkisebb sávszél", // 12 + "Legnagyobb sávszél", // 13 + "FM RF szinteltolás", // 14 + "Sztereó küszöbérték", // 15 + "Magasak sarokja", // 16 + "Magasak küszöbértéke", // 17 + "Alacsonyak küszöbértéke", // 18 + "Kontraszt", // 19 + "Hangerő", // 20 + "Átalakító eltolása", // 21 + "Legkisebb sávszél", // 22 + "Legnagyobb sávszél", // 23 + "Szinteltolás", // 24 + "Sztereó szep. küszöbérték", // 25 + "Magasak sarokfrekvenciája", // 26 + "Magasak küszöbértéke", // 27 + "Alacsony szint küszöbérték", // 28 + "Kijelző fényereje", // 29 + "Ki", // 30 + "Kijelző némítva!", // 31 + "A némítás feloldásához jelöld\nki az RF+ pipát", // 32 + "KI", // 33 + "KERESÉS...", // 34 + "Tuner nem észlelhető", // 35 + "AM Antenna érzékenység", // 36 "FM AGC", // 37 - "Zobraziť chyby v RDS", // 38 - "Jazyk", // 39 - "Vyberte jazyk", // 40 - "STLAČTE MODE PRE ULOŽENIE", // 41 - "Zap", // 42 - "Softmute FM", // 43 - "Softmute AM", // 44 - "Pípnutie na konci pásma", // 45 - "Region", // 46 + "RDS hibák megjelenítése", // 38 + "Nyelv", // 39 + "Válassz nyelvet", // 40 + "NYOMD MEG A MODE-OT A MENTÉSHEZ\nÉS A BEZÁRÁSHOZ", // 41 + "Be", // 42 + "FM halkítás", // 43 + "AM halkítás", // 44 + "Sípszó a sáv szélén", // 45 + "Régió", // 46 "Európa", // 47 - "America", // 48 - "Zobraziť podtržítka v RDS", // 49 + "Amerika", // 48 + "Aláhúzások megjelenítése RDS-ben", // 49 "USB mód", // 50 - "Wi-Fi active", // 51 - "Konfigurace Wi-Fi", // 52 - "Pripojte sa k: ", // 53 - "pre nakonfigurovánie Wi-Fi", // 54 - "Wi-Fi pripojenie prebieha...", // 55 - "NEPRIPOJENÉ!", // 56 - "PRIPOJENÉ!", // 57 - "Stationlist IP", // 58 - "Zobraziť SW pásmo", // 59 - "RDS filter", // 60 - "Zobraziť chyby v PI", // 61 - "Zobraziť squelch", // 62 NEEDS NEW TRANSLATION, ENGLISH: USE SQUELCH - "Graf modulácie", // 63 - "Utlmenie šumu (AM)", // 64 - "Utlmenie šumu (FM)", // 65 - "Východzie hodnoty načítané", // 66 - "Zvukový výstup", // 67 - "Povolit ladenie počas šetriča", // 68 - "Invertovanie farieb", // 69 - "O softvéri", // 70 - "Hlavný kód:", // 71 - "Prispeli:", // 72 - "Neznámy", // 73 - "Nastavenia šetriča obrazovky", // 74 - "Čas", // 75 - "Vypnutie obrazovky", // 76 - "Vzhľad", // 77 - "Skin", // 78 - "Detegované aplikácie", // 79 + "Wi-Fi aktív", // 51 + "Wi-Fi beállítása", // 52 + "Csatlakozz ehhez: ", // 53 + "a Wi-Fi beállításához", // 54 + "Wi-Fi kapcsolódási kísérlet", // 55 + "SIKERTELEN!", // 56 + "CSATLAKOZVA!", // 57 + "Stationlist kliens IP", // 58 + "SW hullámhossz megjelenítése", // 59 + "RDS szűrő", // 60 + "PI hibák megjelenítése", // 61 + "Zajzár használata", // 62 + "Modulációmérő", // 63 + "AM Zajszűrő", // 64 + "FM Zajszűrő", // 65 + "Alapértelmezettek betöltve", // 66 + "Audió kimenet", // 67 + "Hangolás engedélyezése\nképernyővédő közben", // 68 + "Inverz kijelző", // 69 + "A szoftverről", // 70 + "Fő kód:", // 71 + "Közreműködők:", // 72 + "Ismeretlen", // 73 + "Képernyővédő opciók", // 74 + "Időtúllépés időzítő", // 75 + "Kijelző ki", // 76 + "Téma", // 77 + "Kinézet", // 78 + "Felismert alkalmazások", // 79 "Min.", // 80 - "Dynamic SPI speed", // 81 - "Scan sensitivity", // 82 - "NONE", // 83 represents: AM/FM bands unavailable(please delete this note after translation) - "Software version", // 84 - "Frequency font", // 85 + "Dinamikus SPI sebesség", // 81 + "Keresés érzékenység", // 82 + "NINCS", // 83 + "Szoftver verzió", // 84 + "Frekvencia betűtípusa", // 85 "Auto", // 86 - "AF nedostupné", // 87 - "EON nedostupný", // 88 - "RT+ nedostupný", // 89 - "Krokovanie FM", // 90 - "Šetrič obrazovky", // 91 - "Sekúnd", // 92 - "STLAČTE BAND PRE UZAVRETIE", // 93 - "1% jas", // 94 - "25% jas", // 95 - "50% jas", // 96 - "AM Offset signálu:", // 97 - "Jednotka signálu:", // 98 - "AF:", // 99 - "Zvoľte FM pásmo:", // 100 - "Zvoľte AM pásmo:", // 101 + "Nincs elérhető AF", // 87 + "Nincs elérhető EON", // 88 + "Nincs elérhető RT+", // 89 + "FM alap. lépésköz", // 90 + "Kijelzővédő", // 91 + "Mp", // 92 + "NYOMD MEG A BAND-OT\nA BEZÁRÁSHOZ", // 93 + "1% fényerő", // 94 + "25% fényerő", // 95 + "50% fényerő", // 96 + "AM RF szinteltolás", // 97 + "Jelmérő egység", // 98 + "AF használata", // 99 + "FM sáv kiválasztása", // 100 + "AM sáv kiválasztása", // 101 "LW", // 102 "MW", // 103 "SW", // 104 "FM", // 105 "OIRT", // 106 - "Rotating while screen off", // 107 - "Voľba modelu", // 108 - "Základ (ILI9341)", // 109 - "Prenosný (ILI9341)", // 110 - "Prenosný - dotykový (ILI9341)", // 111 - "Title", // 112 + "Forgatás kikapcsolt képernyővel", // 107 + "Modellválasztó", // 108 + "Alap (ILI9341)", // 109 + "Hordozható (ILI9341)", // 110 + "Hordozható érintős (ILI9341)", // 111 + "Cím", // 112 "Album", // 113 - "Track", // 114 - "Artist", // 115 - "Composition", // 116 - "Movement", // 117 - "Conductor", // 118 - "Composer", // 119 - "Band", // 120 - "Comment", // 121 - "Genre", // 122 - "News", // 123 - "Local news", // 124 - "Stockmarket", // 125 + "Szám", // 114 + "Előadó", // 115 + "Kompozíció", // 116 + "Tétel", // 117 + "Karmester", // 118 + "Zeneszerző", // 119 + "Zenekar", // 120 + "Megjegyzés", // 121 + "Műfaj", // 122 + "Hírek", // 123 + "Helyi hírek", // 124 + "Tőzsdepiac", // 125 "Sport", // 126 - "Lottery", // 127 - "Horoscope", // 128 - "Daily Diversion", // 129 - "Health", // 130 - "Event", // 131 - "Scene", // 132 - "Cinema", // 133 + "Lottó", // 127 + "Horoszkóp", // 128 + "Napi kikapcsolódás", // 129 + "Egészség", // 130 + "Esemény", // 131 + "Jelenet", // 132 + "Mozi", // 133 "TV", // 134 - "Date/time", // 135 - "Weather", // 136 - "Traffic", // 137 - "Alarm", // 138 - "Advertisement", // 139 - "Website", // 140 - "Other", // 141 - "Short PS", // 142 - "Long PS", // 143 - "Now", // 144 - "Next", // 145 - "Part", // 146 - "Host", // 147 - "Editor", // 148 - "Frequency", // 149 - "Homepage", // 150 - "Subchannel", // 151 - "Hotline", // 152 - "Studio phone", // 153 - "Phone", // 154 - "SMS studio", // 155 + "Dátum/idő", // 135 + "Időjárás", // 136 + "Közlekedés", // 137 + "Riasztás", // 138 + "Hirdetés", // 139 + "Weboldal", // 140 + "Egyéb", // 141 + "Rövid PS", // 142 + "Hosszú PS", // 143 + "Most", // 144 + "Következő", // 145 + "Rész", // 146 + "Házigazda", // 147 + "Szerkesztő", // 148 + "Frekvencia", // 149 + "Kezdőlap", // 150 + "Alcsatorna", // 151 + "Forródrót", // 152 + "Stúdió telefon", // 153 + "Telefon", // 154 + "Stúdió SMS", // 155 "SMS", // 156 - "Email hotline", // 157 - "Email studio", // 158 + "Email forródrót", // 157 + "Stúdió Email", // 158 "Email", // 159 - "Chat", // 160 - "Chat centre", // 161 - "Vote question", // 162 - "Vote centre", // 163 - "Place", // 164 - "Appointment", // 165 - "Identifier", // 166 - "Purchase", // 167 - "Get data", // 168 - "MW default stepsize", // 169 - "Tangerine", // 170 - "Ocean", // 171 - "Indigo", // 172 - "Nastavenia batérie", // 173 - "Zobraziť napätie", // 174 - "Zobraziť percentá", // 175 - "RT načítanie", // 176 - "Hlavné nastavenia", // 177 - "Nastavenia zvuku", // 178 - "Nastavenia displeja", // 179 - "Nastavenia RDS", // 180 - "Nastavenia FM pásma", // 181 - "Nastavenia AM pásma", // 182 - "Konektivita", // 183 - "STĽACTE MODE PRE NÁVRAT", // 184 - "AM CoChannelDet", // 185 - "Citlivosť CoChannelDet", // 186 - "Prah AM CoChannelDet", // 187 - "CoChannelDet počítadlo", // 188 - "HLAVNÝ", // 189 - "ZVUK", // 190 - "DISPLEJ", // 191 + "Csevegés", // 160 + "Csevegőközpont", // 161 + "Szavazási kérdés", // 162 + "Szavazóközpont", // 163 + "Helyszín", // 164 + "Találkozó", // 165 + "Azonosító", // 166 + "Vásárlás", // 167 + "Adatok lekérése", // 168 + "MW alap. lépésköz", // 169 + "Tangerin", // 170 + "Óceán", // 171 + "Indigó", // 172 + "Akkumulátor opciók", // 173 + "Feszültség mutatása", // 174 + "Százalék mutatása", // 175 + "RT pufferelés", // 176 + "Fő beállítások", // 177 + "Audió beállítások", // 178 + "Kijelző beállítások", // 179 + "RDS beállítások", // 180 + "FM beállítások", // 181 + "AM beállítások", // 182 + "Csatlakoztathatóság", // 183 + "NYOMD MEG A MODE-OT A\nVISSZALÉPÉSHEZ", // 184 + "CoChannel Detektor", // 185 + "CoChannel Detektor\nérzékenység", // 186 + "CoChannel Detektor\nküszöbérték", // 187 + "CoChannel Detektor\nszámláló", // 188 + "FŐ", // 189 + "AUDIÓ", // 190 + "KIJELZŐ", // 191 "RDS", // 192 "FM", // 193 "AM", // 194 - "PRIPOJENIE", // 195 - "DX MODE", // 196 + "CSATLAKOZÁS", // 195 + "DX MÓD", // 196 "Stationlist ID", // 197 - "AM ATT", // 198 - "FM deemphasis", // 199 - "Malý", // 200 - "Veľký", // 201 - "Všetko", // 202 - "Rýchle načítanie PS", // 203 - "Default", // 204 - "Mute screen on\nXDRGTK connection", // 205 - "FMSI stereo\nimprovement", // 206 - "Function only available\non TEF6687/6689!", // 207 - "Function not available\non selected skin!", // 208 - "Begin scanning\nmemory channels", // 209 - "Stop scanning\nmemory channels", // 210 - "Wait time", // 211 - "Start DX scanning", // 212 - "FM DX Options", // 213 - "Abort! The start channel\nis marked as skipped.", // 214 - "Auto radenie AF", // 215 - "Memory channels", // 216 - "Exclude", // 217 - "Only", // 218 - "Auto cancel scan", // 219 - "Correct PI", // 220 - "Signal", // 221 - "Mute audio\nwhile scanning", // 222 + "AM AGC", // 198 + "FM kihangolás", // 199 + "Kicsi", // 200 + "Nagy", // 201 + "Összes", // 202 + "Gyors PS", // 203 + "Alapértelmezett", // 204 + "Képernyő némítása\nXDRGTK kapcsolaton", // 205 + "FMSI sztereó\njavítás", // 206 + "A funkció csak a TEF6687/6689\nkészülékeken érhető el!", // 207 + "A funkció nem elérhető\na kiválasztott kinézetben!", // 208 + "Memóriacsatornák keresésének\nelkezdése", // 209 + "Memóriacsatornák keresésének\nbefejezése", // 210 + "Várakozási idő", // 211 + "DX keresés indítása", // 212 + "FM DX Opciók", // 213 + "Megszakítva! A kezdőcsatorna\nkihagyottnak van jelölve.", // 214 + "Auto AF rendezés", // 215 + "Memóriacsatornák", // 216 + "Kizárás", // 217 + "Csak", // 218 + "Auto keresés\nmegszakítása", // 219 + "Helyes PI", // 220 + "Jelszint", // 221 + "Hang némítása\nkeresés közben", // 222 "AIR", // 223 - "5 sec. bandbutton press", // 224 - "Power off", // 225 - "Mute screen", // 226 - "Disabled", // 227 - "None", // 228 - "News", // 229 - "Current Affairs", // 230 - "Information", // 231 + "5 mp. sávgombnyomás", // 224 + "Kikapcsolás", // 225 + "Képernyőnémítás", // 226 + "Kikapcsolva", // 227 + "Nincs", // 228 + "Hírek", // 229 + "Aktuális események", // 230 + "Információ", // 231 "Sport", // 232 - "Education", // 233 - "Drama", // 234 - "Culture", // 235 - "Science", // 236 - "Varied", // 237 - "Pop Music", // 238 - "Rock Music", // 239 - "Easy Listening", // 240 - "Light Classical", // 241 - "Serious Classical", // 242 - "Other Music", // 243 - "Weather", // 244 - "Finance", // 245 - "Children's Progs", // 246 - "Social Affairs", // 247 - "Religion", // 248 - "Phone-In", // 249 - "Travel", // 250 - "Leisure", // 251 - "Jazz Music", // 252 - "Country Music", // 253 - "National Music", // 254 - "Oldies Music", // 255 - "Folk Music", // 256 - "Documentary", // 257 - "Alarm Test", // 258 - "Alarm!!!", // 259 - "Initial", // 260 - "Always" //261 + "Oktatás", // 233 + "Dráma", // 234 + "Kultúra", // 235 + "Tudomány", // 236 + "Változatos", // 237 + "Pop Zene", // 238 + "Rock Zene", // 239 + "Könnyűzene", // 240 + "Könnyű Klasszikus", // 241 + "Komoly Klasszikus", // 242 + "Egyéb Zene", // 243 + "Időjárás", // 244 + "Pénzügy", // 245 + "Gyermekprogramok", // 246 + "Társadalmi ügyek", // 247 + "Vallás", // 248 + "Betelefonálós", // 249 + "Utazás", // 250 + "Szabadidő", // 251 + "Jazz Zene", // 252 + "Country Zene", // 253 + "Nemzeti Zene", // 254 + "Régi Zene", // 255 + "Népi Zene", // 256 + "Dokumentumfilm", // 257 + "Riasztás Teszt", // 258 + "Riasztás!!!", // 259 + "Kezdeti", // 260 + "Mindig" //261 }, { "Français", // French From 303377aba53b887e6b3cfcdc2d60854cada8b45b Mon Sep 17 00:00:00 2001 From: Sjef Verhoeven PE5PVB Date: Wed, 29 May 2024 16:06:00 +0200 Subject: [PATCH 03/12] Fixed tuning on edge SW --- TEF6686_ESP32.ino | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/TEF6686_ESP32.ino b/TEF6686_ESP32.ino index efdbe4a..6a73568 100644 --- a/TEF6686_ESP32.ino +++ b/TEF6686_ESP32.ino @@ -3730,7 +3730,7 @@ void TuneUp() { } else if (frequency_AM < MWLowEdgeSet) { temp = FREQ_MW_STEP_9K; frequency_AM = (frequency_AM / FREQ_MW_STEP_9K) * FREQ_MW_STEP_9K; - } else if (frequency_AM < SWHighEdgeSet && frequency_AM > SWLowEdgeSet) { + } else if (frequency_AM <= SWHighEdgeSet && frequency_AM >= SWLowEdgeSet) { temp = FREQ_SW_STEP_5K; frequency_AM = (frequency_AM / FREQ_SW_STEP_5K) * FREQ_SW_STEP_5K; } @@ -3803,6 +3803,7 @@ void TuneUp() { frequency_MW = frequency_AM; } else if (band == BAND_SW) { frequency_AM += temp; + Serial.println(String(frequency_AM) + "\t" + String(SWHighEdgeSet) + "\t" + String(temp)); if (frequency_AM > SWHighEdgeSet) { frequency_AM = SWLowEdgeSet; if (edgebeep) EdgeBeeper(); From 5e2e22be00c16246ca105226531971d3c1011b66 Mon Sep 17 00:00:00 2001 From: Sjef Verhoeven PE5PVB Date: Wed, 29 May 2024 16:46:01 +0200 Subject: [PATCH 04/12] Fixed regression Round step routine for LW/MW/SW --- TEF6686_ESP32.ino | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/TEF6686_ESP32.ino b/TEF6686_ESP32.ino index 6a73568..dab7077 100644 --- a/TEF6686_ESP32.ino +++ b/TEF6686_ESP32.ino @@ -2351,12 +2351,19 @@ void RoundStep() {//todo air Round30K(frequency_OIRT); radio.SetFreq(frequency_OIRT); } else { - if (band == BAND_MW) { + if (band == BAND_LW) { unsigned int freq = frequency_AM / (mwstepsize == false ? FREQ_MW_STEP_9K : FREQ_MW_STEP_10K); frequency_AM = freq * (mwstepsize == false ? FREQ_MW_STEP_9K : FREQ_MW_STEP_10K); + frequency_LW = frequency_AM; + radio.SetFreqAM(frequency_AM); + } else if (band == BAND_MW) { + unsigned int freq = frequency_AM / (mwstepsize == false ? FREQ_MW_STEP_9K : FREQ_MW_STEP_10K); + frequency_AM = freq * (mwstepsize == false ? FREQ_MW_STEP_9K : FREQ_MW_STEP_10K); + frequency_MW = frequency_AM; radio.SetFreqAM(frequency_AM); } else if (band == BAND_SW) { Round5K(frequency_AM); + frequency_SW = frequency_AM; radio.SetFreqAM(frequency_AM); } } From a29d53787406bd9f244c4fbff39856f2d919acd7 Mon Sep 17 00:00:00 2001 From: Sjef Verhoeven PE5PVB Date: Wed, 29 May 2024 19:24:44 +0200 Subject: [PATCH 05/12] Added Show clock in RDS menu --- TEF6686_ESP32.ino | 6 ++++- src/constants.h | 9 ++++---- src/gui.cpp | 35 +++++++++++++++++++++++++++-- src/gui.h | 1 + src/language.h | 56 +++++++++++++++++++++++++++++++---------------- src/rds.cpp | 2 +- src/rds.h | 3 ++- 7 files changed, 84 insertions(+), 28 deletions(-) diff --git a/TEF6686_ESP32.ino b/TEF6686_ESP32.ino index dab7077..c0e1e2a 100644 --- a/TEF6686_ESP32.ino +++ b/TEF6686_ESP32.ino @@ -103,7 +103,7 @@ bool screenmute; bool screensavertriggered = false; bool seek; bool setupmode; -byte showrdserrors; +bool showclock; bool usesquelch; bool softmuteam; bool softmutefm; @@ -189,6 +189,7 @@ byte scanmodeold; byte screensaverOptions[5] = {0, 3, 10, 30, 60}; byte screensaverset; byte showmodulation; +byte showrdserrors; byte showSWMIBand; byte submenu; byte stationlistid; @@ -514,6 +515,7 @@ void setup() { scanmute = EEPROM.readByte(EE_BYTE_SCANMUTE); autosquelch = EEPROM.readByte(EE_BYTE_AUTOSQUELCH); longbandpress = EEPROM.readByte(EE_BYTE_LONGBANDPRESS); + showclock = EEPROM.readByte(EE_BYTE_SHOWCLOCK); if (spispeed == SPI_SPEED_DEFAULT) { tft.setSPISpeed(SPI_FREQUENCY / 1000000); @@ -4147,6 +4149,7 @@ void DefaultSettings(byte userhardwaremodel) { EEPROM.writeByte(EE_BYTE_SCANMUTE, 0); EEPROM.writeByte(EE_BYTE_AUTOSQUELCH, 0); EEPROM.writeByte(EE_BYTE_LONGBANDPRESS, 0); + EEPROM.writeByte(EE_BYTE_SHOWCLOCK, 1); for (int i = 0; i < EE_PRESETS_CNT; i++) { EEPROM.writeByte(i + EE_PRESETS_BAND_START, BAND_FM); @@ -4374,6 +4377,7 @@ void endMenu() { EEPROM.writeByte(EE_BYTE_SCANMUTE, scanmute); EEPROM.writeByte(EE_BYTE_AUTOSQUELCH, autosquelch); EEPROM.writeByte(EE_BYTE_LONGBANDPRESS, longbandpress); + EEPROM.writeByte(EE_BYTE_SHOWCLOCK, showclock); EEPROM.commit(); if (af == 2) radio.rds.afreg = true; else radio.rds.afreg = false; Serial.end(); diff --git a/src/constants.h b/src/constants.h index 8329572..892393e 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 2221 // Total occupied eeprom bytes +#define EE_TOTAL_CNT 2222 // Total occupied eeprom bytes #else -#define EE_TOTAL_CNT 2216 // Total occupied eeprom bytes +#define EE_TOTAL_CNT 2217 // Total occupied eeprom bytes #endif #define EE_PRESETS_BAND_START 0 // 99 * 1 byte @@ -312,9 +312,10 @@ #define EE_BYTE_SCANMUTE 2213 #define EE_BYTE_AUTOSQUELCH 2214 #define EE_BYTE_LONGBANDPRESS 2215 +#define EE_BYTE_SHOWCLOCK 2216 #ifdef HAS_AIR_BAND -#define EE_BYTE_AIRSTEPSIZE 2116 -#define EE_UINT16_FREQUENCY_AIR 2217 +#define EE_BYTE_AIRSTEPSIZE 2117 +#define EE_UINT16_FREQUENCY_AIR 2218 #endif // End of EEPROM index defines diff --git a/src/gui.cpp b/src/gui.cpp index a1dc962..1349cb1 100644 --- a/src/gui.cpp +++ b/src/gui.cpp @@ -8,7 +8,7 @@ #include byte menuitem; -byte items[9] = {9, static_cast(dynamicspi ? 10 : 9), 7, 10, 9, 10, 9, 6, 7}; +byte items[9] = {9, static_cast(dynamicspi ? 10 : 9), 7, 10, 10, 10, 9, 6, 7}; extern mem presets[]; void doTheme() { // Use this to put your own colors in: http://www.barth-dev.de/online/rgb565-color-picker/ @@ -1394,6 +1394,16 @@ void ShowOneLine(byte position, byte item, bool selected) { FullLineSprite.drawString(FreqFont[freqfont], 298, 3); break; + case RDSSETTINGS: + FullLineSprite.setTextDatum(TL_DATUM); + FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); + FullLineSprite.drawString(removeNewline(myLanguage[language][262]), 6, 3); + + FullLineSprite.setTextDatum(TR_DATUM); + FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); + FullLineSprite.drawString((showclock ? myLanguage[language][42] : myLanguage[language][30]), 298, 3); + break; + case FMSETTINGS: FullLineSprite.setTextDatum(TL_DATUM); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); @@ -2228,6 +2238,13 @@ void MenuUp() { OneBigLineSprite.pushSprite(24, 118); break; + + case ITEM10: + showclock = !showclock; + + OneBigLineSprite.drawString((showclock ? myLanguage[language][42] : myLanguage[language][30]), 135, 0); + OneBigLineSprite.pushSprite(24, 118); + break; } break; @@ -3083,6 +3100,13 @@ void MenuDown() { OneBigLineSprite.pushSprite(24, 118); break; + + case ITEM10: + showclock = !showclock; + + OneBigLineSprite.drawString((showclock ? myLanguage[language][42] : myLanguage[language][30]), 135, 0); + OneBigLineSprite.pushSprite(24, 118); + break; } break; @@ -3946,6 +3970,13 @@ void DoMenu() { OneBigLineSprite.pushSprite(24, 118); break; + + case ITEM10: + Infoboxprint(myLanguage[language][262]); + + OneBigLineSprite.drawString((showclock ? myLanguage[language][42] : myLanguage[language][30]), 135, 0); + OneBigLineSprite.pushSprite(24, 118); + break; } break; @@ -4349,4 +4380,4 @@ String removeNewline(String inputString) { } } return outputString; -} +} \ No newline at end of file diff --git a/src/gui.h b/src/gui.h index e945fc7..443a108 100644 --- a/src/gui.h +++ b/src/gui.h @@ -59,6 +59,7 @@ extern bool usesquelch; extern bool scandxmode; extern bool scanmem; extern bool scanmute; +extern bool showclock; extern bool softmuteam; extern bool softmutefm; extern bool Stereostatusold; diff --git a/src/language.h b/src/language.h index 68b79ae..300457a 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][262] PROGMEM = { +static const char* const myLanguage[18][263] PROGMEM = { { "English", // English "Rotary direction changed", // 1 "Please release button", // 2 @@ -267,7 +267,8 @@ static const char* const myLanguage[18][262] PROGMEM = { "Alarm Test", // 258 "Alarm!!!", // 259 "Initial", // 260 - "Always" //261 + "Always", // 261 + "Show clock" // 262 }, { "Nederlands", // Dutch @@ -531,7 +532,8 @@ static const char* const myLanguage[18][262] PROGMEM = { "Alarmtest", // 258 "Alarm ! ALARM !", // 259 "Initieel", // 260 - "Altijd" //261 + "Altijd", //261 + "Toon klok" // 262 }, { "Polski", // Polish @@ -795,7 +797,8 @@ static const char* const myLanguage[18][262] PROGMEM = { "Alarm Test", // 258 "Alarm", // 259 "Początkowy", // 260 - "Zawsze" // 261 + "Zawsze", // 261 + "Pokaż zegar" // 262 }, { "Hrvatski", // Croatian @@ -1059,7 +1062,8 @@ static const char* const myLanguage[18][262] PROGMEM = { "Testni alarm!", // 258 "Alarm !", // 259 "Početno", // 260 - "Uvijek" //261 + "Uvijek", //261 + "Prikaži sat" // 262 }, { "Ελληνικά", // Greek @@ -1323,7 +1327,8 @@ static const char* const myLanguage[18][262] PROGMEM = { "Δοκιμή συναγερμού", // 258 "Συναγερμός!!!", // 259 "Αρχικό", // 260 - "Πάντα" //261 + "Πάντα", //261 + "Εμφάνιση ρολογιού" // 262 }, { "Română", // Romanian @@ -1587,7 +1592,8 @@ static const char* const myLanguage[18][262] PROGMEM = { "Test Alarmă", // 258 "Alarmă !", // 259 "Inițial", // 260 - "Mereu" //261 + "Mereu", //261 + "Arată ceasul" // 262 }, { "Deutsch", // German @@ -1851,7 +1857,8 @@ static const char* const myLanguage[18][262] PROGMEM = { "Alarm Test", // 258 "Alarm! Alarm!", // 259 "Anfänglich", // 260 - "Immer" // 261 + "Immer", // 261 + "Uhr anzeigen" // 262 }, { "Český", // Czech @@ -2115,7 +2122,8 @@ static const char* const myLanguage[18][262] PROGMEM = { "Alarm Test", // 258 "Alarm – Alarm !", // 259 "Počáteční", // 260 - "Vždy" //261 + "Vždy", //261 + "Zobrazit hodiny" // 262 }, { "Magyar", // Hungarian @@ -2379,7 +2387,8 @@ static const char* const myLanguage[18][262] PROGMEM = { "Riasztás Teszt", // 258 "Riasztás!!!", // 259 "Kezdeti", // 260 - "Mindig" //261 + "Mindig", //261 + "Órát mutass" // 262 }, { "Français", // French @@ -2643,7 +2652,8 @@ static const char* const myLanguage[18][262] PROGMEM = { "TEST", // 258 "Alerte !", // 259 "Initial", // 260 - "Toujours" // 261 + "Toujours", // 261 + "Afficher l'horloge" // 262 }, { "Български", // Bulgarian @@ -2907,7 +2917,8 @@ static const char* const myLanguage[18][262] PROGMEM = { "Внимание тест", // 258 "Тревога!", // 259 "Начален", // 260 - "Винаги" // 261 + "Винаги", // 261 + "Покажи часовника" // 262 }, { "Русский", // Russian @@ -3171,7 +3182,8 @@ static const char* const myLanguage[18][262] PROGMEM = { "Внимание тест", // 258 "Тревога!", // 259 "Начальный", // 260 - "Всегда" // 261 + "Всегда", // 261 + "Показать часы" // 262 }, { "Українська", // Ukranian @@ -3435,7 +3447,8 @@ static const char* const myLanguage[18][262] PROGMEM = { "Alarm Test", // 258 "Alarm!!!", // 259 "Початковий", // 260 - "Завжди" // 261 + "Завжди", // 261 + "Показати годинник" // 262 }, { "Italiano", // Italian @@ -3699,7 +3712,8 @@ static const char* const myLanguage[18][262] PROGMEM = { "Test Allarme", // 258 "!!Allarme!!", // 259 "Iniziale", // 260 - "Sempre" // 261 + "Sempre", // 261 + "Mostra l'orologio" // 262 }, { "Simplified Chinese", // Simplified Chinese @@ -3963,7 +3977,8 @@ static const char* const myLanguage[18][262] PROGMEM = { "Alarm Test", // 258 "Alarm!!!", // 259 "初始", // 260 - "始终" // 261 + "始终", // 261 + "显示时钟" // 262 }, { "Norsk", // Norwegian @@ -4227,7 +4242,8 @@ static const char* const myLanguage[18][262] PROGMEM = { "Alarm test", // 258 "Alarm!", // 259 "Innledende", // 260 - "Alltid" // 261 + "Alltid", // 261 + "Vis klokka" // 262 }, { "Español", // Spanish @@ -4491,7 +4507,8 @@ static const char* const myLanguage[18][262] PROGMEM = { "Prueba de Alarma", // 258 "¡ Alarma !", // 259 "Inicial", // 260 - "Siempre" // 261 + "Siempre", // 261 + "Mostrar reloj" // 262 }, { "Português", // Portuguese @@ -4755,7 +4772,8 @@ static const char* const myLanguage[18][262] PROGMEM = { "Teste de Alarme", // 258 "Alarme – Alarme !", // 259 "Inicial", // 260 - "Sempre" // 261 + "Sempre", // 261 + "Mostrar relógio" // 262 } }; #endif \ No newline at end of file diff --git a/src/rds.cpp b/src/rds.cpp index a2cf475..bce1514 100644 --- a/src/rds.cpp +++ b/src/rds.cpp @@ -748,7 +748,7 @@ void showPS() { } void showCT() { - if (!screenmute) { + if (!screenmute && showclock) { if (radio.rds.hasCT && !dropout) { rds_clock = ((radio.rds.hour < 10 ? "0" : "") + String(radio.rds.hour) + ":" + (radio.rds.minute < 10 ? "0" : "") + String(radio.rds.minute)); } else if (!radio.rds.hasCT || dropout) { diff --git a/src/rds.h b/src/rds.h index 691052b..928b691 100644 --- a/src/rds.h +++ b/src/rds.h @@ -34,7 +34,7 @@ extern bool rdsstereoold; extern bool rtcset; extern bool screenmute; extern bool setupmode; -extern byte showrdserrors; +extern bool showclock; extern bool TAold; extern bool TPold; extern bool wifi; @@ -54,6 +54,7 @@ extern byte eonptyold[20]; extern byte rdsblockold; extern byte rdsqualityold; extern byte region; +extern byte showrdserrors; extern byte stationlistid; extern char eonpicodeold[20][6]; extern char programTypePrevious[18]; From e611a5188aacbd1afd0033961f211e4feeb09043 Mon Sep 17 00:00:00 2001 From: Sjef Verhoeven PE5PVB Date: Wed, 29 May 2024 19:33:46 +0200 Subject: [PATCH 06/12] Versioning --- src/language.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/language.h b/src/language.h index 300457a..5d25498 100644 --- a/src/language.h +++ b/src/language.h @@ -1,7 +1,7 @@ #ifndef LANGUAGE_H #define LANGUAGE_H -#define VERSION "v2.10 RC9" +#define VERSION "v2.10 RC10" // [number of languages][number of texts] From 383eff80119212f1030af7ab34de92b7bb6d0cb0 Mon Sep 17 00:00:00 2001 From: Sjef Verhoeven PE5PVB Date: Thu, 30 May 2024 11:40:34 +0200 Subject: [PATCH 07/12] Make battery readout more accurate (closer to reality) --- TEF6686_ESP32.ino | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/TEF6686_ESP32.ino b/TEF6686_ESP32.ino index c0e1e2a..d6fd0c0 100644 --- a/TEF6686_ESP32.ino +++ b/TEF6686_ESP32.ino @@ -416,6 +416,8 @@ void setup() { gpio_set_drive_capability((gpio_num_t) 21, GPIO_DRIVE_CAP_0); gpio_set_drive_capability((gpio_num_t) 22, GPIO_DRIVE_CAP_0); gpio_set_drive_capability((gpio_num_t) 23, GPIO_DRIVE_CAP_0); + analogReadResolution(12); + setupmode = true; EEPROM.begin(EE_TOTAL_CNT); if (EEPROM.readByte(EE_BYTE_CHECKBYTE) != EE_CHECKBYTE_VALUE) DefaultSettings(hardwaremodel); @@ -3667,14 +3669,22 @@ void ShowRSSI() { } void ShowBattery() { + static uint32_t batupdatetimer = 0; + if (millis() >= batupdatetimer + TIMER_BAT_TIMER) { batupdatetimer = millis(); } else { return; } - uint16_t v = 0; - if (!wifi) v = analogRead(BATTERY_PIN); + uint32_t adcSum = 0; + for (int i = 0; i < 16; i++) { + adcSum += analogRead(BATTERY_PIN); + delay(1); + } + + int v = adcSum / 16; + battery = map(constrain(v, BAT_LEVEL_EMPTY, BAT_LEVEL_FULL), BAT_LEVEL_EMPTY, BAT_LEVEL_FULL, 0, BAT_LEVEL_STAGE); byte batteryprobe = map(constrain(v, BAT_LEVEL_EMPTY, BAT_LEVEL_FULL), BAT_LEVEL_EMPTY, BAT_LEVEL_FULL, 0, 20); @@ -3688,7 +3698,7 @@ void ShowBattery() { tft.fillRoundRect(313, 13, 4, 6, 2, ActiveColor); } if (batteryoptions != BATTERY_VALUE && batteryoptions != BATTERY_PERCENT && battery != 0) { - tft.fillRoundRect(279, 8, (battery * 8) , 16, 2, BarInsignificantColor); + tft.fillRoundRect(279, 8, (battery * 8), 16, 2, BarInsignificantColor); } else { tft.fillRoundRect(279, 8, 33, 16, 2, BackgroundColor); } @@ -3701,9 +3711,8 @@ void ShowBattery() { batteryVold = 0; vPerold = 0; - if (!wifi && batterydetect) { - float batteryV = constrain((((float)v / 4095.0) * 3.3 * (1100 / 1000.0) * 2.0), 0.0, 5.0); + float batteryV = constrain(v / 4095.0 * 3.3 * 2.0, 0.0, 5.0); float vPer = constrain((batteryV - BATTERY_LOW_VALUE) / (BATTERY_FULL_VALUE - BATTERY_LOW_VALUE), 0.0, 0.99) * 100; if (abs(batteryV - batteryVold) > 0.05 && batteryoptions == BATTERY_VALUE) { From a24e0ec8effc9ff010abcd5fd192835fda1fa6ca Mon Sep 17 00:00:00 2001 From: Sjef Verhoeven PE5PVB Date: Thu, 30 May 2024 14:36:58 +0200 Subject: [PATCH 08/12] Changed bandselector to avoid full screenrefresh --- TEF6686_ESP32.ino | 52 +++++++++++++++++++++++++++++++++++++++++++++-- src/gui.cpp | 39 ----------------------------------- 2 files changed, 50 insertions(+), 41 deletions(-) diff --git a/TEF6686_ESP32.ino b/TEF6686_ESP32.ino index d6fd0c0..f0cc4be 100644 --- a/TEF6686_ESP32.ino +++ b/TEF6686_ESP32.ino @@ -798,6 +798,7 @@ void setup() { Wire.endTransmission(); } + BuildDisplay(); SelectBand(); if (tunemode == TUNE_MEM) DoMemoryPosTune(); @@ -2059,6 +2060,8 @@ void ToggleSWMIBand(bool frequencyup) { } void SelectBand() { + if (afscreen || advancedRDS) BuildDisplay(); + if (band > BAND_GAP) { seek = false; if (!screenmute) tft.drawBitmap(92, 4, Speaker, 26, 22, GreyoutColor); @@ -2088,7 +2091,6 @@ void SelectBand() { radio.setAMCoChannel(amcodect, amcodectcount); doBW(); if (!screenmute) { - BuildDisplay(); if (region == REGION_EU) tftPrint(-1, "PI:", 212, 193, GreyoutColor, BackgroundColor, 16); if (region == REGION_US) { tftPrint(-1, "PI:", 212, 184, GreyoutColor, BackgroundColor, 16); @@ -2103,6 +2105,7 @@ void SelectBand() { tftPrint(0, "iMS", 265, 59, GreyoutColor, BackgroundColor, 16); tft.drawRoundRect(286, 56, 32, 20, 5, GreyoutColor); tftPrint(0, "EQ", 301, 59, GreyoutColor, BackgroundColor, 16); + tftReplace(-1, "MHz", "kHz", 258, 76, BackgroundColor, BackgroundColor, BackgroundColor, 28); // todo // if (band == AM_BAND_AIR) tftPrint(-1, "MHz", 258, 76, ActiveColor, ActiveColorSmooth, 28); // else tftPrint(-1, "KHz", 258, 76, ActiveColor, ActiveColorSmooth, 28); @@ -2122,9 +2125,54 @@ void SelectBand() { freqold = frequency_AM; if (!externaltune && tunemode != TUNE_MEM) CheckBandForbiddenFM(); doBW(); - if (!screenmute) BuildDisplay(); + if (region == REGION_EU) tftPrint(-1, "PI:", 212, 193, ActiveColor, ActiveColorSmooth, 16); + if (region == REGION_US) { + tftPrint(-1, "PI:", 212, 184, ActiveColor, ActiveColorSmooth, 16); + tftPrint(-1, "ID:", 212, 201, ActiveColor, ActiveColorSmooth, 16); + } + tftPrint(-1, "PS:", 3, 193, ActiveColor, ActiveColorSmooth, 16); + tftPrint(-1, "RT:", 3, 221, ActiveColor, ActiveColorSmooth, 16); + tftPrint(-1, "PTY:", 3, 163, ActiveColor, ActiveColorSmooth, 16); + + tftReplace(-1, "kHz", "MHz", 258, 76, BackgroundColor, BackgroundColor, BackgroundColor, 28); } + radio.clearRDS(fullsearchrds); + ShowFreq(0); + + if (!screenmute) { + tft.fillRect(113, 38, 124, 4, BackgroundColor); + ShowErrors(); + showPTY(); + showRadioText(); + showPI(); + updateiMS(); + updateEQ(); + ShowTuneMode(); + ShowStepSize(); + + tftPrint(-1, myLanguage[language][102], 70, 32, BackgroundColor, BackgroundColor, 16); + tftPrint(-1, myLanguage[language][103], 70, 32, BackgroundColor, BackgroundColor, 16); + tftPrint(-1, myLanguage[language][104], 70, 32, BackgroundColor, BackgroundColor, 16); + tftPrint(-1, myLanguage[language][105], 70, 32, BackgroundColor, BackgroundColor, 16); + tftPrint(-1, myLanguage[language][106], 70, 32, BackgroundColor, BackgroundColor, 16); + +#ifdef HAS_AIR_BAND + tftPrint(-1, myLanguage[language][223], 70, 32, BackgroundColor, BackgroundColor, 16); +#endif + + switch (band) { + case BAND_LW: tftPrint(-1, myLanguage[language][102], 70, 32, (bandforbidden ? GreyoutColor : PrimaryColor), (bandforbidden ? BackgroundColor : PrimaryColorSmooth), 16); break; + case BAND_MW: tftPrint(-1, myLanguage[language][103], 70, 32, (bandforbidden ? GreyoutColor : PrimaryColor), (bandforbidden ? BackgroundColor : PrimaryColorSmooth), 16); break; + case BAND_SW: tftPrint(-1, myLanguage[language][104], 70, 32, (bandforbidden ? GreyoutColor : PrimaryColor), (bandforbidden ? BackgroundColor : PrimaryColorSmooth), 16); break; + case BAND_FM: tftPrint(-1, myLanguage[language][105], 70, 32, (bandforbidden ? GreyoutColor : PrimaryColor), (bandforbidden ? BackgroundColor : PrimaryColorSmooth), 16); break; + case BAND_OIRT: tftPrint(-1, myLanguage[language][106], 70, 32, (bandforbidden ? GreyoutColor : PrimaryColor), (bandforbidden ? BackgroundColor : PrimaryColorSmooth), 16); break; + +#ifdef HAS_AIR_BAND + case BAND_AIR: tftPrint(-1, myLanguage[language][223], 70, 32, (bandforbidden ? GreyoutColor : PrimaryColor), (bandforbidden ? BackgroundColor : PrimaryColorSmooth), 16); break; +#endif + } + } } void BWButtonPress() { diff --git a/src/gui.cpp b/src/gui.cpp index 1349cb1..609b0ba 100644 --- a/src/gui.cpp +++ b/src/gui.cpp @@ -1582,7 +1582,6 @@ void BuildAdvancedRDS() { void BuildDisplay() { afscreen = false; advancedRDS = false; - int bandColor; tft.fillScreen(BackgroundColor); tft.drawRect(0, 0, 320, 240, FrameColor); @@ -1616,14 +1615,6 @@ void BuildDisplay() { if (usesquelch || autosquelch) tftPrint(-1, "SQ:", 212, 145, ActiveColor, ActiveColorSmooth, 16); tftPrint(1, "C/N", 270, 163, ActiveColor, ActiveColorSmooth, 16); tftPrint(-1, "dB", 300, 163, ActiveColor, ActiveColorSmooth, 16); - if (region == REGION_EU) tftPrint(-1, "PI:", 212, 193, ActiveColor, ActiveColorSmooth, 16); - if (region == REGION_US) { - tftPrint(-1, "PI:", 212, 184, ActiveColor, ActiveColorSmooth, 16); - tftPrint(-1, "ID:", 212, 201, ActiveColor, ActiveColorSmooth, 16); - } - tftPrint(-1, "PS:", 3, 193, ActiveColor, ActiveColorSmooth, 16); - tftPrint(-1, "RT:", 3, 221, ActiveColor, ActiveColorSmooth, 16); - tftPrint(-1, "PTY:", 3, 163, ActiveColor, ActiveColorSmooth, 16); tftPrint(0, "S", 7, 101, ActiveColor, ActiveColorSmooth, 16); tftPrint(-1, "1", 24, 115, ActiveColor, ActiveColorSmooth, 16); @@ -1653,11 +1644,6 @@ void BuildDisplay() { tftPrint(-1, "kHz", 203, 4, ActiveColor, ActiveColorSmooth, 28); tftPrint(-1, unitString[unit], 282, 145, ActiveColor, ActiveColorSmooth, 16); - tft.drawRoundRect(248, 56, 32, 20, 5, GreyoutColor); - if (band > BAND_GAP) tftPrint(0, "iMS", 265, 59, GreyoutColor, BackgroundColor, 16); - tft.drawRoundRect(286, 56, 32, 20, 5, GreyoutColor); - if (band > BAND_GAP) tftPrint(0, "EQ", 301, 59, GreyoutColor, BackgroundColor, 16); - tft.drawBitmap(122, 5, RDSLogo, 35, 22, GreyoutColor); tft.drawBitmap(92, 4, Speaker, 26, 22, GreyoutColor); @@ -1671,37 +1657,12 @@ void BuildDisplay() { tft.drawCircle(76, 15, 9, GreyoutColor); } - if (bandforbidden) bandColor = GreyoutColor; else bandColor = PrimaryColor; - switch (band) { - case BAND_LW: tftPrint(-1, myLanguage[language][102], 70, 32, bandColor, PrimaryColorSmooth, 16); break; - case BAND_MW: tftPrint(-1, myLanguage[language][103], 70, 32, bandColor, PrimaryColorSmooth, 16); break; - case BAND_SW: tftPrint(-1, myLanguage[language][104], 70, 32, bandColor, PrimaryColorSmooth, 16); break; -#ifdef HAS_AIR_BAND - case BAND_AIR: tftPrint(-1, myLanguage[language][223], 70, 32, bandColor, PrimaryColorSmooth, 16); break; -#endif - case BAND_FM: tftPrint(-1, myLanguage[language][105], 70, 32, bandColor, PrimaryColorSmooth, 16); break; - case BAND_OIRT: tftPrint(-1, myLanguage[language][106], 70, 32, bandColor, PrimaryColorSmooth, 16); break; - } - if (band < BAND_GAP) tftPrint(-1, "MHz", 258, 76, ActiveColor, ActiveColorSmooth, 28); - else { -#ifdef HAS_AIR_BAND - if (band == AM_BAND_AIR) - tftPrint(-1, "MHz", 258, 76, ActiveColor, ActiveColorSmooth, 28); - else tftPrint(-1, "KHz", 258, 76, ActiveColor, ActiveColorSmooth, 28); -#else - tftPrint(-1, "KHz", 258, 76, ActiveColor, ActiveColorSmooth, 28); -#endif - } - if (autosquelch) showAutoSquelch(1); RDSstatusold = false; Stereostatusold = false; LowLevelInit = true; - ShowFreq(0); - ShowTuneMode(); updateBW(); - ShowStepSize(); ShowMemoryPos(); updateiMS(); updateEQ(); From 0ffb06be2195b8f333b0497bf47b279185e14705 Mon Sep 17 00:00:00 2001 From: Sjef Verhoeven PE5PVB Date: Thu, 30 May 2024 14:55:27 +0200 Subject: [PATCH 09/12] Update Hungarian language --- src/language.h | 51 +++++++++++++++++++++++++------------------------- 1 file changed, 25 insertions(+), 26 deletions(-) diff --git a/src/language.h b/src/language.h index 5d25498..51ed8ee 100644 --- a/src/language.h +++ b/src/language.h @@ -2134,7 +2134,7 @@ static const char* const myLanguage[18][263] PROGMEM = { "Engedd el a gombot, ha kész", // 5 "Kódoló optikaira állítva", // 6 "Kódoló szabványosra állítva", // 7 - "FM/AM vevő", // 8 + "FM/AM vevőkészülék", // 8 "Tuner: !Nincs!", // 9 "Hangerő", // 10 "Átalakító", // 11 @@ -2151,14 +2151,14 @@ static const char* const myLanguage[18][263] PROGMEM = { "Legkisebb sávszél", // 22 "Legnagyobb sávszél", // 23 "Szinteltolás", // 24 - "Sztereó szep. küszöbérték", // 25 + "Sztereó szétválasztás küszöbértéke", // 25 "Magasak sarokfrekvenciája", // 26 "Magasak küszöbértéke", // 27 "Alacsony szint küszöbérték", // 28 "Kijelző fényereje", // 29 "Ki", // 30 "Kijelző némítva!", // 31 - "A némítás feloldásához jelöld\nki az RF+ pipát", // 32 + "A némítás feloldásához\n jelöld ki az\nRF+ pipát", // 32 "KI", // 33 "KERESÉS...", // 34 "Tuner nem észlelhető", // 35 @@ -2167,7 +2167,7 @@ static const char* const myLanguage[18][263] PROGMEM = { "RDS hibák megjelenítése", // 38 "Nyelv", // 39 "Válassz nyelvet", // 40 - "NYOMD MEG A MODE-OT A MENTÉSHEZ\nÉS A BEZÁRÁSHOZ", // 41 + "MODE A MENTÉSHEZ\nÉS BEZÁRÁSHOZ", // 41 "Be", // 42 "FM halkítás", // 43 "AM halkítás", // 44 @@ -2175,26 +2175,26 @@ static const char* const myLanguage[18][263] PROGMEM = { "Régió", // 46 "Európa", // 47 "Amerika", // 48 - "Aláhúzások megjelenítése RDS-ben", // 49 + "Aláhúzások megjelenítése\nRDS-ben", // 49 "USB mód", // 50 - "Wi-Fi aktív", // 51 + "Wi-Fi", // 51 "Wi-Fi beállítása", // 52 "Csatlakozz ehhez: ", // 53 "a Wi-Fi beállításához", // 54 - "Wi-Fi kapcsolódási kísérlet", // 55 + "Wi-Fi kapcsolódási\nkísérlet", // 55 "SIKERTELEN!", // 56 "CSATLAKOZVA!", // 57 "Stationlist kliens IP", // 58 - "SW hullámhossz megjelenítése", // 59 + "SW hullámhossz\nmegjelenítése", // 59 "RDS szűrő", // 60 "PI hibák megjelenítése", // 61 - "Zajzár használata", // 62 + "Zajzár(SQ) használata", // 62 "Modulációmérő", // 63 "AM Zajszűrő", // 64 "FM Zajszűrő", // 65 "Alapértelmezettek betöltve", // 66 "Audió kimenet", // 67 - "Hangolás engedélyezése\nképernyővédő közben", // 68 + "Hangolás\nengedélyezése\nképernyővédő közben", // 68 "Inverz kijelző", // 69 "A szoftverről", // 70 "Fő kód:", // 71 @@ -2206,7 +2206,7 @@ static const char* const myLanguage[18][263] PROGMEM = { "Téma", // 77 "Kinézet", // 78 "Felismert alkalmazások", // 79 - "Min.", // 80 + "Perc", // 80 "Dinamikus SPI sebesség", // 81 "Keresés érzékenység", // 82 "NINCS", // 83 @@ -2219,7 +2219,7 @@ static const char* const myLanguage[18][263] PROGMEM = { "FM alap. lépésköz", // 90 "Kijelzővédő", // 91 "Mp", // 92 - "NYOMD MEG A BAND-OT\nA BEZÁRÁSHOZ", // 93 + "BAND A BEZÁRÁSHOZ", // 93 "1% fényerő", // 94 "25% fényerő", // 95 "50% fényerő", // 96 @@ -2237,7 +2237,7 @@ static const char* const myLanguage[18][263] PROGMEM = { "Modellválasztó", // 108 "Alap (ILI9341)", // 109 "Hordozható (ILI9341)", // 110 - "Hordozható érintős (ILI9341)", // 111 + "Hord. érintős (ILI9341)", // 111 "Cím", // 112 "Album", // 113 "Szám", // 114 @@ -2299,7 +2299,7 @@ static const char* const myLanguage[18][263] PROGMEM = { "Tangerin", // 170 "Óceán", // 171 "Indigó", // 172 - "Akkumulátor opciók", // 173 + "Akkumulátor jelzése", // 173 "Feszültség mutatása", // 174 "Százalék mutatása", // 175 "RT pufferelés", // 176 @@ -2310,7 +2310,7 @@ static const char* const myLanguage[18][263] PROGMEM = { "FM beállítások", // 181 "AM beállítások", // 182 "Csatlakoztathatóság", // 183 - "NYOMD MEG A MODE-OT A\nVISSZALÉPÉSHEZ", // 184 + "MODE A VISSZALÉPÉSHEZ", // 184 "CoChannel Detektor", // 185 "CoChannel Detektor\nérzékenység", // 186 "CoChannel Detektor\nküszöbérték", // 187 @@ -2328,22 +2328,22 @@ static const char* const myLanguage[18][263] PROGMEM = { "FM kihangolás", // 199 "Kicsi", // 200 "Nagy", // 201 - "Összes", // 202 + "Mind", // 202 "Gyors PS", // 203 - "Alapértelmezett", // 204 + "Alap", // 204 "Képernyő némítása\nXDRGTK kapcsolaton", // 205 "FMSI sztereó\njavítás", // 206 - "A funkció csak a TEF6687/6689\nkészülékeken érhető el!", // 207 - "A funkció nem elérhető\na kiválasztott kinézetben!", // 208 - "Memóriacsatornák keresésének\nelkezdése", // 209 - "Memóriacsatornák keresésének\nbefejezése", // 210 + "Funkció csak a\nTEF6687/6689\nkészülékeken érhető el!", // 207 + "Funkció nem elérhető\na kiválasztott kinézetben!", // 208 + "Memóriacsatornák keresésének elkezdése", // 209 + "Memóriacsatornák keresésének befejezése", // 210 "Várakozási idő", // 211 "DX keresés indítása", // 212 "FM DX Opciók", // 213 - "Megszakítva! A kezdőcsatorna\nkihagyottnak van jelölve.", // 214 + "Megszakítva!\nA kezdőcsatorna\nkihagyottnak van jelölve.", // 214 "Auto AF rendezés", // 215 "Memóriacsatornák", // 216 - "Kizárás", // 217 + "Kizárása", // 217 "Csak", // 218 "Auto keresés\nmegszakítása", // 219 "Helyes PI", // 220 @@ -2353,7 +2353,7 @@ static const char* const myLanguage[18][263] PROGMEM = { "5 mp. sávgombnyomás", // 224 "Kikapcsolás", // 225 "Képernyőnémítás", // 226 - "Kikapcsolva", // 227 + "Letiltva", // 227 "Nincs", // 228 "Hírek", // 229 "Aktuális események", // 230 @@ -2387,8 +2387,7 @@ static const char* const myLanguage[18][263] PROGMEM = { "Riasztás Teszt", // 258 "Riasztás!!!", // 259 "Kezdeti", // 260 - "Mindig", //261 - "Órát mutass" // 262 + "Mindig" //261 }, { "Français", // French From fd9a552ae43b134c5ee4b78492c27ae854c54b97 Mon Sep 17 00:00:00 2001 From: Sjef Verhoeven PE5PVB Date: Thu, 30 May 2024 15:28:02 +0200 Subject: [PATCH 10/12] Fixed regression --- TEF6686_ESP32.ino | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/TEF6686_ESP32.ino b/TEF6686_ESP32.ino index f0cc4be..b202fda 100644 --- a/TEF6686_ESP32.ino +++ b/TEF6686_ESP32.ino @@ -1619,6 +1619,7 @@ void BANDBUTTONPress() { BuildAdvancedRDS(); } else if (advancedRDS) { BuildDisplay(); + SelectBand(); ScreensaverTimerReopen(); } else { if (tunemode != TUNE_MEM) { @@ -2245,6 +2246,7 @@ void ModeButtonPress() { if (!usesquelch) radio.setUnMute(); if (advancedRDS) { BuildDisplay(); + SelectBand(); ScreensaverTimerReopen(); } else if (afscreen) { if (afpagenr == 1) afpagenr = 2; else if (afpagenr == 2 && afpage) afpagenr = 3; else afpagenr = 1; @@ -2430,7 +2432,10 @@ void ButtonPress() { cancelDXScan(); } else { if (!usesquelch) radio.setUnMute(); - if (advancedRDS) BuildDisplay(); + if (advancedRDS) { + BuildDisplay(); + SelectBand(); + } if (!menu) { if (tunemode == TUNE_MEM) { if (!memorystore) { @@ -4094,11 +4099,17 @@ void MuteScreen(bool setting) { tft.writecommand(0x11); analogWrite(CONTRASTPIN, ContrastSet * 2 + 27); if (band < BAND_GAP) { - if (afscreen) BuildAFScreen(); - else if (advancedRDS) BuildAdvancedRDS(); - else BuildDisplay(); + if (afscreen) { + BuildAFScreen(); + } else if (advancedRDS) { + BuildAdvancedRDS(); + } else { + BuildDisplay(); + SelectBand(); + } } else { BuildDisplay(); + SelectBand(); } setupmode = false; } else if (setting && !screenmute) { @@ -4442,6 +4453,7 @@ void endMenu() { if (USBmode) Serial.begin(19200); else Serial.begin(115200); BuildDisplay(); + SelectBand(); } void startFMDXScan() { From 71e059f87dd661aa2c4fd079d71ca7aad91af914 Mon Sep 17 00:00:00 2001 From: Sjef Verhoeven PE5PVB Date: Thu, 30 May 2024 16:03:16 +0200 Subject: [PATCH 11/12] More regression (stupid) --- TEF6686_ESP32.ino | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/TEF6686_ESP32.ino b/TEF6686_ESP32.ino index b202fda..6723630 100644 --- a/TEF6686_ESP32.ino +++ b/TEF6686_ESP32.ino @@ -2106,7 +2106,7 @@ void SelectBand() { tftPrint(0, "iMS", 265, 59, GreyoutColor, BackgroundColor, 16); tft.drawRoundRect(286, 56, 32, 20, 5, GreyoutColor); tftPrint(0, "EQ", 301, 59, GreyoutColor, BackgroundColor, 16); - tftReplace(-1, "MHz", "kHz", 258, 76, BackgroundColor, BackgroundColor, BackgroundColor, 28); + tftReplace(-1, "MHz", "kHz", 258, 76, ActiveColor, ActiveColorSmooth, BackgroundColor, 28); // todo // if (band == AM_BAND_AIR) tftPrint(-1, "MHz", 258, 76, ActiveColor, ActiveColorSmooth, 28); // else tftPrint(-1, "KHz", 258, 76, ActiveColor, ActiveColorSmooth, 28); @@ -2135,7 +2135,7 @@ void SelectBand() { tftPrint(-1, "RT:", 3, 221, ActiveColor, ActiveColorSmooth, 16); tftPrint(-1, "PTY:", 3, 163, ActiveColor, ActiveColorSmooth, 16); - tftReplace(-1, "kHz", "MHz", 258, 76, BackgroundColor, BackgroundColor, BackgroundColor, 28); + tftReplace(-1, "kHz", "MHz", 258, 76, ActiveColor, ActiveColorSmooth, BackgroundColor, 28); } radio.clearRDS(fullsearchrds); From fa2ac0fb8f616715f2ed23a4b8f5e5c22a94bfac Mon Sep 17 00:00:00 2001 From: Sjef Verhoeven PE5PVB Date: Thu, 30 May 2024 16:19:10 +0200 Subject: [PATCH 12/12] Fix problem with disabling screensaver --- TEF6686_ESP32.ino | 48 +++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/TEF6686_ESP32.ino b/TEF6686_ESP32.ino index 6723630..2e1fcd1 100644 --- a/TEF6686_ESP32.ino +++ b/TEF6686_ESP32.ino @@ -1076,28 +1076,44 @@ void loop() { if (digitalRead(BANDBUTTON) == LOW) { tottimer = millis(); - if (screensavertriggered && !touchrotating) WakeToSleep(REVERSE); - BANDBUTTONPress(); + if (screensavertriggered) { + WakeToSleep(REVERSE); + while (digitalRead(BANDBUTTON) == LOW); + } else { + BANDBUTTONPress(); + } } if (digitalRead(ROTARY_BUTTON) == LOW) { tottimer = millis(); - if (screensavertriggered && !touchrotating) WakeToSleep(REVERSE); - if (!afscreen) ButtonPress(); + if (screensavertriggered) { + WakeToSleep(REVERSE); + while (digitalRead(ROTARY_BUTTON) == LOW); + } else { + if (!afscreen) ButtonPress(); + } } if (digitalRead(MODEBUTTON) == LOW) { tottimer = millis(); - if (screensavertriggered && !touchrotating) WakeToSleep(REVERSE); - if (!screenmute) ModeButtonPress(); + if (screensavertriggered) { + WakeToSleep(REVERSE); + while (digitalRead(MODEBUTTON) == LOW); + } else { + if (!screenmute) ModeButtonPress(); + } } if (digitalRead(BWBUTTON) == HIGH && BWtune) BWtune = false; if (digitalRead(BWBUTTON) == LOW && !BWtune) { tottimer = millis(); - if (screensavertriggered && !touchrotating) WakeToSleep(REVERSE); + if (screensavertriggered) { + WakeToSleep(REVERSE); + while (digitalRead(BWBUTTON) == LOW); + } else { if (!screenmute && !afscreen) BWButtonPress(); + } } if (screensaverset) { @@ -1611,10 +1627,6 @@ void BANDBUTTONPress() { while (digitalRead(BANDBUTTON) == LOW && counter - counterold <= 1000) counter = millis(); if (counter - counterold < 1000) { - if (screensavertriggered) { - WakeToSleep(REVERSE); - return; - } if (afscreen) { BuildAdvancedRDS(); } else if (advancedRDS) { @@ -1639,11 +1651,6 @@ void BANDBUTTONPress() { ScreensaverTimerRestart(); } } else { - if (screensavertriggered) { - WakeToSleep(REVERSE); - return; - } - if (band < BAND_GAP) { if (advancedRDS && !seek) BuildAFScreen(); else BuildAdvancedRDS(); @@ -2201,10 +2208,6 @@ void BWButtonPress() { doBW(); BWtune = true; } - if (screensaverset) { - WakeToSleep(REVERSE); - return; - } delay(100); } } @@ -2264,10 +2267,6 @@ void ModeButtonPress() { if (counter - counterold <= 1000) { doTuneMode(); - if (screensaverset) { - WakeToSleep(REVERSE); - return; - } } else { if (!menu) { menuoption = ITEM1; @@ -4454,6 +4453,7 @@ void endMenu() { BuildDisplay(); SelectBand(); + ScreensaverTimerRestart(); } void startFMDXScan() {