From db8a8ae4caf9c4e80940eb93de7acf76469b2596 Mon Sep 17 00:00:00 2001 From: Sjef Verhoeven PE5PVB Date: Tue, 11 Jul 2023 22:53:29 +0200 Subject: [PATCH] Added AM level offset --- TEF6686_ESP32.ino | 67 ++++++++++++++++++++++++++++--------- src/TEF6686.cpp | 4 +++ src/TEF6686.h | 1 + src/Tuner_Drv_Lithio.cpp | 4 +++ src/Tuner_Drv_Lithio.h | 1 + src/language.h | 71 ++++++++++++++++++++++++---------------- 6 files changed, 104 insertions(+), 44 deletions(-) diff --git a/TEF6686_ESP32.ino b/TEF6686_ESP32.ino index f139ef0..6ff260a 100644 --- a/TEF6686_ESP32.ino +++ b/TEF6686_ESP32.ino @@ -150,6 +150,7 @@ int DeEmphasis; int ForceMono; int freqold; int LevelOffset; +int AMLevelOffset; int LowLevelSet; int lowsignaltimer; int menuoption = 30; @@ -279,8 +280,8 @@ byte screensaver_IRQ = OFF; void setup() { setupmode = true; - EEPROM.begin(263); - if (EEPROM.readByte(43) != 30) DefaultSettings(); + EEPROM.begin(267); + if (EEPROM.readByte(43) != 31) DefaultSettings(); frequency = EEPROM.readUInt(0); VolSet = EEPROM.readInt(4); @@ -334,6 +335,7 @@ void setup() { CurrentTheme = EEPROM.readByte(260); fmminstepsize = EEPROM.readByte(261); screensaverset = EEPROM.readByte(262); + AMLevelOffset = EEPROM.readInt(263); LWLowEdgeSet = FREQ_LW_LOW_EDGE_MIN; // later will read from flash LWHighEdgeSet = FREQ_LW_HIGH_EDGE_MAX; // later will read from flash @@ -551,6 +553,7 @@ void setup() { radio.setVolume(VolSet); radio.setOffset(LevelOffset); + radio.setAMOffset(AMLevelOffset); radio.setStereoLevel(StereoLevel); radio.setHighCutLevel(HighCutLevel); radio.setHighCutOffset(HighCutOffset); @@ -1532,6 +1535,7 @@ void ModeButtonPress() { EEPROM.writeByte(260, CurrentTheme); EEPROM.writeByte(261, fmminstepsize); EEPROM.writeByte(262, screensaverset); + EEPROM.writeInt(263, AMLevelOffset); EEPROM.commit(); Serial.end(); if (wifi) remoteip = IPAddress (WiFi.localIP()[0], WiFi.localIP()[1], WiFi.localIP()[2], subnetclient); @@ -2033,6 +2037,13 @@ void ButtonPress() { if (CurrentTheme == 7) tft.setTextColor(TFT_BLACK); else tft.setTextColor(TFT_WHITE); if (!screensaverset) tft.drawRightString(myLanguage[language][30], 155, 110, GFXFF); else tft.drawRightString(String(screensaverOptions[screensaverset], DEC), 155, 110, GFXFF); break; + case 130: + if (CurrentTheme == 7) tft.setTextColor(TFT_BLACK); else tft.setTextColor(TFT_WHITE); + tft.drawCentreString(myLanguage[language][97], 155, 70, GFXFF); + tft.drawString("dB", 170, 110, GFXFF); + if (CurrentTheme == 7) tft.setTextColor(TFT_BLACK); else tft.setTextColor(TFT_WHITE); + if (AMLevelOffset > 0) tft.drawRightString("+" + String(AMLevelOffset, DEC), 155, 110, GFXFF); else tft.drawRightString(String(AMLevelOffset, DEC), 155, 110, GFXFF); + break; } break; } @@ -2452,6 +2463,16 @@ void KeyUp() { if (!screensaverset) tft.drawRightString(myLanguage[language][30], 155, 110, GFXFF); else tft.drawRightString(String(screensaverOptions[screensaverset], DEC), 155, 110, GFXFF); break; + case 130: + tft.setFreeFont(FONT14); + if (CurrentTheme == 7) tft.setTextColor(TFT_WHITE); else tft.setTextColor(TFT_BLACK); + if (AMLevelOffset > 0) tft.drawRightString("+" + String(AMLevelOffset, DEC), 155, 110, GFXFF); else tft.drawRightString(String(AMLevelOffset, DEC), 155, 110, GFXFF); + AMLevelOffset++; + if (AMLevelOffset > 15) AMLevelOffset = -50; + if (CurrentTheme == 7) tft.setTextColor(TFT_BLACK); else tft.setTextColor(TFT_WHITE); + if (AMLevelOffset > 0) tft.drawRightString("+" + String(AMLevelOffset, DEC), 155, 110, GFXFF); else tft.drawRightString(String(AMLevelOffset, DEC), 155, 110, GFXFF); + radio.setAMOffset(AMLevelOffset); + break; } break; } @@ -2865,6 +2886,16 @@ void KeyDown() { if (!screensaverset) tft.drawRightString(myLanguage[language][30], 155, 110, GFXFF); else tft.drawRightString(String(screensaverOptions[screensaverset], DEC), 155, 110, GFXFF); break; + case 130: + tft.setFreeFont(FONT14); + if (CurrentTheme == 7) tft.setTextColor(TFT_WHITE); else tft.setTextColor(TFT_BLACK); + if (AMLevelOffset > 0) tft.drawRightString("+" + String(AMLevelOffset, DEC), 155, 110, GFXFF); else tft.drawRightString(String(AMLevelOffset, DEC), 155, 110, GFXFF); + AMLevelOffset--; + if (AMLevelOffset < -50) AMLevelOffset = 15; + if (CurrentTheme == 7) tft.setTextColor(TFT_BLACK); else tft.setTextColor(TFT_WHITE); + if (AMLevelOffset > 0) tft.drawRightString("+" + String(AMLevelOffset, DEC), 155, 110, GFXFF); else tft.drawRightString(String(AMLevelOffset, DEC), 155, 110, GFXFF); + radio.setAMOffset(AMLevelOffset); + break; } break; } @@ -3497,9 +3528,9 @@ void BuildMenu() { tft.drawRightString(String(LowEdgeSet / 10 + ConverterSet, DEC) + "." + String(LowEdgeSet % 10 + ConverterSet, DEC), 265, 70, GFXFF); tft.drawRightString(String(HighEdgeSet / 10 + ConverterSet, DEC) + "." + String(HighEdgeSet % 10 + ConverterSet, DEC), 265, 90, GFXFF); if (LevelOffset > 0) tft.drawRightString("+" + String(LevelOffset, DEC), 265, 110, GFXFF); else tft.drawRightString(String(LevelOffset, DEC), 265, 110, GFXFF); - if (StereoLevel != 0) tft.drawRightString(String(StereoLevel, DEC), 265, 130, GFXFF); else tft.drawRightString(myLanguage[language][30], 265, 130, GFXFF); + if (StereoLevel != 0) tft.drawRightString(String(StereoLevel, DEC), 265, 130, GFXFF); else tft.drawRightString(myLanguage[language][30], 305, 130, GFXFF); if (HighCutLevel != 0) tft.drawRightString(String(HighCutLevel * 100, DEC), 265, 150, GFXFF); else tft.drawRightString(myLanguage[language][30], 265, 150, GFXFF); - if (HighCutOffset != 0) tft.drawRightString(String(HighCutOffset, DEC), 265, 170, GFXFF); else tft.drawRightString(myLanguage[language][30], 265, 170, GFXFF); + if (HighCutOffset != 0) tft.drawRightString(String(HighCutOffset, DEC), 265, 170, GFXFF); else tft.drawRightString(myLanguage[language][30], 305, 170, GFXFF); tft.drawRightString(String(LowLevelSet, DEC), 265, 190, GFXFF); tft.drawRightString(String(ContrastSet, DEC), 265, 210, GFXFF); break; @@ -3540,8 +3571,8 @@ void BuildMenu() { tft.drawString(myLanguage[language][65], 14, 170, GFXFF); tft.drawString(myLanguage[language][67], 14, 190, GFXFF); tft.drawString(myLanguage[language][68], 14, 210, GFXFF); - if (amnb != 0) tft.drawRightString("%", 305, 150, GFXFF); else tft.drawRightString(myLanguage[language][30], 265, 150, GFXFF); - if (fmnb != 0) tft.drawRightString("%", 305, 170, GFXFF); else tft.drawRightString(myLanguage[language][30], 265, 170, GFXFF); + if (amnb != 0) tft.drawRightString("%", 305, 150, GFXFF); else tft.drawRightString(myLanguage[language][30], 305, 150, GFXFF); + if (fmnb != 0) tft.drawRightString("%", 305, 170, GFXFF); else tft.drawRightString(myLanguage[language][30], 305, 170, GFXFF); tft.setTextColor(PrimaryColor); tft.drawRightString(String(WiFi.localIP()[0]) + "." + String(WiFi.localIP()[1]) + "." + String(WiFi.localIP()[2]) + "." + String(subnetclient, DEC), 305, 30, GFXFF); if (showSWMIBand) tft.drawRightString(myLanguage[language][42], 305, 50, GFXFF); else tft.drawRightString(myLanguage[language][30], 305, 50, GFXFF); @@ -3549,24 +3580,27 @@ void BuildMenu() { if (radio.rds.pierrors) tft.drawRightString(myLanguage[language][42], 305, 90, GFXFF); else tft.drawRightString(myLanguage[language][30], 305, 90, GFXFF); if (showsquelch) tft.drawRightString(myLanguage[language][42], 305, 110, GFXFF); else tft.drawRightString(myLanguage[language][30], 305, 110, GFXFF); if (showmodulation) tft.drawRightString(myLanguage[language][42], 305, 130, GFXFF); else tft.drawRightString(myLanguage[language][30], 305, 130, GFXFF); - if (amnb != 0) tft.drawRightString(String(amnb, DEC), 265, 150, GFXFF); else tft.drawRightString(myLanguage[language][30], 265, 150, GFXFF); - if (fmnb != 0) tft.drawRightString(String(fmnb, DEC), 265, 170, GFXFF); else tft.drawRightString(myLanguage[language][30], 265, 170, GFXFF); + if (amnb != 0) tft.drawRightString(String(amnb, DEC), 265, 150, GFXFF); else tft.drawRightString(myLanguage[language][30], 305, 150, GFXFF); + if (fmnb != 0) tft.drawRightString(String(fmnb, DEC), 265, 170, GFXFF); else tft.drawRightString(myLanguage[language][30], 305, 170, GFXFF); if (audiomode) tft.drawRightString("MPX", 305, 190, GFXFF); else tft.drawRightString("Stereo", 305, 190, GFXFF); if (specialstepOIRT) tft.drawRightString(myLanguage[language][42], 305, 210, GFXFF); else tft.drawRightString(myLanguage[language][30], 305, 210, GFXFF); break; case 4: tft.drawRightString("KHz", 305, 90, GFXFF); + tft.drawRightString("dB", 305, 130, GFXFF); if (screensaverset) tft.drawRightString(myLanguage[language][92], 305, 110, GFXFF); tft.drawString(myLanguage[language][77], 14, 30, GFXFF); tft.drawString(myLanguage[language][70], 14, 50, GFXFF); tft.drawString(myLanguage[language][74], 14, 70, GFXFF); tft.drawString(myLanguage[language][90], 14, 90, GFXFF); tft.drawString(myLanguage[language][91], 14, 110, GFXFF); + tft.drawString(myLanguage[language][97], 14, 130, GFXFF); tft.setTextColor(PrimaryColor); tft.drawRightString(CurrentThemeString, 305, 30, GFXFF); ShowPowerOptions(false); if (fmminstepsize) tft.drawRightString(String(FREQ_FM_STEP_100K * 10, DEC), 265, 90, GFXFF); else tft.drawRightString(String(FREQ_FM_STEP_50K * 10, DEC), 265, 90, GFXFF); - if (!screensaverset) tft.drawRightString(myLanguage[language][30], 265, 110, GFXFF); else tft.drawRightString(String(screensaverOptions[screensaverset], DEC), 265, 110, GFXFF); + if (!screensaverset) tft.drawRightString(myLanguage[language][30], 305, 110, GFXFF); else tft.drawRightString(String(screensaverOptions[screensaverset], DEC), 265, 110, GFXFF); + if (AMLevelOffset > 0) tft.drawRightString("+" + String(AMLevelOffset, DEC), 265, 130, GFXFF); else tft.drawRightString(String(AMLevelOffset, DEC), 265, 130, GFXFF); break; } analogWrite(SMETERPIN, 0); @@ -4119,6 +4153,7 @@ void ShowFreq(int mode) { void ShowSignalLevel() { if (screenmute == false) { if (band == BAND_FM) SNR = int(0.46222375 * (float)(SStatus / 10) - 0.082495118 * (float)(USN / 10)) + 10; else SNR = -((int8_t)(USN / 10)); + if (band != BAND_FM && SNR > 50) SNR = 0; if (millis() >= snrupdatetimer + TIMER_SNR_TIMER) { snrupdatetimer = millis(); @@ -5072,8 +5107,9 @@ void XDRGTKRoutine() { break; case 'G': - LevelOffset = atol(buff + 1); - if (LevelOffset == 0) { + byte offsetg; + offsetg = atol(buff + 1); + if (offsetg == 0) { MuteScreen(0); LowLevelSet = EEPROM.readInt(47); softmuteam = EEPROM.readByte(29); @@ -5082,7 +5118,7 @@ void XDRGTKRoutine() { radio.setSoftmuteAM(softmuteam); DataPrint("G00\n"); } - if (LevelOffset == 10) { + if (offsetg == 10) { MuteScreen(1); LowLevelSet = EEPROM.readInt(47); softmuteam = EEPROM.readByte(29); @@ -5091,13 +5127,13 @@ void XDRGTKRoutine() { radio.setSoftmuteAM(softmuteam); DataPrint("G10\n"); } - if (LevelOffset == 1) { + if (offsetg == 1) { MuteScreen(0); radio.setSoftmuteFM(1); radio.setSoftmuteAM(1); DataPrint("G01\n"); } - if (LevelOffset == 11) { + if (offsetg == 11) { MuteScreen(1); radio.setSoftmuteFM(1); radio.setSoftmuteAM(1); @@ -5751,7 +5787,7 @@ void passwordcrypt() { } void DefaultSettings() { - EEPROM.writeByte(43, 30); + EEPROM.writeByte(43, 31); EEPROM.writeUInt(0, 10000); EEPROM.writeInt(4, 0); EEPROM.writeUInt(8, 0); @@ -5806,5 +5842,6 @@ void DefaultSettings() { EEPROM.writeByte(260, 0); EEPROM.writeByte(261, 0); EEPROM.writeByte(262, 0); + EEPROM.writeInt(263, 0); EEPROM.commit(); } diff --git a/src/TEF6686.cpp b/src/TEF6686.cpp index 37ea1a8..cc95697 100644 --- a/src/TEF6686.cpp +++ b/src/TEF6686.cpp @@ -42,6 +42,10 @@ void TEF6686::setOffset(int8_t offset) { devTEF_Radio_Set_LevelOffset(offset * 10); } +void TEF6686::setAMOffset(int8_t offset) { + devTEF_Radio_Set_AMLevelOffset(offset * 10); +} + void TEF6686::setFMBandw(uint16_t bandwidth) { devTEF_Radio_Set_Bandwidth(0, bandwidth * 10, 1000, 1000); } diff --git a/src/TEF6686.h b/src/TEF6686.h index e70ca2b..807b730 100644 --- a/src/TEF6686.h +++ b/src/TEF6686.h @@ -192,6 +192,7 @@ class TEF6686 { void setAMAttenuation(uint16_t start); void setMute(); void setOffset(int8_t offset); + void setAMOffset(int8_t offset); void setFMSI(uint8_t mode); void setFMSI_Time(uint16_t attack, uint16_t decay); void setFMSI_Gain(uint16_t band1, uint16_t band2, uint16_t band3, uint16_t band4); diff --git a/src/Tuner_Drv_Lithio.cpp b/src/Tuner_Drv_Lithio.cpp index 471786d..ecf6d5b 100644 --- a/src/Tuner_Drv_Lithio.cpp +++ b/src/Tuner_Drv_Lithio.cpp @@ -68,6 +68,10 @@ bool devTEF_Radio_Set_LevelOffset(int16_t offset) { return devTEF_Set_Cmd(TEF_FM, Cmd_Set_LevelOffset, 5, offset - 70); } +bool devTEF_Radio_Set_AMLevelOffset(int16_t offset) { + return devTEF_Set_Cmd(TEF_AM, Cmd_Set_LevelOffset, 5, offset - 70); +} + bool devTEF_Radio_Set_RDS(bool fullsearchrds) { if (fullsearchrds == true) return devTEF_Set_Cmd(TEF_FM, Cmd_Set_RDS, 9, 3, 1, 0); else return devTEF_Set_Cmd(TEF_FM, Cmd_Set_RDS, 9, 1, 1, 0); } diff --git a/src/Tuner_Drv_Lithio.h b/src/Tuner_Drv_Lithio.h index 1bca22e..64e3e29 100644 --- a/src/Tuner_Drv_Lithio.h +++ b/src/Tuner_Drv_Lithio.h @@ -80,6 +80,7 @@ bool devTEF_Radio_Set_Noiseblanker_AM(uint8_t mode, uint16_t start); bool devTEF_Radio_Set_Attenuator_AM(uint16_t start); bool devTEF_Radio_Set_CoChannel_AM(uint16_t start); bool devTEF_Radio_Set_LevelOffset(int16_t offset); +bool devTEF_Radio_Set_AMLevelOffset(int16_t offset); bool devTEF_Radio_Set_Stereo_Level(uint8_t mode, uint16_t start, uint16_t slope); bool devTEF_Radio_Set_Stereo_Noise(uint8_t mode, uint16_t start, uint16_t slope); bool devTEF_Radio_Set_Stereo_Mph(uint8_t mode, uint16_t start, uint16_t slope); diff --git a/src/language.h b/src/language.h index bec96bd..94c8f10 100644 --- a/src/language.h +++ b/src/language.h @@ -1,6 +1,6 @@ // [number of languages][number of texts][max. length of text] -static const char* const myLanguage[13][97] = { +static const char* const myLanguage[13][98] = { { "English", // English "Rotary direction changed", // 1 "Please release button", // 2 @@ -15,7 +15,7 @@ static const char* const myLanguage[13][97] = { "Converter:", // 11 "Low band edge:", // 12 "High band edge:", // 13 - "RF Level offset:", // 14 + "FM RF Level offset:", // 14 "Stereo threshold:", // 15 "High Cut corner:", // 16 "Highcut threshold:", // 17 @@ -97,7 +97,8 @@ static const char* const myLanguage[13][97] = { "PRESS BAND TO CLOSE", // 93 "1% brightness", // 94 "25% brightness", // 95 - "50% brightness" // 96 + "50% brightness", // 96 + "AM RF Level offset:" // 97 }, { "Nederlands", // Dutch @@ -114,7 +115,7 @@ static const char* const myLanguage[13][97] = { "Converter:", // 11 "Lage bandgrens:", // 12 "Hoge bandgrens:", // 13 - "RF niveau afwijking:", // 14 + "FM RF niveau afwijking:", // 14 "Stereo grens:", // 15 "Hoge tonen afval:", // 16 "Hoog afval grens:", // 17 @@ -194,9 +195,10 @@ static const char* const myLanguage[13][97] = { "Schermbeveiliging", // 91 "sec.", // 92 "DRUK OP BAND OM AF TE SLUITEN", // 93 - "1% brightness", // 94 - "25% brightness", // 95 - "50% brightness" // 96 + "1% helderheid", // 94 + "25% helderheid", // 95 + "50% helderheid", // 96 + "AM RF Level offset:" // 97 }, { "Polski", // Polish @@ -213,7 +215,7 @@ static const char* const myLanguage[13][97] = { "Konwerter:", // 11 "Dolna granica pasma:", // 12 "Gorna granica pasma:", // 13 - "Odchylenie poziomu RF:", // 14 + "FM Odchylenie poziomu RF:", // 14 "Prog Stereo:", // 15 "Krawedz dolnoprzep..:", // 16 "Prog dolnoprzepust.:", // 17 @@ -295,7 +297,8 @@ static const char* const myLanguage[13][97] = { "NACISNIJ BAND ABY ZAMKNAC", // 93 "1% jasnosci", // 94 "25% jasnosci", // 95 - "50% jasnosci" // 96 + "50% jasnosci", // 96 + "AM RF Level offset:" // 97 }, { "Hrvatski", // Croatian @@ -312,7 +315,7 @@ static const char* const myLanguage[13][97] = { "Pomak konvertera:", // 11 "Donja granica opsega:", // 12 "Gornja granica opsega:", // 13 - "Pomak RF razine:", // 14 + "FM Pomak RF razine:", // 14 "Razina stereo signala:", // 15 "Granična frekvencija:", // 16 "Razina granične frekv.:", // 17 @@ -394,7 +397,8 @@ static const char* const myLanguage[13][97] = { "PRESS BAND TO CLOSE", // 93 "1% brightness", // 94 "25% brightness", // 95 - "50% brightness" // 96 + "50% brightness", // 96 + "AM RF Level offset:" // 97 }, { "Ελληνικά", // Greek @@ -411,7 +415,7 @@ static const char* const myLanguage[13][97] = { "Μετατροπέας:", // 11 "Κάτω όριο μπάντας:", // 12 "Άνω όριο μπάντας:", // 13 - "Ολίσθηση επιπέδου RF:", // 14 + "FM Ολίσθηση επιπέδου RF:", // 14 "Κατώφλι στέρεο:", // 15 "Όριο υψηλής αποκοπής:", // 16 "Κατώφλι υψηλής αποκοπής:", // 17 @@ -493,7 +497,8 @@ static const char* const myLanguage[13][97] = { "ΠΙΕΣΤΕ BAND ΓΙΑ ΚΛΕΙΣΙΜΟ", // 93 "1% φωτεινότητα", // 94 "25% φωτεινότητα", // 95 - "50% φωτεινότητα" // 96 + "50% φωτεινότητα", // 96 + "AM RF Level offset:" // 97 }, { "Romana", // Romanian @@ -510,7 +515,7 @@ static const char* const myLanguage[13][97] = { "Convertor:", // 11 "Limita inferioara a benzii:", // 12 "Limita superioara a benzii:", // 13 - "offset ptr. nivel RF:", // 14 + "FM offset ptr. nivel RF:", // 14 "Prag ptr. Stereo :", // 15 "Limita taiere inalte:", // 16 "Prag taiere inalte:", // 17 @@ -592,7 +597,8 @@ static const char* const myLanguage[13][97] = { "PRESS BAND TO CLOSE", // 93 "1% brightness", // 94 "25% brightness", // 95 - "50% brightness" // 96 + "50% brightness", // 96 + "AM RF Level offset:" // 97 }, { "Deutsch", // German @@ -609,7 +615,7 @@ static const char* const myLanguage[13][97] = { "Konverter:", // 11 "Unteres Bandende:", // 12 "Oberes Bandende:", // 13 - "RF-Pegeloffset:", // 14 + "FM RF-Pegeloffset:", // 14 "Stereoschwelle:", // 15 "High-Cut-Ende:", // 16 "High-Cut-Schwelle:", // 17 @@ -691,7 +697,8 @@ static const char* const myLanguage[13][97] = { "ZUM SCHLIEßEN BAND DRÜCKEN", // 93 "1% Helligkeit", // 94 "25% Helligkeit", // 95 - "50% Helligkeit" // 96 + "50% Helligkeit", // 96 + "AM RF Level offset:" // 97 }, { "Czech", // Czech @@ -708,7 +715,7 @@ static const char* const myLanguage[13][97] = { "Konvertor:", // 11 "Spodek pásma:", // 12 "Vrch pásma:", // 13 - "Offset frekvence:", // 14 + "FM Offset frekvence:", // 14 "Práh pro stereo:", // 15 "Práh utlumeni:", // 16 "Práh zvuku:", // 17 @@ -790,7 +797,8 @@ static const char* const myLanguage[13][97] = { "PRESS BAND TO CLOSE", // 93 "1% brightness", // 94 "25% brightness", // 95 - "50% brightness" // 96 + "50% brightness", // 96 + "AM RF Level offset:" // 97 }, { "Slovak", // Slovak @@ -807,7 +815,7 @@ static const char* const myLanguage[13][97] = { "Konvertor:", // 11 "Spodok pásma:", // 12 "Vrch pásma:", // 13 - "Offset frekvencie:", // 14 + "FM Offset frekvencie:", // 14 "Prah pre stereo:", // 15 "Prah utlmenia:", // 16 "Prah zvuku:", // 17 @@ -889,7 +897,8 @@ static const char* const myLanguage[13][97] = { "PRESS BAND TO CLOSE", // 93 "1% brightness", // 94 "25% brightness", // 95 - "50% brightness" // 96 + "50% brightness", // 96 + "AM RF Level offset:" // 97 }, { "Français", // French @@ -906,7 +915,7 @@ static const char* const myLanguage[13][97] = { "Convertisseur :", // 11 "Limite de bande basse:", // 12 "Limite de bande haute:", // 13 - "Décalage du niveau RF:", // 14 + "FM Décalage du niveau RF:", // 14 "Seuil minimum pour la Stéréo :", // 15 "Angle du filtre High Cut :", // 16 "Seuil minimum pour le filtre High Cut :", // 17 @@ -988,7 +997,8 @@ static const char* const myLanguage[13][97] = { "PRESS BAND TO CLOSE", // 93 "1% brightness", // 94 "25% brightness", // 95 - "50% brightness" // 96 + "50% brightness", // 96 + "AM RF Level offset:" // 97 }, { "Български", // Bulgarian @@ -1005,7 +1015,7 @@ static const char* const myLanguage[13][97] = { "Отместване на конв.:", // 11 "Нисък край:", // 12 "Висок край:", // 13 - "Отместване на RF:", // 14 + "FM Отместване на RF:", // 14 "Stereo праг:", // 15 "Мин. честота на изряз.:", // 16 "Мин. сигнал за изряз.:", // 17 @@ -1087,7 +1097,8 @@ static const char* const myLanguage[13][97] = { "НАТИСНЕТЕ BAND ЗА ИЗХОД", // 93 "1% brightness", // 94 "25% brightness", // 95 - "50% brightness" // 96 + "50% brightness", // 96 + "AM RF Level offset:" // 97 }, { "Русский", // Russian @@ -1104,7 +1115,7 @@ static const char* const myLanguage[13][97] = { "Конвертер:", // 11 "Нижняя граница диапазона:", // 12 "Верхняя граница диапазона:", // 13 - "Смещение уровня RF:", // 14 + "FM Смещение уровня RF:", // 14 "Порог стерео:", // 15 "Угол среза высоких частот:", // 16 "Порог высокого среза:", // 17 @@ -1186,7 +1197,8 @@ static const char* const myLanguage[13][97] = { "НАЖМИТЕ BAND ДЛЯ ЗАКРЫТИЯ", // 93 "1% яркости", // 94 "25% яркости", // 95 - "50% яркости" // 96 + "50% яркости", // 96 + "AM RF Level offset:" // 97 }, { "Українська", // Ukranian @@ -1203,7 +1215,7 @@ static const char* const myLanguage[13][97] = { "Конвертер:", // 11 "Нижня межа діапазону:", // 12 "Верхня межа діапазону:", // 13 - "Зміщення рівня RF:", // 14 + "FM Зміщення рівня RF:", // 14 "Поріг стерео:", // 15 "Верхній край відсіку Високих частот:", // 16 "Поріг відсіку Високих частот:", // 17 @@ -1285,7 +1297,8 @@ static const char* const myLanguage[13][97] = { "НАТИСНІТЬ BAND ДЛЯ ЗАКРИТТЯ", // 93 "1% яскравості", // 94 "25% яскравості", // 95 - "50% яскравості" // 96 + "50% яскравості", // 96 + "AM RF Level offset:" // 97 } };