You've already forked TEF6686_ESP32
Merge pull request #46 from ohmytime/OIRT
This commit is contained in:
@@ -133,6 +133,9 @@ unsigned int HighEdgeSet;
|
||||
int LevelOffset;
|
||||
unsigned int LowEdgeSet;
|
||||
int LowLevelSet;
|
||||
byte specialstepOIRT;
|
||||
unsigned int LowEdgeOIRTSet;
|
||||
unsigned int HighEdgeOIRTSet;
|
||||
unsigned int LWHighEdgeSet;
|
||||
unsigned int LWLowEdgeSet;
|
||||
unsigned int MWHighEdgeSet;
|
||||
@@ -229,7 +232,7 @@ WiFiUDP Udp;
|
||||
|
||||
void setup() {
|
||||
setupmode = true;
|
||||
EEPROM.begin(249);
|
||||
EEPROM.begin(258);
|
||||
if (EEPROM.readByte(43) != 27) DefaultSettings();
|
||||
|
||||
frequency = EEPROM.readUInt(0);
|
||||
@@ -276,6 +279,9 @@ void setup() {
|
||||
amnb = EEPROM.readByte(246);
|
||||
fmnb = EEPROM.readByte(247);
|
||||
audiomode = EEPROM.readByte(248);
|
||||
specialstepOIRT = EEPROM.readByte(249);
|
||||
LowEdgeOIRTSet = EEPROM.readUInt(250);
|
||||
HighEdgeOIRTSet = EEPROM.readUInt(254);
|
||||
|
||||
LWLowEdgeSet = FREQ_LW_LOW_EDGE_MIN; // later will read from flash
|
||||
LWHighEdgeSet = FREQ_LW_HIGH_EDGE_MAX; // later will read from flash
|
||||
@@ -305,6 +311,15 @@ void setup() {
|
||||
if (stepsize > 3) stepsize = 3;
|
||||
break;
|
||||
case BAND_SW: frequency_SW = frequency_AM; break;
|
||||
case BAND_FM:
|
||||
if (specialstepOIRT) {
|
||||
if (frequency >= (FREQ_FM_OIRT_START) && frequency <= (FREQ_FM_OIRT_END)) {
|
||||
if (frequency % 3 != 0) { Round30K(frequency); }
|
||||
}
|
||||
}else {
|
||||
if (frequency % 10 != 0) { Round50K(frequency); }
|
||||
}
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
|
||||
@@ -1183,6 +1198,13 @@ void ModeButtonPress() {
|
||||
BWOld = 0;
|
||||
radio.clearRDS(fullsearchrds);
|
||||
RDSstatus = 0;
|
||||
if (specialstepOIRT) {
|
||||
if (frequency >= (FREQ_FM_OIRT_START) && frequency <= (FREQ_FM_OIRT_END)) {
|
||||
if (frequency % 3 != 0) { Round30K(frequency); }
|
||||
}
|
||||
}else {
|
||||
if (frequency % 10 != 0) { Round50K(frequency); }
|
||||
}
|
||||
BuildDisplay();
|
||||
ShowSignalLevel();
|
||||
ShowBW();
|
||||
@@ -1217,6 +1239,9 @@ void ModeButtonPress() {
|
||||
EEPROM.writeByte(246, amnb);
|
||||
EEPROM.writeByte(247, fmnb);
|
||||
EEPROM.writeByte(248, audiomode);
|
||||
EEPROM.writeByte(249, specialstepOIRT);
|
||||
EEPROM.writeUInt(250, LowEdgeOIRTSet);
|
||||
EEPROM.writeUInt(254, HighEdgeOIRTSet);
|
||||
EEPROM.commit();
|
||||
Serial.end();
|
||||
if (wifi) remoteip = IPAddress (WiFi.localIP()[0], WiFi.localIP()[1], WiFi.localIP()[2], subnetclient);
|
||||
@@ -1241,17 +1266,51 @@ void ShowStepSize() {
|
||||
}
|
||||
}
|
||||
|
||||
void FindhighStopOIRT() {
|
||||
if (HighEdgeSet >= (FREQ_FM_OIRT_START / 10) && HighEdgeSet <= (FREQ_FM_OIRT_END / 10)) {
|
||||
HighEdgeOIRTSet = (HighEdgeSet * 10 - (HighEdgeSet * 10) % 3);
|
||||
}else {
|
||||
HighEdgeOIRTSet = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void FindlowStopOIRT() {
|
||||
if (LowEdgeSet >= (FREQ_FM_OIRT_START / 10) && LowEdgeSet <= (FREQ_FM_OIRT_END / 10)) {
|
||||
LowEdgeOIRTSet = (LowEdgeSet * 10 - (LowEdgeSet * 10) % 3);
|
||||
}else {
|
||||
LowEdgeOIRTSet = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void Round30K(unsigned int freq) {
|
||||
if (freq % 3 < 3) {
|
||||
frequency = (freq - freq % 3);
|
||||
}
|
||||
}
|
||||
|
||||
void Round50K(unsigned int freq) {
|
||||
if (freq % 10 < 3) {
|
||||
frequency = (freq - freq % 10);
|
||||
}
|
||||
else if (freq % 10 > 2 && freq % 10 < 8) {
|
||||
frequency = (freq - (freq % 10 - 5));
|
||||
}
|
||||
else if (freq % 10 > 7) {
|
||||
frequency = (freq - (freq % 10) + 10);
|
||||
}
|
||||
}
|
||||
|
||||
void RoundStep() {
|
||||
if (band == BAND_FM) {
|
||||
unsigned int freq = frequency;
|
||||
if (freq % 10 < 3) {
|
||||
frequency = (freq - freq % 10);
|
||||
}
|
||||
else if (freq % 10 > 2 && freq % 10 < 8) {
|
||||
frequency = (freq - (freq % 10 - 5));
|
||||
}
|
||||
else if (freq % 10 > 7) {
|
||||
frequency = (freq - (freq % 10) + 10);
|
||||
if (specialstepOIRT) {
|
||||
if (frequency >= FREQ_FM_OIRT_START && frequency <= FREQ_FM_OIRT_END) {
|
||||
Round30K(freq);
|
||||
}else {
|
||||
Round50K(freq);
|
||||
}
|
||||
}else {
|
||||
Round50K(freq);
|
||||
}
|
||||
radio.SetFreq(frequency);
|
||||
}
|
||||
@@ -1594,6 +1653,13 @@ void ButtonPress() {
|
||||
tft.setTextColor(TFT_YELLOW);
|
||||
if (audiomode) tft.drawCentreString("MPX", 155, 110, GFXFF); else tft.drawCentreString("Stereo", 155, 110, GFXFF);
|
||||
break;
|
||||
|
||||
case 210:
|
||||
tft.setTextColor(TFT_WHITE);
|
||||
tft.drawCentreString(myLanguage[language][68], 155, 70, GFXFF);
|
||||
tft.setTextColor(TFT_YELLOW);
|
||||
if (specialstepOIRT) tft.drawCentreString("ON", 155, 110, GFXFF); else tft.drawCentreString("OFF", 155, 110, GFXFF);
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@@ -1690,6 +1756,10 @@ void KeyUp() {
|
||||
tft.drawRightString(String(LowEdgeSet / 10 + ConverterSet, DEC) + "." + String(LowEdgeSet % 10 + ConverterSet, DEC), 155, 110, GFXFF);
|
||||
LowEdgeSet ++;
|
||||
if (LowEdgeSet > 1070) LowEdgeSet = 650;
|
||||
if (specialstepOIRT) {
|
||||
FindlowStopOIRT();
|
||||
FindhighStopOIRT();
|
||||
}
|
||||
tft.setTextColor(TFT_YELLOW);
|
||||
tft.drawRightString(String(LowEdgeSet / 10 + ConverterSet, DEC) + "." + String(LowEdgeSet % 10 + ConverterSet, DEC), 155, 110, GFXFF);
|
||||
break;
|
||||
@@ -1699,6 +1769,10 @@ void KeyUp() {
|
||||
tft.drawRightString(String(HighEdgeSet / 10 + ConverterSet, DEC) + "." + String(HighEdgeSet % 10 + ConverterSet, DEC), 155, 110, GFXFF);
|
||||
HighEdgeSet ++;
|
||||
if (HighEdgeSet > 1080) HighEdgeSet = 660;
|
||||
if (specialstepOIRT) {
|
||||
FindlowStopOIRT();
|
||||
FindhighStopOIRT();
|
||||
}
|
||||
tft.setTextColor(TFT_YELLOW);
|
||||
tft.drawRightString(String(HighEdgeSet / 10 + ConverterSet, DEC) + "." + String(HighEdgeSet % 10 + ConverterSet, DEC), 155, 110, GFXFF);
|
||||
break;
|
||||
@@ -1947,6 +2021,19 @@ void KeyUp() {
|
||||
if (audiomode) tft.drawCentreString("MPX", 155, 110, GFXFF); else tft.drawCentreString("Stereo", 155, 110, GFXFF);
|
||||
radio.setAudio(audiomode);
|
||||
break;
|
||||
case 210:
|
||||
tft.setTextColor(TFT_BLACK);
|
||||
if (specialstepOIRT) tft.drawCentreString("ON", 155, 110, GFXFF); else tft.drawCentreString("OFF", 155, 110, GFXFF);
|
||||
if (specialstepOIRT) {
|
||||
specialstepOIRT = 0;
|
||||
} else {
|
||||
specialstepOIRT = 1;
|
||||
FindlowStopOIRT();
|
||||
FindhighStopOIRT();
|
||||
}
|
||||
tft.setTextColor(TFT_YELLOW);
|
||||
if (specialstepOIRT) tft.drawCentreString("ON", 155, 110, GFXFF); else tft.drawCentreString("OFF", 155, 110, GFXFF);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2035,6 +2122,10 @@ void KeyDown() {
|
||||
tft.drawRightString(String(LowEdgeSet / 10 + ConverterSet, DEC) + "." + String(LowEdgeSet % 10 + ConverterSet, DEC), 155, 110, GFXFF);
|
||||
LowEdgeSet -= 10;
|
||||
if (LowEdgeSet < 650) LowEdgeSet = 1079;
|
||||
if (specialstepOIRT) {
|
||||
FindlowStopOIRT();
|
||||
FindhighStopOIRT();
|
||||
}
|
||||
tft.setTextColor(TFT_YELLOW);
|
||||
tft.drawRightString(String(LowEdgeSet / 10 + ConverterSet, DEC) + "." + String(LowEdgeSet % 10 + ConverterSet, DEC), 155, 110, GFXFF);
|
||||
break;
|
||||
@@ -2044,6 +2135,10 @@ void KeyDown() {
|
||||
tft.drawRightString(String(HighEdgeSet / 10 + ConverterSet, DEC) + "." + String(HighEdgeSet % 10 + ConverterSet, DEC), 155, 110, GFXFF);
|
||||
HighEdgeSet -= 10;
|
||||
if (HighEdgeSet < 660) HighEdgeSet = 1080;
|
||||
if (specialstepOIRT) {
|
||||
FindlowStopOIRT();
|
||||
FindhighStopOIRT();
|
||||
}
|
||||
tft.setTextColor(TFT_YELLOW);
|
||||
tft.drawRightString(String(HighEdgeSet / 10 + ConverterSet, DEC) + "." + String(HighEdgeSet % 10 + ConverterSet, DEC), 155, 110, GFXFF);
|
||||
break;
|
||||
@@ -2293,6 +2388,19 @@ void KeyDown() {
|
||||
if (audiomode) tft.drawCentreString("MPX", 155, 110, GFXFF); else tft.drawCentreString("Stereo", 155, 110, GFXFF);
|
||||
radio.setAudio(audiomode);
|
||||
break;
|
||||
case 210:
|
||||
tft.setTextColor(TFT_BLACK);
|
||||
if (specialstepOIRT) tft.drawCentreString("ON", 155, 110, GFXFF); else tft.drawCentreString("OFF", 155, 110, GFXFF);
|
||||
if (specialstepOIRT) {
|
||||
specialstepOIRT = 0;
|
||||
} else {
|
||||
specialstepOIRT = 1;
|
||||
FindlowStopOIRT();
|
||||
FindhighStopOIRT();
|
||||
}
|
||||
tft.setTextColor(TFT_YELLOW);
|
||||
if (specialstepOIRT) tft.drawCentreString("ON", 155, 110, GFXFF); else tft.drawCentreString("OFF", 155, 110, GFXFF);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2688,6 +2796,7 @@ void BuildMenu() {
|
||||
tft.drawString(myLanguage[language][64], 14, 150, GFXFF);
|
||||
tft.drawString(myLanguage[language][65], 14, 170, GFXFF);
|
||||
tft.drawString(myLanguage[language][67], 14, 190, GFXFF);
|
||||
tft.drawString(myLanguage[language][68], 14, 210, GFXFF);
|
||||
if (amnb != 0) tft.drawRightString("%", 305, 150, GFXFF); else tft.drawRightString(myLanguage[language][30], 265, 150, GFXFF);
|
||||
if (fmnb != 0) tft.drawRightString("%", 305, 170, GFXFF); else tft.drawRightString(myLanguage[language][30], 265, 170, GFXFF);
|
||||
tft.setTextColor(TFT_YELLOW);
|
||||
@@ -2700,6 +2809,7 @@ void BuildMenu() {
|
||||
if (amnb != 0) tft.drawRightString(String(amnb, DEC), 265, 150, GFXFF); else tft.drawRightString(myLanguage[language][30], 265, 150, GFXFF);
|
||||
if (fmnb != 0) tft.drawRightString(String(fmnb, DEC), 265, 170, GFXFF); else tft.drawRightString(myLanguage[language][30], 265, 170, GFXFF);
|
||||
if (audiomode) tft.drawRightString("MPX", 305, 190, GFXFF); else tft.drawRightString("Stereo", 305, 190, GFXFF);
|
||||
if (specialstepOIRT) tft.drawRightString("ON", 305, 210, GFXFF); else tft.drawRightString("OFF", 305, 210, GFXFF);
|
||||
}
|
||||
analogWrite(SMETERPIN, 0);
|
||||
}
|
||||
@@ -4253,7 +4363,15 @@ void TuneUp() {
|
||||
frequency_AM = (frequency_AM / FREQ_SW_STEP_5K) * FREQ_SW_STEP_5K;
|
||||
}
|
||||
} else {
|
||||
temp = 5;
|
||||
if (frequency >= (FREQ_FM_OIRT_START) && frequency <= (FREQ_FM_OIRT_END - FREQ_FM_STEP_30K)) {
|
||||
if (specialstepOIRT) {
|
||||
temp = FREQ_FM_STEP_30K;
|
||||
}else {
|
||||
temp = FREQ_FM_STEP_50K;
|
||||
}
|
||||
}else {
|
||||
temp = FREQ_FM_STEP_50K;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (stepsize == 1) temp = 1;
|
||||
@@ -4263,9 +4381,16 @@ void TuneUp() {
|
||||
|
||||
if (band == BAND_FM) {
|
||||
frequency += temp;
|
||||
if (frequency >= (HighEdgeSet * 10) + 1) {
|
||||
frequency = LowEdgeSet * 10;
|
||||
if (edgebeep) EdgeBeeper();
|
||||
if (specialstepOIRT) {
|
||||
if (frequency >= (HighEdgeOIRTSet == 0 ? ((HighEdgeSet * 10) + 1) : (HighEdgeOIRTSet + 1))){
|
||||
frequency = (LowEdgeOIRTSet == 0 ? (LowEdgeSet * 10) : LowEdgeOIRTSet);
|
||||
if (edgebeep) EdgeBeeper();
|
||||
}
|
||||
} else {
|
||||
if (frequency >= (HighEdgeSet * 10) + 1) {
|
||||
frequency = LowEdgeSet * 10;
|
||||
if (edgebeep) EdgeBeeper();
|
||||
}
|
||||
}
|
||||
radio.SetFreq(frequency);
|
||||
}
|
||||
@@ -4317,7 +4442,15 @@ void TuneDown() {
|
||||
frequency_AM = (frequency_AM / temp) * temp;
|
||||
}
|
||||
} else {
|
||||
temp = 5;
|
||||
if (frequency >= (FREQ_FM_OIRT_START + FREQ_FM_STEP_30K) && frequency <= (FREQ_FM_OIRT_END)) {
|
||||
if (specialstepOIRT) {
|
||||
temp = FREQ_FM_STEP_30K;
|
||||
}else {
|
||||
temp = FREQ_FM_STEP_50K;
|
||||
}
|
||||
}else {
|
||||
temp = FREQ_FM_STEP_50K;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (stepsize == 1) temp = 1;
|
||||
@@ -4327,11 +4460,17 @@ void TuneDown() {
|
||||
|
||||
if (band == BAND_FM) {
|
||||
frequency -= temp;
|
||||
if (frequency < LowEdgeSet * 10) {
|
||||
frequency = HighEdgeSet * 10;
|
||||
if (edgebeep) EdgeBeeper();
|
||||
if (specialstepOIRT) {
|
||||
if (frequency < (LowEdgeOIRTSet == 0 ? (LowEdgeSet * 10) : LowEdgeOIRTSet) ){
|
||||
frequency = (HighEdgeOIRTSet == 0 ? (HighEdgeSet * 10) : HighEdgeOIRTSet);
|
||||
if (edgebeep) EdgeBeeper();
|
||||
}
|
||||
} else {
|
||||
if (frequency < LowEdgeSet * 10) {
|
||||
frequency = HighEdgeSet * 10;
|
||||
if (edgebeep) EdgeBeeper();
|
||||
}
|
||||
}
|
||||
radio.SetFreq(frequency);
|
||||
}
|
||||
|
||||
if (band == BAND_LW) {
|
||||
@@ -4529,5 +4668,9 @@ void DefaultSettings() {
|
||||
EEPROM.writeByte(246, 0);
|
||||
EEPROM.writeByte(247, 0);
|
||||
EEPROM.writeByte(248, 0);
|
||||
EEPROM.writeByte(249,0);
|
||||
EEPROM.writeUInt(250,0);
|
||||
EEPROM.writeUInt(254,0);
|
||||
|
||||
EEPROM.commit();
|
||||
}
|
||||
|
||||
@@ -32,6 +32,8 @@ enum RADIO_TUNE_MODE {
|
||||
#define FREQ_MW_STEP_9K 9
|
||||
#define FREQ_MW_STEP_10K 10
|
||||
#define FREQ_SW_STEP_5K 5
|
||||
#define FREQ_FM_STEP_50K 5
|
||||
#define FREQ_FM_STEP_30K 3
|
||||
|
||||
#define FREQ_LW_LOW_EDGE_MIN 144
|
||||
#define FREQ_LW_HIGH_EDGE_MAX 519
|
||||
@@ -45,6 +47,8 @@ enum RADIO_TUNE_MODE {
|
||||
#define FREQ_SW_HIGH_EDGE_MAX (FREQ_SW_END)
|
||||
#define FREQ_FM_START 65000
|
||||
#define FREQ_FM_END 108000
|
||||
#define FREQ_FM_OIRT_START 6540
|
||||
#define FREQ_FM_OIRT_END 7800
|
||||
|
||||
// according to https://www.short-wave.info/index.php?feature=frequencies
|
||||
#define FREQ_SW_START 1800
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// [number of languages][number of texts][max. length of text]
|
||||
|
||||
static const char myLanguage[9][68][78] = {
|
||||
static const char myLanguage[9][69][85] = {
|
||||
{ "English", // English
|
||||
"Rotary direction changed",
|
||||
"Please release button",
|
||||
@@ -68,7 +68,8 @@ static const char myLanguage[9][68][78] = {
|
||||
"AM Noise blanker",
|
||||
"FM Noise blanker",
|
||||
"Defaults loaded",
|
||||
"Audio output"
|
||||
"Audio output",
|
||||
"FM OIRT 30K Step"
|
||||
},
|
||||
|
||||
{ "Nederlands", // Dutch
|
||||
@@ -138,7 +139,8 @@ static const char myLanguage[9][68][78] = {
|
||||
"AM ruis filter",
|
||||
"FM ruis filter",
|
||||
"Opnieuw geconfigureerd",
|
||||
"Audio uitgang"
|
||||
"Audio uitgang",
|
||||
"FM OIRT 30K Step"
|
||||
},
|
||||
|
||||
{ "Polski", // Polish
|
||||
@@ -208,7 +210,8 @@ static const char myLanguage[9][68][78] = {
|
||||
"AM Noise blanker",
|
||||
"FM Noise blanker",
|
||||
"Defaults loaded",
|
||||
"Audio output"
|
||||
"Audio output",
|
||||
"FM OIRT 30K Step"
|
||||
},
|
||||
|
||||
{ "Hrvatski", // Croatian
|
||||
@@ -278,7 +281,8 @@ static const char myLanguage[9][68][78] = {
|
||||
"AM prigušivač šuma",
|
||||
"FM prigušivač šuma",
|
||||
"Zadane postavke učitane",
|
||||
"Audio izlaz"
|
||||
"Audio izlaz",
|
||||
"FM OIRT 30K Step"
|
||||
},
|
||||
|
||||
{ "Ελληνικά", // Greek
|
||||
@@ -348,7 +352,8 @@ static const char myLanguage[9][68][78] = {
|
||||
"Απαλοιφή θορύβου AM",
|
||||
"Απαλοιφή θορύβου FM",
|
||||
"Οι προεπιλογές φορτώθηκαν",
|
||||
"Έξοδος ήχου"
|
||||
"Έξοδος ήχου",
|
||||
"FM OIRT 30K Step"
|
||||
},
|
||||
|
||||
{ "Romana", // Romanian
|
||||
@@ -418,7 +423,8 @@ static const char myLanguage[9][68][78] = {
|
||||
"AM Noise blanker",
|
||||
"FM Noise blanker",
|
||||
"Defaults loaded",
|
||||
"Audio output"
|
||||
"Audio output",
|
||||
"FM OIRT 30K Step"
|
||||
},
|
||||
|
||||
{ "Deutsch", // German
|
||||
@@ -488,7 +494,8 @@ static const char myLanguage[9][68][78] = {
|
||||
"AM Rauschunterdrücker",
|
||||
"UKW Rauschunterdrücker",
|
||||
"Werkseinstellung geladen",
|
||||
"Audioausgabe"
|
||||
"Audioausgabe",
|
||||
"FM OIRT 30K Step"
|
||||
},
|
||||
|
||||
{ "Czech", // Czech
|
||||
@@ -558,7 +565,8 @@ static const char myLanguage[9][68][78] = {
|
||||
"AM Noise blanker",
|
||||
"FM Noise blanker",
|
||||
"Defaults loaded",
|
||||
"Audio output"
|
||||
"Audio output",
|
||||
"FM OIRT 30K Step"
|
||||
},
|
||||
|
||||
{ "Slovak", // Slovak
|
||||
@@ -628,6 +636,7 @@ static const char myLanguage[9][68][78] = {
|
||||
"AM Noise blanker",
|
||||
"FM Noise blanker",
|
||||
"Defaults loaded",
|
||||
"Audio output"
|
||||
"Audio output",
|
||||
"FM OIRT 30K Step"
|
||||
},
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user