Merge branch 'main' into New_Model_DP_666

# Conflicts:
#	TEF6686_ESP32.ino
This commit is contained in:
Leon
2024-05-05 23:41:08 +08:00
7 changed files with 524 additions and 114 deletions
+283 -34
View File
@@ -17,6 +17,7 @@
#include "src/FREQFONT.h" #include "src/FREQFONT.h"
#include "src/TEF6686.h" #include "src/TEF6686.h"
#include "src/constants.h" #include "src/constants.h"
#include "src/config.h"
#include "src/language.h" #include "src/language.h"
#include "src/gui.h" #include "src/gui.h"
#include "src/comms.h" #include "src/comms.h"
@@ -34,7 +35,7 @@
#define STANDBYLED 19 #define STANDBYLED 19
#define SMETERPIN 27 #define SMETERPIN 27
// #define CHINA_PORTABLE // uncomment for China Portable build (Simplified Chinese)
#define DEEPELEC_DP_666 // uncomment for DEEPELEC Portable DP-666 build (Simplified Chinese) #define DEEPELEC_DP_666 // uncomment for DEEPELEC Portable DP-666 build (Simplified Chinese)
#define DYNAMIC_SPI_SPEED // uncomment to enable dynamic SPI Speed https://github.com/ohmytime/TFT_eSPI_DynamicSpeed #define DYNAMIC_SPI_SPEED // uncomment to enable dynamic SPI Speed https://github.com/ohmytime/TFT_eSPI_DynamicSpeed
@@ -94,6 +95,9 @@ bool memtune;
bool menu; bool menu;
bool menuopen; bool menuopen;
bool mwstepsize; bool mwstepsize;
#ifdef HAS_AIR_BAND
bool airstepsize;
#endif
bool nobattery; bool nobattery;
bool optenc; bool optenc;
bool rdsflagreset; bool rdsflagreset;
@@ -347,6 +351,11 @@ unsigned int frequency_MIBand_75M;
unsigned int frequency_MIBand_90M; unsigned int frequency_MIBand_90M;
unsigned int frequency_MW; unsigned int frequency_MW;
unsigned int frequency_SW; unsigned int frequency_SW;
#ifdef HAS_AIR_BAND
unsigned int frequency_AIR;
unsigned int AIRHighEdgeSet;
unsigned int AIRLowEdgeSet;
#endif
unsigned int frequencyold; unsigned int frequencyold;
unsigned int HighEdgeOIRTSet; unsigned int HighEdgeOIRTSet;
unsigned int HighEdgeSet; unsigned int HighEdgeSet;
@@ -457,6 +466,9 @@ void setup() {
frequency_LW = EEPROM.readUInt(EE_UINT16_FREQUENCY_LW); frequency_LW = EEPROM.readUInt(EE_UINT16_FREQUENCY_LW);
frequency_MW = EEPROM.readUInt(EE_UINT16_FREQUENCY_MW); frequency_MW = EEPROM.readUInt(EE_UINT16_FREQUENCY_MW);
frequency_SW = EEPROM.readUInt(EE_UINT16_FREQUENCY_SW); frequency_SW = EEPROM.readUInt(EE_UINT16_FREQUENCY_SW);
#ifdef HAS_AIR_BAND
frequency_AIR = EEPROM.readUInt(EE_UINT16_FREQUENCY_AIR);
#endif
XDRGTK_key = EEPROM.readString(EE_STRING_XDRGTK_KEY); XDRGTK_key = EEPROM.readString(EE_STRING_XDRGTK_KEY);
usesquelch = EEPROM.readByte(EE_BYTE_USESQUELCH); usesquelch = EEPROM.readByte(EE_BYTE_USESQUELCH);
showmodulation = EEPROM.readByte(EE_BYTE_SHOWMODULATION); showmodulation = EEPROM.readByte(EE_BYTE_SHOWMODULATION);
@@ -487,6 +499,9 @@ void setup() {
radio.rds.fastps = EEPROM.readByte(EE_BYTE_FASTPS); radio.rds.fastps = EEPROM.readByte(EE_BYTE_FASTPS);
tot = EEPROM.readByte(EE_BYTE_TOT); tot = EEPROM.readByte(EE_BYTE_TOT);
mwstepsize = EEPROM.readByte(EE_BYTE_MWREGION); mwstepsize = EEPROM.readByte(EE_BYTE_MWREGION);
#ifdef HAS_AIR_BAND
airstepsize = EEPROM.readByte(EE_BYTE_AIRSTEPSIZE);
#endif
spispeed = EEPROM.readByte(EE_BYTE_SPISPEED); spispeed = EEPROM.readByte(EE_BYTE_SPISPEED);
amscansens = EEPROM.readByte(EE_BYTE_AMSCANSENS); amscansens = EEPROM.readByte(EE_BYTE_AMSCANSENS);
fmscansens = EEPROM.readByte(EE_BYTE_FMSCANSENS); fmscansens = EEPROM.readByte(EE_BYTE_FMSCANSENS);
@@ -778,12 +793,10 @@ void setup() {
radio.setVolume(VolSet); radio.setVolume(VolSet);
radio.setOffset(LevelOffset); radio.setOffset(LevelOffset);
radio.setAMOffset(AMLevelOffset); radio.setAMOffset(AMLevelOffset);
if (band > BAND_GAP && band != BAND_AIR) {
if (band > BAND_GAP) {
radio.setAMCoChannel(amcodect, amcodectcount); radio.setAMCoChannel(amcodect, amcodectcount);
radio.setAMAttenuation(amgain); radio.setAMAttenuation(amgain);
} }
radio.setStereoLevel(StereoLevel); radio.setStereoLevel(StereoLevel);
radio.setHighCutLevel(HighCutLevel); radio.setHighCutLevel(HighCutLevel);
radio.setHighCutOffset(HighCutOffset); radio.setHighCutOffset(HighCutOffset);
@@ -1290,23 +1303,145 @@ void doBandSelectionFM() {
} }
} }
void CheckBandForbiddenAM () { void CheckBandForbiddenAM() {
#ifdef HAS_AIR_BAND
switch (band) { switch (band) {
case BAND_LW: case BAND_LW:
if (bandAM == AM_BAND_MW_SW || bandAM == AM_BAND_MW || bandAM == AM_BAND_SW) bandforbidden = 1; else bandforbidden = 0; if (bandAM == AM_BAND_MW_SW_AIR || bandAM == AM_BAND_MW_SW || bandAM == AM_BAND_MW_AIR || bandAM == AM_BAND_SW_AIR || bandAM == AM_BAND_MW || bandAM == AM_BAND_SW || bandAM == AM_BAND_AIR)
bandforbidden = 1;
else
bandforbidden = 0;
break; break;
case BAND_MW: case BAND_MW:
if (bandAM == AM_BAND_LW_SW || bandAM == AM_BAND_LW || bandAM == AM_BAND_SW) bandforbidden = 1; else bandforbidden = 0; if (bandAM == AM_BAND_LW_SW_AIR || bandAM == AM_BAND_LW_SW || bandAM == AM_BAND_LW_AIR || bandAM == AM_BAND_SW_AIR || bandAM == AM_BAND_LW || bandAM == AM_BAND_SW || bandAM == AM_BAND_AIR)
bandforbidden = 1;
else
bandforbidden = 0;
break; break;
case BAND_SW: case BAND_SW:
if (bandAM == AM_BAND_LW_MW || bandAM == AM_BAND_LW || bandAM == AM_BAND_MW) bandforbidden = 1; else bandforbidden = 0; if (bandAM == AM_BAND_LW_MW_AIR || bandAM == AM_BAND_LW_MW || bandAM == AM_BAND_LW_AIR || bandAM == AM_BAND_MW_AIR || bandAM == AM_BAND_LW || bandAM == AM_BAND_MW || bandAM == AM_BAND_AIR)
bandforbidden = 1;
else
bandforbidden = 0;
break;
case BAND_AIR:
if (bandAM == AM_BAND_LW_MW_SW || bandAM == AM_BAND_LW_MW || bandAM == AM_BAND_LW_SW || bandAM == AM_BAND_MW_SW || bandAM == AM_BAND_LW || bandAM == AM_BAND_MW || bandAM == AM_BAND_SW)
bandforbidden = 1;
else
bandforbidden = 0;
break; break;
} }
#else
switch (band) {
case BAND_LW:
if (bandAM == AM_BAND_MW_SW || bandAM == AM_BAND_MW || bandAM == AM_BAND_SW) bandforbidden = 1;
else bandforbidden = 0;
break;
case BAND_MW:
if (bandAM == AM_BAND_LW_SW || bandAM == AM_BAND_LW || bandAM == AM_BAND_SW) bandforbidden = 1;
else bandforbidden = 0;
break;
case BAND_SW:
if (bandAM == AM_BAND_LW_MW || bandAM == AM_BAND_LW || bandAM == AM_BAND_MW) bandforbidden = 1;
else bandforbidden = 0;
break;
}
#endif
} }
void doBandSelectionAM() { void doBandSelectionAM() {
if (band < BAND_GAP) return; if (band < BAND_GAP) return;
#ifdef HAS_AIR_BAND // has air band
switch (bandAM) {
case AM_BAND_ALL:
break;
case AM_BAND_LW_MW_SW:
if (band == BAND_AIR) {
band = BAND_LW;
SelectBand();
}
break;
case AM_BAND_LW_MW_AIR:
if (band == BAND_SW) {
band = BAND_LW;
SelectBand();
}
break;
case AM_BAND_LW_SW_AIR:
if (band == BAND_MW) {
band = BAND_LW;
SelectBand();
}
break;
case AM_BAND_MW_SW_AIR:
if (band == BAND_LW) {
band = BAND_MW;
SelectBand();
}
break;
case AM_BAND_LW_MW:
if (band == BAND_SW || band == BAND_AIR) {
band = BAND_LW;
SelectBand();
}
break;
case AM_BAND_LW_SW:
if (band == BAND_MW || band == BAND_AIR) {
band = BAND_LW;
SelectBand();
}
break;
case AM_BAND_LW_AIR:
if (band == BAND_MW || band == BAND_SW) {
band = BAND_LW;
SelectBand();
}
break;
case AM_BAND_MW_SW:
if (band == BAND_LW || band == BAND_AIR) {
band = BAND_MW;
SelectBand();
}
break;
case AM_BAND_MW_AIR:
if (band == BAND_LW || band == BAND_SW) {
band = BAND_MW;
SelectBand();
}
break;
case AM_BAND_SW_AIR:
if (band == BAND_LW || band == BAND_MW) {
band = BAND_SW;
SelectBand();
}
break;
case AM_BAND_LW:
if (band != BAND_LW) {
band = BAND_LW;
SelectBand();
}
break;
case AM_BAND_MW:
if (band != BAND_MW) {
band = BAND_MW;
SelectBand();
}
break;
case AM_BAND_SW:
if (band != BAND_SW) {
band = BAND_SW;
SelectBand();
}
break;
case AM_BAND_AIR:
if (band != BAND_AIR) {
band = BAND_AIR;
SelectBand();
}
break;
}
#else // has no air band
switch (bandAM) { switch (bandAM) {
case AM_BAND_ALL: case AM_BAND_ALL:
break; break;
@@ -1351,17 +1486,30 @@ void doBandSelectionAM() {
SelectBand(); SelectBand();
break; break;
} }
#endif
} }
void AMjumptoFM() { void AMjumptoFM() {
if (bandFM != FM_BAND_NONE) { if (bandFM != FM_BAND_NONE) {
if (bandFM == FM_BAND_FM) band = BAND_FM; else band = BAND_OIRT; if (bandFM == FM_BAND_FM) band = BAND_FM; else band = BAND_OIRT;
} else { } else {
// do nothing FMjumptoAM();
} }
} }
void FMjumptoAM() { void FMjumptoAM() {
#ifdef HAS_AIR_BAND
if (bandAM == AM_BAND_ALL || bandAM == AM_BAND_LW_MW_AIR || bandAM == AM_BAND_LW_SW_AIR || bandAM == AM_BAND_LW_MW || bandAM == AM_BAND_LW_SW || bandAM == AM_BAND_LW_AIR || bandAM == AM_BAND_LW) {
band = BAND_LW;
if (stepsize > 3) stepsize = 3;
} else if (bandAM == AM_BAND_MW_SW || bandAM == AM_BAND_MW_AIR || bandAM == AM_BAND_MW) {
band = BAND_MW;
} else if (bandAM == AM_BAND_SW_AIR || bandAM == AM_BAND_SW) {
band = BAND_SW;
} else if (bandAM == AM_BAND_AIR) {
band = BAND_AIR;
}
#else
if (bandAM == AM_BAND_ALL || bandAM == AM_BAND_LW_MW || bandAM == AM_BAND_LW_SW || bandAM == AM_BAND_LW) { if (bandAM == AM_BAND_ALL || bandAM == AM_BAND_LW_MW || bandAM == AM_BAND_LW_SW || bandAM == AM_BAND_LW) {
band = BAND_LW; band = BAND_LW;
if (stepsize > 3) stepsize = 3; if (stepsize > 3) stepsize = 3;
@@ -1370,10 +1518,43 @@ void FMjumptoAM() {
} else if (bandAM == AM_BAND_SW) { } else if (bandAM == AM_BAND_SW) {
band = BAND_SW; band = BAND_SW;
} }
#endif
} }
void ToggleBand(byte nowBand) { void ToggleBand(byte nowBand) {
switch (nowBand) { switch (nowBand) {
#ifdef HAS_AIR_BAND
case BAND_LW:
if (bandAM == AM_BAND_LW_MW_SW || bandAM == AM_BAND_LW_MW_AIR || bandAM == AM_BAND_LW_MW || bandAM == AM_BAND_ALL) {
band = BAND_MW;
} else if (bandAM == AM_BAND_LW_SW_AIR || bandAM == AM_BAND_LW_SW) {
band = BAND_SW;
} else if (bandAM == AM_BAND_LW_MW_AIR || bandAM == AM_BAND_LW_SW_AIR || bandAM == AM_BAND_LW_AIR) {
band = BAND_AIR;
} else if (bandAM == AM_BAND_LW || bandAM == AM_BAND_NONE) {
AMjumptoFM();
}
break;
case BAND_MW:
if (bandAM == AM_BAND_LW_MW_SW || bandAM == AM_BAND_MW_SW_AIR || bandAM == AM_BAND_MW_SW || bandAM == AM_BAND_ALL) {
band = BAND_SW;
} else if (bandAM == AM_BAND_LW_MW_AIR || bandAM == AM_BAND_MW_AIR) {
band = BAND_AIR;
} else if (bandAM == AM_BAND_MW || bandAM == AM_BAND_NONE) {
AMjumptoFM();
}
break;
case BAND_SW:
if (bandAM == AM_BAND_LW_SW_AIR || bandAM == AM_BAND_MW_SW_AIR || bandAM == AM_BAND_SW_AIR || bandAM == AM_BAND_ALL) {
band = BAND_AIR;
} else if (bandAM == AM_BAND_LW_MW_SW || bandAM == AM_BAND_LW_SW || bandAM == AM_BAND_MW_SW || bandAM == AM_BAND_SW || bandAM == AM_BAND_NONE) {
AMjumptoFM();
}
break;
case BAND_AIR:
AMjumptoFM();
break;
#else // has no air band
case BAND_LW: case BAND_LW:
if (bandAM == AM_BAND_LW_MW || bandAM == AM_BAND_ALL) { if (bandAM == AM_BAND_LW_MW || bandAM == AM_BAND_ALL) {
band = BAND_MW; band = BAND_MW;
@@ -1398,8 +1579,9 @@ void ToggleBand(byte nowBand) {
break; break;
case BAND_SW: case BAND_SW:
if (bandFM != FM_BAND_NONE) { if (bandFM != FM_BAND_NONE) {
if (bandFM == FM_BAND_FM) band = BAND_FM; else band = BAND_OIRT; if (bandFM == FM_BAND_FM) band = BAND_FM;
} else { else band = BAND_OIRT;
} else { // FM be disabled
if (bandAM == AM_BAND_LW_SW || bandAM == AM_BAND_ALL) { if (bandAM == AM_BAND_LW_SW || bandAM == AM_BAND_ALL) {
band = BAND_LW; band = BAND_LW;
} else if (bandAM == AM_BAND_MW_SW) { } else if (bandAM == AM_BAND_MW_SW) {
@@ -1409,6 +1591,7 @@ void ToggleBand(byte nowBand) {
} }
} }
break; break;
#endif
case BAND_OIRT: case BAND_OIRT:
if (bandFM == FM_BAND_ALL || bandFM == FM_BAND_FM) { if (bandFM == FM_BAND_ALL || bandFM == FM_BAND_FM) {
band = BAND_FM; band = BAND_FM;
@@ -1510,10 +1693,13 @@ void StoreFrequency() {
EEPROM.writeUInt(EE_UINT16_FREQUENCY_LW, frequency_LW); EEPROM.writeUInt(EE_UINT16_FREQUENCY_LW, frequency_LW);
EEPROM.writeUInt(EE_UINT16_FREQUENCY_MW, frequency_MW); EEPROM.writeUInt(EE_UINT16_FREQUENCY_MW, frequency_MW);
EEPROM.writeUInt(EE_UINT16_FREQUENCY_SW, frequency_SW); EEPROM.writeUInt(EE_UINT16_FREQUENCY_SW, frequency_SW);
#ifdef HAS_AIR_BAND
EEPROM.writeUInt(EE_UINT16_FREQUENCY_AIR, frequency_AIR);
#endif
EEPROM.commit(); EEPROM.commit();
} }
void LimitAMFrequency() { void LimitAMFrequency() {//todo air
switch (band) { switch (band) {
case BAND_LW: case BAND_LW:
frequency_AM = frequency_LW; frequency_AM = frequency_LW;
@@ -1891,10 +2077,21 @@ void SelectBand() {
case BAND_LW: freqold = frequency_LW; frequency_AM = frequency_LW; break; case BAND_LW: freqold = frequency_LW; frequency_AM = frequency_LW; break;
case BAND_MW: freqold = frequency_MW; frequency_AM = frequency_MW; break; case BAND_MW: freqold = frequency_MW; frequency_AM = frequency_MW; break;
case BAND_SW: freqold = frequency_SW; frequency_AM = frequency_SW; 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
} }
LimitAMFrequency(); LimitAMFrequency();
if (!externaltune) CheckBandForbiddenAM(); if (!externaltune) CheckBandForbiddenAM();
#ifdef HAS_AIR_BAND
if (band == BAND_AIR) {
radio.SetFreqAIR(10700);
} else {
radio.SetFreqAM(frequency_AM);
}
#else
radio.SetFreqAM(frequency_AM); radio.SetFreqAM(frequency_AM);
#endif
radio.setAMAttenuation(amgain); radio.setAMAttenuation(amgain);
radio.setAMCoChannel(amcodect, amcodectcount); radio.setAMCoChannel(amcodect, amcodectcount);
doBW(); doBW();
@@ -1914,6 +2111,9 @@ void SelectBand() {
tftPrint(0, "iMS", 265, 59, GreyoutColor, BackgroundColor, 16); tftPrint(0, "iMS", 265, 59, GreyoutColor, BackgroundColor, 16);
tft.drawRoundRect(286, 56, 32, 20, 5, GreyoutColor); tft.drawRoundRect(286, 56, 32, 20, 5, GreyoutColor);
tftPrint(0, "EQ", 303, 59, GreyoutColor, BackgroundColor, 16); tftPrint(0, "EQ", 303, 59, GreyoutColor, BackgroundColor, 16);
// todo
// if (band == AM_BAND_AIR) tftPrint(-1, "MHz", 258, 76, ActiveColor, ActiveColorSmooth, 28);
// else tftPrint(-1, "KHz", 258, 76, ActiveColor, ActiveColorSmooth, 28);
} }
} else { } else {
if (tunemode == TUNE_MI_BAND) tunemode = TUNE_MAN; if (tunemode == TUNE_MI_BAND) tunemode = TUNE_MAN;
@@ -2149,7 +2349,7 @@ void Round5K(unsigned int freqAM) {
} }
} }
void RoundStep() { void RoundStep() {//todo air
if (band == BAND_FM) { if (band == BAND_FM) {
unsigned int freq = frequency; unsigned int freq = frequency;
switch (fmdefaultstepsize) { switch (fmdefaultstepsize) {
@@ -2204,7 +2404,7 @@ void ButtonPress() {
EEPROM.writeByte(memorypos + EE_PRESETS_BAND_START, band); EEPROM.writeByte(memorypos + EE_PRESETS_BAND_START, band);
EEPROM.writeByte(memorypos + EE_PRESET_BW_START, BWset); EEPROM.writeByte(memorypos + EE_PRESET_BW_START, BWset);
EEPROM.writeByte(memorypos + EE_PRESET_MS_START, StereoToggle); EEPROM.writeByte(memorypos + EE_PRESET_MS_START, StereoToggle);
if (band == BAND_FM) { if (band == BAND_FM) {//todo air
EEPROM.writeUInt((memorypos * 4) + EE_PRESETS_FREQUENCY_START, frequency); EEPROM.writeUInt((memorypos * 4) + EE_PRESETS_FREQUENCY_START, frequency);
} else if (band == BAND_OIRT) { } else if (band == BAND_OIRT) {
EEPROM.writeUInt((memorypos * 4) + EE_PRESETS_FREQUENCY_START, frequency_OIRT); EEPROM.writeUInt((memorypos * 4) + EE_PRESETS_FREQUENCY_START, frequency_OIRT);
@@ -2238,7 +2438,7 @@ void ButtonPress() {
EEPROM.commit(); EEPROM.commit();
if (band == BAND_FM) { if (band == BAND_FM) {//todo air
presets[memorypos].frequency = frequency; presets[memorypos].frequency = frequency;
} else if (band == BAND_OIRT) { } else if (band == BAND_OIRT) {
presets[memorypos].frequency = frequency_OIRT; presets[memorypos].frequency = frequency_OIRT;
@@ -2544,22 +2744,36 @@ void DoMemoryPosTune() {
band = presets[memorypos].band; band = presets[memorypos].band;
} }
if (band == BAND_FM) { switch (band) {
frequency = presets[memorypos].frequency; case BAND_FM:
radio.SetFreq(frequency); frequency = presets[memorypos].frequency;
} else if (band == BAND_OIRT) { radio.SetFreq(frequency);
frequency_OIRT = presets[memorypos].frequency; break;
radio.SetFreq(frequency_OIRT); case BAND_OIRT:
} else if (band == BAND_LW) { frequency = presets[memorypos].frequency;
frequency_LW = presets[memorypos].frequency; radio.SetFreq(frequency_OIRT);
radio.SetFreqAM(frequency_LW); break;
} else if (band == BAND_MW) { case BAND_LW:
frequency_MW = presets[memorypos].frequency; frequency = presets[memorypos].frequency;
radio.SetFreqAM(frequency_MW); radio.SetFreq(frequency_LW);
} else if (band == BAND_SW) { break;
frequency_SW = presets[memorypos].frequency; case BAND_MW:
radio.SetFreqAM(frequency_SW); frequency = presets[memorypos].frequency;
radio.SetFreq(frequency_MW);
break;
case BAND_SW:
frequency = presets[memorypos].frequency;
radio.SetFreq(frequency_SW);
break;
#ifdef HAS_AIR_BAND
case BAND_AIR:
frequency = presets[memorypos].frequency;
// radio.SetFreq(frequency_AIR); // todo
radio.SetFreqAM(10700); // todo
break;
#endif
} }
ShowFreq(0); ShowFreq(0);
if (band == BAND_FM || band == BAND_OIRT) { if (band == BAND_FM || band == BAND_OIRT) {
@@ -2631,6 +2845,9 @@ void ShowFreq(int mode) {
case BAND_LW: frequency_AM = frequency_LW; break; case BAND_LW: frequency_AM = frequency_LW; break;
case BAND_MW: frequency_AM = frequency_MW; break; case BAND_MW: frequency_AM = frequency_MW; break;
case BAND_SW: frequency_AM = frequency_SW; break; case BAND_SW: frequency_AM = frequency_SW; break;
#ifdef HAS_AIR_BAND
case BAND_AIR: frequency_AM = frequency_AIR; break; // todo air
#endif
} }
if (!screenmute) { if (!screenmute) {
@@ -2647,7 +2864,11 @@ void ShowFreq(int mode) {
FrequencySprite.setTextDatum(TR_DATUM); FrequencySprite.setTextDatum(TR_DATUM);
FrequencySprite.setTextColor(FreqColor, FreqColorSmooth, false); FrequencySprite.setTextColor(FreqColor, FreqColorSmooth, false);
FrequencySprite.drawString(String(frequency_AM) + " ", 218, -6); if (band == BAND_AIR) {
FrequencySprite.drawString(String(frequency_AM / 1000) + "." + String(frequency_AM % 1000) + " ", 218, -6);
} else {
FrequencySprite.drawString(String(frequency_AM) + " ", 218, -6);
}
FrequencySprite.unloadFont(); FrequencySprite.unloadFont();
FrequencySprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); FrequencySprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FrequencySprite.setTextDatum(TL_DATUM); FrequencySprite.setTextDatum(TL_DATUM);
@@ -3109,7 +3330,7 @@ void doSquelch() {
SquelchSprite.unloadFont(); SquelchSprite.unloadFont();
} }
void updateBW() { void updateBW() {//todo air
if (BWset == 0) { if (BWset == 0) {
if (!screenmute && !advancedRDS && !afscreen) { if (!screenmute && !advancedRDS && !afscreen) {
tft.drawRoundRect(248, 35, 71, 20, 5, ActiveColor); tft.drawRoundRect(248, 35, 71, 20, 5, ActiveColor);
@@ -3161,7 +3382,8 @@ void updateEQ() {
} }
void updateCodetect() { void updateCodetect() {
if (band > BAND_GAP) { if (
band > BAND_GAP && band != BAND_AIR) {
if (WAM) { if (WAM) {
tftPrint(-1, "CO", 50, 61, PrimaryColor, PrimaryColorSmooth, 16); tftPrint(-1, "CO", 50, 61, PrimaryColor, PrimaryColorSmooth, 16);
} else { } else {
@@ -3471,10 +3693,17 @@ void TuneUp() {
} else if (frequency_AM < MWLowEdgeSet) { } else if (frequency_AM < MWLowEdgeSet) {
temp = FREQ_MW_STEP_9K; temp = FREQ_MW_STEP_9K;
frequency_AM = (frequency_AM / FREQ_MW_STEP_9K) * FREQ_MW_STEP_9K; frequency_AM = (frequency_AM / FREQ_MW_STEP_9K) * FREQ_MW_STEP_9K;
} else { } else if (frequency_AM < SWHighEdgeSet && frequency_AM > SWLowEdgeSet) {
temp = FREQ_SW_STEP_5K; temp = FREQ_SW_STEP_5K;
frequency_AM = (frequency_AM / FREQ_SW_STEP_5K) * FREQ_SW_STEP_5K; frequency_AM = (frequency_AM / FREQ_SW_STEP_5K) * FREQ_SW_STEP_5K;
} }
#ifdef HAS_AIR_BAND
else if (frequency_AM < AIRHighEdgeSet && frequency_AM > AIRLowEdgeSet) {
if (airstepsize == 0) temp = FREQ_AIR_STEP_25K;
else temp = FREQ_AIR_STEP_8K33;
}
#endif
} else { } else {
if (band == BAND_OIRT) { if (band == BAND_OIRT) {
temp = FREQ_OIRT_STEP_30K; temp = FREQ_OIRT_STEP_30K;
@@ -3539,6 +3768,17 @@ void TuneUp() {
radio.SetFreqAM(frequency_AM); radio.SetFreqAM(frequency_AM);
frequency_SW = frequency_AM; frequency_SW = frequency_AM;
} }
#ifdef HAS_AIR_BAND
else if (band == BAND_AIR) {
frequency_AM += temp;
if (frequency_AIR > AIRHighEdgeSet) {
frequency_AM = AIRLowEdgeSet;
if (edgebeep) EdgeBeeper();
}
radio.SetFreqAM(frequency_AM);
frequency_AIR = frequency_AM;
}
#endif
radio.clearRDS(fullsearchrds); radio.clearRDS(fullsearchrds);
if (RDSSPYUSB) Serial.print("G:\r\nRESET-------\r\n\r\n"); if (RDSSPYUSB) Serial.print("G:\r\nRESET-------\r\n\r\n");
if (RDSSPYTCP) RemoteClient.print("G:\r\nRESET-------\r\n\r\n"); if (RDSSPYTCP) RemoteClient.print("G:\r\nRESET-------\r\n\r\n");
@@ -3801,6 +4041,9 @@ void DefaultSettings(byte userhardwaremodel) {
if (userhardwaremodel == BASE_ILI9341) EEPROM.writeUInt(EE_UINT16_FREQUENCY_LW, 180); else EEPROM.writeUInt(EE_UINT16_FREQUENCY_LW, 164); if (userhardwaremodel == BASE_ILI9341) EEPROM.writeUInt(EE_UINT16_FREQUENCY_LW, 180); else EEPROM.writeUInt(EE_UINT16_FREQUENCY_LW, 164);
if (userhardwaremodel == BASE_ILI9341) EEPROM.writeUInt(EE_UINT16_FREQUENCY_MW, 540); else EEPROM.writeUInt(EE_UINT16_FREQUENCY_MW, 639); if (userhardwaremodel == BASE_ILI9341) EEPROM.writeUInt(EE_UINT16_FREQUENCY_MW, 540); else EEPROM.writeUInt(EE_UINT16_FREQUENCY_MW, 639);
if (userhardwaremodel == BASE_ILI9341) EEPROM.writeUInt(EE_UINT16_FREQUENCY_SW, 1800); else EEPROM.writeUInt(EE_UINT16_FREQUENCY_SW, 5000); if (userhardwaremodel == BASE_ILI9341) EEPROM.writeUInt(EE_UINT16_FREQUENCY_SW, 1800); else EEPROM.writeUInt(EE_UINT16_FREQUENCY_SW, 5000);
#ifdef HAS_AIR_BAND
EEPROM.writeUInt(EE_UINT16_FREQUENCY_AIR, 135350);
#endif
EEPROM.writeString(EE_STRING_XDRGTK_KEY, "password"); EEPROM.writeString(EE_STRING_XDRGTK_KEY, "password");
if (userhardwaremodel == BASE_ILI9341) EEPROM.writeByte(EE_BYTE_USESQUELCH, 1); else EEPROM.writeByte(EE_BYTE_USESQUELCH, 0); if (userhardwaremodel == BASE_ILI9341) EEPROM.writeByte(EE_BYTE_USESQUELCH, 1); else EEPROM.writeByte(EE_BYTE_USESQUELCH, 0);
EEPROM.writeByte(EE_BYTE_SHOWMODULATION, 1); EEPROM.writeByte(EE_BYTE_SHOWMODULATION, 1);
@@ -3832,6 +4075,9 @@ void DefaultSettings(byte userhardwaremodel) {
EEPROM.writeByte(EE_BYTE_FASTPS, 1); EEPROM.writeByte(EE_BYTE_FASTPS, 1);
EEPROM.writeByte(EE_BYTE_TOT, 0); EEPROM.writeByte(EE_BYTE_TOT, 0);
EEPROM.writeByte(EE_BYTE_MWREGION, 0); EEPROM.writeByte(EE_BYTE_MWREGION, 0);
#ifdef HAS_AIR_BAND
EEPROM.writeByte(EE_BYTE_AIRSTEPSIZE, 0);
#endif
EEPROM.writeByte(EE_BYTE_SPISPEED, 0); EEPROM.writeByte(EE_BYTE_SPISPEED, 0);
EEPROM.writeByte(EE_BYTE_AMSCANSENS, 4); EEPROM.writeByte(EE_BYTE_AMSCANSENS, 4);
EEPROM.writeByte(EE_BYTE_FMSCANSENS, 4); EEPROM.writeByte(EE_BYTE_FMSCANSENS, 4);
@@ -4058,6 +4304,9 @@ void endMenu() {
EEPROM.writeByte(EE_BYTE_FASTPS, radio.rds.fastps); EEPROM.writeByte(EE_BYTE_FASTPS, radio.rds.fastps);
EEPROM.writeByte(EE_BYTE_TOT, tot); EEPROM.writeByte(EE_BYTE_TOT, tot);
EEPROM.writeByte(EE_BYTE_MWREGION, mwstepsize); EEPROM.writeByte(EE_BYTE_MWREGION, mwstepsize);
#ifdef HAS_AIR_BAND
EEPROM.writeByte(EE_BYTE_AIRSTEPSIZE, airstepsize);
#endif
EEPROM.writeByte(EE_BYTE_SPISPEED, spispeed); EEPROM.writeByte(EE_BYTE_SPISPEED, spispeed);
EEPROM.writeByte(EE_BYTE_AMSCANSENS, amscansens); EEPROM.writeByte(EE_BYTE_AMSCANSENS, amscansens);
EEPROM.writeByte(EE_BYTE_FMSCANSENS, fmscansens); EEPROM.writeByte(EE_BYTE_FMSCANSENS, fmscansens);
+8 -4
View File
@@ -135,16 +135,16 @@ void TEF6686::init(byte TEF) {
if (xtalADC < XTAL_0V_ADC + XTAL_ADC_TOL) { if (xtalADC < XTAL_0V_ADC + XTAL_ADC_TOL) {
Tuner_Init(tuner_init_tab9216); 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) { } else if (xtalADC > XTAL_1V_ADC - XTAL_ADC_TOL && xtalADC < XTAL_1V_ADC + XTAL_ADC_TOL) {
Tuner_Init(tuner_init_tab12000); 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) { } else if (xtalADC > XTAL_2V_ADC - XTAL_ADC_TOL && xtalADC < XTAL_2V_ADC + XTAL_ADC_TOL) {
Tuner_Init(tuner_init_tab55000); Tuner_Init(tuner_init_tab55000);
log_v("XTAL : 55M"); log_d("TEF668X XTAL : 55M");
} else { } else {
Tuner_Init(tuner_init_tab4000); Tuner_Init(tuner_init_tab4000);
log_v("XTAL : 4M"); log_d("TEF668X XTAL : 4M");
} }
power(1); power(1);
Tuner_Init(tuner_init_tab); Tuner_Init(tuner_init_tab);
@@ -178,6 +178,10 @@ void TEF6686::SetFreqAM(uint16_t frequency) {
devTEF_Radio_Tune_AM (frequency); devTEF_Radio_Tune_AM (frequency);
} }
void TEF6686::SetFreqAIR(uint16_t frequency) {
devTEF_Radio_Tune_AM (10700);
}
void TEF6686::setOffset(int8_t offset) { void TEF6686::setOffset(int8_t offset) {
devTEF_Radio_Set_LevelOffset(offset * 10); devTEF_Radio_Set_LevelOffset(offset * 10);
} }
+1
View File
@@ -660,6 +660,7 @@ class TEF6686 {
void readRDS(byte showrdserrors); void readRDS(byte showrdserrors);
void SetFreq(uint16_t frequency); void SetFreq(uint16_t frequency);
void SetFreqAM(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 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 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); bool getStatusAM(int16_t &level, uint16_t &noise, uint16_t &cochannel, int16_t &offset, uint16_t &bandwidth, uint16_t &modulation, int8_t &snr);
+9
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
+33 -2
View File
@@ -1,3 +1,5 @@
#include "config.h"
#define ON 1 #define ON 1
#define OFF 0 #define OFF 0
#define REVERSE false #define REVERSE false
@@ -33,6 +35,10 @@
#define FREQ_MW_STEP_9K 9 #define FREQ_MW_STEP_9K 9
#define FREQ_MW_STEP_10K 10 #define FREQ_MW_STEP_10K 10
#define FREQ_SW_STEP_5K 5 #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_OIRT_STEP_30K 3
#define FREQ_FM_STEP_50K 5 #define FREQ_FM_STEP_50K 5
#define FREQ_FM_STEP_100K 10 #define FREQ_FM_STEP_100K 10
@@ -48,6 +54,10 @@
#define FREQ_SW_LOW_EDGE_MAX (FREQ_SW_160M_START) #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_MIN (FREQ_SW_11M_END)
#define FREQ_SW_HIGH_EDGE_MAX (FREQ_SW_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_START 65000
#define FREQ_FM_END 108000 #define FREQ_FM_END 108000
#define FREQ_FM_OIRT_START 6500 // use values of 1/10 * kHz #define FREQ_FM_OIRT_START 6500 // use values of 1/10 * kHz
@@ -196,9 +206,13 @@
// EEPROM index defines // EEPROM index defines
#define EE_PRESETS_CNT 99 // When set > 99 change the complete EEPROM adressing! #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! #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 #define EE_TOTAL_CNT 2214 // Total occupied eeprom bytes
#endif
#define EE_PRESETS_BAND_START 0 // 99 * 1 byte #define EE_PRESETS_BAND_START 0 // 99 * 1 byte
#define EE_PRESET_BW_START 99 // 99 * 1 byte #define EE_PRESET_BW_START 99 // 99 * 1 byte
@@ -296,6 +310,10 @@
#define EE_BYTE_SCANMEM 2211 #define EE_BYTE_SCANMEM 2211
#define EE_BYTE_SCANCANCEL 2212 #define EE_BYTE_SCANCANCEL 2212
#define EE_BYTE_SCANMUTE 2213 #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 // End of EEPROM index defines
static const char* const unitString[] = {"dBμV", "dBf", "dBm"}; 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 // 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, BAND_AIR
}; };
#ifndef HAS_AIR_BAND
// Toggle: LW -> MW -> SW // Toggle: LW -> MW -> SW
enum RADIO_AM_BAND_SELECTION { enum RADIO_AM_BAND_SELECTION {
AM_BAND_ALL = 0, AM_BAND_LW_MW, AM_BAND_LW_SW, AM_BAND_MW_SW, 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_LW, AM_BAND_MW, AM_BAND_SW, AM_BAND_NONE,
AM_BAND_CNT 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 // Toggle: OIRT -> FM
enum RADIO_FM_BAND_SELECTION { enum RADIO_FM_BAND_SELECTION {
+103 -5
View File
@@ -1,6 +1,7 @@
#include "gui.h" #include "gui.h"
#include "language.h" #include "language.h"
#include "constants.h" #include "constants.h"
#include "config.h"
#include <WiFi.h> #include <WiFi.h>
#include <Wire.h> #include <Wire.h>
#include <EEPROM.h> #include <EEPROM.h>
@@ -1193,7 +1194,27 @@ void ShowOneLine(byte position, byte item, bool selected) {
FullLineSprite.setTextDatum(TR_DATUM); FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); 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) { 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_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; 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_SW: FullLineSprite.drawString(myLanguage[language][104], 298, 3); break;
case AM_BAND_NONE: FullLineSprite.drawString(myLanguage[language][83], 298, 3); break; case AM_BAND_NONE: FullLineSprite.drawString(myLanguage[language][83], 298, 3); break;
} }
break; break;
#endif
case DISPLAYSETTINGS: case DISPLAYSETTINGS:
FullLineSprite.setTextDatum(TL_DATUM); 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_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_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; 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_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; 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; RDSstatusold = false;
Stereostatusold = false; Stereostatusold = false;
@@ -1785,7 +1819,26 @@ void MenuUp() {
case ITEM8: case ITEM8:
bandAM++; bandAM++;
if (bandAM > AM_BAND_CNT - 1) bandAM = AM_BAND_ALL; 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) { 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_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; 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_SW: OneBigLineSprite.drawString(myLanguage[language][104], 135, 0); break;
case AM_BAND_NONE: OneBigLineSprite.drawString(myLanguage[language][83], 135, 0); break; case AM_BAND_NONE: OneBigLineSprite.drawString(myLanguage[language][83], 135, 0); break;
} }
#endif
OneBigLineSprite.pushSprite(24, 118); OneBigLineSprite.pushSprite(24, 118);
break; break;
@@ -2589,6 +2642,26 @@ void MenuDown() {
bandAM--; bandAM--;
if (bandAM > AM_BAND_CNT) bandAM = AM_BAND_NONE; 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) { 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_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; 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_SW: OneBigLineSprite.drawString(myLanguage[language][104], 135, 0); break;
case AM_BAND_NONE: OneBigLineSprite.drawString(myLanguage[language][83], 135, 0); break; case AM_BAND_NONE: OneBigLineSprite.drawString(myLanguage[language][83], 135, 0); break;
} }
#endif
OneBigLineSprite.pushSprite(24, 118); OneBigLineSprite.pushSprite(24, 118);
break; break;
@@ -3101,6 +3176,7 @@ void MenuDown() {
OneBigLineSprite.drawString((showSWMIBand ? myLanguage[language][42] : myLanguage[language][30]), 135, 0); OneBigLineSprite.drawString((showSWMIBand ? myLanguage[language][42] : myLanguage[language][30]), 135, 0);
OneBigLineSprite.pushSprite(24, 118); OneBigLineSprite.pushSprite(24, 118);
break; break;
case ITEM5: case ITEM5:
@@ -3455,6 +3531,26 @@ void DoMenu() {
case ITEM8: case ITEM8:
Infoboxprint(myLanguage[language][101]); 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) { 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_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; 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_SW: OneBigLineSprite.drawString(myLanguage[language][104], 135, 0); break;
case AM_BAND_NONE: OneBigLineSprite.drawString(myLanguage[language][83], 135, 0); break; case AM_BAND_NONE: OneBigLineSprite.drawString(myLanguage[language][83], 135, 0); break;
} }
#endif
OneBigLineSprite.pushSprite(24, 118); OneBigLineSprite.pushSprite(24, 118);
break; break;
+87 -69
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][223] PROGMEM = { static const char* const myLanguage[18][224] PROGMEM = {
{ "English", // English { "English", // English
"Rotary direction changed", // 1 "Rotary direction changed", // 1
"Please release button", // 2 "Please release button", // 2
@@ -228,7 +228,8 @@ static const char* const myLanguage[18][223] PROGMEM = {
"Auto cancel scan", // 219 "Auto cancel scan", // 219
"Correct PI", // 220 "Correct PI", // 220
"Signal", // 221 "Signal", // 221
"Mute audio\nwhile scanning" // 222 "Mute audio\nwhile scanning", // 222
"AIR" // 223
}, },
{ "Nederlands", // Dutch { "Nederlands", // Dutch
@@ -453,7 +454,8 @@ static const char* const myLanguage[18][223] PROGMEM = {
"Auto afbreken", // 219 "Auto afbreken", // 219
"Correcte PI", // 220 "Correcte PI", // 220
"Signaal", // 221 "Signaal", // 221
"Geen geluid\ntijdens scannen" // 222 "Geen geluid\ntijdens scannen", // 222
"AIR" // 223
}, },
{ "Polski", // Polish { "Polski", // Polish
@@ -678,7 +680,8 @@ static const char* const myLanguage[18][223] PROGMEM = {
"Automatyczne\nanulowanie skanowania", // 219 "Automatyczne\nanulowanie skanowania", // 219
"Poprawne PI", // 220 "Poprawne PI", // 220
"Sygnał", // 221 "Sygnał", // 221
"Wycisz dźwięk\npodczas skanowania" // 222 "Wycisz dźwięk\npodczas skanowania", // 222
"AIR" // 223
}, },
{ "Hrvatski", // Croatian { "Hrvatski", // Croatian
@@ -903,7 +906,8 @@ static const char* const myLanguage[18][223] PROGMEM = {
"Auto cancel scan", // 219 "Auto cancel scan", // 219
"Correct PI", // 220 "Correct PI", // 220
"Signal", // 221 "Signal", // 221
"Mute audio\nwhile scanning" // 222 "Mute audio\nwhile scanning", // 222
"AIR" // 223
}, },
{ "Ελληνικά", // Greek { "Ελληνικά", // Greek
@@ -1128,7 +1132,8 @@ static const char* const myLanguage[18][223] PROGMEM = {
"Αυτόματη ακύρωση\nανίχνευσης", // 219 "Αυτόματη ακύρωση\nανίχνευσης", // 219
"Σωστό PI", // 220 "Σωστό PI", // 220
"Σήμα", // 221 "Σήμα", // 221
"Σίγαση ήχου\nκατά την ανίχνευση" // 222 "Σίγαση ήχου\nκατά την ανίχνευση", // 222
"AIR" // 223
}, },
{ "Română", // Romanian { "Română", // Romanian
@@ -1353,7 +1358,8 @@ static const char* const myLanguage[18][223] PROGMEM = {
"Auto cancel scan", // 219 "Auto cancel scan", // 219
"Correct PI", // 220 "Correct PI", // 220
"Signal", // 221 "Signal", // 221
"Mute audio\nwhile scanning" // 222 "Mute audio\nwhile scanning", // 222
"AIR" // 223
}, },
{ "Deutsch", // German { "Deutsch", // German
@@ -1578,7 +1584,8 @@ static const char* const myLanguage[18][223] PROGMEM = {
"Automatisches Scan-Ende", // 219 "Automatisches Scan-Ende", // 219
"Korrekter PI-Code", // 220 "Korrekter PI-Code", // 220
"Signal", // 221 "Signal", // 221
"Stumm beim Scannen" // 222 "Stumm beim Scannen", // 222
"AIR" // 223
}, },
{ "Český", // Czech { "Český", // Czech
@@ -1803,7 +1810,8 @@ static const char* const myLanguage[18][223] PROGMEM = {
"Auto cancel scan", // 219 "Auto cancel scan", // 219
"Correct PI", // 220 "Correct PI", // 220
"Signal", // 221 "Signal", // 221
"Mute audio\nwhile scanning" // 222 "Mute audio\nwhile scanning", // 222
"AIR" // 223
}, },
{ "Slovenský", // Slovak { "Slovenský", // Slovak
@@ -2028,7 +2036,8 @@ static const char* const myLanguage[18][223] PROGMEM = {
"Auto cancel scan", // 219 "Auto cancel scan", // 219
"Correct PI", // 220 "Correct PI", // 220
"Signal", // 221 "Signal", // 221
"Mute audio\nwhile scanning" // 222 "Mute audio\nwhile scanning", // 222
"AIR" // 223
}, },
{ "Français", // French { "Français", // French
@@ -2253,7 +2262,8 @@ static const char* const myLanguage[18][223] PROGMEM = {
"Annuler automatiquement", // 219 "Annuler automatiquement", // 219
"PI Correct", // 220 "PI Correct", // 220
"Signal", // 221 "Signal", // 221
"Audio muet lors\nde la numérisation" // 222 "Audio muet lors\nde la numérisation", // 222
"AIR" // 223
}, },
{ "Български", // Bulgarian { "Български", // Bulgarian
@@ -2478,7 +2488,8 @@ static const char* const myLanguage[18][223] PROGMEM = {
"Auto cancel scan", // 219 "Auto cancel scan", // 219
"Correct PI", // 220 "Correct PI", // 220
"Signal", // 221 "Signal", // 221
"Mute audio\nwhile scanning" // 222 "Mute audio\nwhile scanning", // 222
"AIR" // 223
}, },
{ "Русский", // Russian { "Русский", // Russian
@@ -2686,24 +2697,25 @@ static const char* const myLanguage[18][223] PROGMEM = {
"Все", // 202 "Все", // 202
"Быстрый PS", // 203 "Быстрый PS", // 203
"По умолчанию", // 204 "По умолчанию", // 204
"Погасить дисплей при\nподключении XDRGTK", // 205 "Гасить дисплей при\nработе с XDRGTK", // 205
"FMSI стерео\nулучшение", // 206 "FMSI стерео\nулучшение", // 206
"Функция доступна только\nна TEF6687/6689!", // 207 "Доступно только\nна TEF6687/6689", // 207
"Функция недоступна\nна этом оформлении", // 208 "Функция недоступна\nна этом оформлении", // 208
"Begin scanning\nmemory channels", // 209 "Стартовый канал\nпамяти", // 209
"Stop scanning\nmemory channels", // 210 "Конечный канал\nпамяти", // 210
"Wait time", // 211 "Время ожидания", // 211
"Start DX scanning", // 212 "Начать DX-сканирование", // 212
"FM DX Options", // 213 "Настройки FM DX сканера", // 213
"Abort! The start channel\nis marked as skipped.", // 214 "Прервано! Стартовый канал\nпомечен для пропуска.", // 214
"Сортировка AF-частот", // 215 "Сортировка AF-частот", // 215
"Memory channels", // 216 "Логика работы с \nканалами памяти", // 216
"Exclude", // 217 "Кроме", // 217
"Only", // 218 "Только", // 218
"Auto cancel scan", // 219 "Автоматическая отмена \nсканирования", // 219
"Correct PI", // 220 "При корректном PI", // 220
"Signal", // 221 "При наличии сигнала", // 221
"Mute audio\nwhile scanning" // 222 "Отключать аудио\nпри сканировании", // 222
"AIR" // 223
}, },
{ "Українська", // Ukranian { "Українська", // Ukranian
@@ -2928,7 +2940,8 @@ static const char* const myLanguage[18][223] PROGMEM = {
"Auto cancel scan", // 219 "Auto cancel scan", // 219
"Correct PI", // 220 "Correct PI", // 220
"Signal", // 221 "Signal", // 221
"Mute audio\nwhile scanning" // 222 "Mute audio\nwhile scanning", // 222
"AIR" // 223
}, },
{ "Italiano", // Italian { "Italiano", // Italian
@@ -2952,23 +2965,23 @@ static const char* const myLanguage[18][223] PROGMEM = {
"Soglia di basso livello: ", // 18 "Soglia di basso livello: ", // 18
"Contrasto: ", // 19 "Contrasto: ", // 19
"Imposta volume", // 20 "Imposta volume", // 20
"Imp. offset conversione", // 21 "Offset conversione", // 21
"Imp. limite di banda inf.", // 22 "Limite di banda inferiore", // 22
"Imp. limite di banda sup.", // 23 "Limite di banda superiore", // 23
"Imp. offset di livello", // 24 "Offset di livello", // 24
"Imp. soglia separaz. stereo", // 25 "Soglia separazione stereo", // 25
"Imp. frequenza taglio alti", // 26 "Frequenza taglio alti", // 26
"Imp. soglia taglio alti", // 27 "Soglia taglio alti", // 27
"Imp. soglia di livello basso", // 28 "Soglia di livello basso", // 28
"Imp. la luminosità del display", // 29 "Luminosità schermo", // 29
"Off", // 30 *** "Off", // 30 ***
"Schermo disattivato!", // 31 "Schermo disattivato!", // 31
"Deseleziona box RF+ per audio", // 32 "Deseleziona box RF+ per audio", // 32
"OFF", // 33 *** "OFF", // 33 ***
"SCANSIONE...", // 34 "SCANSIONE...", // 34
"Ricevitore non rilevato", // 35 "Ricevitore non rilevato", // 35
"AM Antenna gain", // 36 "Guadagno antenna AM", // 36
"FM AGC", // 37 "AGC FM", // 37
"Mostra errori RDS", // 38 "Mostra errori RDS", // 38
"Lingua", // 39 "Lingua", // 39
"Scegli la lingua", // 40 "Scegli la lingua", // 40
@@ -2987,19 +3000,19 @@ static const char* const myLanguage[18][223] PROGMEM = {
"Connetti a: ", // 53 "Connetti a: ", // 53
"per configurare il Wi-Fi", // 54 "per configurare il Wi-Fi", // 54
"Connessione al Wi-Fi", // 55 "Connessione al Wi-Fi", // 55
"NON RIUSCITA. Wi-Fi inattivo", // 56 "NON RIUSCITA!", // 56
"CONNESSO!", // 57 "CONNESSO!", // 57
"IP per StationList", // 58 "IP per StationList", // 58
"Mostra banda SW in m.", // 59 "Mostra banda SW in m.", // 59
"Filtro RDS", // 60 "Filtro RDS", // 60
"Mostra errori PI", // 61 "Mostra errori PI", // 61
"Mostra squelch", // 62 NEEDS NEW TRANSLATION, ENGLISH: USE SQUELCH "Utilizzare squelch", // 62
"Meter di modulazione", // 63 "Meter di modulazione", // 63
"Soppressione rumore AM", // 64 "Soppressione rumore AM", // 64
"Soppressione rumore FM", // 65 "Soppressione rumore FM", // 65
"Predefiniti caricati", // 66 "Predefiniti caricati", // 66
"Uscita audio", // 67 "Uscita audio", // 67
"Consenti sintonia con salvaschermo", // 68 "Consenti sintonia\ncon salvaschermo", // 68
"Inversione schermo", // 69 "Inversione schermo", // 69
"Info sul software", // 70 "Info sul software", // 70
"Codice principale:", // 71 "Codice principale:", // 71
@@ -3014,9 +3027,9 @@ static const char* const myLanguage[18][223] PROGMEM = {
"Min.", // 80 *** "Min.", // 80 ***
"Velocità SPI Dinamico", // 81 *** "Velocità SPI Dinamico", // 81 ***
"Sensibilità scansione", // 82 "Sensibilità scansione", // 82
"NONE", // 83 represents: AM/FM bands unavailable(please delete this note after translation "ASSENTE", // 83
"Software version", // 84 "Versione Software", // 84
"Frequency font", // 85 *** "Font frequenza", // 85 ***
"Auto", // 86 "Auto", // 86
"AF non disponibile", // 87 "AF non disponibile", // 87
"EON non disponibile", // 88 "EON non disponibile", // 88
@@ -3038,7 +3051,7 @@ static const char* const myLanguage[18][223] PROGMEM = {
"SW", // 104 *** "SW", // 104 ***
"FM", // 105 *** "FM", // 105 ***
"OIRT", // 106 *** "OIRT", // 106 ***
"Rotazione a schermo spento", // 107 *** "Rotazione con schermo spento", // 107 ***
"Selezionare modello", // 108 *** "Selezionare modello", // 108 ***
"Base (ILI9341)", // 109 *** "Base (ILI9341)", // 109 ***
"Portatile (ILI9341)", // 110 *** "Portatile (ILI9341)", // 110 ***
@@ -3100,7 +3113,7 @@ static const char* const myLanguage[18][223] PROGMEM = {
"Identificatore", // 166 *** "Identificatore", // 166 ***
"Acquisto", // 167 *** "Acquisto", // 167 ***
"Ottieni dati", // 168 *** "Ottieni dati", // 168 ***
"Passo di default MW", // 169 *** "Passo di sintonia\nMW predefinito", // 169 ***
"Tangerine", // 170 *** "Tangerine", // 170 ***
"Ocean", // 171 *** "Ocean", // 171 ***
"Indigo", // 172 *** "Indigo", // 172 ***
@@ -3115,7 +3128,7 @@ static const char* const myLanguage[18][223] PROGMEM = {
"Impostazioni FM", // 181 *** "Impostazioni FM", // 181 ***
"Impostazioni AM", // 182 *** "Impostazioni AM", // 182 ***
"Connettività", // 183 *** "Connettività", // 183 ***
"PREMI MODO PER CONFERMARE", // 184 *** "PREMI MODO PER RITORNARE", // 184 ***
"CoChannelDet AM", // 185 "CoChannelDet AM", // 185
"Sensibilità CoChannelDet", // 186 "Sensibilità CoChannelDet", // 186
"Soglia CoChannelDet AM", // 187 "Soglia CoChannelDet AM", // 187
@@ -3136,24 +3149,25 @@ static const char* const myLanguage[18][223] PROGMEM = {
"Tutto", // 202 *** "Tutto", // 202 ***
"PS veloce", // 203 *** "PS veloce", // 203 ***
"Default", // 204 "Default", // 204
"Mute screen on\nXDRGTK connection", // 205 "Spegni schermo se\nconnesso a XDRGTK", // 205
"FMSI stereo\nimprovement", // 206 "FMSI miglioramento\nsuono stereofonico", // 206
"Function only available\non TEF6687/6689!", // 207 "Funzione disponibile\nsolo su TEF6687/6689!", // 207
"Function not available\non selected skin!", // 208 "Funzione non disponibile\nsulla skin selezionata!", // 208
"Begin scanning\nmemory channels", // 209 "Avvio scansione\ncanali in memoria", // 209
"Stop scanning\nmemory channels", // 210 "Fine scansione\ncanali in memoria", // 210
"Wait time", // 211 "Tempo di attesa", // 211
"Start DX scanning", // 212 "Avvio scansione DX", // 212
"FM DX Options", // 213 "Opzioni FM DX", // 213
"Abort! The start channel\nis marked as skipped.", // 214 "Interrotto! Il canale di avvio\nviene saltato.", // 214
"Autoordinamento AF", // 215 "Autoordinamento AF", // 215
"Memory channels", // 216 "Canali di memoria", // 216
"Exclude", // 217 "Escludere", // 217
"Only", // 218 "Solamente", // 218
"Auto cancel scan", // 219 "Fine scansione automatica", // 219
"Correct PI", // 220 "PI corretto", // 220
"Signal", // 221 "Signale", // 221
"Mute audio\nwhile scanning" // 222 "Audio silenziato\ndurante scansione", // 222
"AIR" // 223
}, },
{ "Simplified Chinese", // Simplified Chinese { "Simplified Chinese", // Simplified Chinese
@@ -3378,7 +3392,8 @@ static const char* const myLanguage[18][223] PROGMEM = {
"扫频停台条件", // 219 "扫频停台条件", // 219
"节目识别码正确", // 220 "节目识别码正确", // 220
"信号超阈值", // 221 "信号超阈值", // 221
"扫描时静音" // 222 "扫描时静音", // 222
"AIR" // 223
}, },
{ "Norsk", // Norwegian { "Norsk", // Norwegian
@@ -3603,7 +3618,8 @@ static const char* const myLanguage[18][223] PROGMEM = {
"Avbryt skanning automatisk", // 219 "Avbryt skanning automatisk", // 219
"korrekt PI", // 220 "korrekt PI", // 220
"Signal", // 221 "Signal", // 221
"Demp lyden\nmens du skanner" // 222 "Demp lyden\nmens du skanner", // 222
"AIR" // 223
}, },
{ "Español", // Spanish { "Español", // Spanish
@@ -3828,7 +3844,8 @@ static const char* const myLanguage[18][223] PROGMEM = {
"Cancelar automáticamente\nla búsqueda", // 219 "Cancelar automáticamente\nla búsqueda", // 219
"PI correcto", // 220 "PI correcto", // 220
"Señal", // 221 "Señal", // 221
"Audio mudo\nmientras busca" // 222 "Audio mudo\nmientras busca", // 222
"AIR" // 223
}, },
{ "Português", // Portuguese { "Português", // Portuguese
@@ -4053,7 +4070,8 @@ static const char* const myLanguage[18][223] PROGMEM = {
"Cancelar automatic.\na pesquisa", // 219 "Cancelar automatic.\na pesquisa", // 219
"PI correto", // 220 "PI correto", // 220
"Sinal", // 221 "Sinal", // 221
"Mudo áudio\nenquanto procura" // 222 "Mudo áudio\nenquanto procura", // 222
"AIR" // 223
} }
}; };
#endif #endif