Introduced DX scan mode

This commit is contained in:
Sjef Verhoeven PE5PVB
2024-04-08 17:33:49 +02:00
parent 42666e17c1
commit 24443c4245
6 changed files with 407 additions and 68 deletions
+51 -16
View File
@@ -91,6 +91,7 @@ bool RDSstatus;
bool RDSstatusold;
bool rdsstereoold;
bool rtcset;
bool scandxmode;
bool screenmute;
bool screensavertriggered = false;
bool seek;
@@ -172,6 +173,10 @@ byte rdsqualityold;
byte region;
byte rotarymode;
byte touchrotating;
byte scanstart;
byte scanstop;
byte scanhold;
byte scanmodeold;
byte screensaverOptions[5] = {0, 3, 10, 30, 60};
byte screensaverset;
byte showmodulation;
@@ -354,6 +359,7 @@ unsigned long rtplusticker;
unsigned long rtplustickerhold;
unsigned long rtticker;
unsigned long rttickerhold;
unsigned long scantimer;
unsigned long signalstatustimer;
unsigned long tottimer;
unsigned long tuningtimer;
@@ -475,6 +481,9 @@ void setup() {
fmagc = EEPROM.readByte(EE_BYTE_FMAGC);
amagc = EEPROM.readByte(EE_BYTE_AMAGC);
fmsi = EEPROM.readByte(EE_BYTE_FMSI);
scanstart = EEPROM.readByte(EE_BYTE_SCANSTART);
scanstop = EEPROM.readByte(EE_BYTE_SCANSTOP);
scanhold = EEPROM.readByte(EE_BYTE_SCANHOLD);
if (spispeed == SPI_SPEED_DEFAULT) tft.setSPISpeed(SPI_FREQUENCY / 1000000); else tft.setSPISpeed(spispeed * 10);
LWLowEdgeSet = FREQ_LW_LOW_EDGE_MIN;
@@ -784,6 +793,21 @@ void loop() {
}
if (digitalRead(BANDBUTTON) == LOW ) BANDBUTTONPress();
if (scandxmode && millis() >= scantimer + (scanhold * 1000)) {
memorypos++;
if (memorypos > scanstop) memorypos = scanstart;
while (IsStationEmpty()) {
memorypos++;
if (memorypos > scanstop) {
memorypos = scanstart;
break;
}
}
DoMemoryPosTune();
ShowMemoryPos();
scantimer = millis();
}
if (millis() >= tuningtimer + 200) {
if (store) {
detachInterrupt(digitalPinToInterrupt(ROTARY_PIN_A));
@@ -1350,6 +1374,7 @@ void ToggleBand(byte nowBand) {
}
void BANDBUTTONPress() {
if (scandxmode) cancelDXScan();
if (memorystore) {
EEPROM.writeUInt((memorypos * 4) + EE_PRESETS_FREQUENCY_START, EE_PRESETS_FREQUENCY);
EEPROM.commit();
@@ -1855,6 +1880,7 @@ void SelectBand() {
}
void BWButtonPress() {
if (scandxmode) cancelDXScan();
if (!usesquelch) radio.setUnMute();
if (!menu) {
seek = false;
@@ -1927,6 +1953,7 @@ void doStereoToggle() {
}
void ModeButtonPress() {
if (scandxmode) cancelDXScan();
if (!usesquelch) radio.setUnMute();
if (advancedRDS) {
BuildDisplay();
@@ -1955,22 +1982,14 @@ void ModeButtonPress() {
ScreensaverTimerRestart();
}
} else {
if (XDRGTKUSB || XDRGTKTCP) {
ShowFreq(1);
tftPrint(-1, myLanguage[language][86], 70, 68, ActiveColor, ActiveColorSmooth, 28);
delay(1000);
tftPrint(-1, myLanguage[language][86], 70, 68, BackgroundColor, BackgroundColor, 28);
ShowFreq(0);
} else {
if (!menu) {
menuoption = ITEM1;
menupage = INDEX;
menuitem = 0;
UpdateFonts(1);
BuildMenu();
menu = true;
ScreensaverTimerSet(OFF);
}
if (!menu) {
menuoption = ITEM1;
menupage = INDEX;
menuitem = 0;
UpdateFonts(1);
BuildMenu();
menu = true;
ScreensaverTimerSet(OFF);
}
}
} else {
@@ -2055,6 +2074,9 @@ void ModeButtonPress() {
EEPROM.writeByte(EE_BYTE_FMAGC, fmagc);
EEPROM.writeByte(EE_BYTE_AMAGC, amagc);
EEPROM.writeByte(EE_BYTE_FMSI, fmsi);
EEPROM.writeByte(EE_BYTE_SCANSTART, scanstart);
EEPROM.writeByte(EE_BYTE_SCANSTOP, scanstop);
EEPROM.writeByte(EE_BYTE_SCANHOLD, scanhold);
EEPROM.commit();
if (af == 2) radio.rds.afreg = true; else radio.rds.afreg = false;
if (!usesquelch) radio.setUnMute();
@@ -2212,6 +2234,7 @@ void RoundStep() {
}
void ButtonPress() {
if (scandxmode) cancelDXScan();
if (!usesquelch) radio.setUnMute();
if (advancedRDS) BuildDisplay();
if (!menu) {
@@ -2372,6 +2395,7 @@ void ButtonPress() {
}
void KeyUp() {
if (scandxmode) cancelDXScan();
rotary = 0;
if (!afscreen) {
if (!menu) {
@@ -2435,6 +2459,7 @@ void KeyUp() {
}
void KeyDown() {
if (scandxmode) cancelDXScan();
rotary = 0;
if (!afscreen) {
if (!menu) {
@@ -4142,6 +4167,9 @@ void DefaultSettings(byte userhardwaremodel) {
EEPROM.writeByte(EE_BYTE_FMAGC, 92);
EEPROM.writeByte(EE_BYTE_AMAGC, 100);
EEPROM.writeByte(EE_BYTE_FMSI, 1);
EEPROM.writeByte(EE_BYTE_SCANSTART, 0);
EEPROM.writeByte(EE_BYTE_SCANSTOP, 9);
EEPROM.writeByte(EE_BYTE_SCANHOLD, 5);
for (int i = 0; i < EE_PRESETS_CNT; i++) {
EEPROM.writeByte(i + EE_PRESETS_BAND_START, BAND_FM);
@@ -4270,3 +4298,10 @@ void UpdateFonts(bool mode) {
break;
}
}
void cancelDXScan() {
tunemode = scanmodeold;
scandxmode = false;
ShowTuneMode();
ShowMemoryPos();
}
+11 -8
View File
@@ -196,9 +196,9 @@
// EEPROM index defines
#define EE_PRESETS_CNT 99
#define EE_CHECKBYTE_VALUE 5 // 0 ~ 255,add new entry, change for new value
#define EE_CHECKBYTE_VALUE 6 // 0 ~ 255,add new entry, change for new value
#define EE_TOTAL_CNT 2213
#define EE_TOTAL_CNT 2216
#define EE_UINT16_FREQUENCY_FM 0
#define EE_BYTE_VOLSET 4
#define EE_BYTE_STEREO 5
@@ -282,12 +282,15 @@
#define EE_BYTE_FMAGC 127
#define EE_BYTE_AMAGC 128
#define EE_BYTE_FMSI 129
#define EE_PRESETS_BAND_START 130
#define EE_PRESET_BW_START 230
#define EE_PRESET_MS_START 330
#define EE_PRESETS_FREQUENCY_START 430
#define EE_PRESETS_RDSPI_START 826 // 5 bytes
#define EE_PRESETS_RDSPS_START 1321 // 9 bytes
#define EE_BYTE_SCANSTART 130
#define EE_BYTE_SCANSTOP 131
#define EE_BYTE_SCANHOLD 132
#define EE_PRESETS_BAND_START 133
#define EE_PRESET_BW_START 233
#define EE_PRESET_MS_START 333
#define EE_PRESETS_FREQUENCY_START 433
#define EE_PRESETS_RDSPI_START 829 // 5 bytes
#define EE_PRESETS_RDSPS_START 1324 // 9 bytes
#define EE_PRESETS_FREQUENCY 0
// End of EEPROM index defines
+168 -4
View File
@@ -7,7 +7,8 @@
#include <cstring>
byte menuitem;
byte items[8] = {8, static_cast<byte>(dynamicspi ? 9 : 8), 7, 10, 9, 10, 9, 6};
byte items[9] = {9, static_cast<byte>(dynamicspi ? 9 : 8), 7, 10, 9, 10, 9, 6, 4};
extern mem presets[];
void doTheme() { // Use this to put your own colors in: http://www.barth-dev.de/online/rgb565-color-picker/
switch (CurrentTheme) {
@@ -617,6 +618,12 @@ void ShowOneLine(byte position, byte item, bool selected) {
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FullLineSprite.drawString((USBmode ? "RDS Spy" : "XDRGTK"), 298, 3);
break;
case DXMODE:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][212]), 6, 3);
break;
}
break;
@@ -704,6 +711,16 @@ void ShowOneLine(byte position, byte item, bool selected) {
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FullLineSprite.drawString((wifi ? myLanguage[language][42] : myLanguage[language][30]), 298, 3);
break;
case DXMODE:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][209]), 6, 3);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FullLineSprite.drawString(String(scanstart + 1, DEC), 298, 3);
break;
}
break;
@@ -790,6 +807,16 @@ void ShowOneLine(byte position, byte item, bool selected) {
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FullLineSprite.drawString(">", 298, 3);
break;
case DXMODE:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][210]), 6, 3);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FullLineSprite.drawString(String(scanstop + 1, DEC), 298, 3);
break;
}
break;
@@ -876,6 +903,18 @@ void ShowOneLine(byte position, byte item, bool selected) {
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FullLineSprite.drawString((wifi ? String(WiFi.localIP()[0]) + "." + String(WiFi.localIP()[1]) + "." + String(WiFi.localIP()[2]) + "." + String(subnetclient, DEC) : "-"), 298, 3);
break;
case DXMODE:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][211]), 6, 3);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][92]), 298, 3);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FullLineSprite.drawString(String(scanhold, DEC), 258, 3);
break;
}
break;
@@ -1154,7 +1193,7 @@ void ShowOneLine(byte position, byte item, bool selected) {
case INDEX:
FullLineSprite.setTextDatum(TC_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][70]), 152, 3);
FullLineSprite.drawString(removeNewline(myLanguage[language][213]), 152, 3);
break;
case MAINSETTINGS:
@@ -1190,7 +1229,7 @@ void ShowOneLine(byte position, byte item, bool selected) {
case RDSSETTINGS:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][196]), 6, 3);
FullLineSprite.drawString(removeNewline(myLanguage[language][215]), 6, 3);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FullLineSprite.drawString((radio.rds.sortaf ? myLanguage[language][42] : myLanguage[language][30]), 298, 3);
@@ -1229,6 +1268,12 @@ void ShowOneLine(byte position, byte item, bool selected) {
case 8:
switch (menupage) {
case INDEX:
FullLineSprite.setTextDatum(TC_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][70]), 152, 3);
break;
case MAINSETTINGS:
if (dynamicspi) {
FullLineSprite.setTextDatum(TL_DATUM);
@@ -2449,6 +2494,36 @@ void MenuUp() {
break;
}
break;
case DXMODE:
switch (menuoption) {
case ITEM2:
scanstart++;
if (scanstart >= scanstop) scanstart = 0;
OneBigLineSprite.drawString(String(scanstart + 1, DEC), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM3:
scanstop++;
if (scanstop > EE_PRESETS_CNT - 1) scanstop = scanstart + 1;
OneBigLineSprite.drawString(String(scanstop + 1, DEC), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM4:
scanhold++;
if (scanhold > 30) scanhold = 1;
OneBigLineSprite.setTextDatum(TL_DATUM);
OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
OneBigLineSprite.drawString(myLanguage[language][92], 155, 0);
OneBigLineSprite.setTextDatum(TR_DATUM);
OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
OneBigLineSprite.drawString(String(scanhold, DEC), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
}
break;
}
}
}
@@ -3220,6 +3295,36 @@ void MenuDown() {
break;
}
break;
case DXMODE:
switch (menuoption) {
case ITEM2:
scanstart--;
if (scanstart >= scanstop) scanstart = scanstop - 1;
OneBigLineSprite.drawString(String(scanstart + 1, DEC), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM3:
scanstop--;
if (scanstop <= scanstart) scanstop = EE_PRESETS_CNT - 1;
OneBigLineSprite.drawString(String(scanstop + 1, DEC), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM4:
scanhold--;
if (scanhold < 1) scanhold = 30;
OneBigLineSprite.setTextDatum(TL_DATUM);
OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
OneBigLineSprite.drawString(myLanguage[language][92], 155, 0);
OneBigLineSprite.setTextDatum(TR_DATUM);
OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
OneBigLineSprite.drawString(String(scanhold, DEC), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
}
break;
}
}
}
@@ -3306,6 +3411,14 @@ void DoMenu() {
break;
case ITEM8:
menupage = DXMODE;
menuoption = ITEM1;
menuitem = 0;
submenu = true;
BuildMenu();
break;
case ITEM9:
menuopen = true;
tft.drawRoundRect(10, 6, 300, 230, 5, ActiveColor);
tft.fillRoundRect(12, 8, 296, 226, 5, BackgroundColor);
@@ -3689,7 +3802,7 @@ void DoMenu() {
break;
case ITEM8:
Infoboxprint(myLanguage[language][196]);
Infoboxprint(myLanguage[language][215]);
OneBigLineSprite.drawString((radio.rds.sortaf ? myLanguage[language][42] : myLanguage[language][30]), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
@@ -3984,6 +4097,53 @@ void DoMenu() {
break;
}
break;
case DXMODE:
switch (menuoption) {
case ITEM1:
if (presets[scanstart].band == BAND_FM && presets[scanstart].frequency == EE_PRESETS_FREQUENCY) {
Infoboxprint(myLanguage[language][214]);
OneBigLineSprite.pushSprite(24, 118);
} else {
menuopen = false;
menu = false;
memorypos = scanstart;
scanmodeold = tunemode;
tunemode = TUNE_MEM;
BuildDisplay();
DoMemoryPosTune();
scantimer = millis();
scandxmode = true;
}
break;
case ITEM2:
Infoboxprint(myLanguage[language][209]);
OneBigLineSprite.drawString(String(scanstart + 1), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM3:
Infoboxprint(myLanguage[language][210]);
OneBigLineSprite.drawString(String(scanstop + 1), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM4:
Infoboxprint(myLanguage[language][211]);
OneBigLineSprite.setTextDatum(TL_DATUM);
OneBigLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
OneBigLineSprite.drawString(myLanguage[language][92], 155, 0);
OneBigLineSprite.setTextDatum(TR_DATUM);
OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
OneBigLineSprite.drawString(String(scanhold, DEC), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
}
break;
}
} else {
if (menupage == CONNECTIVITY && menuoption == ITEM2) {
@@ -3993,7 +4153,11 @@ void DoMenu() {
if (menupage == DISPLAYSETTINGS && menuoption == ITEM5) {
doTheme();
}
menuopen = false;
if (scanstart >= scanstop) scanstart = scanstop - 1;
if (scanstop <= scanstart) scanstop = scanstart + 1;
UpdateFonts(1);
BuildMenu();
}
+12 -2
View File
@@ -23,10 +23,10 @@
#define ITEM9 190
#define ITEM10 210
enum menupage {INDEX, MAINSETTINGS, AUDIOSETTINGS, DISPLAYSETTINGS, RDSSETTINGS, FMSETTINGS, AMSETTINGS, CONNECTIVITY};
enum menupage {INDEX, MAINSETTINGS, AUDIOSETTINGS, DISPLAYSETTINGS, RDSSETTINGS, FMSETTINGS, AMSETTINGS, CONNECTIVITY, DXMODE};
extern byte menuitem;
extern byte items[8];
extern byte items[9];
extern bool advancedRDS;
extern bool afmethodBold;
@@ -47,6 +47,7 @@ extern bool haseonold;
extern bool hasrtplusold;
extern bool hastmcold;
extern bool LowLevelInit;
extern bool menu;
extern bool menuopen;
extern bool mwstepsize;
extern bool rdsreset;
@@ -54,6 +55,7 @@ extern bool RDSstatus;
extern bool RDSstatusold;
extern bool rdsstereoold;
extern bool usesquelch;
extern bool scandxmode;
extern bool softmuteam;
extern bool softmutefm;
extern bool Stereostatusold;
@@ -94,12 +96,17 @@ extern byte HighCutLevel;
extern byte HighCutOffset;
extern byte language;
extern byte licold;
extern byte memorypos;
extern byte menupage;
extern byte MSold;
extern byte poweroptions;
extern byte eonptyold[20];
extern byte rdsblockold;
extern byte region;
extern byte scanstart;
extern byte scanstop;
extern byte scanhold;
extern byte scanmodeold;
extern byte screensaverOptions[5];
extern byte screensaverset;
extern byte showmodulation;
@@ -113,6 +120,7 @@ extern byte submenu;
extern byte subnetclient;
extern byte tot;
extern byte touchrotating;
extern byte tunemode;
extern byte unit;
extern byte spispeed;
extern char eonpicodeold[20][6];
@@ -181,6 +189,7 @@ extern unsigned int LowEdgeSet;
extern unsigned int mappedfreqold[20];
extern unsigned int mappedfreqold2[20];
extern unsigned int mappedfreqold3[20];
extern unsigned long scantimer;
extern TFT_eSPI tft;
extern TEF6686 radio;
@@ -212,6 +221,7 @@ extern void updateiMS();
extern void updateEQ();
extern void doTheme();
extern void tryWiFi();
extern void DoMemoryPosTune();
extern void UpdateFonts(bool mode);
extern void tftPrint(int8_t offset, const String & text, int16_t x, int16_t y, int color, int smoothcolor, uint8_t fontsize);
+164 -38
View File
@@ -5,7 +5,7 @@
// [number of languages][number of texts]
// *** means the text is the same as in English
static const char* const myLanguage[18][209] PROGMEM = {
static const char* const myLanguage[18][216] PROGMEM = {
{ "English", // English
"Rotary direction changed", // 1
"Please release button", // 2
@@ -202,7 +202,7 @@ static const char* const myLanguage[18][209] PROGMEM = {
"FM", // 193
"AM", // 194
"CONNECT", // 195
"Auto sort AF", // 196
"DX MODE", // 196
"Stationlist ID", // 197
"AM AGC", // 198
"FM deemphasis", // 199
@@ -214,7 +214,14 @@ static const char* const myLanguage[18][209] PROGMEM = {
"Mute screen on\nXDRGTK connection", // 205
"FMSI stereo\nimprovement", // 206
"Function only available\non TEF6687/6689!", // 207
"Function not available\non selected skin!" // 208
"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 sort AF" // 215
},
{ "Nederlands", // Dutch
@@ -413,7 +420,7 @@ static const char* const myLanguage[18][209] PROGMEM = {
"FM", // 193 ***
"AM", // 194 ***
"VERBIND", // 195
"Auto AF sorteren", // 196
"DX MODE", // 196
"Stationlist ID", // 197 ***
"AM AGC", // 198 ***
"FM deemphasis", // 199 ***
@@ -425,7 +432,14 @@ static const char* const myLanguage[18][209] PROGMEM = {
"Scherm uit bij\nXDRGTK verbinding", // 205
"FMSI stereo\nverbetering", // 206
"Alleen beschikbaar op\nTEF6687/6689!", // 207
"Niet beschikbaar op\ngekozen uiterlijk!" // 208
"Niet beschikbaar op\ngekozen uiterlijk!", // 208
"Begin zoeken\ngeheugenkanaal", // 209
"Eind zoeken\ngeheugenkanaal", // 210
"Wachttijd", // 211
"Start DX zoeken", // 212
"FM DX Opties", // 213
"Fout! Startkanaal is\ngemarkeerd als skip", // 214
"Auto AF sorteren" // 215
},
{ "Polski", // Polish
@@ -624,7 +638,7 @@ static const char* const myLanguage[18][209] PROGMEM = {
"FM", // 193 ***
"AM", // 194 ***
"ŁĄCZNOŚĆ", // 195
"Automat. sortowanie AF", // 196
"DX MODE", // 196
"Identyfikator Stationlist", // 197
"Tłumik ant. AM", // 198
"Deemfaza FM", // 199
@@ -636,7 +650,14 @@ static const char* const myLanguage[18][209] PROGMEM = {
"Wylacz ekran gdy\npołączony z XDR-GTK", // 205
"Ulepszenie \nstereo FMSI", // 206
"Funkcja dostępna tylko\nna TEF6687/6689!", // 207
"Funkcja niedostępna\nna wybranym motywie!" // 208
"Funkcja niedostępna\nna wybranym motywie!", // 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
"Automat. sortowanie AF" // 215
},
{ "Hrvatski", // Croatian
@@ -835,7 +856,7 @@ static const char* const myLanguage[18][209] PROGMEM = {
"FM", // 193
"AM", // 194
"SPOJI", // 195
"Autom. sortiranje AF-a", // 196
"DX MODE", // 196
"Stationlist ID", // 197
"AM ATT", // 198
"FM deemphasis", // 199
@@ -847,7 +868,14 @@ static const char* const myLanguage[18][209] PROGMEM = {
"Isključi zaslon\ntijekom veze XDRGTK-om", // 205
"FMSI stereo\nimprovement", // 206
"Function only available\non TEF6687/6689!", // 207
"Function not available\non selected skin!" // 208
"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
"Autom. sortiranje AF-a" // 215
},
{ "Ελληνικά", // Greek
@@ -1046,7 +1074,7 @@ static const char* const myLanguage[18][209] PROGMEM = {
"FM", // 193
"AM", // 194
"ΣΥΝΔΕΣΗ", // 195
"Αυτόματη ταξινόμηση\nAF", // 196
"DX MODE", // 196
"ID λίστας σταθμών", // 197
"AM εξασθένιση", // 198
"FM αποέμφαση", // 199
@@ -1058,7 +1086,14 @@ static const char* const myLanguage[18][209] PROGMEM = {
"Μαύρη οθόνη σε\nσύνδεση XDRGTK", // 205
"FMSI βελτίωση\nστερεοφωνικού ήχου", // 206
"Λειτουργία διαθέσιμη\nμόνο στα TEF6687/6689!", // 207
"Λειτουργία μη διαθέσιμη\nστην επιλεγμένη εμφάνιση!" // 208
"Λειτουργία μη διαθέσιμη\nστην επιλεγμένη εμφάνιση!", // 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
"Αυτόματη ταξινόμηση\nAF" // 215
},
{ "Română", // Romanian
@@ -1257,7 +1292,7 @@ static const char* const myLanguage[18][209] PROGMEM = {
"FM", // 193
"AM", // 194
"CONECTARE", // 195
"Sortare automata AF", // 196
"DX MODE", // 196
"ID Lista posturi", // 197
"AGC AM", // 198
"FM deemphasis", // 199
@@ -1269,7 +1304,14 @@ static const char* const myLanguage[18][209] PROGMEM = {
"Mute screen on\nXDRGTK connection", // 205
"FMSI stereo\nimprovement", // 206
"Function only available\non TEF6687/6689!", // 207
"Function not available\non selected skin!" // 208
"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
"Sortare automata AF" // 215
},
{ "Deutsch", // German
@@ -1468,7 +1510,7 @@ static const char* const myLanguage[18][209] PROGMEM = {
"UKW", // 193
"AM", // 194
"NETZ", // 195
"AF Autosortierung", // 196
"DX MODE", // 196
"Stationlist ID", // 197
"AM ATT", // 198
"Entzerrung auf UKW", // 199
@@ -1480,7 +1522,14 @@ static const char* const myLanguage[18][209] PROGMEM = {
"Display aus bei\nXDRGTK-Verbindung", // 205
"FMSI Stereo-\nVerbesserung", // 206
"Funktion nur für\nTEF6687/6689 verfügbar!", // 207
"Funktion für ausgewählten\nSkin nicht verfügbar!" // 208
"Funktion für ausgewählten\nSkin nicht verfügbar!", // 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
"AF Autosortierung" // 215
},
{ "Český", // Czech
@@ -1679,7 +1728,7 @@ static const char* const myLanguage[18][209] PROGMEM = {
"FM", // 193 ***
"AM", // 194 ***
"PŘIPOJENÍ", // 195
"Auto řazení AF", // 196
"DX MODE", // 196
"Stationlist ID", // 197 ***
"AM ATT", // 198
"FM deemphasis", // 199 ***
@@ -1691,7 +1740,14 @@ static const char* const myLanguage[18][209] PROGMEM = {
"Mute screen on\nXDRGTK connection", // 205
"FMSI stereo\nimprovement", // 206
"Function only available\non TEF6687/6689!", // 207
"Function not available\non selected skin!" // 208
"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 řazení AF" // 215
},
{ "Slovenský", // Slovak
@@ -1890,7 +1946,7 @@ static const char* const myLanguage[18][209] PROGMEM = {
"FM", // 193 ***
"AM", // 194 ***
"PRIPOJENIE", // 195
"Auto radenie AF", // 196
"DX MODE", // 196
"Stationlist ID", // 197 ***
"AM ATT", // 198
"FM deemphasis", // 199 ***
@@ -1902,7 +1958,14 @@ static const char* const myLanguage[18][209] PROGMEM = {
"Mute screen on\nXDRGTK connection", // 205
"FMSI stereo\nimprovement", // 206
"Function only available\non TEF6687/6689!", // 207
"Function not available\non selected skin!" // 208
"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
},
{ "Français", // French
@@ -2101,7 +2164,7 @@ static const char* const myLanguage[18][209] PROGMEM = {
"FM", // 193
"AM", // 194
"CONNECTER", // 195
"Tri AF automatique", // 196
"DX MODE", // 196
"Stationlist ID", // 197
"AM ATT", // 198
"FM déemphasie", // 199
@@ -2113,7 +2176,14 @@ static const char* const myLanguage[18][209] PROGMEM = {
"Écran muet sur\nla connexion XDRGTK", // 205
"FMSI amélioration\ndu son stéréo", // 206
"Fonction disponible seulement\nsur TEF6687/6689!", // 207
"Fonction non disponible\nsur le skin sélectionné!" // 208
"Fonction non disponible\nsur le skin sélectionné!", // 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
"Tri AF automatique" // 215
},
{ "Български", // Bulgarian
@@ -2312,7 +2382,7 @@ static const char* const myLanguage[18][209] PROGMEM = {
"УКВ (FM)", // 193
"СВ (AM)", // 194
"ВРЪЗКА", // 195
"Auto sort AF", // 196 ***
"DX MODE", // 196
"Stationlist Идентификатор", // 197
"СВ атенюатор", // 198
"FM deemphasis", // 199 ***
@@ -2324,7 +2394,14 @@ static const char* const myLanguage[18][209] PROGMEM = {
"Mute screen on\nXDRGTK connection", // 205
"FMSI stereo\nimprovement", // 206
"Function only available\non TEF6687/6689!", // 207
"Function not available\non selected skin!" // 208
"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 sort AF" // 215 ***
},
{ "Русский", // Russian
@@ -2523,7 +2600,7 @@ static const char* const myLanguage[18][209] PROGMEM = {
"FM", // 193
"AM", // 194
"КОННЕКТ", // 195
"Сортировка AF-частот", // 196
"DX MODE", // 196
"Stationlist ID", // 197
"AM аттеньюатор", // 198
"FM deemphasis", // 199
@@ -2535,7 +2612,14 @@ static const char* const myLanguage[18][209] PROGMEM = {
"Погасить дисплей при\nподключении XDRGTK", // 205
"FMSI стерео\nулучшение", // 206
"Функция доступна только\nна TEF6687/6689!", // 207
"Функция недоступна\nна этом оформлении" // 208
"Функция недоступна\nна этом оформлении", // 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
"Сортировка AF-частот" // 215
},
{ "Українська", // Ukranian
@@ -2734,7 +2818,7 @@ static const char* const myLanguage[18][209] PROGMEM = {
"FM", // 193 ***
"AM", // 194 ***
"ПІДКЛЮЧЕННЯ", // 195
"Авто сорт. AF", // 196
"DX MODE", // 196
"Stationlist ID", // 197 ***
"AM ATT", // 198
"FM deemphasis", // 199 ***
@@ -2746,7 +2830,14 @@ static const char* const myLanguage[18][209] PROGMEM = {
"Mute screen on\nXDRGTK connection", // 205
"FMSI stereo\nimprovement", // 206
"Function only available\non TEF6687/6689!", // 207
"Function not available\non selected skin!" // 208
"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
"Авто сорт. AF" // 215
},
{ "Italiano", // Italian
@@ -2945,7 +3036,7 @@ static const char* const myLanguage[18][209] PROGMEM = {
"FM", // 193 ***
"AM", // 194 ***
"CONNETTI", // 195 ***
"Autoordinamento AF", // 196 ***
"DX MODE", // 196
"ID Stationlist", // 197 ***
"ATT AM", // 198
"Deenfasi FM", // 199 ***
@@ -2957,7 +3048,14 @@ static const char* const myLanguage[18][209] PROGMEM = {
"Mute screen on\nXDRGTK connection", // 205
"FMSI stereo\nimprovement", // 206
"Function only available\non TEF6687/6689!", // 207
"Function not available\non selected skin!" // 208
"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
"Autoordinamento AF" // 215
},
{ "Simplified Chinese", // Simplified Chinese
@@ -3156,7 +3254,7 @@ static const char* const myLanguage[18][209] PROGMEM = {
"FM 设置", // 193
"AM 设置", // 194
"连机模式", // 195
"自动排列AF", // 196
"DX MODE", // 196
"Stationlist ID", // 197 ***
"AM天线衰减", // 198
"FM去加重", // 199
@@ -3168,7 +3266,14 @@ static const char* const myLanguage[18][209] PROGMEM = {
"XDRGTK连接时锁屏", // 205
"FMSI\n立体声增强", // 206
"此功能仅限\nTEF6687/6689!", // 207
"此皮肤不支持该功能!" // 208
"此皮肤不支持该功能!", // 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
"自动排列AF" // 215
},
{ "Norsk", // Norwegian
@@ -3367,7 +3472,7 @@ static const char* const myLanguage[18][209] PROGMEM = {
"FM", // 193 ***
"AM", // 194 ***
"TILKOBLE", // 195
"Auto sorterings AF", // 196
"DX MODE", // 196
"Stationlist ID", // 197 ***
"AM ATT", // 198
"FM ettertrykkelse", // 199
@@ -3379,7 +3484,14 @@ static const char* const myLanguage[18][209] PROGMEM = {
"Dempet skjerm på\nXDRGTK tilkobling", // 205
"FMSI stereo forbedringt", // 206
"Kun tilgjengelig\npå TEF6687/6689!", // 207
"Funksjon ikke tilgjengelig\npå valgt skin!" // 208
"Funksjon ikke tilgjengelig\npå valgt 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 sorterings AF" // 215
},
{ "Español", // Spanish
@@ -3578,7 +3690,7 @@ static const char* const myLanguage[18][209] PROGMEM = {
"FM", // 193
"AM", // 194
"CONECTAR", // 195
"Orden automático de AF", // 196
"DX MODE", // 196
"ID de lista de estaciones", // 197
"Atenuación de AM", // 198
"Despreocupación\nde FM", // 199
@@ -3590,7 +3702,14 @@ static const char* const myLanguage[18][209] PROGMEM = {
"Pantalla de mudo\nen la conexión XDRGTK", // 205
"FMSI mejora del\nsonido estéreo", // 206
"Función disponible solo\nen TEF6687/6689!", // 207
"Función no disponible\nsobre el skin seleccionado!" // 208
"Función no disponible\nsobre el skin seleccionado!", // 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
"Orden automático de AF" // 215
},
{ "Português", // Portuguese
@@ -3789,7 +3908,7 @@ static const char* const myLanguage[18][209] PROGMEM = {
"FM", // 193
"AM", // 194
"CONECTAR", // 195
"Classificar AF\nautomaticamente", // 196
"DX MODE", // 196
"ID da lista de estações", // 197
"Atenuação AM", // 198
"Desênfase FM", // 199
@@ -3801,7 +3920,14 @@ static const char* const myLanguage[18][209] PROGMEM = {
"Tela mudo na\nconexão XDRGTK", // 205
"FMSI melhoria\ndo som estéreo", // 206
"Function only available\non TEF6687/6689!", // 207
"Função não disponível\nno skin selecionado!" // 208
"Função não disponível\nno skin selecionado!", // 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
"Classificar AF\nautomaticamente" // 215
}
};
#endif
#endif
+1
View File
@@ -856,6 +856,7 @@ void showCT() {
}
void showRadioText() {
// radio.rds.stationText = "Jetzt in Ö1: Öffentlich-rechtlich auf Bewährung";
if (!screenmute) {
if (radio.rds.hasRT && radio.rds.stationText.length() > 0) {
if (String(radio.rds.stationText + radio.rds.stationText32).length() != Radiotextlengthold) {