Merge pull request #549 from ohmytime/Air_Band
Air band support [ongoing]
This commit is contained in:
+287
-34
@@ -17,6 +17,7 @@
|
||||
#include "src/FREQFONT.h"
|
||||
#include "src/TEF6686.h"
|
||||
#include "src/constants.h"
|
||||
#include "src/config.h"
|
||||
#include "src/language.h"
|
||||
#include "src/gui.h"
|
||||
#include "src/comms.h"
|
||||
@@ -34,7 +35,6 @@
|
||||
#define STANDBYLED 19
|
||||
#define SMETERPIN 27
|
||||
|
||||
// #define CHINA_PORTABLE // uncomment for China Portable build (Simplified Chinese)
|
||||
#define DYNAMIC_SPI_SPEED // uncomment to enable dynamic SPI Speed https://github.com/ohmytime/TFT_eSPI_DynamicSpeed
|
||||
|
||||
#ifdef ARS
|
||||
@@ -82,6 +82,9 @@ bool memtune;
|
||||
bool menu;
|
||||
bool menuopen;
|
||||
bool mwstepsize;
|
||||
#ifdef HAS_AIR_BAND
|
||||
bool airstepsize;
|
||||
#endif
|
||||
bool nobattery;
|
||||
bool optenc;
|
||||
bool rdsflagreset;
|
||||
@@ -335,6 +338,11 @@ unsigned int frequency_MIBand_75M;
|
||||
unsigned int frequency_MIBand_90M;
|
||||
unsigned int frequency_MW;
|
||||
unsigned int frequency_SW;
|
||||
#ifdef HAS_AIR_BAND
|
||||
unsigned int frequency_AIR;
|
||||
unsigned int AIRHighEdgeSet;
|
||||
unsigned int AIRLowEdgeSet;
|
||||
#endif
|
||||
unsigned int frequencyold;
|
||||
unsigned int HighEdgeOIRTSet;
|
||||
unsigned int HighEdgeSet;
|
||||
@@ -445,6 +453,9 @@ void setup() {
|
||||
frequency_LW = EEPROM.readUInt(EE_UINT16_FREQUENCY_LW);
|
||||
frequency_MW = EEPROM.readUInt(EE_UINT16_FREQUENCY_MW);
|
||||
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);
|
||||
usesquelch = EEPROM.readByte(EE_BYTE_USESQUELCH);
|
||||
showmodulation = EEPROM.readByte(EE_BYTE_SHOWMODULATION);
|
||||
@@ -475,6 +486,9 @@ void setup() {
|
||||
radio.rds.fastps = EEPROM.readByte(EE_BYTE_FASTPS);
|
||||
tot = EEPROM.readByte(EE_BYTE_TOT);
|
||||
mwstepsize = EEPROM.readByte(EE_BYTE_MWREGION);
|
||||
#ifdef HAS_AIR_BAND
|
||||
airstepsize = EEPROM.readByte(EE_BYTE_AIRSTEPSIZE);
|
||||
#endif
|
||||
spispeed = EEPROM.readByte(EE_BYTE_SPISPEED);
|
||||
amscansens = EEPROM.readByte(EE_BYTE_AMSCANSENS);
|
||||
fmscansens = EEPROM.readByte(EE_BYTE_FMSCANSENS);
|
||||
@@ -746,12 +760,10 @@ void setup() {
|
||||
radio.setVolume(VolSet);
|
||||
radio.setOffset(LevelOffset);
|
||||
radio.setAMOffset(AMLevelOffset);
|
||||
|
||||
if (band > BAND_GAP) {
|
||||
if (band > BAND_GAP && band != BAND_AIR) {
|
||||
radio.setAMCoChannel(amcodect, amcodectcount);
|
||||
radio.setAMAttenuation(amgain);
|
||||
}
|
||||
|
||||
radio.setStereoLevel(StereoLevel);
|
||||
radio.setHighCutLevel(HighCutLevel);
|
||||
radio.setHighCutOffset(HighCutOffset);
|
||||
@@ -1252,23 +1264,145 @@ void doBandSelectionFM() {
|
||||
}
|
||||
}
|
||||
|
||||
void CheckBandForbiddenAM () {
|
||||
void CheckBandForbiddenAM() {
|
||||
#ifdef HAS_AIR_BAND
|
||||
switch (band) {
|
||||
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;
|
||||
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;
|
||||
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;
|
||||
}
|
||||
#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() {
|
||||
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) {
|
||||
case AM_BAND_ALL:
|
||||
break;
|
||||
@@ -1313,17 +1447,30 @@ void doBandSelectionAM() {
|
||||
SelectBand();
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void AMjumptoFM() {
|
||||
if (bandFM != FM_BAND_NONE) {
|
||||
if (bandFM == FM_BAND_FM) band = BAND_FM; else band = BAND_OIRT;
|
||||
} else {
|
||||
// do nothing
|
||||
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) {
|
||||
band = BAND_LW;
|
||||
if (stepsize > 3) stepsize = 3;
|
||||
@@ -1332,10 +1479,43 @@ void FMjumptoAM() {
|
||||
} else if (bandAM == AM_BAND_SW) {
|
||||
band = BAND_SW;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void ToggleBand(byte 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:
|
||||
if (bandAM == AM_BAND_LW_MW || bandAM == AM_BAND_ALL) {
|
||||
band = BAND_MW;
|
||||
@@ -1360,8 +1540,9 @@ void ToggleBand(byte nowBand) {
|
||||
break;
|
||||
case BAND_SW:
|
||||
if (bandFM != FM_BAND_NONE) {
|
||||
if (bandFM == FM_BAND_FM) band = BAND_FM; else band = BAND_OIRT;
|
||||
} else {
|
||||
if (bandFM == FM_BAND_FM) band = BAND_FM;
|
||||
else band = BAND_OIRT;
|
||||
} else { // FM be disabled
|
||||
if (bandAM == AM_BAND_LW_SW || bandAM == AM_BAND_ALL) {
|
||||
band = BAND_LW;
|
||||
} else if (bandAM == AM_BAND_MW_SW) {
|
||||
@@ -1371,6 +1552,7 @@ void ToggleBand(byte nowBand) {
|
||||
}
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
case BAND_OIRT:
|
||||
if (bandFM == FM_BAND_ALL || bandFM == FM_BAND_FM) {
|
||||
band = BAND_FM;
|
||||
@@ -1472,10 +1654,13 @@ void StoreFrequency() {
|
||||
EEPROM.writeUInt(EE_UINT16_FREQUENCY_LW, frequency_LW);
|
||||
EEPROM.writeUInt(EE_UINT16_FREQUENCY_MW, frequency_MW);
|
||||
EEPROM.writeUInt(EE_UINT16_FREQUENCY_SW, frequency_SW);
|
||||
#ifdef HAS_AIR_BAND
|
||||
EEPROM.writeUInt(EE_UINT16_FREQUENCY_AIR, frequency_AIR);
|
||||
#endif
|
||||
EEPROM.commit();
|
||||
}
|
||||
|
||||
void LimitAMFrequency() {
|
||||
void LimitAMFrequency() {//todo air
|
||||
switch (band) {
|
||||
case BAND_LW:
|
||||
frequency_AM = frequency_LW;
|
||||
@@ -1853,10 +2038,23 @@ void SelectBand() {
|
||||
case BAND_LW: freqold = frequency_LW; frequency_AM = frequency_LW; break;
|
||||
case BAND_MW: freqold = frequency_MW; frequency_AM = frequency_MW; 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();
|
||||
if (!externaltune) CheckBandForbiddenAM();
|
||||
#ifdef HAS_AIR_BAND
|
||||
if (band == BAND_AIR) {
|
||||
radio.SetFreqAIR(10700);
|
||||
log_d("BAND SELECT -> 航空的频率: %d",frequency_AIR);
|
||||
} else {
|
||||
radio.SetFreqAM(frequency_AM);
|
||||
}
|
||||
#else
|
||||
radio.SetFreqAM(frequency_AM);
|
||||
#endif
|
||||
log_d("BAND SELECT -> 现在的频率: %d",frequency_AM);
|
||||
radio.setAMAttenuation(amgain);
|
||||
radio.setAMCoChannel(amcodect, amcodectcount);
|
||||
doBW();
|
||||
@@ -1876,7 +2074,11 @@ void SelectBand() {
|
||||
tftPrint(0, "iMS", 265, 59, GreyoutColor, BackgroundColor, 16);
|
||||
tft.drawRoundRect(286, 56, 32, 20, 5, GreyoutColor);
|
||||
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);
|
||||
}
|
||||
log_d("BAND SELECT -> 现在的波段: %d",band);
|
||||
} else {
|
||||
if (tunemode == TUNE_MI_BAND) tunemode = TUNE_MAN;
|
||||
radio.power(0);
|
||||
@@ -2111,7 +2313,7 @@ void Round5K(unsigned int freqAM) {
|
||||
}
|
||||
}
|
||||
|
||||
void RoundStep() {
|
||||
void RoundStep() {//todo air
|
||||
if (band == BAND_FM) {
|
||||
unsigned int freq = frequency;
|
||||
switch (fmdefaultstepsize) {
|
||||
@@ -2166,7 +2368,7 @@ void ButtonPress() {
|
||||
EEPROM.writeByte(memorypos + EE_PRESETS_BAND_START, band);
|
||||
EEPROM.writeByte(memorypos + EE_PRESET_BW_START, BWset);
|
||||
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);
|
||||
} else if (band == BAND_OIRT) {
|
||||
EEPROM.writeUInt((memorypos * 4) + EE_PRESETS_FREQUENCY_START, frequency_OIRT);
|
||||
@@ -2200,7 +2402,7 @@ void ButtonPress() {
|
||||
|
||||
EEPROM.commit();
|
||||
|
||||
if (band == BAND_FM) {
|
||||
if (band == BAND_FM) {//todo air
|
||||
presets[memorypos].frequency = frequency;
|
||||
} else if (band == BAND_OIRT) {
|
||||
presets[memorypos].frequency = frequency_OIRT;
|
||||
@@ -2506,22 +2708,36 @@ void DoMemoryPosTune() {
|
||||
band = presets[memorypos].band;
|
||||
}
|
||||
|
||||
if (band == BAND_FM) {
|
||||
frequency = presets[memorypos].frequency;
|
||||
radio.SetFreq(frequency);
|
||||
} else if (band == BAND_OIRT) {
|
||||
frequency_OIRT = presets[memorypos].frequency;
|
||||
radio.SetFreq(frequency_OIRT);
|
||||
} else if (band == BAND_LW) {
|
||||
frequency_LW = presets[memorypos].frequency;
|
||||
radio.SetFreqAM(frequency_LW);
|
||||
} else if (band == BAND_MW) {
|
||||
frequency_MW = presets[memorypos].frequency;
|
||||
radio.SetFreqAM(frequency_MW);
|
||||
} else if (band == BAND_SW) {
|
||||
frequency_SW = presets[memorypos].frequency;
|
||||
radio.SetFreqAM(frequency_SW);
|
||||
switch (band) {
|
||||
case BAND_FM:
|
||||
frequency = presets[memorypos].frequency;
|
||||
radio.SetFreq(frequency);
|
||||
break;
|
||||
case BAND_OIRT:
|
||||
frequency = presets[memorypos].frequency;
|
||||
radio.SetFreq(frequency_OIRT);
|
||||
break;
|
||||
case BAND_LW:
|
||||
frequency = presets[memorypos].frequency;
|
||||
radio.SetFreq(frequency_LW);
|
||||
break;
|
||||
case BAND_MW:
|
||||
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);
|
||||
|
||||
if (band == BAND_FM || band == BAND_OIRT) {
|
||||
@@ -2593,6 +2809,9 @@ void ShowFreq(int mode) {
|
||||
case BAND_LW: frequency_AM = frequency_LW; break;
|
||||
case BAND_MW: frequency_AM = frequency_MW; 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) {
|
||||
@@ -2609,7 +2828,11 @@ void ShowFreq(int mode) {
|
||||
|
||||
FrequencySprite.setTextDatum(TR_DATUM);
|
||||
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.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
|
||||
FrequencySprite.setTextDatum(TL_DATUM);
|
||||
@@ -3071,7 +3294,7 @@ void doSquelch() {
|
||||
SquelchSprite.unloadFont();
|
||||
}
|
||||
|
||||
void updateBW() {
|
||||
void updateBW() {//todo air
|
||||
if (BWset == 0) {
|
||||
if (!screenmute && !advancedRDS && !afscreen) {
|
||||
tft.drawRoundRect(248, 35, 71, 20, 5, ActiveColor);
|
||||
@@ -3123,7 +3346,8 @@ void updateEQ() {
|
||||
}
|
||||
|
||||
void updateCodetect() {
|
||||
if (band > BAND_GAP) {
|
||||
if (
|
||||
band > BAND_GAP && band != BAND_AIR) {
|
||||
if (WAM) {
|
||||
tftPrint(-1, "CO", 50, 61, PrimaryColor, PrimaryColorSmooth, 16);
|
||||
} else {
|
||||
@@ -3433,10 +3657,18 @@ void TuneUp() {
|
||||
} else if (frequency_AM < MWLowEdgeSet) {
|
||||
temp = 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;
|
||||
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;
|
||||
log_d("tune up airband stepsize = %d",airstepsize);
|
||||
}
|
||||
#endif
|
||||
} else {
|
||||
if (band == BAND_OIRT) {
|
||||
temp = FREQ_OIRT_STEP_30K;
|
||||
@@ -3501,6 +3733,18 @@ void TuneUp() {
|
||||
radio.SetFreqAM(frequency_AM);
|
||||
frequency_SW = frequency_AM;
|
||||
}
|
||||
#ifdef HAS_AIR_BAND
|
||||
else if (band == BAND_AIR) {
|
||||
log_d("tune up airband = %d",frequency_AM);
|
||||
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);
|
||||
if (RDSSPYUSB) Serial.print("G:\r\nRESET-------\r\n\r\n");
|
||||
if (RDSSPYTCP) RemoteClient.print("G:\r\nRESET-------\r\n\r\n");
|
||||
@@ -3759,6 +4003,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_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);
|
||||
#ifdef HAS_AIR_BAND
|
||||
EEPROM.writeUInt(EE_UINT16_FREQUENCY_AIR, 135350);
|
||||
#endif
|
||||
EEPROM.writeString(EE_STRING_XDRGTK_KEY, "password");
|
||||
if (userhardwaremodel == BASE_ILI9341) EEPROM.writeByte(EE_BYTE_USESQUELCH, 1); else EEPROM.writeByte(EE_BYTE_USESQUELCH, 0);
|
||||
EEPROM.writeByte(EE_BYTE_SHOWMODULATION, 1);
|
||||
@@ -3790,6 +4037,9 @@ void DefaultSettings(byte userhardwaremodel) {
|
||||
EEPROM.writeByte(EE_BYTE_FASTPS, 1);
|
||||
EEPROM.writeByte(EE_BYTE_TOT, 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_AMSCANSENS, 4);
|
||||
EEPROM.writeByte(EE_BYTE_FMSCANSENS, 4);
|
||||
@@ -4016,6 +4266,9 @@ void endMenu() {
|
||||
EEPROM.writeByte(EE_BYTE_FASTPS, radio.rds.fastps);
|
||||
EEPROM.writeByte(EE_BYTE_TOT, tot);
|
||||
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_AMSCANSENS, amscansens);
|
||||
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) {
|
||||
Tuner_Init(tuner_init_tab9216);
|
||||
log_v("XTAL : 9.216M");
|
||||
log_d("TEF668X XTAL : 9.216M");
|
||||
} else if (xtalADC > XTAL_1V_ADC - XTAL_ADC_TOL && xtalADC < XTAL_1V_ADC + XTAL_ADC_TOL) {
|
||||
Tuner_Init(tuner_init_tab12000);
|
||||
log_v("XTAL : 12M");
|
||||
log_d("TEF668X XTAL : 12M");
|
||||
} else if (xtalADC > XTAL_2V_ADC - XTAL_ADC_TOL && xtalADC < XTAL_2V_ADC + XTAL_ADC_TOL) {
|
||||
Tuner_Init(tuner_init_tab55000);
|
||||
log_v("XTAL : 55M");
|
||||
log_d("TEF668X XTAL : 55M");
|
||||
} else {
|
||||
Tuner_Init(tuner_init_tab4000);
|
||||
log_v("XTAL : 4M");
|
||||
log_d("TEF668X XTAL : 4M");
|
||||
}
|
||||
power(1);
|
||||
Tuner_Init(tuner_init_tab);
|
||||
@@ -178,6 +178,10 @@ void TEF6686::SetFreqAM(uint16_t frequency) {
|
||||
devTEF_Radio_Tune_AM (frequency);
|
||||
}
|
||||
|
||||
void TEF6686::SetFreqAIR(uint16_t frequency) {
|
||||
devTEF_Radio_Tune_AM (10700);
|
||||
}
|
||||
|
||||
void TEF6686::setOffset(int8_t offset) {
|
||||
devTEF_Radio_Set_LevelOffset(offset * 10);
|
||||
}
|
||||
|
||||
@@ -660,6 +660,7 @@ class TEF6686 {
|
||||
void readRDS(byte showrdserrors);
|
||||
void SetFreq(uint16_t frequency);
|
||||
void SetFreqAM(uint16_t frequency);
|
||||
void SetFreqAIR(uint16_t frequency);
|
||||
bool getProcessing(uint16_t &highcut, uint16_t &stereo, uint16_t &sthiblend, uint8_t &stband_1, uint8_t &stband_2, uint8_t &stband_3, uint8_t &stband_4);
|
||||
bool getStatus(int16_t &level, uint16_t &USN, uint16_t &WAM, int16_t &offset, uint16_t &bandwidth, uint16_t &modulation, int8_t &snr);
|
||||
bool getStatusAM(int16_t &level, uint16_t &noise, uint16_t &cochannel, int16_t &offset, uint16_t &bandwidth, uint16_t &modulation, int8_t &snr);
|
||||
|
||||
@@ -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 OFF 0
|
||||
#define REVERSE false
|
||||
@@ -33,6 +35,10 @@
|
||||
#define FREQ_MW_STEP_9K 9
|
||||
#define FREQ_MW_STEP_10K 10
|
||||
#define FREQ_SW_STEP_5K 5
|
||||
#ifdef HAS_AIR_BAND
|
||||
#define FREQ_AIR_STEP_25K 25
|
||||
#define FREQ_AIR_STEP_8K33 8.33
|
||||
#endif
|
||||
#define FREQ_OIRT_STEP_30K 3
|
||||
#define FREQ_FM_STEP_50K 5
|
||||
#define FREQ_FM_STEP_100K 10
|
||||
@@ -48,6 +54,10 @@
|
||||
#define FREQ_SW_LOW_EDGE_MAX (FREQ_SW_160M_START)
|
||||
#define FREQ_SW_HIGH_EDGE_MIN (FREQ_SW_11M_END)
|
||||
#define FREQ_SW_HIGH_EDGE_MAX (FREQ_SW_END)
|
||||
#ifdef HAS_AIR_BAND
|
||||
#define FREQ_AIR_LOW_EDGE_MIN 108000
|
||||
#define FREQ_AIR_HIGH_EDGE_MIN 137000
|
||||
#endif
|
||||
#define FREQ_FM_START 65000
|
||||
#define FREQ_FM_END 108000
|
||||
#define FREQ_FM_OIRT_START 6500 // use values of 1/10 * kHz
|
||||
@@ -196,9 +206,13 @@
|
||||
|
||||
// EEPROM index defines
|
||||
#define EE_PRESETS_CNT 99 // When set > 99 change the complete EEPROM adressing!
|
||||
#define EE_CHECKBYTE_VALUE 7 // 0 ~ 255,add new entry, change for new value
|
||||
#define EE_CHECKBYTE_VALUE 10 // 0 ~ 255,add new entry, change for new value
|
||||
#define EE_PRESETS_FREQUENCY 0 // Default value when memory channel should be skipped!
|
||||
#ifdef HAS_AIR_BAND
|
||||
#define EE_TOTAL_CNT 2219 // Total occupied eeprom bytes
|
||||
#else
|
||||
#define EE_TOTAL_CNT 2214 // Total occupied eeprom bytes
|
||||
#endif
|
||||
|
||||
#define EE_PRESETS_BAND_START 0 // 99 * 1 byte
|
||||
#define EE_PRESET_BW_START 99 // 99 * 1 byte
|
||||
@@ -296,6 +310,10 @@
|
||||
#define EE_BYTE_SCANMEM 2211
|
||||
#define EE_BYTE_SCANCANCEL 2212
|
||||
#define EE_BYTE_SCANMUTE 2213
|
||||
#ifdef HAS_AIR_BAND
|
||||
#define EE_BYTE_AIRSTEPSIZE 2114
|
||||
#define EE_UINT16_FREQUENCY_AIR 2215
|
||||
#endif
|
||||
// End of EEPROM index defines
|
||||
|
||||
static const char* const unitString[] = {"dBμV", "dBf", "dBm"};
|
||||
@@ -319,15 +337,28 @@ enum SCAN_CANCEL {
|
||||
|
||||
// FM band: before BAND_GAP; AM band: after BAND_GAP
|
||||
enum RADIO_BAND {
|
||||
BAND_OIRT = 0, BAND_FM, BAND_GAP, BAND_LW, BAND_MW, BAND_SW
|
||||
BAND_OIRT = 0, BAND_FM, BAND_GAP, BAND_LW, BAND_MW, BAND_SW, BAND_AIR
|
||||
};
|
||||
|
||||
#ifndef HAS_AIR_BAND
|
||||
// Toggle: LW -> MW -> SW
|
||||
enum RADIO_AM_BAND_SELECTION {
|
||||
AM_BAND_ALL = 0, AM_BAND_LW_MW, AM_BAND_LW_SW, AM_BAND_MW_SW,
|
||||
AM_BAND_LW, AM_BAND_MW, AM_BAND_SW, AM_BAND_NONE,
|
||||
AM_BAND_CNT
|
||||
};
|
||||
#else
|
||||
// Toggle: LW -> MW -> SW -> AIR
|
||||
enum RADIO_AM_BAND_SELECTION {
|
||||
AM_BAND_ALL = 0,
|
||||
AM_BAND_LW_MW_SW, AM_BAND_LW_MW_AIR, AM_BAND_LW_SW_AIR, AM_BAND_MW_SW_AIR,
|
||||
AM_BAND_LW_MW, AM_BAND_LW_SW, AM_BAND_LW_AIR,
|
||||
AM_BAND_MW_SW, AM_BAND_MW_AIR,
|
||||
AM_BAND_SW_AIR,
|
||||
AM_BAND_LW, AM_BAND_MW, AM_BAND_SW, AM_BAND_AIR, AM_BAND_NONE,
|
||||
AM_BAND_CNT
|
||||
};
|
||||
#endif /* end of HAS_AIR_BAND */
|
||||
|
||||
// Toggle: OIRT -> FM
|
||||
enum RADIO_FM_BAND_SELECTION {
|
||||
|
||||
+103
-5
@@ -1,6 +1,7 @@
|
||||
#include "gui.h"
|
||||
#include "language.h"
|
||||
#include "constants.h"
|
||||
#include "config.h"
|
||||
#include <WiFi.h>
|
||||
#include <Wire.h>
|
||||
#include <EEPROM.h>
|
||||
@@ -1193,7 +1194,27 @@ void ShowOneLine(byte position, byte item, bool selected) {
|
||||
|
||||
FullLineSprite.setTextDatum(TR_DATUM);
|
||||
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
|
||||
|
||||
#ifdef HAS_AIR_BAND
|
||||
switch (bandAM) {
|
||||
case AM_BAND_ALL: FullLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][103] + String(",") + myLanguage[language][104] + String(",") + myLanguage[language][223], 298, 3); break;
|
||||
case AM_BAND_LW_MW_SW: FullLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][103] + String(",") + myLanguage[language][104], 298, 3); break;
|
||||
case AM_BAND_LW_MW_AIR: FullLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][103] + String(",") + myLanguage[language][223], 298, 3); break;
|
||||
case AM_BAND_LW_SW_AIR: FullLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][104] + String(",") + myLanguage[language][223], 298, 3); break;
|
||||
case AM_BAND_MW_SW_AIR: FullLineSprite.drawString(myLanguage[language][103] + String(",") + myLanguage[language][104] + String(",") + myLanguage[language][223], 298, 3); break;
|
||||
case AM_BAND_LW_MW: FullLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][103], 298, 3); break;
|
||||
case AM_BAND_LW_SW: FullLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][104], 298, 3); break;
|
||||
case AM_BAND_LW_AIR: FullLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][223], 298, 3); break;
|
||||
case AM_BAND_MW_SW: FullLineSprite.drawString(myLanguage[language][103] + String(",") + myLanguage[language][104], 298, 3); break;
|
||||
case AM_BAND_MW_AIR: FullLineSprite.drawString(myLanguage[language][103] + String(",") + myLanguage[language][223], 298, 3); break;
|
||||
case AM_BAND_SW_AIR: FullLineSprite.drawString(myLanguage[language][104] + String(",") + myLanguage[language][223], 298, 3); break;
|
||||
case AM_BAND_LW: FullLineSprite.drawString(myLanguage[language][102], 298, 3); break;
|
||||
case AM_BAND_MW: FullLineSprite.drawString(myLanguage[language][103], 298, 3); break;
|
||||
case AM_BAND_SW: FullLineSprite.drawString(myLanguage[language][104], 298, 3); break;
|
||||
case AM_BAND_AIR: FullLineSprite.drawString(myLanguage[language][223], 298, 3); break;
|
||||
case AM_BAND_NONE: FullLineSprite.drawString(myLanguage[language][83], 298, 3); break;
|
||||
}
|
||||
break;
|
||||
#else
|
||||
switch (bandAM) {
|
||||
case AM_BAND_ALL: FullLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][103] + String(",") + myLanguage[language][104], 298, 3); break;
|
||||
case AM_BAND_LW_MW: FullLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][103], 298, 3); break;
|
||||
@@ -1204,7 +1225,8 @@ void ShowOneLine(byte position, byte item, bool selected) {
|
||||
case AM_BAND_SW: FullLineSprite.drawString(myLanguage[language][104], 298, 3); break;
|
||||
case AM_BAND_NONE: FullLineSprite.drawString(myLanguage[language][83], 298, 3); break;
|
||||
}
|
||||
break;
|
||||
break;
|
||||
#endif
|
||||
|
||||
case DISPLAYSETTINGS:
|
||||
FullLineSprite.setTextDatum(TL_DATUM);
|
||||
@@ -1618,10 +1640,22 @@ void BuildDisplay() {
|
||||
case BAND_LW: tftPrint(-1, myLanguage[language][102], 70, 32, bandColor, PrimaryColorSmooth, 16); break;
|
||||
case BAND_MW: tftPrint(-1, myLanguage[language][103], 70, 32, bandColor, PrimaryColorSmooth, 16); break;
|
||||
case BAND_SW: tftPrint(-1, myLanguage[language][104], 70, 32, bandColor, PrimaryColorSmooth, 16); break;
|
||||
#ifdef HAS_AIR_BAND
|
||||
case BAND_AIR: tftPrint(-1, myLanguage[language][223], 70, 32, bandColor, PrimaryColorSmooth, 16); break;
|
||||
#endif
|
||||
case BAND_FM: tftPrint(-1, myLanguage[language][105], 70, 32, bandColor, PrimaryColorSmooth, 16); break;
|
||||
case BAND_OIRT: tftPrint(-1, myLanguage[language][106], 70, 32, bandColor, PrimaryColorSmooth, 16); break;
|
||||
}
|
||||
if (band < BAND_GAP) tftPrint(-1, "MHz", 258, 76, ActiveColor, ActiveColorSmooth, 28); else tftPrint(-1, "kHz", 258, 76, ActiveColor, ActiveColorSmooth, 28);
|
||||
if (band < BAND_GAP) tftPrint(-1, "MHz", 258, 76, ActiveColor, ActiveColorSmooth, 28);
|
||||
else {
|
||||
#ifdef HAS_AIR_BAND
|
||||
if (band == AM_BAND_AIR)
|
||||
tftPrint(-1, "MHz", 258, 76, ActiveColor, ActiveColorSmooth, 28);
|
||||
else tftPrint(-1, "KHz", 258, 76, ActiveColor, ActiveColorSmooth, 28);
|
||||
#else
|
||||
tftPrint(-1, "KHz", 258, 76, ActiveColor, ActiveColorSmooth, 28);
|
||||
#endif
|
||||
}
|
||||
|
||||
RDSstatusold = false;
|
||||
Stereostatusold = false;
|
||||
@@ -1785,7 +1819,26 @@ void MenuUp() {
|
||||
case ITEM8:
|
||||
bandAM++;
|
||||
if (bandAM > AM_BAND_CNT - 1) bandAM = AM_BAND_ALL;
|
||||
|
||||
#ifdef HAS_AIR_BAND
|
||||
switch (bandAM) {
|
||||
case AM_BAND_ALL: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][103] + String(",") + myLanguage[language][104]+ String(",") + myLanguage[language][223], 135, 0); break;
|
||||
case AM_BAND_LW_MW_SW: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][103] + String(",") + myLanguage[language][104], 135, 0); break;
|
||||
case AM_BAND_LW_MW_AIR: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][103] + String(",") + myLanguage[language][223], 135, 0); break;
|
||||
case AM_BAND_LW_SW_AIR: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][104] + String(",") + myLanguage[language][223], 135, 0); break;
|
||||
case AM_BAND_MW_SW_AIR: OneBigLineSprite.drawString(myLanguage[language][103] + String(",") + myLanguage[language][104] + String(",") + myLanguage[language][223], 135, 0); break;
|
||||
case AM_BAND_LW_MW: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][103], 135, 0); break;
|
||||
case AM_BAND_LW_SW: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][104], 135, 0); break;
|
||||
case AM_BAND_LW_AIR: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][223], 135, 0); break;
|
||||
case AM_BAND_MW_SW: OneBigLineSprite.drawString(myLanguage[language][103] + String(",") + myLanguage[language][104], 135, 0); break;
|
||||
case AM_BAND_MW_AIR: OneBigLineSprite.drawString(myLanguage[language][103] + String(",") + myLanguage[language][223], 135, 0); break;
|
||||
case AM_BAND_SW_AIR: OneBigLineSprite.drawString(myLanguage[language][104] + String(",") + myLanguage[language][223], 135, 0); break;
|
||||
case AM_BAND_LW: OneBigLineSprite.drawString(myLanguage[language][102], 135, 0); break;
|
||||
case AM_BAND_MW: OneBigLineSprite.drawString(myLanguage[language][103], 135, 0); break;
|
||||
case AM_BAND_SW: OneBigLineSprite.drawString(myLanguage[language][104], 135, 0); break;
|
||||
case AM_BAND_AIR: OneBigLineSprite.drawString(myLanguage[language][223], 135, 0); break;
|
||||
case AM_BAND_NONE: OneBigLineSprite.drawString(myLanguage[language][83], 135, 0); break;
|
||||
}
|
||||
#else
|
||||
switch (bandAM) {
|
||||
case AM_BAND_ALL: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][103] + String(",") + myLanguage[language][104], 135, 0); break;
|
||||
case AM_BAND_LW_MW: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][103], 135, 0); break;
|
||||
@@ -1796,7 +1849,7 @@ void MenuUp() {
|
||||
case AM_BAND_SW: OneBigLineSprite.drawString(myLanguage[language][104], 135, 0); break;
|
||||
case AM_BAND_NONE: OneBigLineSprite.drawString(myLanguage[language][83], 135, 0); break;
|
||||
}
|
||||
|
||||
#endif
|
||||
OneBigLineSprite.pushSprite(24, 118);
|
||||
break;
|
||||
|
||||
@@ -2589,6 +2642,26 @@ void MenuDown() {
|
||||
bandAM--;
|
||||
if (bandAM > AM_BAND_CNT) bandAM = AM_BAND_NONE;
|
||||
|
||||
#ifdef HAS_AIR_BAND
|
||||
switch (bandAM) {
|
||||
case AM_BAND_ALL: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][103] + String(",") + myLanguage[language][104]+ String(",") + myLanguage[language][223], 135, 0); break;
|
||||
case AM_BAND_LW_MW_SW: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][103] + String(",") + myLanguage[language][104], 135, 0); break;
|
||||
case AM_BAND_LW_MW_AIR: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][103] + String(",") + myLanguage[language][223], 135, 0); break;
|
||||
case AM_BAND_LW_SW_AIR: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][104] + String(",") + myLanguage[language][223], 135, 0); break;
|
||||
case AM_BAND_MW_SW_AIR: OneBigLineSprite.drawString(myLanguage[language][103] + String(",") + myLanguage[language][104] + String(",") + myLanguage[language][223], 135, 0); break;
|
||||
case AM_BAND_LW_MW: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][103], 135, 0); break;
|
||||
case AM_BAND_LW_SW: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][104], 135, 0); break;
|
||||
case AM_BAND_LW_AIR: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][223], 135, 0); break;
|
||||
case AM_BAND_MW_SW: OneBigLineSprite.drawString(myLanguage[language][103] + String(",") + myLanguage[language][104], 135, 0); break;
|
||||
case AM_BAND_MW_AIR: OneBigLineSprite.drawString(myLanguage[language][103] + String(",") + myLanguage[language][223], 135, 0); break;
|
||||
case AM_BAND_SW_AIR: OneBigLineSprite.drawString(myLanguage[language][104] + String(",") + myLanguage[language][223], 135, 0); break;
|
||||
case AM_BAND_LW: OneBigLineSprite.drawString(myLanguage[language][102], 135, 0); break;
|
||||
case AM_BAND_MW: OneBigLineSprite.drawString(myLanguage[language][103], 135, 0); break;
|
||||
case AM_BAND_SW: OneBigLineSprite.drawString(myLanguage[language][104], 135, 0); break;
|
||||
case AM_BAND_AIR: OneBigLineSprite.drawString(myLanguage[language][223], 135, 0); break;
|
||||
case AM_BAND_NONE: OneBigLineSprite.drawString(myLanguage[language][83], 135, 0); break;
|
||||
}
|
||||
#else
|
||||
switch (bandAM) {
|
||||
case AM_BAND_ALL: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][103] + String(",") + myLanguage[language][104], 135, 0); break;
|
||||
case AM_BAND_LW_MW: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][103], 135, 0); break;
|
||||
@@ -2599,6 +2672,8 @@ void MenuDown() {
|
||||
case AM_BAND_SW: OneBigLineSprite.drawString(myLanguage[language][104], 135, 0); break;
|
||||
case AM_BAND_NONE: OneBigLineSprite.drawString(myLanguage[language][83], 135, 0); break;
|
||||
}
|
||||
#endif
|
||||
|
||||
OneBigLineSprite.pushSprite(24, 118);
|
||||
break;
|
||||
|
||||
@@ -3101,6 +3176,7 @@ void MenuDown() {
|
||||
|
||||
OneBigLineSprite.drawString((showSWMIBand ? myLanguage[language][42] : myLanguage[language][30]), 135, 0);
|
||||
OneBigLineSprite.pushSprite(24, 118);
|
||||
|
||||
break;
|
||||
|
||||
case ITEM5:
|
||||
@@ -3455,6 +3531,26 @@ void DoMenu() {
|
||||
case ITEM8:
|
||||
Infoboxprint(myLanguage[language][101]);
|
||||
|
||||
#ifdef HAS_AIR_BAND
|
||||
switch (bandAM) {
|
||||
case AM_BAND_ALL: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][103] + String(",") + myLanguage[language][104]+ String(",") + myLanguage[language][223], 135, 0); break;
|
||||
case AM_BAND_LW_MW_SW: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][103] + String(",") + myLanguage[language][104], 135, 0); break;
|
||||
case AM_BAND_LW_MW_AIR: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][103] + String(",") + myLanguage[language][223], 135, 0); break;
|
||||
case AM_BAND_LW_SW_AIR: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][104] + String(",") + myLanguage[language][223], 135, 0); break;
|
||||
case AM_BAND_MW_SW_AIR: OneBigLineSprite.drawString(myLanguage[language][103] + String(",") + myLanguage[language][104] + String(",") + myLanguage[language][223], 135, 0); break;
|
||||
case AM_BAND_LW_MW: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][103], 135, 0); break;
|
||||
case AM_BAND_LW_SW: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][104], 135, 0); break;
|
||||
case AM_BAND_LW_AIR: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][223], 135, 0); break;
|
||||
case AM_BAND_MW_SW: OneBigLineSprite.drawString(myLanguage[language][103] + String(",") + myLanguage[language][104], 135, 0); break;
|
||||
case AM_BAND_MW_AIR: OneBigLineSprite.drawString(myLanguage[language][103] + String(",") + myLanguage[language][223], 135, 0); break;
|
||||
case AM_BAND_SW_AIR: OneBigLineSprite.drawString(myLanguage[language][104] + String(",") + myLanguage[language][223], 135, 0); break;
|
||||
case AM_BAND_LW: OneBigLineSprite.drawString(myLanguage[language][102], 135, 0); break;
|
||||
case AM_BAND_MW: OneBigLineSprite.drawString(myLanguage[language][103], 135, 0); break;
|
||||
case AM_BAND_SW: OneBigLineSprite.drawString(myLanguage[language][104], 135, 0); break;
|
||||
case AM_BAND_AIR: OneBigLineSprite.drawString(myLanguage[language][223], 135, 0); break;
|
||||
case AM_BAND_NONE: OneBigLineSprite.drawString(myLanguage[language][83], 135, 0); break;
|
||||
}
|
||||
#else
|
||||
switch (bandAM) {
|
||||
case AM_BAND_ALL: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][103] + String(",") + myLanguage[language][104], 135, 0); break;
|
||||
case AM_BAND_LW_MW: OneBigLineSprite.drawString(myLanguage[language][102] + String(",") + myLanguage[language][103], 135, 0); break;
|
||||
@@ -3465,6 +3561,8 @@ void DoMenu() {
|
||||
case AM_BAND_SW: OneBigLineSprite.drawString(myLanguage[language][104], 135, 0); break;
|
||||
case AM_BAND_NONE: OneBigLineSprite.drawString(myLanguage[language][83], 135, 0); break;
|
||||
}
|
||||
#endif
|
||||
|
||||
OneBigLineSprite.pushSprite(24, 118);
|
||||
break;
|
||||
|
||||
|
||||
+37
-19
@@ -5,7 +5,7 @@
|
||||
|
||||
// [number of languages][number of texts]
|
||||
// *** means the text is the same as in English
|
||||
static const char* const myLanguage[18][223] PROGMEM = {
|
||||
static const char* const myLanguage[18][224] PROGMEM = {
|
||||
{ "English", // English
|
||||
"Rotary direction changed", // 1
|
||||
"Please release button", // 2
|
||||
@@ -228,7 +228,8 @@ static const char* const myLanguage[18][223] PROGMEM = {
|
||||
"Auto cancel scan", // 219
|
||||
"Correct PI", // 220
|
||||
"Signal", // 221
|
||||
"Mute audio\nwhile scanning" // 222
|
||||
"Mute audio\nwhile scanning", // 222
|
||||
"AIR" // 223
|
||||
},
|
||||
|
||||
{ "Nederlands", // Dutch
|
||||
@@ -453,7 +454,8 @@ static const char* const myLanguage[18][223] PROGMEM = {
|
||||
"Auto afbreken", // 219
|
||||
"Correcte PI", // 220
|
||||
"Signaal", // 221
|
||||
"Geen geluid\ntijdens scannen" // 222
|
||||
"Geen geluid\ntijdens scannen", // 222
|
||||
"AIR" // 223
|
||||
},
|
||||
|
||||
{ "Polski", // Polish
|
||||
@@ -678,7 +680,8 @@ static const char* const myLanguage[18][223] PROGMEM = {
|
||||
"Automatyczne\nanulowanie skanowania", // 219
|
||||
"Poprawne PI", // 220
|
||||
"Sygnał", // 221
|
||||
"Wycisz dźwięk\npodczas skanowania" // 222
|
||||
"Wycisz dźwięk\npodczas skanowania", // 222
|
||||
"AIR" // 223
|
||||
},
|
||||
|
||||
{ "Hrvatski", // Croatian
|
||||
@@ -903,7 +906,8 @@ static const char* const myLanguage[18][223] PROGMEM = {
|
||||
"Auto cancel scan", // 219
|
||||
"Correct PI", // 220
|
||||
"Signal", // 221
|
||||
"Mute audio\nwhile scanning" // 222
|
||||
"Mute audio\nwhile scanning", // 222
|
||||
"AIR" // 223
|
||||
},
|
||||
|
||||
{ "Ελληνικά", // Greek
|
||||
@@ -1128,7 +1132,8 @@ static const char* const myLanguage[18][223] PROGMEM = {
|
||||
"Αυτόματη ακύρωση\nανίχνευσης", // 219
|
||||
"Σωστό PI", // 220
|
||||
"Σήμα", // 221
|
||||
"Σίγαση ήχου\nκατά την ανίχνευση" // 222
|
||||
"Σίγαση ήχου\nκατά την ανίχνευση", // 222
|
||||
"AIR" // 223
|
||||
},
|
||||
|
||||
{ "Română", // Romanian
|
||||
@@ -1353,7 +1358,8 @@ static const char* const myLanguage[18][223] PROGMEM = {
|
||||
"Auto cancel scan", // 219
|
||||
"Correct PI", // 220
|
||||
"Signal", // 221
|
||||
"Mute audio\nwhile scanning" // 222
|
||||
"Mute audio\nwhile scanning", // 222
|
||||
"AIR" // 223
|
||||
},
|
||||
|
||||
{ "Deutsch", // German
|
||||
@@ -1578,7 +1584,8 @@ static const char* const myLanguage[18][223] PROGMEM = {
|
||||
"Automatisches Scan-Ende", // 219
|
||||
"Korrekter PI-Code", // 220
|
||||
"Signal", // 221
|
||||
"Stumm beim Scannen" // 222
|
||||
"Stumm beim Scannen", // 222
|
||||
"AIR" // 223
|
||||
},
|
||||
|
||||
{ "Český", // Czech
|
||||
@@ -1803,7 +1810,8 @@ static const char* const myLanguage[18][223] PROGMEM = {
|
||||
"Auto cancel scan", // 219
|
||||
"Correct PI", // 220
|
||||
"Signal", // 221
|
||||
"Mute audio\nwhile scanning" // 222
|
||||
"Mute audio\nwhile scanning", // 222
|
||||
"AIR" // 223
|
||||
},
|
||||
|
||||
{ "Slovenský", // Slovak
|
||||
@@ -2028,7 +2036,8 @@ static const char* const myLanguage[18][223] PROGMEM = {
|
||||
"Auto cancel scan", // 219
|
||||
"Correct PI", // 220
|
||||
"Signal", // 221
|
||||
"Mute audio\nwhile scanning" // 222
|
||||
"Mute audio\nwhile scanning", // 222
|
||||
"AIR" // 223
|
||||
},
|
||||
|
||||
{ "Français", // French
|
||||
@@ -2253,7 +2262,8 @@ static const char* const myLanguage[18][223] PROGMEM = {
|
||||
"Annuler automatiquement", // 219
|
||||
"PI Correct", // 220
|
||||
"Signal", // 221
|
||||
"Audio muet lors\nde la numérisation" // 222
|
||||
"Audio muet lors\nde la numérisation", // 222
|
||||
"AIR" // 223
|
||||
},
|
||||
|
||||
{ "Български", // Bulgarian
|
||||
@@ -2478,7 +2488,8 @@ static const char* const myLanguage[18][223] PROGMEM = {
|
||||
"Auto cancel scan", // 219
|
||||
"Correct PI", // 220
|
||||
"Signal", // 221
|
||||
"Mute audio\nwhile scanning" // 222
|
||||
"Mute audio\nwhile scanning", // 222
|
||||
"AIR" // 223
|
||||
},
|
||||
|
||||
{ "Русский", // Russian
|
||||
@@ -2703,7 +2714,8 @@ static const char* const myLanguage[18][223] PROGMEM = {
|
||||
"Автоматическая отмена \nсканирования", // 219
|
||||
"При корректном PI", // 220
|
||||
"При наличии сигнала", // 221
|
||||
"Отключать аудио\nпри сканировании" // 222
|
||||
"Отключать аудио\nпри сканировании", // 222
|
||||
"AIR" // 223
|
||||
},
|
||||
|
||||
{ "Українська", // Ukranian
|
||||
@@ -2928,7 +2940,8 @@ static const char* const myLanguage[18][223] PROGMEM = {
|
||||
"Auto cancel scan", // 219
|
||||
"Correct PI", // 220
|
||||
"Signal", // 221
|
||||
"Mute audio\nwhile scanning" // 222
|
||||
"Mute audio\nwhile scanning", // 222
|
||||
"AIR" // 223
|
||||
},
|
||||
|
||||
{ "Italiano", // Italian
|
||||
@@ -3153,7 +3166,8 @@ static const char* const myLanguage[18][223] PROGMEM = {
|
||||
"Fine scansione automatica", // 219
|
||||
"PI corretto", // 220
|
||||
"Signale", // 221
|
||||
"Audio silenziato\ndurante scansione" // 222
|
||||
"Audio silenziato\ndurante scansione", // 222
|
||||
"AIR" // 223
|
||||
},
|
||||
|
||||
{ "Simplified Chinese", // Simplified Chinese
|
||||
@@ -3378,7 +3392,8 @@ static const char* const myLanguage[18][223] PROGMEM = {
|
||||
"扫频停台条件", // 219
|
||||
"节目识别码正确", // 220
|
||||
"信号超阈值", // 221
|
||||
"扫描时静音" // 222
|
||||
"扫描时静音", // 222
|
||||
"AIR" // 223
|
||||
},
|
||||
|
||||
{ "Norsk", // Norwegian
|
||||
@@ -3603,7 +3618,8 @@ static const char* const myLanguage[18][223] PROGMEM = {
|
||||
"Avbryt skanning automatisk", // 219
|
||||
"korrekt PI", // 220
|
||||
"Signal", // 221
|
||||
"Demp lyden\nmens du skanner" // 222
|
||||
"Demp lyden\nmens du skanner", // 222
|
||||
"AIR" // 223
|
||||
},
|
||||
|
||||
{ "Español", // Spanish
|
||||
@@ -3828,7 +3844,8 @@ static const char* const myLanguage[18][223] PROGMEM = {
|
||||
"Cancelar automáticamente\nla búsqueda", // 219
|
||||
"PI correcto", // 220
|
||||
"Señal", // 221
|
||||
"Audio mudo\nmientras busca" // 222
|
||||
"Audio mudo\nmientras busca", // 222
|
||||
"AIR" // 223
|
||||
},
|
||||
|
||||
{ "Português", // Portuguese
|
||||
@@ -4053,7 +4070,8 @@ static const char* const myLanguage[18][223] PROGMEM = {
|
||||
"Cancelar automatic.\na pesquisa", // 219
|
||||
"PI correto", // 220
|
||||
"Sinal", // 221
|
||||
"Mudo áudio\nenquanto procura" // 222
|
||||
"Mudo áudio\nenquanto procura", // 222
|
||||
"AIR" // 223
|
||||
}
|
||||
};
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user