You've already forked TEF6686_ESP32
Added AF search on memory channels
This commit is contained in:
@@ -68,6 +68,7 @@ bool dropout;
|
||||
bool dynamicPTYold;
|
||||
bool edgebeep;
|
||||
bool externaltune;
|
||||
bool findMemoryAF;
|
||||
bool flashing;
|
||||
bool fmsi;
|
||||
bool fullsearchrds;
|
||||
@@ -603,6 +604,7 @@ void setup() {
|
||||
#endif
|
||||
}
|
||||
|
||||
pinMode(BANDBUTTON, INPUT);
|
||||
pinMode(MODEBUTTON, INPUT);
|
||||
pinMode(BWBUTTON, INPUT);
|
||||
pinMode(ROTARY_BUTTON, INPUT);
|
||||
@@ -887,7 +889,51 @@ void loop() {
|
||||
if (!menu && !afscreen && !scandxmode) {
|
||||
if (af != 0 && dropout && millis() >= aftimer + 1000) {
|
||||
aftimer = millis();
|
||||
frequency = radio.TestAF();
|
||||
if (radio.af_counter == 0) {
|
||||
if (findMemoryAF && radio.rds.correctPI != 0) {
|
||||
radio.setMute();
|
||||
tft.drawBitmap(92, 4, Speaker, 26, 22, PrimaryColor);
|
||||
SQ = true;
|
||||
if (!screenmute) {
|
||||
if (advancedRDS) {
|
||||
tft.drawRoundRect(10, 30, 300, 170, 5, ActiveColor);
|
||||
tft.fillRoundRect(12, 32, 296, 166, 5, BackgroundColor);
|
||||
tftPrint(0, myLanguage[language][34], 160, 100, ActiveColor, ActiveColorSmooth, 28);
|
||||
} else {
|
||||
ShowFreq(1);
|
||||
}
|
||||
}
|
||||
|
||||
for (int x = 8750; x <= 10800; x += 10) {
|
||||
if (rotary != 0 || digitalRead(BANDBUTTON) == LOW || digitalRead(MODEBUTTON) == LOW || digitalRead(BWBUTTON) == LOW || digitalRead(ROTARY_BUTTON) == LOW) break;
|
||||
radio.SetFreq(x);
|
||||
unsigned long millisold = millis();
|
||||
while (millis() - millisold < 187) {
|
||||
if (!screenmute && !advancedRDS) ShowModLevel();
|
||||
}
|
||||
if (radio.rds.correctPI == radio.getBlockA()) {
|
||||
frequency = x;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!screenmute) {
|
||||
if (advancedRDS) {
|
||||
leave = true;
|
||||
BuildAdvancedRDS();
|
||||
} else {
|
||||
ShowFreq(0);
|
||||
}
|
||||
}
|
||||
|
||||
radio.setUnMute();
|
||||
SQ = false;
|
||||
tft.drawBitmap(92, 4, Speaker, 26, 22, GreyoutColor);
|
||||
}
|
||||
findMemoryAF = false;
|
||||
} else {
|
||||
frequency = radio.TestAF();
|
||||
}
|
||||
if (freqold != frequency) {
|
||||
ShowFreq(0);
|
||||
dropout = true;
|
||||
@@ -895,13 +941,13 @@ void loop() {
|
||||
afmethodBold = true;
|
||||
radio.clearRDS(fullsearchrds);
|
||||
}
|
||||
if (XDRGTKUSB || XDRGTKTCP) DataPrint("T" + String((frequency + ConverterSet * 100) * 10) + "\n");
|
||||
if (screenmute) {
|
||||
freqold = frequency;
|
||||
dropout = false;
|
||||
}
|
||||
store = true;
|
||||
}
|
||||
if (XDRGTKUSB || XDRGTKTCP) DataPrint("T" + String((frequency + ConverterSet * 100) * 10) + "\n");
|
||||
if (screenmute) {
|
||||
freqold = frequency;
|
||||
dropout = false;
|
||||
}
|
||||
store = true;
|
||||
}
|
||||
|
||||
if (band == BAND_FM && af != 0 && radio.rds.correctPI != 0) {
|
||||
@@ -2909,6 +2955,7 @@ void DoMemoryPosTune() {
|
||||
memtune = true;
|
||||
memreset = true;
|
||||
rdsflagreset = false;
|
||||
findMemoryAF = true;
|
||||
ShowFreq(0);
|
||||
}
|
||||
|
||||
@@ -3001,6 +3048,7 @@ void ShowFreq(int mode) {
|
||||
} else if (mode == 1) {
|
||||
FrequencySprite.fillSprite(BackgroundColor);
|
||||
FrequencySprite.pushSprite(46, 46);
|
||||
tftPrint(0, myLanguage[language][34], 146, 58, ActiveColor, ActiveColorSmooth, 28);
|
||||
}
|
||||
FrequencySprite.unloadFont();
|
||||
}
|
||||
|
||||
@@ -9,6 +9,13 @@ unsigned long rdstimer = 0;
|
||||
unsigned long bitStartTime = 0;
|
||||
bool lastBitState = false;
|
||||
|
||||
uint16_t TEF6686::getBlockA(void) {
|
||||
uint16_t blockA, dummy;
|
||||
devTEF_Radio_Get_RDS_Status(&dummy, &blockA, &dummy, &dummy, &dummy, &dummy);
|
||||
return blockA;
|
||||
}
|
||||
|
||||
|
||||
void TEF6686::TestAFEON() {
|
||||
uint16_t status;
|
||||
uint16_t dummy1;
|
||||
@@ -31,7 +38,7 @@ void TEF6686::TestAFEON() {
|
||||
}
|
||||
if (afoffset > -125 || afoffset < 125) {
|
||||
devTEF_Set_Cmd(TEF_FM, Cmd_Tune_To, 7, 4, af[x].frequency);
|
||||
delay(200);
|
||||
delay(187);
|
||||
devTEF_Radio_Get_RDS_Status(&rds.rdsStat, &rds.rdsA, &rds.rdsB, &rds.rdsC, &rds.rdsD, &rds.rdsErr);
|
||||
|
||||
if (rds.rdsStat & (1 << 9)) {
|
||||
@@ -97,7 +104,7 @@ uint16_t TEF6686::TestAF() {
|
||||
|
||||
if (af_counter != 0 && af[highestIndex].afvalid && af[highestIndex].score > (currentlevel - currentusn - currentwam) && (af[highestIndex].score - (currentlevel - currentusn - currentwam)) >= 70) {
|
||||
devTEF_Set_Cmd(TEF_FM, Cmd_Tune_To, 7, 4, af[highestIndex].frequency);
|
||||
delay(200);
|
||||
delay(187);
|
||||
devTEF_Radio_Get_RDS_Status(&rds.rdsStat, &rds.rdsA, &rds.rdsB, &rds.rdsC, &rds.rdsD, &rds.rdsErr);
|
||||
if (rds.rdsStat & (1 << 9)) {
|
||||
if ((afmethodB && rds.afreg ? (((rds.rdsA >> 8) & 0xF) > 2 && ((rds.correctPI >> 8) & 0xF) > 2 && ((rds.rdsA >> 12) & 0xF) == ((rds.correctPI >> 12) & 0xF) && (rds.rdsA & 0xFF) == (rds.correctPI & 0xFF)) || rds.rdsA == rds.correctPI : rds.rdsA == rds.correctPI)) {
|
||||
|
||||
@@ -708,6 +708,7 @@ class TEF6686 {
|
||||
void setUnMute();
|
||||
void setVolume(int8_t volume);
|
||||
void tone(uint16_t time, int16_t amplitude, uint16_t frequency);
|
||||
uint16_t getBlockA(void);
|
||||
String trimTrailingSpaces(String str);
|
||||
uint8_t af_counter;
|
||||
uint8_t eon_counter;
|
||||
|
||||
Reference in New Issue
Block a user