You've already forked TEF6686_ESP32
Update API
When using no RDS error filter, PTY, CT, MS, ECC, AF, TP will only be parsed when RDS is error free. Add a bool to determine if PI was error free (correctPI)
This commit is contained in:
@@ -272,6 +272,8 @@ bool TEF6686::readRDS(bool showrdserrors)
|
|||||||
rds.errors = rdsErr;
|
rds.errors = rdsErr;
|
||||||
bool x;
|
bool x;
|
||||||
if (showrdserrors == false) x = rdsErrCheck; else x = true;
|
if (showrdserrors == false) x = rdsErrCheck; else x = true;
|
||||||
|
if (rdsErrCheck) rds.correct = true; else rds.correct = false;
|
||||||
|
|
||||||
if (rdsDataReady && x)
|
if (rdsDataReady && x)
|
||||||
{
|
{
|
||||||
//PI
|
//PI
|
||||||
@@ -283,14 +285,10 @@ bool TEF6686::readRDS(bool showrdserrors)
|
|||||||
rds.picode[3] = Hex[(rds.rdsA & 0x000FU)];
|
rds.picode[3] = Hex[(rds.rdsA & 0x000FU)];
|
||||||
rds.picode[4] = '\0';
|
rds.picode[4] = '\0';
|
||||||
rds_group = (rds.rdsB >> 11);
|
rds_group = (rds.rdsB >> 11);
|
||||||
|
if (rds.correctPI == false && rds.correct == true) rds.correctPI = true;
|
||||||
if (rdsErrCheck) rds.correct = true; else rds.correct = false;
|
switch (rds_group) {
|
||||||
|
|
||||||
switch (rds_group)
|
|
||||||
{
|
|
||||||
case RDS_GROUP_0A:
|
case RDS_GROUP_0A:
|
||||||
case RDS_GROUP_0B:
|
case RDS_GROUP_0B: {
|
||||||
{
|
|
||||||
//RDS Programm-Service
|
//RDS Programm-Service
|
||||||
offset = rds.rdsB & 0x03;
|
offset = rds.rdsB & 0x03;
|
||||||
if ((offset == 0) && (ps_process == 0)) ps_process = 1;
|
if ((offset == 0) && (ps_process == 0)) ps_process = 1;
|
||||||
@@ -309,6 +307,7 @@ bool TEF6686::readRDS(bool showrdserrors)
|
|||||||
rds.hasPS = true;
|
rds.hasPS = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (rds.correct) {
|
||||||
//PTY
|
//PTY
|
||||||
rds.stationTypeCode = (rds.rdsB >> 5) & 0x1F;
|
rds.stationTypeCode = (rds.rdsB >> 5) & 0x1F;
|
||||||
rds.hasPTY = true;
|
rds.hasPTY = true;
|
||||||
@@ -345,15 +344,15 @@ bool TEF6686::readRDS(bool showrdserrors)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} break;
|
} break;
|
||||||
|
|
||||||
case RDS_GROUP_1A:
|
case RDS_GROUP_1A:
|
||||||
if (rds.rdsC < 255) rds.ECC = rds.rdsC;
|
if (rds.correct) if (rds.rdsC < 255) rds.ECC = rds.rdsC;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case RDS_GROUP_2A:
|
case RDS_GROUP_2A:
|
||||||
case RDS_GROUP_2B:
|
case RDS_GROUP_2B: {
|
||||||
{
|
|
||||||
boolean limit_reached = false;
|
boolean limit_reached = false;
|
||||||
rds.hasRT = true;
|
rds.hasRT = true;
|
||||||
offset = (rds.rdsB & 0xf) * 4;
|
offset = (rds.rdsB & 0xf) * 4;
|
||||||
@@ -413,8 +412,8 @@ bool TEF6686::readRDS(bool showrdserrors)
|
|||||||
} break;
|
} break;
|
||||||
|
|
||||||
case RDS_GROUP_4A:
|
case RDS_GROUP_4A:
|
||||||
case RDS_GROUP_4B:
|
case RDS_GROUP_4B: {
|
||||||
{
|
if (rds.correct) {
|
||||||
uint32_t mjd;
|
uint32_t mjd;
|
||||||
rds.hasCT = true;
|
rds.hasCT = true;
|
||||||
mjd = (rds.rdsB & 0x03);
|
mjd = (rds.rdsB & 0x03);
|
||||||
@@ -441,6 +440,7 @@ bool TEF6686::readRDS(bool showrdserrors)
|
|||||||
rds.offsetplusmin = ((bitRead(rds.rdsD, 5)) & 0x3f);
|
rds.offsetplusmin = ((bitRead(rds.rdsD, 5)) & 0x3f);
|
||||||
rds.offset = (rds.rdsD & 0x3f);
|
rds.offset = (rds.rdsD & 0x3f);
|
||||||
rds.hasCT = true;
|
rds.hasCT = true;
|
||||||
|
}
|
||||||
} break;
|
} break;
|
||||||
|
|
||||||
case RDS_GROUP_10A:
|
case RDS_GROUP_10A:
|
||||||
@@ -448,8 +448,7 @@ bool TEF6686::readRDS(bool showrdserrors)
|
|||||||
case RDS_GROUP_11A:
|
case RDS_GROUP_11A:
|
||||||
case RDS_GROUP_11B:
|
case RDS_GROUP_11B:
|
||||||
case RDS_GROUP_12A:
|
case RDS_GROUP_12A:
|
||||||
case RDS_GROUP_12B:
|
case RDS_GROUP_12B: {
|
||||||
{
|
|
||||||
if (useRTPlus)
|
if (useRTPlus)
|
||||||
{
|
{
|
||||||
uint16_t content_byte_1 = (rds.rdsB & 0x07);
|
uint16_t content_byte_1 = (rds.rdsB & 0x07);
|
||||||
@@ -576,6 +575,7 @@ void TEF6686::clearRDS (bool fullsearchrds)
|
|||||||
rds.stationTextOffset = 0;
|
rds.stationTextOffset = 0;
|
||||||
rds.errors = 0;
|
rds.errors = 0;
|
||||||
rds.correct = 0;
|
rds.correct = 0;
|
||||||
|
rds.correctPI = 0;
|
||||||
rt_process = 0;
|
rt_process = 0;
|
||||||
ps_process = 1;
|
ps_process = 1;
|
||||||
af_counter = 0;
|
af_counter = 0;
|
||||||
|
|||||||
@@ -43,6 +43,7 @@ typedef struct _rds_ {
|
|||||||
bool afclear;
|
bool afclear;
|
||||||
bool rtAB;
|
bool rtAB;
|
||||||
bool correct;
|
bool correct;
|
||||||
|
bool correctPI;
|
||||||
} rds_;
|
} rds_;
|
||||||
|
|
||||||
typedef struct _af_ {
|
typedef struct _af_ {
|
||||||
|
|||||||
Reference in New Issue
Block a user