Air Band support [ongoing]

This commit is contained in:
ohmytime
2024-05-05 17:18:20 +08:00
parent 1e1f61f413
commit fa30f90cf4
7 changed files with 478 additions and 64 deletions

View File

@@ -135,16 +135,16 @@ void TEF6686::init(byte TEF) {
if (xtalADC < XTAL_0V_ADC + XTAL_ADC_TOL) {
Tuner_Init(tuner_init_tab9216);
log_v("XTAL : 9.216M");
log_d("TEF668X XTAL : 9.216M");
} else if (xtalADC > XTAL_1V_ADC - XTAL_ADC_TOL && xtalADC < XTAL_1V_ADC + XTAL_ADC_TOL) {
Tuner_Init(tuner_init_tab12000);
log_v("XTAL : 12M");
log_d("TEF668X XTAL : 12M");
} else if (xtalADC > XTAL_2V_ADC - XTAL_ADC_TOL && xtalADC < XTAL_2V_ADC + XTAL_ADC_TOL) {
Tuner_Init(tuner_init_tab55000);
log_v("XTAL : 55M");
log_d("TEF668X XTAL : 55M");
} else {
Tuner_Init(tuner_init_tab4000);
log_v("XTAL : 4M");
log_d("TEF668X XTAL : 4M");
}
power(1);
Tuner_Init(tuner_init_tab);
@@ -178,6 +178,10 @@ void TEF6686::SetFreqAM(uint16_t frequency) {
devTEF_Radio_Tune_AM (frequency);
}
void TEF6686::SetFreqAIR(uint16_t frequency) {
devTEF_Radio_Tune_AM (10700);
}
void TEF6686::setOffset(int8_t offset) {
devTEF_Radio_Set_LevelOffset(offset * 10);
}

View File

@@ -660,6 +660,7 @@ class TEF6686 {
void readRDS(byte showrdserrors);
void SetFreq(uint16_t frequency);
void SetFreqAM(uint16_t frequency);
void SetFreqAIR(uint16_t frequency);
bool getProcessing(uint16_t &highcut, uint16_t &stereo, uint16_t &sthiblend, uint8_t &stband_1, uint8_t &stband_2, uint8_t &stband_3, uint8_t &stband_4);
bool getStatus(int16_t &level, uint16_t &USN, uint16_t &WAM, int16_t &offset, uint16_t &bandwidth, uint16_t &modulation, int8_t &snr);
bool getStatusAM(int16_t &level, uint16_t &noise, uint16_t &cochannel, int16_t &offset, uint16_t &bandwidth, uint16_t &modulation, int8_t &snr);

9
src/config.h Normal file
View File

@@ -0,0 +1,9 @@
#ifndef CONFIG_H
#define CONFIG_H
#include <Arduino.h>
// #define HAS_AIR_BAND // uncomment to enable Air Band(Make sure you have Air Band extend board)
#define CHINA_PORTABLE // uncomment for China Portable build (Simplified Chinese)
#endif

View File

@@ -1,3 +1,5 @@
#include "config.h"
#define ON 1
#define OFF 0
#define REVERSE false
@@ -33,6 +35,10 @@
#define FREQ_MW_STEP_9K 9
#define FREQ_MW_STEP_10K 10
#define FREQ_SW_STEP_5K 5
#ifdef HAS_AIR_BAND
#define FREQ_AIR_STEP_25K 25
#define FREQ_AIR_STEP_8K33 8.33
#endif
#define FREQ_OIRT_STEP_30K 3
#define FREQ_FM_STEP_50K 5
#define FREQ_FM_STEP_100K 10
@@ -48,6 +54,10 @@
#define FREQ_SW_LOW_EDGE_MAX (FREQ_SW_160M_START)
#define FREQ_SW_HIGH_EDGE_MIN (FREQ_SW_11M_END)
#define FREQ_SW_HIGH_EDGE_MAX (FREQ_SW_END)
#ifdef HAS_AIR_BAND
#define FREQ_AIR_LOW_EDGE_MIN 108000
#define FREQ_AIR_HIGH_EDGE_MIN 137000
#endif
#define FREQ_FM_START 65000
#define FREQ_FM_END 108000
#define FREQ_FM_OIRT_START 6500 // use values of 1/10 * kHz
@@ -196,9 +206,13 @@
// EEPROM index defines
#define EE_PRESETS_CNT 99 // When set > 99 change the complete EEPROM adressing!
#define EE_CHECKBYTE_VALUE 7 // 0 ~ 255,add new entry, change for new value
#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 2219 // Total occupied eeprom bytes
#else
#define EE_TOTAL_CNT 2214 // Total occupied eeprom bytes
#endif
#define EE_PRESETS_BAND_START 0 // 99 * 1 byte
#define EE_PRESET_BW_START 99 // 99 * 1 byte
@@ -296,6 +310,10 @@
#define EE_BYTE_SCANMEM 2211
#define EE_BYTE_SCANCANCEL 2212
#define EE_BYTE_SCANMUTE 2213
#ifdef HAS_AIR_BAND
#define EE_BYTE_AIRSTEPSIZE 2114
#define EE_UINT16_FREQUENCY_AIR 2215
#endif
// End of EEPROM index defines
static const char* const unitString[] = {"dBμV", "dBf", "dBm"};
@@ -319,15 +337,28 @@ enum SCAN_CANCEL {
// FM band: before BAND_GAP; AM band: after BAND_GAP
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, BAND_AIR
};
#ifndef HAS_AIR_BAND
// Toggle: LW -> MW -> SW
enum RADIO_AM_BAND_SELECTION {
AM_BAND_ALL = 0, AM_BAND_LW_MW, AM_BAND_LW_SW, AM_BAND_MW_SW,
AM_BAND_LW, AM_BAND_MW, AM_BAND_SW, AM_BAND_NONE,
AM_BAND_CNT
};
#else
// Toggle: LW -> MW -> SW -> AIR
enum RADIO_AM_BAND_SELECTION {
AM_BAND_ALL = 0,
AM_BAND_LW_MW_SW, AM_BAND_LW_MW_AIR, AM_BAND_LW_SW_AIR, AM_BAND_MW_SW_AIR,
AM_BAND_LW_MW, AM_BAND_LW_SW, AM_BAND_LW_AIR,
AM_BAND_MW_SW, AM_BAND_MW_AIR,
AM_BAND_SW_AIR,
AM_BAND_LW, AM_BAND_MW, AM_BAND_SW, AM_BAND_AIR, AM_BAND_NONE,
AM_BAND_CNT
};
#endif /* end of HAS_AIR_BAND */
// Toggle: OIRT -> FM
enum RADIO_FM_BAND_SELECTION {

View File

@@ -1,6 +1,7 @@
#include "gui.h"
#include "language.h"
#include "constants.h"
#include "config.h"
#include <WiFi.h>
#include <Wire.h>
#include <EEPROM.h>
@@ -1193,7 +1194,27 @@ void ShowOneLine(byte position, byte item, bool selected) {
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
#ifdef HAS_AIR_BAND
switch (bandAM) {
case AM_BAND_ALL: FullLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][103] + String(",") + myLanguage[language][104] + String(",") + myLanguage[language][223], 298, 3); break;
case AM_BAND_LW_MW_SW: FullLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][103] + String(",") + myLanguage[language][104], 298, 3); break;
case AM_BAND_LW_MW_AIR: FullLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][103] + String(",") + myLanguage[language][223], 298, 3); break;
case AM_BAND_LW_SW_AIR: FullLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][104] + String(",") + myLanguage[language][223], 298, 3); break;
case AM_BAND_MW_SW_AIR: FullLineSprite.drawString(myLanguage[language][103] + String(",") + myLanguage[language][104] + String(",") + myLanguage[language][223], 298, 3); break;
case AM_BAND_LW_MW: FullLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][103], 298, 3); break;
case AM_BAND_LW_SW: FullLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][104], 298, 3); break;
case AM_BAND_LW_AIR: FullLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][223], 298, 3); break;
case AM_BAND_MW_SW: FullLineSprite.drawString(myLanguage[language][103] + String(",") + myLanguage[language][104], 298, 3); break;
case AM_BAND_MW_AIR: FullLineSprite.drawString(myLanguage[language][103] + String(",") + myLanguage[language][223], 298, 3); break;
case AM_BAND_SW_AIR: FullLineSprite.drawString(myLanguage[language][104] + String(",") + myLanguage[language][223], 298, 3); break;
case AM_BAND_LW: FullLineSprite.drawString(myLanguage[language][102], 298, 3); break;
case AM_BAND_MW: FullLineSprite.drawString(myLanguage[language][103], 298, 3); break;
case AM_BAND_SW: FullLineSprite.drawString(myLanguage[language][104], 298, 3); break;
case AM_BAND_AIR: FullLineSprite.drawString(myLanguage[language][223], 298, 3); break;
case AM_BAND_NONE: FullLineSprite.drawString(myLanguage[language][83], 298, 3); break;
}
break;
#else
switch (bandAM) {
case AM_BAND_ALL: FullLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][103] + String(",") + myLanguage[language][104], 298, 3); break;
case AM_BAND_LW_MW: FullLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][103], 298, 3); break;
@@ -1204,7 +1225,8 @@ void ShowOneLine(byte position, byte item, bool selected) {
case AM_BAND_SW: FullLineSprite.drawString(myLanguage[language][104], 298, 3); break;
case AM_BAND_NONE: FullLineSprite.drawString(myLanguage[language][83], 298, 3); break;
}
break;
break;
#endif
case DISPLAYSETTINGS:
FullLineSprite.setTextDatum(TL_DATUM);
@@ -1618,10 +1640,22 @@ void BuildDisplay() {
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 tftPrint(-1, "kHz", 258, 76, ActiveColor, ActiveColorSmooth, 28);
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
}
RDSstatusold = false;
Stereostatusold = false;
@@ -1785,7 +1819,26 @@ void MenuUp() {
case ITEM8:
bandAM++;
if (bandAM > AM_BAND_CNT - 1) bandAM = AM_BAND_ALL;
#ifdef HAS_AIR_BAND
switch (bandAM) {
case AM_BAND_ALL: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][103] + String(",") + myLanguage[language][104]+ String(",") + myLanguage[language][223], 135, 0); break;
case AM_BAND_LW_MW_SW: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][103] + String(",") + myLanguage[language][104], 135, 0); break;
case AM_BAND_LW_MW_AIR: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][103] + String(",") + myLanguage[language][223], 135, 0); break;
case AM_BAND_LW_SW_AIR: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][104] + String(",") + myLanguage[language][223], 135, 0); break;
case AM_BAND_MW_SW_AIR: OneBigLineSprite.drawString(myLanguage[language][103] + String(",") + myLanguage[language][104] + String(",") + myLanguage[language][223], 135, 0); break;
case AM_BAND_LW_MW: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][103], 135, 0); break;
case AM_BAND_LW_SW: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][104], 135, 0); break;
case AM_BAND_LW_AIR: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][223], 135, 0); break;
case AM_BAND_MW_SW: OneBigLineSprite.drawString(myLanguage[language][103] + String(",") + myLanguage[language][104], 135, 0); break;
case AM_BAND_MW_AIR: OneBigLineSprite.drawString(myLanguage[language][103] + String(",") + myLanguage[language][223], 135, 0); break;
case AM_BAND_SW_AIR: OneBigLineSprite.drawString(myLanguage[language][104] + String(",") + myLanguage[language][223], 135, 0); break;
case AM_BAND_LW: OneBigLineSprite.drawString(myLanguage[language][102], 135, 0); break;
case AM_BAND_MW: OneBigLineSprite.drawString(myLanguage[language][103], 135, 0); break;
case AM_BAND_SW: OneBigLineSprite.drawString(myLanguage[language][104], 135, 0); break;
case AM_BAND_AIR: OneBigLineSprite.drawString(myLanguage[language][223], 135, 0); break;
case AM_BAND_NONE: OneBigLineSprite.drawString(myLanguage[language][83], 135, 0); break;
}
#else
switch (bandAM) {
case AM_BAND_ALL: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][103] + String(",") + myLanguage[language][104], 135, 0); break;
case AM_BAND_LW_MW: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][103], 135, 0); break;
@@ -1796,7 +1849,7 @@ void MenuUp() {
case AM_BAND_SW: OneBigLineSprite.drawString(myLanguage[language][104], 135, 0); break;
case AM_BAND_NONE: OneBigLineSprite.drawString(myLanguage[language][83], 135, 0); break;
}
#endif
OneBigLineSprite.pushSprite(24, 118);
break;
@@ -2589,6 +2642,26 @@ void MenuDown() {
bandAM--;
if (bandAM > AM_BAND_CNT) bandAM = AM_BAND_NONE;
#ifdef HAS_AIR_BAND
switch (bandAM) {
case AM_BAND_ALL: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][103] + String(",") + myLanguage[language][104]+ String(",") + myLanguage[language][223], 135, 0); break;
case AM_BAND_LW_MW_SW: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][103] + String(",") + myLanguage[language][104], 135, 0); break;
case AM_BAND_LW_MW_AIR: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][103] + String(",") + myLanguage[language][223], 135, 0); break;
case AM_BAND_LW_SW_AIR: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][104] + String(",") + myLanguage[language][223], 135, 0); break;
case AM_BAND_MW_SW_AIR: OneBigLineSprite.drawString(myLanguage[language][103] + String(",") + myLanguage[language][104] + String(",") + myLanguage[language][223], 135, 0); break;
case AM_BAND_LW_MW: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][103], 135, 0); break;
case AM_BAND_LW_SW: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][104], 135, 0); break;
case AM_BAND_LW_AIR: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][223], 135, 0); break;
case AM_BAND_MW_SW: OneBigLineSprite.drawString(myLanguage[language][103] + String(",") + myLanguage[language][104], 135, 0); break;
case AM_BAND_MW_AIR: OneBigLineSprite.drawString(myLanguage[language][103] + String(",") + myLanguage[language][223], 135, 0); break;
case AM_BAND_SW_AIR: OneBigLineSprite.drawString(myLanguage[language][104] + String(",") + myLanguage[language][223], 135, 0); break;
case AM_BAND_LW: OneBigLineSprite.drawString(myLanguage[language][102], 135, 0); break;
case AM_BAND_MW: OneBigLineSprite.drawString(myLanguage[language][103], 135, 0); break;
case AM_BAND_SW: OneBigLineSprite.drawString(myLanguage[language][104], 135, 0); break;
case AM_BAND_AIR: OneBigLineSprite.drawString(myLanguage[language][223], 135, 0); break;
case AM_BAND_NONE: OneBigLineSprite.drawString(myLanguage[language][83], 135, 0); break;
}
#else
switch (bandAM) {
case AM_BAND_ALL: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][103] + String(",") + myLanguage[language][104], 135, 0); break;
case AM_BAND_LW_MW: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][103], 135, 0); break;
@@ -2599,6 +2672,8 @@ void MenuDown() {
case AM_BAND_SW: OneBigLineSprite.drawString(myLanguage[language][104], 135, 0); break;
case AM_BAND_NONE: OneBigLineSprite.drawString(myLanguage[language][83], 135, 0); break;
}
#endif
OneBigLineSprite.pushSprite(24, 118);
break;
@@ -3101,6 +3176,7 @@ void MenuDown() {
OneBigLineSprite.drawString((showSWMIBand ? myLanguage[language][42] : myLanguage[language][30]), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
case ITEM5:
@@ -3455,6 +3531,26 @@ void DoMenu() {
case ITEM8:
Infoboxprint(myLanguage[language][101]);
#ifdef HAS_AIR_BAND
switch (bandAM) {
case AM_BAND_ALL: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][103] + String(",") + myLanguage[language][104]+ String(",") + myLanguage[language][223], 135, 0); break;
case AM_BAND_LW_MW_SW: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][103] + String(",") + myLanguage[language][104], 135, 0); break;
case AM_BAND_LW_MW_AIR: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][103] + String(",") + myLanguage[language][223], 135, 0); break;
case AM_BAND_LW_SW_AIR: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][104] + String(",") + myLanguage[language][223], 135, 0); break;
case AM_BAND_MW_SW_AIR: OneBigLineSprite.drawString(myLanguage[language][103] + String(",") + myLanguage[language][104] + String(",") + myLanguage[language][223], 135, 0); break;
case AM_BAND_LW_MW: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][103], 135, 0); break;
case AM_BAND_LW_SW: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][104], 135, 0); break;
case AM_BAND_LW_AIR: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][223], 135, 0); break;
case AM_BAND_MW_SW: OneBigLineSprite.drawString(myLanguage[language][103] + String(",") + myLanguage[language][104], 135, 0); break;
case AM_BAND_MW_AIR: OneBigLineSprite.drawString(myLanguage[language][103] + String(",") + myLanguage[language][223], 135, 0); break;
case AM_BAND_SW_AIR: OneBigLineSprite.drawString(myLanguage[language][104] + String(",") + myLanguage[language][223], 135, 0); break;
case AM_BAND_LW: OneBigLineSprite.drawString(myLanguage[language][102], 135, 0); break;
case AM_BAND_MW: OneBigLineSprite.drawString(myLanguage[language][103], 135, 0); break;
case AM_BAND_SW: OneBigLineSprite.drawString(myLanguage[language][104], 135, 0); break;
case AM_BAND_AIR: OneBigLineSprite.drawString(myLanguage[language][223], 135, 0); break;
case AM_BAND_NONE: OneBigLineSprite.drawString(myLanguage[language][83], 135, 0); break;
}
#else
switch (bandAM) {
case AM_BAND_ALL: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][103] + String(",") + myLanguage[language][104], 135, 0); break;
case AM_BAND_LW_MW: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][103], 135, 0); break;
@@ -3465,6 +3561,8 @@ void DoMenu() {
case AM_BAND_SW: OneBigLineSprite.drawString(myLanguage[language][104], 135, 0); break;
case AM_BAND_NONE: OneBigLineSprite.drawString(myLanguage[language][83], 135, 0); break;
}
#endif
OneBigLineSprite.pushSprite(24, 118);
break;

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][223] PROGMEM = {
static const char* const myLanguage[18][224] PROGMEM = {
{ "English", // English
"Rotary direction changed", // 1
"Please release button", // 2
@@ -228,7 +228,8 @@ static const char* const myLanguage[18][223] PROGMEM = {
"Auto cancel scan", // 219
"Correct PI", // 220
"Signal", // 221
"Mute audio\nwhile scanning" // 222
"Mute audio\nwhile scanning", // 222
"AIR" // 223
},
{ "Nederlands", // Dutch
@@ -453,7 +454,8 @@ static const char* const myLanguage[18][223] PROGMEM = {
"Auto afbreken", // 219
"Correcte PI", // 220
"Signaal", // 221
"Geen geluid\ntijdens scannen" // 222
"Geen geluid\ntijdens scannen", // 222
"AIR" // 223
},
{ "Polski", // Polish
@@ -678,7 +680,8 @@ static const char* const myLanguage[18][223] PROGMEM = {
"Automatyczne\nanulowanie skanowania", // 219
"Poprawne PI", // 220
"Sygnał", // 221
"Wycisz dźwięk\npodczas skanowania" // 222
"Wycisz dźwięk\npodczas skanowania", // 222
"AIR" // 223
},
{ "Hrvatski", // Croatian
@@ -903,7 +906,8 @@ static const char* const myLanguage[18][223] PROGMEM = {
"Auto cancel scan", // 219
"Correct PI", // 220
"Signal", // 221
"Mute audio\nwhile scanning" // 222
"Mute audio\nwhile scanning", // 222
"AIR" // 223
},
{ "Ελληνικά", // Greek
@@ -1128,7 +1132,8 @@ static const char* const myLanguage[18][223] PROGMEM = {
"Αυτόματη ακύρωση\nανίχνευσης", // 219
"Σωστό PI", // 220
"Σήμα", // 221
"Σίγαση ήχου\nκατά την ανίχνευση" // 222
"Σίγαση ήχου\nκατά την ανίχνευση", // 222
"AIR" // 223
},
{ "Română", // Romanian
@@ -1353,7 +1358,8 @@ static const char* const myLanguage[18][223] PROGMEM = {
"Auto cancel scan", // 219
"Correct PI", // 220
"Signal", // 221
"Mute audio\nwhile scanning" // 222
"Mute audio\nwhile scanning", // 222
"AIR" // 223
},
{ "Deutsch", // German
@@ -1578,7 +1584,8 @@ static const char* const myLanguage[18][223] PROGMEM = {
"Automatisches Scan-Ende", // 219
"Korrekter PI-Code", // 220
"Signal", // 221
"Stumm beim Scannen" // 222
"Stumm beim Scannen", // 222
"AIR" // 223
},
{ "Český", // Czech
@@ -1803,7 +1810,8 @@ static const char* const myLanguage[18][223] PROGMEM = {
"Auto cancel scan", // 219
"Correct PI", // 220
"Signal", // 221
"Mute audio\nwhile scanning" // 222
"Mute audio\nwhile scanning", // 222
"AIR" // 223
},
{ "Slovenský", // Slovak
@@ -2028,7 +2036,8 @@ static const char* const myLanguage[18][223] PROGMEM = {
"Auto cancel scan", // 219
"Correct PI", // 220
"Signal", // 221
"Mute audio\nwhile scanning" // 222
"Mute audio\nwhile scanning", // 222
"AIR" // 223
},
{ "Français", // French
@@ -2253,7 +2262,8 @@ static const char* const myLanguage[18][223] PROGMEM = {
"Annuler automatiquement", // 219
"PI Correct", // 220
"Signal", // 221
"Audio muet lors\nde la numérisation" // 222
"Audio muet lors\nde la numérisation", // 222
"AIR" // 223
},
{ "Български", // Bulgarian
@@ -2478,7 +2488,8 @@ static const char* const myLanguage[18][223] PROGMEM = {
"Auto cancel scan", // 219
"Correct PI", // 220
"Signal", // 221
"Mute audio\nwhile scanning" // 222
"Mute audio\nwhile scanning", // 222
"AIR" // 223
},
{ "Русский", // Russian
@@ -2703,7 +2714,8 @@ static const char* const myLanguage[18][223] PROGMEM = {
"Auto cancel scan", // 219
"Correct PI", // 220
"Signal", // 221
"Mute audio\nwhile scanning" // 222
"Mute audio\nwhile scanning", // 222
"AIR" // 223
},
{ "Українська", // Ukranian
@@ -2928,7 +2940,8 @@ static const char* const myLanguage[18][223] PROGMEM = {
"Auto cancel scan", // 219
"Correct PI", // 220
"Signal", // 221
"Mute audio\nwhile scanning" // 222
"Mute audio\nwhile scanning", // 222
"AIR" // 223
},
{ "Italiano", // Italian
@@ -3153,7 +3166,8 @@ static const char* const myLanguage[18][223] PROGMEM = {
"Fine scansione automatica", // 219
"PI corretto", // 220
"Signale", // 221
"Audio silenziato\ndurante scansione" // 222
"Audio silenziato\ndurante scansione", // 222
"AIR" // 223
},
{ "Simplified Chinese", // Simplified Chinese
@@ -3378,7 +3392,8 @@ static const char* const myLanguage[18][223] PROGMEM = {
"扫频停台条件", // 219
"节目识别码正确", // 220
"信号超阈值", // 221
"扫描时静音" // 222
"扫描时静音", // 222
"AIR" // 223
},
{ "Norsk", // Norwegian
@@ -3603,7 +3618,8 @@ static const char* const myLanguage[18][223] PROGMEM = {
"Avbryt skanning automatisk", // 219
"korrekt PI", // 220
"Signal", // 221
"Demp lyden\nmens du skanner" // 222
"Demp lyden\nmens du skanner", // 222
"AIR" // 223
},
{ "Español", // Spanish
@@ -3828,7 +3844,8 @@ static const char* const myLanguage[18][223] PROGMEM = {
"Cancelar automáticamente\nla búsqueda", // 219
"PI correcto", // 220
"Señal", // 221
"Audio mudo\nmientras busca" // 222
"Audio mudo\nmientras busca", // 222
"AIR" // 223
},
{ "Português", // Portuguese
@@ -4053,7 +4070,8 @@ static const char* const myLanguage[18][223] PROGMEM = {
"Cancelar automatic.\na pesquisa", // 219
"PI correto", // 220
"Sinal", // 221
"Mudo áudio\nenquanto procura" // 222
"Mudo áudio\nenquanto procura", // 222
"AIR" // 223
}
};
#endif