You've already forked TEF6686_ESP32
Only parse RDS on block change
This commit is contained in:
@@ -377,19 +377,18 @@ bool TEF6686::getStatusAM(int16_t &level, uint16_t &noise, uint16_t &cochannel,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void TEF6686::readRDS(byte showrdserrors) {
|
void TEF6686::readRDS(byte showrdserrors) {
|
||||||
|
if (millis() - rdstimer > 87) {
|
||||||
|
rdstimer == millis();
|
||||||
uint8_t offset;
|
uint8_t offset;
|
||||||
if (rds.filter || ps_process) {
|
if (rds.filter) {
|
||||||
devTEF_Radio_Get_RDS_Status(&rds.rdsStat, &rds.rdsA, &rds.rdsB, &rds.rdsC, &rds.rdsD, &rds.rdsErr);
|
devTEF_Radio_Get_RDS_Status(&rds.rdsStat, &rds.rdsA, &rds.rdsB, &rds.rdsC, &rds.rdsD, &rds.rdsErr);
|
||||||
} else {
|
} else {
|
||||||
if (millis() >= rdstimer + 87) {
|
|
||||||
rdstimer += 87;
|
|
||||||
devTEF_Radio_Get_RDS_Data(&rds.rdsStat, &rds.rdsA, &rds.rdsB, &rds.rdsC, &rds.rdsD, &rds.rdsErr);
|
devTEF_Radio_Get_RDS_Data(&rds.rdsStat, &rds.rdsA, &rds.rdsB, &rds.rdsC, &rds.rdsD, &rds.rdsErr);
|
||||||
|
|
||||||
if ((rds.rdsStat & (1 << 14))) {
|
if ((rds.rdsStat & (1 << 14))) {
|
||||||
for (int i = 0; i < 22; i++) devTEF_Radio_Get_RDS_Data(&rds.rdsStat, &rds.rdsA, &rds.rdsB, &rds.rdsC, &rds.rdsD, &rds.rdsErr);
|
for (int i = 0; i < 22; i++) devTEF_Radio_Get_RDS_Data(&rds.rdsStat, &rds.rdsA, &rds.rdsB, &rds.rdsC, &rds.rdsD, &rds.rdsErr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (bitRead(rds.rdsStat, 9)) {
|
if (bitRead(rds.rdsStat, 9)) {
|
||||||
rds.hasRDS = true; // RDS decoder synchronized and data available
|
rds.hasRDS = true; // RDS decoder synchronized and data available
|
||||||
@@ -407,8 +406,8 @@ void TEF6686::readRDS(byte showrdserrors) {
|
|||||||
rdsCerrorThreshold = (((rds.rdsErr >> 10) & 0x03) > showrdserrors);
|
rdsCerrorThreshold = (((rds.rdsErr >> 10) & 0x03) > showrdserrors);
|
||||||
rdsDerrorThreshold = (((rds.rdsErr >> 8) & 0x03) > showrdserrors);
|
rdsDerrorThreshold = (((rds.rdsErr >> 8) & 0x03) > showrdserrors);
|
||||||
|
|
||||||
if (bitRead(rds.rdsStat, 9)) { // We have all data to decode... let's go...
|
if (bitRead(rds.rdsStat, 9) && (rds.rdsA != previous_rdsA || rds.rdsB != previous_rdsB || rds.rdsC != previous_rdsC || rds.rdsD != previous_rdsD)) {
|
||||||
rds.rdsAerror = (((rds.rdsErr >> 14) & 0x03) > 1);
|
rds.rdsAerror = (((rds.rdsErr >> 14) & 0x03) > 1); // We have all data to decode... let's go...
|
||||||
rds.rdsBerror = (((rds.rdsErr >> 12) & 0x03) > 1);
|
rds.rdsBerror = (((rds.rdsErr >> 12) & 0x03) > 1);
|
||||||
rds.rdsCerror = (((rds.rdsErr >> 10) & 0x03) > 1);
|
rds.rdsCerror = (((rds.rdsErr >> 10) & 0x03) > 1);
|
||||||
rds.rdsDerror = (((rds.rdsErr >> 8) & 0x03) > 1);
|
rds.rdsDerror = (((rds.rdsErr >> 8) & 0x03) > 1);
|
||||||
@@ -1640,6 +1639,12 @@ void TEF6686::readRDS(byte showrdserrors) {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
previous_rdsA = rds.rdsA;
|
||||||
|
previous_rdsB = rds.rdsB;
|
||||||
|
previous_rdsC = rds.rdsC;
|
||||||
|
previous_rdsD = rds.rdsD;
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -760,11 +760,9 @@ class TEF6686 {
|
|||||||
bool initab;
|
bool initab;
|
||||||
bool afinit;
|
bool afinit;
|
||||||
bool errorfreepi;
|
bool errorfreepi;
|
||||||
bool rdsAerrorThreshold;
|
bool rdsAerrorThreshold, rdsBerrorThreshold, rdsCerrorThreshold, rdsDerrorThreshold;
|
||||||
bool rdsBerrorThreshold;
|
|
||||||
bool rdsCerrorThreshold;
|
|
||||||
bool rdsDerrorThreshold;
|
|
||||||
bool packet0, packet1, packet2, packet3, packet0long, packet1long, packet2long, packet3long;
|
bool packet0, packet1, packet2, packet3, packet0long, packet1long, packet2long, packet3long;
|
||||||
|
uint16_t previous_rdsA, previous_rdsB, previous_rdsC, previous_rdsD;
|
||||||
bool afmethodBprobe;
|
bool afmethodBprobe;
|
||||||
bool eRTcoding;
|
bool eRTcoding;
|
||||||
uint16_t rdsCold;
|
uint16_t rdsCold;
|
||||||
|
|||||||
Reference in New Issue
Block a user