Merge branch 'main' into New_Model_DP_666
# Conflicts: # TEF6686_ESP32.ino
This commit is contained in:
+283
-34
@@ -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
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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
@@ -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
@@ -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
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user