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:
Sjef Verhoeven PE5PVB
2023-06-03 19:36:12 +02:00
parent ecd4bb4702
commit 31fc03c69f
2 changed files with 67 additions and 66 deletions

View File

@@ -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;

View File

@@ -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_ {