You've already forked TEF6686_ESP32
@@ -157,6 +157,9 @@ unsigned int change;
|
||||
unsigned int freq_scan;
|
||||
unsigned int frequency;
|
||||
unsigned int frequency_AM;
|
||||
unsigned int frequency_LW;
|
||||
unsigned int frequency_MW;
|
||||
unsigned int frequency_SW;
|
||||
unsigned int frequencyold;
|
||||
unsigned int memory[30];
|
||||
unsigned int scanner_end;
|
||||
@@ -414,7 +417,7 @@ void loop() {
|
||||
if (power == true) {
|
||||
if (seek == true) Seek(direction);
|
||||
|
||||
if ((SStatus / 10 > LowLevelSet) && LowLevelInit == false && menu == false && band == 0) {
|
||||
if ((SStatus / 10 > LowLevelSet) && LowLevelInit == false && menu == false && band == BAND_FM) {
|
||||
if (screenmute == false) {
|
||||
tft.setFreeFont(FONT7);
|
||||
tft.setTextColor(TFT_WHITE);
|
||||
@@ -435,7 +438,7 @@ void loop() {
|
||||
LowLevelInit = true;
|
||||
}
|
||||
|
||||
if ((SStatus / 10 <= LowLevelSet) && band == 0) {
|
||||
if ((SStatus / 10 <= LowLevelSet) && band == BAND_FM) {
|
||||
if (LowLevelInit == true && menu == false) {
|
||||
if (screenmute == false) {
|
||||
tft.setFreeFont(FONT7);
|
||||
@@ -473,7 +476,7 @@ void loop() {
|
||||
|
||||
if (millis() >= lowsignaltimer + 300) {
|
||||
lowsignaltimer = millis();
|
||||
if (band == 0) radio.getStatus(SStatus, USN, WAM, OStatus, BW, MStatus); else radio.getStatusAM(SStatus, USN, WAM, OStatus, BW, MStatus);
|
||||
if (band == BAND_FM) radio.getStatus(SStatus, USN, WAM, OStatus, BW, MStatus); else radio.getStatusAM(SStatus, USN, WAM, OStatus, BW, MStatus);
|
||||
if (screenmute == true) readRds();
|
||||
if (menu == false) {
|
||||
doSquelch();
|
||||
@@ -482,7 +485,7 @@ void loop() {
|
||||
}
|
||||
|
||||
} else {
|
||||
if (band == 0) radio.getStatus(SStatus, USN, WAM, OStatus, BW, MStatus); else radio.getStatusAM(SStatus, USN, WAM, OStatus, BW, MStatus);
|
||||
if (band == BAND_FM) radio.getStatus(SStatus, USN, WAM, OStatus, BW, MStatus); else radio.getStatusAM(SStatus, USN, WAM, OStatus, BW, MStatus);
|
||||
if (menu == false) {
|
||||
doSquelch();
|
||||
readRds();
|
||||
@@ -494,7 +497,7 @@ void loop() {
|
||||
XDRGTKRoutine();
|
||||
|
||||
if (menu == true && menuopen == true && menupage == 1 && menuoption == 110) {
|
||||
if (band == 0) radio.getStatus(SStatus, USN, WAM, OStatus, BW, MStatus); else radio.getStatusAM(SStatus, USN, WAM, OStatus, BW, MStatus);
|
||||
if (band == BAND_FM) radio.getStatus(SStatus, USN, WAM, OStatus, BW, MStatus); else radio.getStatusAM(SStatus, USN, WAM, OStatus, BW, MStatus);
|
||||
if (millis() >= lowsignaltimer + 500 || change2 == true) {
|
||||
lowsignaltimer = millis();
|
||||
change2 = false;
|
||||
@@ -547,7 +550,7 @@ void loop() {
|
||||
|
||||
void GetData() {
|
||||
if (screenmute == false) {
|
||||
if (band == 0) {
|
||||
if (band == BAND_FM) {
|
||||
showPI();
|
||||
showPTY();
|
||||
showCT();
|
||||
@@ -577,7 +580,10 @@ void PWRButtonPress() {
|
||||
ESP.restart();
|
||||
} else {
|
||||
if (tunemode != 2) {
|
||||
if (band == 0) band = 1; else band = 0;
|
||||
if (band == BAND_FM) band = BAND_LW;
|
||||
else if(band == BAND_LW) band = BAND_MW;
|
||||
else if(band == BAND_MW) band = BAND_SW;
|
||||
else if(band == BAND_SW) band = BAND_FM;
|
||||
StoreFrequency();
|
||||
SelectBand();
|
||||
}
|
||||
@@ -607,14 +613,40 @@ void StoreFrequency() {
|
||||
EEPROM.commit();
|
||||
}
|
||||
|
||||
void LimitAMFrequency() {
|
||||
switch(band){
|
||||
case BAND_LW:
|
||||
frequency_AM = frequency_LW;
|
||||
if(frequency_AM > FREQ_LW_END || frequency_AM < FREQ_LW_START) {
|
||||
frequency_AM = FREQ_LW_START;
|
||||
}
|
||||
break;
|
||||
case BAND_MW:
|
||||
frequency_AM = frequency_MW;
|
||||
if(frequency_AM > (region == 0 ? FREQ_MW_END_EU : FREQ_MW_END_US) || frequency_AM < (region == 0 ? FREQ_MW_START_EU : FREQ_MW_START_US)) {
|
||||
frequency_AM = region == 0 ? FREQ_MW_START_EU : FREQ_MW_START_US;
|
||||
}
|
||||
break;
|
||||
case BAND_SW:
|
||||
frequency_AM = frequency_SW;
|
||||
if(frequency_AM > FREQ_SW_END || frequency_AM < FREQ_SW_START) {
|
||||
frequency_AM = FREQ_SW_START;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void SelectBand() {
|
||||
if (band == 1) {
|
||||
if (band != BAND_FM) {
|
||||
seek = false;
|
||||
if (tunemode == 1) tunemode = 0;
|
||||
BWreset = true;
|
||||
BWset = 2;
|
||||
radio.SetFreqAM(frequency_AM);
|
||||
freqold = frequency_AM;
|
||||
LimitAMFrequency();
|
||||
radio.SetFreqAM(frequency_AM);
|
||||
doBW;
|
||||
radio.getStatusAM(SStatus, USN, WAM, OStatus, BW, MStatus);
|
||||
if (screenmute == false) BuildDisplay();
|
||||
@@ -754,20 +786,20 @@ void ModeButtonPress() {
|
||||
void ShowStepSize() {
|
||||
tft.fillRect(224, 38, 15, 4, TFT_GREYOUT);
|
||||
tft.fillRect(193, 38, 15, 4, TFT_GREYOUT);
|
||||
if (band == 0) tft.fillRect(148, 38, 15, 4, TFT_GREYOUT); else tft.fillRect(162, 38, 15, 4, TFT_GREYOUT);
|
||||
if (band == 0) tft.fillRect(116, 38, 15, 4, TFT_GREYOUT); else tft.fillRect(128, 38, 15, 4, TFT_GREYOUT);
|
||||
if (band == BAND_FM) tft.fillRect(148, 38, 15, 4, TFT_GREYOUT); else tft.fillRect(162, 38, 15, 4, TFT_GREYOUT);
|
||||
if (band == BAND_FM) tft.fillRect(116, 38, 15, 4, TFT_GREYOUT); else tft.fillRect(128, 38, 15, 4, TFT_GREYOUT);
|
||||
if (stepsize == 1) tft.fillRect(224, 38, 15, 4, TFT_GREEN);
|
||||
if (stepsize == 2) tft.fillRect(193, 38, 15, 4, TFT_GREEN);
|
||||
if (stepsize == 3) {
|
||||
if (band == 0) tft.fillRect(148, 38, 15, 4, TFT_GREEN); else tft.fillRect(162, 38, 15, 4, TFT_GREEN);
|
||||
if (band == BAND_FM) tft.fillRect(148, 38, 15, 4, TFT_GREEN); else tft.fillRect(162, 38, 15, 4, TFT_GREEN);
|
||||
}
|
||||
if (stepsize == 4) {
|
||||
if (band == 0) tft.fillRect(116, 38, 15, 4, TFT_GREEN); else tft.fillRect(128, 38, 15, 4, TFT_GREEN);
|
||||
if (band == BAND_FM) tft.fillRect(116, 38, 15, 4, TFT_GREEN); else tft.fillRect(128, 38, 15, 4, TFT_GREEN);
|
||||
}
|
||||
}
|
||||
|
||||
void RoundStep() {
|
||||
if (band == 0) {
|
||||
if (band == BAND_FM) {
|
||||
unsigned int freq = frequency;
|
||||
if (freq % 10 < 3) {
|
||||
frequency = (freq - freq % 10);
|
||||
@@ -780,14 +812,15 @@ void RoundStep() {
|
||||
}
|
||||
radio.SetFreq(frequency);
|
||||
}
|
||||
if (band == 1) {
|
||||
unsigned int freq = frequency_AM / 9;
|
||||
frequency_AM = freq * 9;
|
||||
if (band == BAND_MW) {
|
||||
unsigned int freq = frequency_AM / (region == 0 ? FREQ_MW_STEP_9K : FREQ_MW_STEP_10K);
|
||||
frequency_AM = freq * (region == 0 ? FREQ_MW_STEP_9K : FREQ_MW_STEP_10K);
|
||||
radio.SetFreqAM(frequency_AM);
|
||||
}
|
||||
|
||||
while (digitalRead(ROTARY_BUTTON) == LOW) delay(50);
|
||||
|
||||
if (band == 0) EEPROM.writeUInt(0, frequency); else EEPROM.writeUInt(31, frequency_AM);
|
||||
if (band == BAND_FM) EEPROM.writeUInt(0, frequency); else EEPROM.writeUInt(31, frequency_AM);
|
||||
EEPROM.commit();
|
||||
}
|
||||
|
||||
@@ -800,10 +833,10 @@ void ButtonPress() {
|
||||
} else {
|
||||
memorystore = false;
|
||||
EEPROM.writeByte(memorypos + 60, band);
|
||||
if (band == 0) EEPROM.writeUInt((memorypos * 4) + 100, frequency); else EEPROM.writeUInt((memorypos * 4) + 100, frequency_AM);
|
||||
if (band == BAND_FM) EEPROM.writeUInt((memorypos * 4) + 100, frequency); else EEPROM.writeUInt((memorypos * 4) + 100, frequency_AM);
|
||||
EEPROM.commit();
|
||||
memoryband[memorypos] = band;
|
||||
if (band == 0) memory[memorypos] = frequency; else memory[memorypos] = frequency_AM;
|
||||
if (band == BAND_FM) memory[memorypos] = frequency; else memory[memorypos] = frequency_AM;
|
||||
ShowTuneMode();
|
||||
}
|
||||
} else {
|
||||
@@ -816,7 +849,6 @@ void ButtonPress() {
|
||||
if (tunemode == 0) {
|
||||
stepsize++;
|
||||
if (stepsize > 4) stepsize = 0;
|
||||
|
||||
if (screenmute == false) ShowStepSize();
|
||||
|
||||
EEPROM.writeByte(40, stepsize);
|
||||
@@ -1040,7 +1072,7 @@ void KeyUp() {
|
||||
EEPROM.commit();
|
||||
break;
|
||||
}
|
||||
if (USBstatus == true) if (band == 0) Serial.println("T" + String(frequency * 10)); else Serial.println("T" + String(frequency_AM));
|
||||
if (USBstatus == true) if (band == BAND_FM) Serial.println("T" + String(frequency * 10)); else Serial.println("T" + String(frequency_AM));
|
||||
radio.clearRDS(fullsearchrds);
|
||||
change = 0;
|
||||
ShowFreq(0);
|
||||
@@ -1268,7 +1300,7 @@ void KeyDown() {
|
||||
EEPROM.commit();
|
||||
break;
|
||||
}
|
||||
if (USBstatus == true) if (band == 0) Serial.println("T" + String(frequency * 10)); else Serial.println("T" + String(frequency_AM));
|
||||
if (USBstatus == true) if (band == BAND_FM) Serial.println("T" + String(frequency * 10)); else Serial.println("T" + String(frequency_AM));
|
||||
radio.clearRDS(fullsearchrds);
|
||||
change = 0;
|
||||
ShowFreq(0);
|
||||
@@ -1492,7 +1524,7 @@ void DoMemoryPosTune() {
|
||||
band = memoryband[memorypos];
|
||||
}
|
||||
|
||||
if (band == 0) {
|
||||
if (band == BAND_FM) {
|
||||
frequency = memory[memorypos];
|
||||
radio.SetFreq(frequency);
|
||||
} else {
|
||||
@@ -1503,7 +1535,7 @@ void DoMemoryPosTune() {
|
||||
}
|
||||
|
||||
void readRds() {
|
||||
if (band == 0) {
|
||||
if (band == BAND_FM) {
|
||||
RDSstatus = radio.readRDS(showrdserrors);
|
||||
ShowRDSLogo(RDSstatus);
|
||||
if (RDSstatus == 0) {
|
||||
@@ -1838,7 +1870,7 @@ void BuildDisplay() {
|
||||
tft.setFreeFont(FONT14);
|
||||
tft.drawString("kHz", 225, -5, GFXFF);
|
||||
tft.setTextColor(TFT_WHITE);
|
||||
if (band == 0) tft.drawString("MHz", 258, 67, GFXFF); else tft.drawString("kHz", 258, 67, GFXFF);
|
||||
if (band == BAND_FM) tft.drawString("MHz", 258, 67, GFXFF); else tft.drawString("kHz", 258, 67, GFXFF);
|
||||
tft.drawCircle(81, 15, 10, TFT_GREYOUT);
|
||||
tft.drawCircle(81, 15, 9, TFT_GREYOUT);
|
||||
tft.drawCircle(91, 15, 10, TFT_GREYOUT);
|
||||
@@ -1850,7 +1882,10 @@ void BuildDisplay() {
|
||||
}
|
||||
tft.setTextColor(TFT_SKYBLUE);
|
||||
tft.setFreeFont(FONT7);
|
||||
if (band == 1) tft.drawString("AM", 50, 26, GFXFF); else tft.drawString("FM", 50, 26, GFXFF);
|
||||
if (band == BAND_LW) tft.drawString("LW", 50, 26, GFXFF);
|
||||
else if(band == BAND_MW) tft.drawString("MW", 50, 26, GFXFF);
|
||||
else if(band == BAND_SW) tft.drawString("SW", 50, 26, GFXFF);
|
||||
else tft.drawString("FM", 50, 26, GFXFF);
|
||||
tft.setTextColor(TFT_GREYOUT);
|
||||
tft.drawString("S", 162, 184, GFXFF);
|
||||
tft.drawRightString("M", 185, 184, GFXFF);
|
||||
@@ -1986,7 +2021,7 @@ void BuildDisplay() {
|
||||
|
||||
void ShowFreq(int mode) {
|
||||
if (setupmode == false) {
|
||||
if (band == 1) {
|
||||
if (band == 1) { // Fix Me :take care of 9K/10K Step
|
||||
if (freqold < 2000 && frequency_AM >= 2000 && stepsize == 0) if (frequency_AM != 27000 && freqold != 144) radio.SetFreqAM(2000);
|
||||
if (freqold >= 2000 && frequency_AM < 2000 && stepsize == 0) if (frequency_AM != 144 && freqold != 27000) radio.SetFreqAM(1998);
|
||||
}
|
||||
@@ -1995,7 +2030,7 @@ void ShowFreq(int mode) {
|
||||
if (screenmute == false) {
|
||||
detachInterrupt(digitalPinToInterrupt(ROTARY_PIN_A));
|
||||
detachInterrupt(digitalPinToInterrupt(ROTARY_PIN_B));
|
||||
if (band == 1) {
|
||||
if (band != BAND_FM ) {
|
||||
unsigned int freq = frequency_AM;
|
||||
String count = String(freq, DEC);
|
||||
if (count.length() != freqoldcount || mode != 0) {
|
||||
@@ -2017,7 +2052,7 @@ void ShowFreq(int mode) {
|
||||
if (freqoldcount >= 4) tft.setCursor (44, 45);
|
||||
tft.setTextFont(7);
|
||||
tft.print(freqold / 100);
|
||||
if (band == 0) {
|
||||
if (band == BAND_FM) {
|
||||
tft.print(".");
|
||||
if (freqold % 100 < 10) tft.print("0");
|
||||
tft.print(freqold % 100);
|
||||
@@ -2054,7 +2089,7 @@ void ShowFreq(int mode) {
|
||||
}
|
||||
|
||||
void ShowSignalLevel() {
|
||||
if (band == 0) SNR = int(0.46222375 * (float)(SStatus / 10) - 0.082495118 * (float)(USN / 10)) + 10; else SNR = -((int8_t)(USN / 10));
|
||||
if (band == BAND_FM) SNR = int(0.46222375 * (float)(SStatus / 10) - 0.082495118 * (float)(USN / 10)) + 10; else SNR = -((int8_t)(USN / 10));
|
||||
|
||||
if (SNR > (SNRold + 1) || SNR < (SNRold - 1)) {
|
||||
tft.setFreeFont(FONT7);
|
||||
@@ -2114,7 +2149,7 @@ void ShowSignalLevel() {
|
||||
tft.drawString("." + String(SStatus % 10), 296, 97, GFXFF);
|
||||
}
|
||||
|
||||
if (band == 0) segments = (SStatus + 200) / 10; else segments = (SStatus + 200) / 10;
|
||||
if (band == BAND_FM) segments = (SStatus + 200) / 10; else segments = (SStatus + 200) / 10;
|
||||
|
||||
tft.fillRect(16, 109, 2 * constrain(segments, 0, 54), 8, TFT_GREEN);
|
||||
tft.fillRect(16 + 2 * 54, 109, 2 * (constrain(segments, 54, 94) - 54), 8, TFT_RED);
|
||||
@@ -2138,7 +2173,7 @@ void ShowRDSLogo(bool RDSstatus) {
|
||||
|
||||
void ShowStereoStatus() {
|
||||
if (StereoToggle == true) {
|
||||
if (band == 0) Stereostatus = radio.getStereoStatus(); else Stereostatus = 0;
|
||||
if (band == BAND_FM) Stereostatus = radio.getStereoStatus(); else Stereostatus = 0;
|
||||
if (Stereostatus != Stereostatusold) {
|
||||
if (Stereostatus == true && screenmute == false) {
|
||||
tft.drawCircle(81, 15, 10, TFT_RED);
|
||||
@@ -2160,7 +2195,7 @@ void ShowStereoStatus() {
|
||||
|
||||
void ShowOffset() {
|
||||
if (OStatus != OStatusold) {
|
||||
if (band == 0) {
|
||||
if (band == BAND_FM) {
|
||||
if (OStatus < -500) {
|
||||
tft.fillTriangle(6, 8, 6, 22, 14, 14, TFT_GREYOUT);
|
||||
tft.fillTriangle(18, 8, 18, 22, 26, 14, TFT_GREYOUT);
|
||||
@@ -2394,7 +2429,7 @@ void updateBW() {
|
||||
|
||||
void updateiMS() {
|
||||
tft.setFreeFont(FONT7);
|
||||
if (band == 0) {
|
||||
if (band == BAND_FM) {
|
||||
if (iMSset == 0) {
|
||||
if (screenmute == false) {
|
||||
tft.drawRoundRect(249, 56, 30, 20, 5, TFT_WHITE);
|
||||
@@ -2414,7 +2449,7 @@ void updateiMS() {
|
||||
|
||||
void updateEQ() {
|
||||
tft.setFreeFont(FONT7);
|
||||
if (band == 0) {
|
||||
if (band == BAND_FM) {
|
||||
if (EQset == 0) {
|
||||
if (screenmute == false) {
|
||||
tft.drawRoundRect(287, 56, 30, 20, 5, TFT_WHITE);
|
||||
@@ -2433,7 +2468,7 @@ void updateEQ() {
|
||||
}
|
||||
|
||||
void doBW() {
|
||||
if (band == 0) {
|
||||
if (band == BAND_FM) {
|
||||
if (BWset > 16) BWset = 0;
|
||||
|
||||
switch (BWset) {
|
||||
@@ -2529,7 +2564,7 @@ void doBW() {
|
||||
void doTuneMode() {
|
||||
switch (tunemode) {
|
||||
case 0:
|
||||
if (band == 0) {
|
||||
if (band == BAND_FM) {
|
||||
tunemode = 1;
|
||||
if (stepsize != 0) {
|
||||
stepsize = 0;
|
||||
@@ -2623,8 +2658,8 @@ void XDRGTKRoutine() {
|
||||
switch (buff[0]) {
|
||||
case 'x':
|
||||
Serial.println("OK");
|
||||
if (band != 0) {
|
||||
band = 0;
|
||||
if (band != BAND_FM) {
|
||||
band = BAND_FM;
|
||||
SelectBand();
|
||||
}
|
||||
Serial.print("T" + String(frequency * 10) + "A0\nD0\nG00\n");
|
||||
@@ -2717,14 +2752,22 @@ void XDRGTKRoutine() {
|
||||
case 'M':
|
||||
byte XDRband;
|
||||
XDRband = atol(buff + 1);
|
||||
if (XDRband == 0) {
|
||||
band = 0;
|
||||
if (XDRband == BAND_FM) { // here XDRGTK need add four bands switch too
|
||||
band = BAND_FM;
|
||||
SelectBand();
|
||||
Serial.print("M0\nT" + String(frequency * 10) + "\n");
|
||||
} else {
|
||||
band = 1;
|
||||
} else if (XDRband == BAND_LW){
|
||||
band = BAND_LW;
|
||||
SelectBand();
|
||||
Serial.print("M1\nT" + String(frequency_AM) + "\n");
|
||||
} else if (XDRband == BAND_MW){
|
||||
band = BAND_MW;
|
||||
SelectBand();
|
||||
Serial.print("M2\nT" + String(frequency_AM) + "\n");
|
||||
} else if (XDRband == BAND_SW){
|
||||
band = BAND_SW;
|
||||
SelectBand();
|
||||
Serial.print("M3\nT" + String(frequency_AM) + "\n");
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -2732,26 +2775,44 @@ void XDRGTKRoutine() {
|
||||
unsigned int freqtemp;
|
||||
freqtemp = atoi(buff + 1);
|
||||
if (seek == true) seek = false;
|
||||
if (freqtemp > 143 && freqtemp < 27001) {
|
||||
if (freqtemp >= FREQ_LW_START && freqtemp <= FREQ_LW_END) {
|
||||
frequency_AM = freqtemp;
|
||||
if (band != 1) {
|
||||
band = 1;
|
||||
if (band != BAND_LW) {
|
||||
band = BAND_LW;
|
||||
SelectBand();
|
||||
} else {
|
||||
radio.SetFreqAM(frequency_AM);
|
||||
}
|
||||
Serial.print("M1\n");
|
||||
} else if (freqtemp > 64999 && freqtemp < 108001) {
|
||||
} else if(freqtemp >= (region == 0 ? FREQ_MW_START_EU : FREQ_MW_START_US) && freqtemp <= (region == 0 ? FREQ_MW_END_EU : FREQ_MW_END_US)) {
|
||||
frequency_AM = freqtemp;
|
||||
if (band != BAND_MW) {
|
||||
band = BAND_MW;
|
||||
SelectBand();
|
||||
} else {
|
||||
radio.SetFreqAM(frequency_AM);
|
||||
}
|
||||
Serial.print("M2\n");
|
||||
} else if(freqtemp >= FREQ_SW_START && freqtemp <= FREQ_SW_END) {
|
||||
frequency_AM = freqtemp;
|
||||
if (band != BAND_SW) {
|
||||
band = BAND_SW;
|
||||
SelectBand();
|
||||
} else {
|
||||
radio.SetFreqAM(frequency_AM);
|
||||
}
|
||||
Serial.print("M3\n");
|
||||
} else if (freqtemp >= FREQ_FM_START && freqtemp < FREQ_FM_END) {
|
||||
frequency = freqtemp / 10;
|
||||
if (band != 0) {
|
||||
band = 0;
|
||||
if (band != BAND_FM) {
|
||||
band = BAND_FM;
|
||||
SelectBand();
|
||||
Serial.print("M0\n");
|
||||
} else {
|
||||
radio.SetFreq(frequency);
|
||||
}
|
||||
}
|
||||
if (band == 0) Serial.print("T" + String(frequency * 10) + "\n"); else Serial.print("T" + String(frequency_AM) + "\n");
|
||||
if (band == BAND_FM) Serial.print("T" + String(frequency * 10) + "\n"); else Serial.print("T" + String(frequency_AM) + "\n");
|
||||
radio.clearRDS(fullsearchrds);
|
||||
RDSstatus = 0;
|
||||
ShowFreq(0);
|
||||
@@ -2819,7 +2880,7 @@ void XDRGTKRoutine() {
|
||||
Serial.print(freq_scan * 10, DEC);
|
||||
Serial.print('=');
|
||||
delay(10);
|
||||
if (band == 0) radio.getStatus(SStatus, USN, WAM, OStatus, BW, MStatus); else radio.getStatusAM(SStatus, USN, WAM, OStatus, BW, MStatus);
|
||||
if (band == BAND_FM) radio.getStatus(SStatus, USN, WAM, OStatus, BW, MStatus); else radio.getStatusAM(SStatus, USN, WAM, OStatus, BW, MStatus);
|
||||
Serial.print((SStatus / 10) + 10, DEC);
|
||||
Serial.print(',');
|
||||
}
|
||||
@@ -2888,7 +2949,7 @@ void XDRGTKRoutine() {
|
||||
Stereostatus = radio.getStereoStatus();
|
||||
if (StereoToggle == false) {
|
||||
Serial.print("SS");
|
||||
} else if (Stereostatus == true && band == 0) {
|
||||
} else if (Stereostatus == true && band == BAND_FM) {
|
||||
Serial.print("Ss");
|
||||
} else {
|
||||
Serial.print("Sm");
|
||||
@@ -2905,13 +2966,18 @@ void XDRGTKRoutine() {
|
||||
void TuneUp() {
|
||||
unsigned int temp;
|
||||
if (stepsize == 0) {
|
||||
if (band == 1) {
|
||||
if (frequency_AM < 1998) {
|
||||
temp = 9;
|
||||
frequency_AM = (frequency_AM / 9) * 9;
|
||||
if (band != BAND_FM) {
|
||||
if (frequency_AM < FREQ_SW_START) {
|
||||
if (region == 0) {
|
||||
temp = FREQ_MW_STEP_9K;
|
||||
frequency_AM = (frequency_AM / FREQ_MW_STEP_9K) * FREQ_MW_STEP_9K;
|
||||
}else if(region == 1) {
|
||||
temp = FREQ_MW_STEP_10K;
|
||||
frequency_AM = (frequency_AM / FREQ_MW_STEP_10K) * FREQ_MW_STEP_10K;
|
||||
}
|
||||
} else {
|
||||
temp = 5;
|
||||
frequency_AM = (frequency_AM / 5) * 5;
|
||||
temp = FREQ_SW_STEP_5K;
|
||||
frequency_AM = (frequency_AM / FREQ_SW_STEP_5K) * FREQ_SW_STEP_5K;
|
||||
}
|
||||
} else {
|
||||
temp = 5;
|
||||
@@ -2922,7 +2988,7 @@ void TuneUp() {
|
||||
if (stepsize == 3) temp = 100;
|
||||
if (stepsize == 4) temp = 1000;
|
||||
|
||||
if (band == 0) {
|
||||
if (band == BAND_FM) {
|
||||
frequency += temp;
|
||||
if (frequency >= (HighEdgeSet * 10) + 1) {
|
||||
frequency = LowEdgeSet * 10;
|
||||
@@ -2931,13 +2997,30 @@ void TuneUp() {
|
||||
radio.SetFreq(frequency);
|
||||
}
|
||||
|
||||
if (band == 1) {
|
||||
if (band == BAND_LW) {
|
||||
frequency_AM += temp;
|
||||
if (frequency_AM > 27000) {
|
||||
frequency_AM = 144;
|
||||
if (frequency_AM > FREQ_LW_END) {
|
||||
frequency_AM = FREQ_LW_START;
|
||||
if (edgebeep) EdgeBeeper();
|
||||
}
|
||||
radio.SetFreqAM(frequency_AM);
|
||||
frequency_LW = frequency_AM;
|
||||
} else if (band == BAND_MW) {
|
||||
frequency_AM += temp;
|
||||
if (frequency_AM > (region == 0 ? FREQ_MW_END_EU : FREQ_MW_END_US)) {
|
||||
frequency_AM = (region == 0 ? FREQ_MW_START_EU : FREQ_MW_START_US);
|
||||
if (edgebeep) EdgeBeeper();
|
||||
}
|
||||
radio.SetFreqAM(frequency_AM);
|
||||
frequency_MW = frequency_AM;
|
||||
} else if (band == BAND_SW) {
|
||||
frequency_AM += temp;
|
||||
if (frequency_AM > FREQ_SW_END) {
|
||||
frequency_AM = FREQ_SW_START;
|
||||
if (edgebeep) EdgeBeeper();
|
||||
}
|
||||
radio.SetFreqAM(frequency_AM);
|
||||
frequency_SW = frequency_AM;
|
||||
}
|
||||
radio.clearRDS(fullsearchrds);
|
||||
}
|
||||
@@ -2945,18 +3028,18 @@ void TuneUp() {
|
||||
void TuneDown() {
|
||||
unsigned int temp;
|
||||
if (stepsize == 0) {
|
||||
if (band == 1) {
|
||||
if (frequency_AM <= 2000) {
|
||||
if (frequency_AM == 2000) {
|
||||
if (band != BAND_FM) {
|
||||
if (frequency_AM <= FREQ_SW_START) {
|
||||
if (frequency_AM == 2000) { // Fix Me :take care of 9K/10K Step
|
||||
frequency_AM = 1998;
|
||||
temp = 0;
|
||||
} else {
|
||||
temp = 9;
|
||||
frequency_AM = (frequency_AM / 9) * 9;
|
||||
temp = region == 0 ? FREQ_MW_STEP_9K : FREQ_MW_STEP_10K;
|
||||
frequency_AM = (frequency_AM / temp) * temp;
|
||||
}
|
||||
} else {
|
||||
temp = 5;
|
||||
frequency_AM = (frequency_AM / 5) * 5;
|
||||
temp = FREQ_SW_STEP_5K;
|
||||
frequency_AM = (frequency_AM / temp) * temp;
|
||||
}
|
||||
} else {
|
||||
temp = 5;
|
||||
@@ -2967,7 +3050,7 @@ void TuneDown() {
|
||||
if (stepsize == 3) temp = 100;
|
||||
if (stepsize == 4) temp = 1000;
|
||||
|
||||
if (band == 0) {
|
||||
if (band == BAND_FM) {
|
||||
frequency -= temp;
|
||||
if (frequency < LowEdgeSet * 10) {
|
||||
frequency = HighEdgeSet * 10;
|
||||
@@ -2976,18 +3059,30 @@ void TuneDown() {
|
||||
radio.SetFreq(frequency);
|
||||
}
|
||||
|
||||
if (band == 1) {
|
||||
if (temp == 1000 && frequency_AM <= 1440)
|
||||
{
|
||||
frequency_AM = 27000;
|
||||
} else {
|
||||
frequency_AM -= temp;
|
||||
if (frequency_AM < 144) {
|
||||
frequency_AM = 27000;
|
||||
if (edgebeep) EdgeBeeper();
|
||||
}
|
||||
if (band == BAND_LW) {
|
||||
frequency_AM -= temp;
|
||||
if (frequency_AM < FREQ_LW_START) {
|
||||
frequency_AM = FREQ_LW_END;
|
||||
if (edgebeep) EdgeBeeper();
|
||||
}
|
||||
radio.SetFreqAM(frequency_AM);
|
||||
frequency_LW = frequency_AM;
|
||||
} else if (band == BAND_MW) {
|
||||
frequency_AM -= temp;
|
||||
if (frequency_AM < (region == 0 ? FREQ_MW_START_EU : FREQ_MW_START_US)) {
|
||||
frequency_AM = region == 0 ? FREQ_MW_END_EU : FREQ_MW_END_US;
|
||||
if (edgebeep) EdgeBeeper();
|
||||
}
|
||||
radio.SetFreqAM(frequency_AM);
|
||||
frequency_MW = frequency_AM;
|
||||
}else if (band == BAND_SW) {
|
||||
frequency_AM -= temp;
|
||||
if (frequency_AM < FREQ_SW_START) {
|
||||
frequency_AM = FREQ_SW_END;
|
||||
if (edgebeep) EdgeBeeper();
|
||||
}
|
||||
radio.SetFreqAM(frequency_AM);
|
||||
frequency_SW = frequency_AM;
|
||||
}
|
||||
radio.clearRDS(fullsearchrds);
|
||||
}
|
||||
@@ -2999,12 +3094,12 @@ void EdgeBeeper() {
|
||||
}
|
||||
|
||||
void Seek(bool mode) {
|
||||
if (band == 0) {
|
||||
if (band == BAND_FM) {
|
||||
radio.setMute();
|
||||
if (mode == false) TuneDown(); else TuneUp();
|
||||
delay(50);
|
||||
ShowFreq(0);
|
||||
if (USBstatus == true) if (band == 0) Serial.print("T" + String(frequency * 10) + "\n"); else Serial.print("T" + String(frequency_AM) + "\n");
|
||||
if (USBstatus == true) if (band == BAND_FM) Serial.print("T" + String(frequency * 10) + "\n"); else Serial.print("T" + String(frequency_AM) + "\n");
|
||||
radio.getStatus(SStatus, USN, WAM, OStatus, BW, MStatus);
|
||||
|
||||
if ((USN < 200) && (WAM < 230) && (OStatus < 80 && OStatus > -80) && (Squelch < SStatus || Squelch == 920)) {
|
||||
|
||||
@@ -11,6 +11,57 @@ enum RDS_GROUPS {
|
||||
RDS_GROUP_12A, RDS_GROUP_12B, RDS_GROUP_13A, RDS_GROUP_13B, RDS_GROUP_14A, RDS_GROUP_14B, RDS_GROUP_15A, RDS_GROUP_15B
|
||||
};
|
||||
|
||||
enum RADIO_BAND {
|
||||
BAND_FM, BAND_LW, BAND_MW, BAND_SW
|
||||
};
|
||||
|
||||
#define FREQ_MW_STEP_9K 9
|
||||
#define FREQ_MW_STEP_10K 10
|
||||
#define FREQ_SW_STEP_5K 5
|
||||
|
||||
#define FREQ_LW_START 144 // you can adjust here
|
||||
#define FREQ_LW_END 513 // you can adjust here
|
||||
#define FREQ_MW_START_EU 522
|
||||
#define FREQ_MW_END_EU 1620
|
||||
#define FREQ_MW_START_US 520
|
||||
#define FREQ_MW_END_US 1710
|
||||
#define FREQ_FM_START 65000
|
||||
#define FREQ_FM_END 108000
|
||||
|
||||
// according to https://www.short-wave.info/index.php?feature=frequencies
|
||||
#define FREQ_SW_START 1800
|
||||
#define FREQ_SW_END 27000
|
||||
#define FREQ_SW_160M_START 1800
|
||||
#define FREQ_SW_160M_END 2000
|
||||
#define FREQ_SW_120M_START 2300
|
||||
#define FREQ_SW_120M_END 2495
|
||||
#define FREQ_SW_90M_START 3200
|
||||
#define FREQ_SW_90M_END 3400
|
||||
#define FREQ_SW_75M_START 3900
|
||||
#define FREQ_SW_75M_END 4000
|
||||
#define FREQ_SW_60M_START 4750
|
||||
#define FREQ_SW_60M_END 4995
|
||||
#define FREQ_SW_49M_START 5900
|
||||
#define FREQ_SW_49M_END 6200
|
||||
#define FREQ_SW_41M_START 7200
|
||||
#define FREQ_SW_41M_END 7450
|
||||
#define FREQ_SW_31M_START 9400
|
||||
#define FREQ_SW_31M_END 9900
|
||||
#define FREQ_SW_25M_START 11600
|
||||
#define FREQ_SW_25M_END 12100
|
||||
#define FREQ_SW_22M_START 13570
|
||||
#define FREQ_SW_22M_END 13870
|
||||
#define FREQ_SW_19M_START 15100
|
||||
#define FREQ_SW_19M_END 15800
|
||||
#define FREQ_SW_16M_START 17480
|
||||
#define FREQ_SW_16M_END 17900
|
||||
#define FREQ_SW_15M_START 18900
|
||||
#define FREQ_SW_15M_END 19020
|
||||
#define FREQ_SW_13M_START 21450
|
||||
#define FREQ_SW_13M_END 21850
|
||||
#define FREQ_SW_11M_START 25670
|
||||
#define FREQ_SW_11M_END 26100
|
||||
|
||||
const char* const PTY_EU[] {
|
||||
"None",
|
||||
"News",
|
||||
|
||||
Reference in New Issue
Block a user