Merge branch 'main' into New_Model_DP_666

This commit is contained in:
Leon
2024-05-30 23:09:38 +08:00
7 changed files with 449 additions and 355 deletions
+129 -47
View File
@@ -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() {
+5 -4
View File
@@ -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
+33 -41
View File
@@ -8,7 +8,7 @@
#include <cstring>
byte menuitem;
byte items[9] = {9, static_cast<byte>(dynamicspi ? 10 : 9), 7, 10, 9, 10, 9, 6, 7};
byte items[9] = {9, static_cast<byte>(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;
}
}
+1
View File
@@ -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;
+278 -261
View File
@@ -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
" 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
"", // 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
+1 -1
View File
@@ -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) {
+2 -1
View File
@@ -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];