Added extra menu options for FM DX mode (not integrated yet!)

This commit is contained in:
Sjef Verhoeven PE5PVB
2024-04-09 16:27:24 +02:00
parent 24443c4245
commit 209f7079b7
5 changed files with 281 additions and 28 deletions
+12
View File
@@ -92,6 +92,8 @@ bool RDSstatusold;
bool rdsstereoold; bool rdsstereoold;
bool rtcset; bool rtcset;
bool scandxmode; bool scandxmode;
bool scanmem;
bool scanmute;
bool screenmute; bool screenmute;
bool screensavertriggered = false; bool screensavertriggered = false;
bool seek; bool seek;
@@ -173,6 +175,7 @@ byte rdsqualityold;
byte region; byte region;
byte rotarymode; byte rotarymode;
byte touchrotating; byte touchrotating;
byte scancancel;
byte scanstart; byte scanstart;
byte scanstop; byte scanstop;
byte scanhold; byte scanhold;
@@ -484,6 +487,9 @@ void setup() {
scanstart = EEPROM.readByte(EE_BYTE_SCANSTART); scanstart = EEPROM.readByte(EE_BYTE_SCANSTART);
scanstop = EEPROM.readByte(EE_BYTE_SCANSTOP); scanstop = EEPROM.readByte(EE_BYTE_SCANSTOP);
scanhold = EEPROM.readByte(EE_BYTE_SCANHOLD); scanhold = EEPROM.readByte(EE_BYTE_SCANHOLD);
scanmem = EEPROM.readByte(EE_BYTE_SCANMEM);
scancancel = EEPROM.readByte(EE_BYTE_SCANCANCEL);
scanmute = EEPROM.readByte(EE_BYTE_SCANMUTE);
if (spispeed == SPI_SPEED_DEFAULT) tft.setSPISpeed(SPI_FREQUENCY / 1000000); else tft.setSPISpeed(spispeed * 10); if (spispeed == SPI_SPEED_DEFAULT) tft.setSPISpeed(SPI_FREQUENCY / 1000000); else tft.setSPISpeed(spispeed * 10);
LWLowEdgeSet = FREQ_LW_LOW_EDGE_MIN; LWLowEdgeSet = FREQ_LW_LOW_EDGE_MIN;
@@ -2077,6 +2083,9 @@ void ModeButtonPress() {
EEPROM.writeByte(EE_BYTE_SCANSTART, scanstart); EEPROM.writeByte(EE_BYTE_SCANSTART, scanstart);
EEPROM.writeByte(EE_BYTE_SCANSTOP, scanstop); EEPROM.writeByte(EE_BYTE_SCANSTOP, scanstop);
EEPROM.writeByte(EE_BYTE_SCANHOLD, scanhold); EEPROM.writeByte(EE_BYTE_SCANHOLD, scanhold);
EEPROM.writeByte(EE_BYTE_SCANMEM, scanmem);
EEPROM.writeByte(EE_BYTE_SCANCANCEL, scancancel);
EEPROM.writeByte(EE_BYTE_SCANMUTE, scanmute);
EEPROM.commit(); EEPROM.commit();
if (af == 2) radio.rds.afreg = true; else radio.rds.afreg = false; if (af == 2) radio.rds.afreg = true; else radio.rds.afreg = false;
if (!usesquelch) radio.setUnMute(); if (!usesquelch) radio.setUnMute();
@@ -4170,6 +4179,9 @@ void DefaultSettings(byte userhardwaremodel) {
EEPROM.writeByte(EE_BYTE_SCANSTART, 0); EEPROM.writeByte(EE_BYTE_SCANSTART, 0);
EEPROM.writeByte(EE_BYTE_SCANSTOP, 9); EEPROM.writeByte(EE_BYTE_SCANSTOP, 9);
EEPROM.writeByte(EE_BYTE_SCANHOLD, 5); EEPROM.writeByte(EE_BYTE_SCANHOLD, 5);
EEPROM.writeByte(EE_BYTE_SCANMEM, 1);
EEPROM.writeByte(EE_BYTE_SCANCANCEL, 0);
EEPROM.writeByte(EE_BYTE_SCANMUTE, 0);
for (int i = 0; i < EE_PRESETS_CNT; i++) { for (int i = 0; i < EE_PRESETS_CNT; i++) {
EEPROM.writeByte(i + EE_PRESETS_BAND_START, BAND_FM); EEPROM.writeByte(i + EE_PRESETS_BAND_START, BAND_FM);
+14 -7
View File
@@ -198,7 +198,7 @@
#define EE_PRESETS_CNT 99 #define EE_PRESETS_CNT 99
#define EE_CHECKBYTE_VALUE 6 // 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 2216 #define EE_TOTAL_CNT 2219
#define EE_UINT16_FREQUENCY_FM 0 #define EE_UINT16_FREQUENCY_FM 0
#define EE_BYTE_VOLSET 4 #define EE_BYTE_VOLSET 4
#define EE_BYTE_STEREO 5 #define EE_BYTE_STEREO 5
@@ -285,12 +285,15 @@
#define EE_BYTE_SCANSTART 130 #define EE_BYTE_SCANSTART 130
#define EE_BYTE_SCANSTOP 131 #define EE_BYTE_SCANSTOP 131
#define EE_BYTE_SCANHOLD 132 #define EE_BYTE_SCANHOLD 132
#define EE_PRESETS_BAND_START 133 #define EE_BYTE_SCANMEM 133
#define EE_PRESET_BW_START 233 #define EE_BYTE_SCANCANCEL 134
#define EE_PRESET_MS_START 333 #define EE_BYTE_SCANMUTE 135
#define EE_PRESETS_FREQUENCY_START 433 #define EE_PRESETS_BAND_START 136
#define EE_PRESETS_RDSPI_START 829 // 5 bytes #define EE_PRESET_BW_START 236
#define EE_PRESETS_RDSPS_START 1324 // 9 bytes #define EE_PRESET_MS_START 336
#define EE_PRESETS_FREQUENCY_START 436
#define EE_PRESETS_RDSPI_START 832 // 5 bytes
#define EE_PRESETS_RDSPS_START 1327 // 9 bytes
#define EE_PRESETS_FREQUENCY 0 #define EE_PRESETS_FREQUENCY 0
// End of EEPROM index defines // End of EEPROM index defines
@@ -310,6 +313,10 @@ typedef struct {
char RDSPS[9]; char RDSPS[9];
} mem; } mem;
enum SCAN_CANCEL {
SCAN_CANCEL = OFF, CORRECTPI, SIGNAL
};
// FM band: before BAND_GAP; AM band: after BAND_GAP // FM band: before BAND_GAP; AM band: after BAND_GAP
enum RADIO_BAND { enum RADIO_BAND {
BAND_OIRT = 0, BAND_FM, BAND_GAP, BAND_LW, BAND_MW, BAND_SW BAND_OIRT = 0, BAND_FM, BAND_GAP, BAND_LW, BAND_MW, BAND_SW
+107 -2
View File
@@ -7,7 +7,7 @@
#include <cstring> #include <cstring>
byte menuitem; byte menuitem;
byte items[9] = {9, static_cast<byte>(dynamicspi ? 9 : 8), 7, 10, 9, 10, 9, 6, 4}; byte items[9] = {9, static_cast<byte>(dynamicspi ? 9 : 8), 7, 10, 9, 10, 9, 6, 7};
extern mem presets[]; extern mem presets[];
void doTheme() { // Use this to put your own colors in: http://www.barth-dev.de/online/rgb565-color-picker/ void doTheme() { // Use this to put your own colors in: http://www.barth-dev.de/online/rgb565-color-picker/
@@ -1009,6 +1009,16 @@ void ShowOneLine(byte position, byte item, bool selected) {
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FullLineSprite.drawString(String(stationlistid, DEC), 298, 3); FullLineSprite.drawString(String(stationlistid, DEC), 298, 3);
break; break;
case DXMODE:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][216]), 6, 3);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FullLineSprite.drawString((scanmem ? myLanguage[language][218] : myLanguage[language][217]), 298, 3);
break;
} }
break; break;
@@ -1103,6 +1113,20 @@ void ShowOneLine(byte position, byte item, bool selected) {
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FullLineSprite.drawString((XDRGTKMuteScreen ? myLanguage[language][42] : myLanguage[language][30]), 298, 3); FullLineSprite.drawString((XDRGTKMuteScreen ? myLanguage[language][42] : myLanguage[language][30]), 298, 3);
break; break;
case DXMODE:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][219]), 6, 3);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
switch (scancancel) {
case OFF: FullLineSprite.drawString(myLanguage[language][30], 298, 3); break;
case CORRECTPI: FullLineSprite.drawString(myLanguage[language][220], 298, 3); break;
case SIGNAL: FullLineSprite.drawString(myLanguage[language][221], 298, 3); break;
}
break;
} }
break; break;
@@ -1185,6 +1209,16 @@ void ShowOneLine(byte position, byte item, bool selected) {
if (amgain != 0) FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); if (amgain != 0) FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString((amgain != 0 ? "dB" : myLanguage[language][30]), 298, 3); FullLineSprite.drawString((amgain != 0 ? "dB" : myLanguage[language][30]), 298, 3);
break; break;
case DXMODE:
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][222]), 6, 3);
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FullLineSprite.drawString((scanmute ? myLanguage[language][42] : myLanguage[language][30]), 298, 3);
break;
} }
break; break;
@@ -2522,6 +2556,29 @@ void MenuUp() {
OneBigLineSprite.drawString(String(scanhold, DEC), 135, 0); OneBigLineSprite.drawString(String(scanhold, DEC), 135, 0);
OneBigLineSprite.pushSprite(24, 118); OneBigLineSprite.pushSprite(24, 118);
break; break;
case ITEM5:
scanmem = !scanmem;
OneBigLineSprite.drawString((scanmem ? myLanguage[language][218] : myLanguage[language][217]), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM6:
scancancel++;
if (scancancel > 2) scancancel = 0;
switch (scancancel) {
case OFF: OneBigLineSprite.drawString(myLanguage[language][30], 135, 0); break;
case CORRECTPI: OneBigLineSprite.drawString(myLanguage[language][220], 135, 0); break;
case SIGNAL: OneBigLineSprite.drawString(myLanguage[language][221], 135, 0); break;
}
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM7:
scanmute = !scanmute;
OneBigLineSprite.drawString((scanmute ? myLanguage[language][42] : myLanguage[language][30]), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
} }
break; break;
} }
@@ -3323,6 +3380,29 @@ void MenuDown() {
OneBigLineSprite.drawString(String(scanhold, DEC), 135, 0); OneBigLineSprite.drawString(String(scanhold, DEC), 135, 0);
OneBigLineSprite.pushSprite(24, 118); OneBigLineSprite.pushSprite(24, 118);
break; break;
case ITEM5:
scanmem = !scanmem;
OneBigLineSprite.drawString((scanmem ? myLanguage[language][218] : myLanguage[language][217]), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM6:
scancancel--;
if (scancancel > 2) scancancel = 2;
switch (scancancel) {
case OFF: OneBigLineSprite.drawString(myLanguage[language][30], 135, 0); break;
case CORRECTPI: OneBigLineSprite.drawString(myLanguage[language][220], 135, 0); break;
case SIGNAL: OneBigLineSprite.drawString(myLanguage[language][221], 135, 0); break;
}
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM7:
scanmute = !scanmute;
OneBigLineSprite.drawString((scanmute ? myLanguage[language][42] : myLanguage[language][30]), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
} }
break; break;
} }
@@ -4108,7 +4188,7 @@ void DoMenu() {
menuopen = false; menuopen = false;
menu = false; menu = false;
memorypos = scanstart; memorypos = scanstart;
scanmodeold = tunemode; scanmodeold = tunemode;
tunemode = TUNE_MEM; tunemode = TUNE_MEM;
BuildDisplay(); BuildDisplay();
DoMemoryPosTune(); DoMemoryPosTune();
@@ -4142,6 +4222,31 @@ void DoMenu() {
OneBigLineSprite.drawString(String(scanhold, DEC), 135, 0); OneBigLineSprite.drawString(String(scanhold, DEC), 135, 0);
OneBigLineSprite.pushSprite(24, 118); OneBigLineSprite.pushSprite(24, 118);
break; break;
case ITEM5:
Infoboxprint(myLanguage[language][216]);
OneBigLineSprite.drawString((scanmem ? myLanguage[language][218] : myLanguage[language][217]), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM6:
Infoboxprint(myLanguage[language][219]);
switch (scancancel) {
case OFF: OneBigLineSprite.drawString(myLanguage[language][30], 135, 0); break;
case CORRECTPI: OneBigLineSprite.drawString(myLanguage[language][220], 135, 0); break;
case SIGNAL: OneBigLineSprite.drawString(myLanguage[language][221], 135, 0); break;
}
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM7:
Infoboxprint(myLanguage[language][222]);
OneBigLineSprite.drawString((scanmute ? myLanguage[language][42] : myLanguage[language][30]), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
} }
break; break;
} }
+3
View File
@@ -56,6 +56,8 @@ extern bool RDSstatusold;
extern bool rdsstereoold; extern bool rdsstereoold;
extern bool usesquelch; extern bool usesquelch;
extern bool scandxmode; extern bool scandxmode;
extern bool scanmem;
extern bool scanmute;
extern bool softmuteam; extern bool softmuteam;
extern bool softmutefm; extern bool softmutefm;
extern bool Stereostatusold; extern bool Stereostatusold;
@@ -103,6 +105,7 @@ extern byte poweroptions;
extern byte eonptyold[20]; extern byte eonptyold[20];
extern byte rdsblockold; extern byte rdsblockold;
extern byte region; extern byte region;
extern byte scancancel;
extern byte scanstart; extern byte scanstart;
extern byte scanstop; extern byte scanstop;
extern byte scanhold; extern byte scanhold;
+145 -19
View File
@@ -5,7 +5,7 @@
// [number of languages][number of texts] // [number of languages][number of texts]
// *** means the text is the same as in English // *** means the text is the same as in English
static const char* const myLanguage[18][216] PROGMEM = { static const char* const myLanguage[18][223] PROGMEM = {
{ "English", // English { "English", // English
"Rotary direction changed", // 1 "Rotary direction changed", // 1
"Please release button", // 2 "Please release button", // 2
@@ -221,7 +221,14 @@ static const char* const myLanguage[18][216] PROGMEM = {
"Start DX scanning", // 212 "Start DX scanning", // 212
"FM DX Options", // 213 "FM DX Options", // 213
"Abort! The start channel\nis marked as skipped.", // 214 "Abort! The start channel\nis marked as skipped.", // 214
"Auto sort AF" // 215 "Auto sort AF", // 215
"Memory channels", // 216
"Exclude", // 217
"Only", // 218
"Auto cancel scan", // 219
"Correct PI", // 220
"Signal", // 221
"Mute audio\nwhile scanning" // 222
}, },
{ "Nederlands", // Dutch { "Nederlands", // Dutch
@@ -439,7 +446,14 @@ static const char* const myLanguage[18][216] PROGMEM = {
"Start DX zoeken", // 212 "Start DX zoeken", // 212
"FM DX Opties", // 213 "FM DX Opties", // 213
"Fout! Startkanaal is\ngemarkeerd als skip", // 214 "Fout! Startkanaal is\ngemarkeerd als skip", // 214
"Auto AF sorteren" // 215 "Auto AF sorteren", // 215
"Geheugenkanalen", // 216
"Uitsluiten", // 217
"Enkel", // 218
"Auto afbreken", // 219
"Correcte PI", // 220
"Signaal", // 221
"Geen geluid\ntijdens scannen" // 222
}, },
{ "Polski", // Polish { "Polski", // Polish
@@ -657,7 +671,14 @@ static const char* const myLanguage[18][216] PROGMEM = {
"Start DX scanning", // 212 "Start DX scanning", // 212
"FM DX Options", // 213 "FM DX Options", // 213
"Abort! The start channel\nis marked as skipped.", // 214 "Abort! The start channel\nis marked as skipped.", // 214
"Automat. sortowanie AF" // 215 "Automat. sortowanie AF", // 215
"Memory channels", // 216
"Exclude", // 217
"Only", // 218
"Auto cancel scan", // 219
"Correct PI", // 220
"Signal", // 221
"Mute audio\nwhile scanning" // 222
}, },
{ "Hrvatski", // Croatian { "Hrvatski", // Croatian
@@ -875,7 +896,14 @@ static const char* const myLanguage[18][216] PROGMEM = {
"Start DX scanning", // 212 "Start DX scanning", // 212
"FM DX Options", // 213 "FM DX Options", // 213
"Abort! The start channel\nis marked as skipped.", // 214 "Abort! The start channel\nis marked as skipped.", // 214
"Autom. sortiranje AF-a" // 215 "Autom. sortiranje AF-a", // 215
"Memory channels", // 216
"Exclude", // 217
"Only", // 218
"Auto cancel scan", // 219
"Correct PI", // 220
"Signal", // 221
"Mute audio\nwhile scanning" // 222
}, },
{ "Ελληνικά", // Greek { "Ελληνικά", // Greek
@@ -1093,7 +1121,14 @@ static const char* const myLanguage[18][216] PROGMEM = {
"Start DX scanning", // 212 "Start DX scanning", // 212
"FM DX Options", // 213 "FM DX Options", // 213
"Abort! The start channel\nis marked as skipped.", // 214 "Abort! The start channel\nis marked as skipped.", // 214
"Αυτόματη ταξινόμηση\nAF" // 215 "Αυτόματη ταξινόμηση\nAF", // 215
"Memory channels", // 216
"Exclude", // 217
"Only", // 218
"Auto cancel scan", // 219
"Correct PI", // 220
"Signal", // 221
"Mute audio\nwhile scanning" // 222
}, },
{ "Română", // Romanian { "Română", // Romanian
@@ -1311,7 +1346,14 @@ static const char* const myLanguage[18][216] PROGMEM = {
"Start DX scanning", // 212 "Start DX scanning", // 212
"FM DX Options", // 213 "FM DX Options", // 213
"Abort! The start channel\nis marked as skipped.", // 214 "Abort! The start channel\nis marked as skipped.", // 214
"Sortare automata AF" // 215 "Sortare automata AF", // 215
"Memory channels", // 216
"Exclude", // 217
"Only", // 218
"Auto cancel scan", // 219
"Correct PI", // 220
"Signal", // 221
"Mute audio\nwhile scanning" // 222
}, },
{ "Deutsch", // German { "Deutsch", // German
@@ -1529,7 +1571,14 @@ static const char* const myLanguage[18][216] PROGMEM = {
"Start DX scanning", // 212 "Start DX scanning", // 212
"FM DX Options", // 213 "FM DX Options", // 213
"Abort! The start channel\nis marked as skipped.", // 214 "Abort! The start channel\nis marked as skipped.", // 214
"AF Autosortierung" // 215 "AF Autosortierung", // 215
"Memory channels", // 216
"Exclude", // 217
"Only", // 218
"Auto cancel scan", // 219
"Correct PI", // 220
"Signal", // 221
"Mute audio\nwhile scanning" // 222
}, },
{ "Český", // Czech { "Český", // Czech
@@ -1747,7 +1796,14 @@ static const char* const myLanguage[18][216] PROGMEM = {
"Start DX scanning", // 212 "Start DX scanning", // 212
"FM DX Options", // 213 "FM DX Options", // 213
"Abort! The start channel\nis marked as skipped.", // 214 "Abort! The start channel\nis marked as skipped.", // 214
"Auto řazení AF" // 215 "Auto řazení AF", // 215
"Memory channels", // 216
"Exclude", // 217
"Only", // 218
"Auto cancel scan", // 219
"Correct PI", // 220
"Signal", // 221
"Mute audio\nwhile scanning" // 222
}, },
{ "Slovenský", // Slovak { "Slovenský", // Slovak
@@ -1965,7 +2021,14 @@ static const char* const myLanguage[18][216] PROGMEM = {
"Start DX scanning", // 212 "Start DX scanning", // 212
"FM DX Options", // 213 "FM DX Options", // 213
"Abort! The start channel\nis marked as skipped.", // 214 "Abort! The start channel\nis marked as skipped.", // 214
"Auto radenie AF" // 215 "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
}, },
{ "Français", // French { "Français", // French
@@ -2183,7 +2246,14 @@ static const char* const myLanguage[18][216] PROGMEM = {
"Start DX scanning", // 212 "Start DX scanning", // 212
"FM DX Options", // 213 "FM DX Options", // 213
"Abort! The start channel\nis marked as skipped.", // 214 "Abort! The start channel\nis marked as skipped.", // 214
"Tri AF automatique" // 215 "Tri AF automatique", // 215
"Memory channels", // 216
"Exclude", // 217
"Only", // 218
"Auto cancel scan", // 219
"Correct PI", // 220
"Signal", // 221
"Mute audio\nwhile scanning" // 222
}, },
{ "Български", // Bulgarian { "Български", // Bulgarian
@@ -2401,7 +2471,14 @@ static const char* const myLanguage[18][216] PROGMEM = {
"Start DX scanning", // 212 "Start DX scanning", // 212
"FM DX Options", // 213 "FM DX Options", // 213
"Abort! The start channel\nis marked as skipped.", // 214 "Abort! The start channel\nis marked as skipped.", // 214
"Auto sort AF" // 215 *** "Auto sort AF", // 215 ***
"Memory channels", // 216
"Exclude", // 217
"Only", // 218
"Auto cancel scan", // 219
"Correct PI", // 220
"Signal", // 221
"Mute audio\nwhile scanning" // 222
}, },
{ "Русский", // Russian { "Русский", // Russian
@@ -2619,7 +2696,14 @@ static const char* const myLanguage[18][216] PROGMEM = {
"Start DX scanning", // 212 "Start DX scanning", // 212
"FM DX Options", // 213 "FM DX Options", // 213
"Abort! The start channel\nis marked as skipped.", // 214 "Abort! The start channel\nis marked as skipped.", // 214
"Сортировка AF-частот" // 215 "Сортировка AF-частот", // 215
"Memory channels", // 216
"Exclude", // 217
"Only", // 218
"Auto cancel scan", // 219
"Correct PI", // 220
"Signal", // 221
"Mute audio\nwhile scanning" // 222
}, },
{ "Українська", // Ukranian { "Українська", // Ukranian
@@ -2837,7 +2921,14 @@ static const char* const myLanguage[18][216] PROGMEM = {
"Start DX scanning", // 212 "Start DX scanning", // 212
"FM DX Options", // 213 "FM DX Options", // 213
"Abort! The start channel\nis marked as skipped.", // 214 "Abort! The start channel\nis marked as skipped.", // 214
"Авто сорт. AF" // 215 "Авто сорт. AF", // 215
"Memory channels", // 216
"Exclude", // 217
"Only", // 218
"Auto cancel scan", // 219
"Correct PI", // 220
"Signal", // 221
"Mute audio\nwhile scanning" // 222
}, },
{ "Italiano", // Italian { "Italiano", // Italian
@@ -3055,7 +3146,14 @@ static const char* const myLanguage[18][216] PROGMEM = {
"Start DX scanning", // 212 "Start DX scanning", // 212
"FM DX Options", // 213 "FM DX Options", // 213
"Abort! The start channel\nis marked as skipped.", // 214 "Abort! The start channel\nis marked as skipped.", // 214
"Autoordinamento AF" // 215 "Autoordinamento AF", // 215
"Memory channels", // 216
"Exclude", // 217
"Only", // 218
"Auto cancel scan", // 219
"Correct PI", // 220
"Signal", // 221
"Mute audio\nwhile scanning" // 222
}, },
{ "Simplified Chinese", // Simplified Chinese { "Simplified Chinese", // Simplified Chinese
@@ -3273,7 +3371,14 @@ static const char* const myLanguage[18][216] PROGMEM = {
"Start DX scanning", // 212 "Start DX scanning", // 212
"FM DX Options", // 213 "FM DX Options", // 213
"Abort! The start channel\nis marked as skipped.", // 214 "Abort! The start channel\nis marked as skipped.", // 214
"自动排列AF" // 215 "自动排列AF", // 215
"Memory channels", // 216
"Exclude", // 217
"Only", // 218
"Auto cancel scan", // 219
"Correct PI", // 220
"Signal", // 221
"Mute audio\nwhile scanning" // 222
}, },
{ "Norsk", // Norwegian { "Norsk", // Norwegian
@@ -3491,7 +3596,14 @@ static const char* const myLanguage[18][216] PROGMEM = {
"Start DX scanning", // 212 "Start DX scanning", // 212
"FM DX Options", // 213 "FM DX Options", // 213
"Abort! The start channel\nis marked as skipped.", // 214 "Abort! The start channel\nis marked as skipped.", // 214
"Auto sorterings AF" // 215 "Auto sorterings AF", // 215
"Memory channels", // 216
"Exclude", // 217
"Only", // 218
"Auto cancel scan", // 219
"Correct PI", // 220
"Signal", // 221
"Mute audio\nwhile scanning" // 222
}, },
{ "Español", // Spanish { "Español", // Spanish
@@ -3709,7 +3821,14 @@ static const char* const myLanguage[18][216] PROGMEM = {
"Start DX scanning", // 212 "Start DX scanning", // 212
"FM DX Options", // 213 "FM DX Options", // 213
"Abort! The start channel\nis marked as skipped.", // 214 "Abort! The start channel\nis marked as skipped.", // 214
"Orden automático de AF" // 215 "Orden automático de AF", // 215
"Memory channels", // 216
"Exclude", // 217
"Only", // 218
"Auto cancel scan", // 219
"Correct PI", // 220
"Signal", // 221
"Mute audio\nwhile scanning" // 222
}, },
{ "Português", // Portuguese { "Português", // Portuguese
@@ -3927,7 +4046,14 @@ static const char* const myLanguage[18][216] PROGMEM = {
"Start DX scanning", // 212 "Start DX scanning", // 212
"FM DX Options", // 213 "FM DX Options", // 213
"Abort! The start channel\nis marked as skipped.", // 214 "Abort! The start channel\nis marked as skipped.", // 214
"Classificar AF\nautomaticamente" // 215 "Classificar AF\nautomaticamente", // 215
"Memory channels", // 216
"Exclude", // 217
"Only", // 218
"Auto cancel scan", // 219
"Correct PI", // 220
"Signal", // 221
"Mute audio\nwhile scanning" // 222
} }
}; };
#endif #endif