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