diff --git a/TEF6686_ESP32.ino b/TEF6686_ESP32.ino index 34d21b3..595dd93 100644 --- a/TEF6686_ESP32.ino +++ b/TEF6686_ESP32.ino @@ -114,7 +114,7 @@ bool screenmute; bool screensavertriggered = false; bool seek; bool setupmode; -byte showrdserrors; +bool showclock; bool usesquelch; bool softmuteam; bool softmutefm; @@ -200,6 +200,7 @@ byte scanmodeold; byte screensaverOptions[5] = {0, 3, 10, 30, 60}; byte screensaverset; byte showmodulation; +byte showrdserrors; byte showSWMIBand; byte submenu; byte stationlistid; @@ -426,6 +427,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); @@ -525,6 +528,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); @@ -825,6 +829,7 @@ void setup() { Wire.endTransmission(); } + BuildDisplay(); SelectBand(); if (tunemode == TUNE_MEM) DoMemoryPosTune(); @@ -1102,28 +1107,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(); + } } #ifdef DEEPELEC_DP_666 @@ -1647,14 +1668,11 @@ 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) { BuildDisplay(); + SelectBand(); ScreensaverTimerReopen(); } else { if (tunemode != TUNE_MEM) { @@ -1674,11 +1692,6 @@ void BANDBUTTONPress() { ScreensaverTimerRestart(); } } else { - if (screensavertriggered) { - WakeToSleep(REVERSE); - return; - } - if (band < BAND_GAP) { if (advancedRDS && !seek) BuildAFScreen(); else BuildAdvancedRDS(); @@ -1707,6 +1720,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); @@ -2088,6 +2109,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); @@ -2117,7 +2140,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); @@ -2132,6 +2154,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, 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); @@ -2151,9 +2174,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, ActiveColor, ActiveColorSmooth, 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() { @@ -2181,10 +2249,6 @@ void BWButtonPress() { doBW(); BWtune = true; } - if (screensaverset) { - WakeToSleep(REVERSE); - return; - } delay(100); } } @@ -2226,6 +2290,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; @@ -2243,10 +2308,6 @@ void ModeButtonPress() { if (counter - counterold <= 1000) { doTuneMode(); - if (screensaverset) { - WakeToSleep(REVERSE); - return; - } } else { if (!menu) { menuoption = ITEM1; @@ -2384,26 +2445,26 @@ 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); } } - 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() { @@ -2411,7 +2472,10 @@ void ButtonPress() { cancelDXScan(); } else { if (!usesquelch) radio.setUnMute(); - if (advancedRDS) BuildDisplay(); + if (advancedRDS) { + BuildDisplay(); + SelectBand(); + } if (!menu) { if (tunemode == TUNE_MEM) { if (!memorystore) { @@ -3698,14 +3762,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); @@ -3719,7 +3791,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); } @@ -3732,9 +3804,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) { @@ -3770,7 +3841,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; } @@ -3843,6 +3914,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(); @@ -4067,11 +4139,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) { @@ -4183,6 +4261,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); @@ -4410,6 +4489,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(); @@ -4417,6 +4497,8 @@ void endMenu() { if (USBmode) Serial.begin(19200); else Serial.begin(115200); BuildDisplay(); + SelectBand(); + ScreensaverTimerRestart(); } void startFMDXScan() { 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..609b0ba 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); @@ -1572,7 +1582,6 @@ void BuildAdvancedRDS() { void BuildDisplay() { afscreen = false; advancedRDS = false; - int bandColor; tft.fillScreen(BackgroundColor); tft.drawRect(0, 0, 320, 240, FrameColor); @@ -1606,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); @@ -1643,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); @@ -1661,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(); @@ -2228,6 +2199,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 +3061,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 +3931,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 +4341,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 0e323e0..51ed8ee 100644 --- a/src/language.h +++ b/src/language.h @@ -1,11 +1,11 @@ #ifndef LANGUAGE_H #define LANGUAGE_H -#define VERSION "v2.10 RC9" +#define VERSION "v2.10 RC10" // [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,271 +2122,272 @@ 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 }, - { "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őkészülék", // 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ó 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\n jelöld ki az\nRF+ 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 + "MODE A MENTÉSHEZ\nÉS 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\nRDS-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 - "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 + "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\nkísérlet", // 55 + "SIKERTELEN!", // 56 + "CSATLAKOZVA!", // 57 + "Stationlist kliens IP", // 58 + "SW hullámhossz\nmegjelenítése", // 59 + "RDS szűrő", // 60 + "PI hibák megjelenítése", // 61 + "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\nengedé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 + "Perc", // 80 + "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 + "BAND A 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 + "Hord. é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 jelzése", // 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 + "MODE A VISSZALÉ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 + "Mind", // 202 + "Gyors PS", // 203 + "Alap", // 204 + "Képernyő némítása\nXDRGTK kapcsolaton", // 205 + "FMSI sztereó\njavítás", // 206 + "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!\nA kezdőcsatorna\nkihagyottnak van jelölve.", // 214 + "Auto AF rendezés", // 215 + "Memóriacsatornák", // 216 + "Kizárása", // 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 + "Letiltva", // 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 @@ -2643,7 +2651,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 +2916,8 @@ static const char* const myLanguage[18][262] PROGMEM = { "Внимание тест", // 258 "Тревога!", // 259 "Начален", // 260 - "Винаги" // 261 + "Винаги", // 261 + "Покажи часовника" // 262 }, { "Русский", // Russian @@ -3171,7 +3181,8 @@ static const char* const myLanguage[18][262] PROGMEM = { "Внимание тест", // 258 "Тревога!", // 259 "Начальный", // 260 - "Всегда" // 261 + "Всегда", // 261 + "Показать часы" // 262 }, { "Українська", // Ukranian @@ -3435,7 +3446,8 @@ static const char* const myLanguage[18][262] PROGMEM = { "Alarm Test", // 258 "Alarm!!!", // 259 "Початковий", // 260 - "Завжди" // 261 + "Завжди", // 261 + "Показати годинник" // 262 }, { "Italiano", // Italian @@ -3699,7 +3711,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 +3976,8 @@ static const char* const myLanguage[18][262] PROGMEM = { "Alarm Test", // 258 "Alarm!!!", // 259 "初始", // 260 - "始终" // 261 + "始终", // 261 + "显示时钟" // 262 }, { "Norsk", // Norwegian @@ -4227,7 +4241,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 +4506,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 +4771,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];