diff --git a/src/TEF6686.cpp b/src/TEF6686.cpp index da2c5c5..1bf5368 100644 --- a/src/TEF6686.cpp +++ b/src/TEF6686.cpp @@ -378,8 +378,7 @@ void TEF6686::readRDS(byte showrdserrors) if (rds.filter) { devTEF_Radio_Get_RDS_Status(&rds.rdsStat, &rds.rdsA, &rds.rdsB, &rds.rdsC, &rds.rdsD, &rds.rdsErr); } else { - devTEF_Radio_Get_RDS_Status(&rds.rdsStat, &rds.rdsAF, &rds.rdsBF, &rds.rdsCF, &rds.rdsDF, &rds.rdsErrF); - if (millis() >= rdstimer + 87) { + if (millis() >= rdstimer + 87) { rdstimer += 87; devTEF_Radio_Get_RDS_Data(&rds.rdsStat, &rds.rdsA, &rds.rdsB, &rds.rdsC, &rds.rdsD, &rds.rdsErr); @@ -400,17 +399,16 @@ void TEF6686::readRDS(byte showrdserrors) } } - rds.rdsAerror = (((rds.rdsErrF >> 14) & 0x03) > 2); - rds.rdsBerror = (((rds.rdsErrF >> 12) & 0x03) > 2); - rds.rdsCerror = (((rds.rdsErrF >> 10) & 0x03) > 2); - rds.rdsDerror = (((rds.rdsErrF >> 8) & 0x03) > 2); - rdsAerrorThreshold = (((rds.rdsErr >> 14) & 0x03) > showrdserrors); rdsBerrorThreshold = (((rds.rdsErr >> 12) & 0x03) > showrdserrors); rdsCerrorThreshold = (((rds.rdsErr >> 10) & 0x03) > showrdserrors); rdsDerrorThreshold = (((rds.rdsErr >> 8) & 0x03) > showrdserrors); if (bitRead(rds.rdsStat, 9)) { // We have all data to decode... let's go... + rds.rdsAerror = (((rds.rdsErr >> 14) & 0x03) > 2); + rds.rdsBerror = (((rds.rdsErr >> 12) & 0x03) > 2); + rds.rdsCerror = (((rds.rdsErr >> 10) & 0x03) > 2); + rds.rdsDerror = (((rds.rdsErr >> 8) & 0x03) > 2); //PI decoder if (!rdsAerrorThreshold && afreset) { diff --git a/src/TEF6686.h b/src/TEF6686.h index 2d104de..853ecc6 100644 --- a/src/TEF6686.h +++ b/src/TEF6686.h @@ -575,7 +575,7 @@ typedef struct _rds_ { char stationState[3]; char dabafeid[5]; char dabafchannel[4]; - uint16_t hour, minute, day, month, year, rdsA, rdsB, rdsC, rdsD, rdsErr, rdsAF, rdsBF, rdsCF, rdsDF, rdsErrF, rdsStat, correctPI, rdsplusTag1, rdsplusTag2; + uint16_t hour, minute, day, month, year, rdsA, rdsB, rdsC, rdsD, rdsErr, rdsStat, correctPI, rdsplusTag1, rdsplusTag2; uint16_t aid[10]; uint32_t dabaffreq; byte aid_counter; diff --git a/src/rds.cpp b/src/rds.cpp index 41ddadc..249c315 100644 --- a/src/rds.cpp +++ b/src/rds.cpp @@ -410,12 +410,13 @@ void readRds() { } } + if (bitRead(radio.rds.rdsStat, 9)) { if ((RDSstatus && RDSSPYUSB) || (RDSstatus && RDSSPYTCP)) { RDSSPYRDS = "G:\r\n"; - if (radio.rds.rdsAerror) RDSSPYRDS += "----"; else RDSSPYRDS += String(((radio.rds.rdsAF >> 8) >> 4) & 0xF, HEX) + String((radio.rds.rdsAF >> 8) & 0xF, HEX) + String(((radio.rds.rdsAF) >> 4) & 0xF, HEX) + String((radio.rds.rdsAF) & 0xF, HEX); - if (radio.rds.rdsBerror) RDSSPYRDS += "----"; else RDSSPYRDS += String(((radio.rds.rdsBF >> 8) >> 4) & 0xF, HEX) + String((radio.rds.rdsBF >> 8) & 0xF, HEX) + String(((radio.rds.rdsBF) >> 4) & 0xF, HEX) + String((radio.rds.rdsBF) & 0xF, HEX); - if (radio.rds.rdsCerror) RDSSPYRDS += "----"; else RDSSPYRDS += String(((radio.rds.rdsCF >> 8) >> 4) & 0xF, HEX) + String((radio.rds.rdsCF >> 8) & 0xF, HEX) + String(((radio.rds.rdsCF) >> 4) & 0xF, HEX) + String((radio.rds.rdsCF) & 0xF, HEX); - if (radio.rds.rdsDerror) RDSSPYRDS += "----"; else RDSSPYRDS += String(((radio.rds.rdsDF >> 8) >> 4) & 0xF, HEX) + String((radio.rds.rdsDF >> 8) & 0xF, HEX) + String(((radio.rds.rdsDF) >> 4) & 0xF, HEX) + String((radio.rds.rdsDF) & 0xF, HEX); + if (radio.rds.rdsAerror) RDSSPYRDS += "----"; else RDSSPYRDS += String(((radio.rds.rdsA >> 8) >> 4) & 0xF, HEX) + String((radio.rds.rdsA >> 8) & 0xF, HEX) + String(((radio.rds.rdsA) >> 4) & 0xF, HEX) + String((radio.rds.rdsA) & 0xF, HEX); + if (radio.rds.rdsBerror) RDSSPYRDS += "----"; else RDSSPYRDS += String(((radio.rds.rdsB >> 8) >> 4) & 0xF, HEX) + String((radio.rds.rdsB >> 8) & 0xF, HEX) + String(((radio.rds.rdsB) >> 4) & 0xF, HEX) + String((radio.rds.rdsB) & 0xF, HEX); + if (radio.rds.rdsCerror) RDSSPYRDS += "----"; else RDSSPYRDS += String(((radio.rds.rdsC >> 8) >> 4) & 0xF, HEX) + String((radio.rds.rdsC >> 8) & 0xF, HEX) + String(((radio.rds.rdsC) >> 4) & 0xF, HEX) + String((radio.rds.rdsC) & 0xF, HEX); + if (radio.rds.rdsDerror) RDSSPYRDS += "----"; else RDSSPYRDS += String(((radio.rds.rdsD >> 8) >> 4) & 0xF, HEX) + String((radio.rds.rdsD >> 8) & 0xF, HEX) + String(((radio.rds.rdsD) >> 4) & 0xF, HEX) + String((radio.rds.rdsD) & 0xF, HEX); RDSSPYRDS += "\r\n\r\n"; if (RDSSPYRDS != RDSSPYRDSold) { @@ -426,31 +427,31 @@ void readRds() { if ((RDSstatus && XDRGTKUSB) || (RDSstatus && XDRGTKTCP)) { XDRGTKRDS = "R"; - XDRGTKRDS += String(((radio.rds.rdsBF >> 8) >> 4) & 0xF, HEX) + String((radio.rds.rdsBF >> 8) & 0xF, HEX); - XDRGTKRDS += String(((radio.rds.rdsBF) >> 4) & 0xF, HEX) + String((radio.rds.rdsBF) & 0xF, HEX); - XDRGTKRDS += String(((radio.rds.rdsCF >> 8) >> 4) & 0xF, HEX) + String((radio.rds.rdsCF >> 8) & 0xF, HEX); - XDRGTKRDS += String(((radio.rds.rdsCF) >> 4) & 0xF, HEX) + String((radio.rds.rdsCF) & 0xF, HEX); - XDRGTKRDS += String(((radio.rds.rdsDF >> 8) >> 4) & 0xF, HEX) + String((radio.rds.rdsDF >> 8) & 0xF, HEX); - XDRGTKRDS += String(((radio.rds.rdsDF) >> 4) & 0xF, HEX) + String((radio.rds.rdsDF) & 0xF, HEX); + XDRGTKRDS += String(((radio.rds.rdsB >> 8) >> 4) & 0xF, HEX) + String((radio.rds.rdsB >> 8) & 0xF, HEX); + XDRGTKRDS += String(((radio.rds.rdsB) >> 4) & 0xF, HEX) + String((radio.rds.rdsB) & 0xF, HEX); + XDRGTKRDS += String(((radio.rds.rdsC >> 8) >> 4) & 0xF, HEX) + String((radio.rds.rdsC >> 8) & 0xF, HEX); + XDRGTKRDS += String(((radio.rds.rdsC) >> 4) & 0xF, HEX) + String((radio.rds.rdsC) & 0xF, HEX); + XDRGTKRDS += String(((radio.rds.rdsD >> 8) >> 4) & 0xF, HEX) + String((radio.rds.rdsD >> 8) & 0xF, HEX); + XDRGTKRDS += String(((radio.rds.rdsD) >> 4) & 0xF, HEX) + String((radio.rds.rdsD) & 0xF, HEX); uint8_t erroutput = 0; - erroutput |= ((radio.rds.rdsErrF >> 8) & B00110000) >> 4; - erroutput |= ((radio.rds.rdsErrF >> 8) & B00001100); - erroutput |= ((radio.rds.rdsErrF >> 8) & B00000011) << 4; + erroutput |= ((radio.rds.rdsErr >> 8) & B00110000) >> 4; + erroutput |= ((radio.rds.rdsErr >> 8) & B00001100); + erroutput |= ((radio.rds.rdsErr >> 8) & B00000011) << 4; XDRGTKRDS += String((erroutput >> 4) & 0xF, HEX); XDRGTKRDS += String(erroutput & 0xF, HEX); XDRGTKRDS += "\n"; if (XDRGTKRDS != XDRGTKRDSold) { - uint8_t piError = radio.rds.rdsErrF >> 14; + uint8_t piError = radio.rds.rdsErr >> 14; if (piError < 3) { - uint8_t piState = radio.rds.piBuffer.add(radio.rds.rdsAF, piError); + uint8_t piState = radio.rds.piBuffer.add(radio.rds.rdsA, piError); if (piState != RdsPiBuffer::STATE_INVALID) { DataPrint ("P"); String PIcodeToSend; - PIcodeToSend = String(((radio.rds.rdsAF >> 8) >> 4) & 0xF, HEX) + String((radio.rds.rdsAF >> 8) & 0xF, HEX) + String(((radio.rds.rdsAF) >> 4) & 0xF, HEX) + String((radio.rds.rdsAF) & 0xF, HEX); + PIcodeToSend = String(((radio.rds.rdsA >> 8) >> 4) & 0xF, HEX) + String((radio.rds.rdsA >> 8) & 0xF, HEX) + String(((radio.rds.rdsA) >> 4) & 0xF, HEX) + String((radio.rds.rdsA) & 0xF, HEX); PIcodeToSend.toUpperCase(); DataPrint (PIcodeToSend); while (piState != 0) { @@ -466,6 +467,7 @@ void readRds() { } } } + } } void ShowErrors() {