little funcitonal changes, just performance

This commit is contained in:
2026-01-07 21:42:22 +01:00
parent aa5bd3f847
commit 3a92d1cdf1
9 changed files with 297 additions and 308 deletions

View File

@@ -535,7 +535,7 @@ void TEF6686::readRDS(byte showrdserrors) {
if(bitRead(rds.rdsStat, 12) && (rdsgroup & 1) == 0) goto end; // Modulation says type B, but data says otherwise? Dunno what to treat it as, thus skip
rds.TP = (bitRead(rds.rdsB, 10));
rds.PTY = (rds.rdsB >> 5) & 0x1F;
rds.PTY.set((rds.rdsB >> 5) & 0x1F);
rds.blockcounter[rdsgroup]++;
processed_rdsblocks++;
@@ -760,297 +760,297 @@ void TEF6686::readRDS(byte showrdserrors) {
case RDS_GROUP_1A: {
if (!rdsCerrorThreshold && ((rds.rdsC >> 12) & 0x07) == 0) {
rds.ECC = rds.rdsC & 0xff;
rds.ECC.set(rds.rdsC & 0xff);
rds.hasECC = true;
switch (rds.picode[0]) {
case '1': {
if (rds.ECC == 0xA0) rds.ECCtext = ECCtext[226];
else if (rds.ECC == 0xA2) rds.ECCtext = ECCtext[129];
else if (rds.ECC == 0xA3) rds.ECCtext = ECCtext[136];
else if (rds.ECC == 0xA4) rds.ECCtext = ECCtext[152];
else if (rds.ECC == 0xD0) rds.ECCtext = ECCtext[104];
else if (rds.ECC == 0xD1) rds.ECCtext = ECCtext[73];
else if (rds.ECC == 0xD2) rds.ECCtext = ECCtext[83];
else if (rds.ECC == 0xE0) rds.ECCtext = ECCtext[0];
else if (rds.ECC == 0xE1) rds.ECCtext = ECCtext[1];
else if (rds.ECC == 0xE2) rds.ECCtext = ECCtext[2];
else if (rds.ECC == 0xE3) rds.ECCtext = ECCtext[59];
else if (rds.ECC == 0xE4) rds.ECCtext = ECCtext[3];
else if (rds.ECC == 0xF0) rds.ECCtext = ECCtext[179];
else if (rds.ECC == 0xF1) rds.ECCtext = ECCtext[197];
else if (rds.ECC == 0xF2) rds.ECCtext = ECCtext[124];
else if (rds.ECC == 0xF3) rds.ECCtext = ECCtext[200];
if (rds.ECC.get() == 0xA0) rds.ECCtext = ECCtext[226];
else if (rds.ECC.get() == 0xA2) rds.ECCtext = ECCtext[129];
else if (rds.ECC.get() == 0xA3) rds.ECCtext = ECCtext[136];
else if (rds.ECC.get() == 0xA4) rds.ECCtext = ECCtext[152];
else if (rds.ECC.get() == 0xD0) rds.ECCtext = ECCtext[104];
else if (rds.ECC.get() == 0xD1) rds.ECCtext = ECCtext[73];
else if (rds.ECC.get() == 0xD2) rds.ECCtext = ECCtext[83];
else if (rds.ECC.get() == 0xE0) rds.ECCtext = ECCtext[0];
else if (rds.ECC.get() == 0xE1) rds.ECCtext = ECCtext[1];
else if (rds.ECC.get() == 0xE2) rds.ECCtext = ECCtext[2];
else if (rds.ECC.get() == 0xE3) rds.ECCtext = ECCtext[59];
else if (rds.ECC.get() == 0xE4) rds.ECCtext = ECCtext[3];
else if (rds.ECC.get() == 0xF0) rds.ECCtext = ECCtext[179];
else if (rds.ECC.get() == 0xF1) rds.ECCtext = ECCtext[197];
else if (rds.ECC.get() == 0xF2) rds.ECCtext = ECCtext[124];
else if (rds.ECC.get() == 0xF3) rds.ECCtext = ECCtext[200];
break;
}
case '2': {
if (rds.ECC == 0xA0) rds.ECCtext = ECCtext[226];
else if (rds.ECC == 0xA2) rds.ECCtext = ECCtext[130];
else if (rds.ECC == 0xA3) rds.ECCtext = ECCtext[141];
else if (rds.ECC == 0xA4) rds.ECCtext = ECCtext[155];
else if (rds.ECC == 0xD0) rds.ECCtext = ECCtext[106];
else if (rds.ECC == 0xD1) rds.ECCtext = ECCtext[126];
else if (rds.ECC == 0xD2) rds.ECCtext = ECCtext[95];
else if (rds.ECC == 0xE0) rds.ECCtext = ECCtext[4];
else if (rds.ECC == 0xE1) rds.ECCtext = ECCtext[5];
else if (rds.ECC == 0xE2) rds.ECCtext = ECCtext[6];
else if (rds.ECC == 0xE3) rds.ECCtext = ECCtext[7];
else if (rds.ECC == 0xE4) rds.ECCtext = ECCtext[8];
else if (rds.ECC == 0xF0) rds.ECCtext = ECCtext[180];
else if (rds.ECC == 0xF1) rds.ECCtext = ECCtext[187];
else if (rds.ECC == 0xF2) rds.ECCtext = ECCtext[77];
else if (rds.ECC == 0xF3) rds.ECCtext = ECCtext[218];
if (rds.ECC.get() == 0xA0) rds.ECCtext = ECCtext[226];
else if (rds.ECC.get() == 0xA2) rds.ECCtext = ECCtext[130];
else if (rds.ECC.get() == 0xA3) rds.ECCtext = ECCtext[141];
else if (rds.ECC.get() == 0xA4) rds.ECCtext = ECCtext[155];
else if (rds.ECC.get() == 0xD0) rds.ECCtext = ECCtext[106];
else if (rds.ECC.get() == 0xD1) rds.ECCtext = ECCtext[126];
else if (rds.ECC.get() == 0xD2) rds.ECCtext = ECCtext[95];
else if (rds.ECC.get() == 0xE0) rds.ECCtext = ECCtext[4];
else if (rds.ECC.get() == 0xE1) rds.ECCtext = ECCtext[5];
else if (rds.ECC.get() == 0xE2) rds.ECCtext = ECCtext[6];
else if (rds.ECC.get() == 0xE3) rds.ECCtext = ECCtext[7];
else if (rds.ECC.get() == 0xE4) rds.ECCtext = ECCtext[8];
else if (rds.ECC.get() == 0xF0) rds.ECCtext = ECCtext[180];
else if (rds.ECC.get() == 0xF1) rds.ECCtext = ECCtext[187];
else if (rds.ECC.get() == 0xF2) rds.ECCtext = ECCtext[77];
else if (rds.ECC.get() == 0xF3) rds.ECCtext = ECCtext[218];
break;
}
case '3': {
if (rds.ECC == 0xA0) rds.ECCtext = ECCtext[226];
else if (rds.ECC == 0xA2) rds.ECCtext = ECCtext[224];
else if (rds.ECC == 0xA3) rds.ECCtext = ECCtext[156];
else if (rds.ECC == 0xA4) rds.ECCtext = ECCtext[132];
else if (rds.ECC == 0xD0) rds.ECCtext = ECCtext[112];
else if (rds.ECC == 0xD1) rds.ECCtext = ECCtext[119];
else if (rds.ECC == 0xD2) rds.ECCtext = ECCtext[72];
else if (rds.ECC == 0xD3) rds.ECCtext = ECCtext[92];
else if (rds.ECC == 0xE0) rds.ECCtext = ECCtext[9];
else if (rds.ECC == 0xE1) rds.ECCtext = ECCtext[10];
else if (rds.ECC == 0xE2) rds.ECCtext = ECCtext[11];
else if (rds.ECC == 0xE3) rds.ECCtext = ECCtext[12];
else if (rds.ECC == 0xE4) rds.ECCtext = ECCtext[16];
else if (rds.ECC == 0xE5) rds.ECCtext = ECCtext[63];
else if (rds.ECC == 0xE6) rds.ECCtext = ECCtext[228];
else if (rds.ECC == 0xF0) rds.ECCtext = ECCtext[181];
else if (rds.ECC == 0xF1) rds.ECCtext = ECCtext[227];
else if (rds.ECC == 0xF2) rds.ECCtext = ECCtext[189];
else if (rds.ECC == 0xF3) rds.ECCtext = ECCtext[219];
if (rds.ECC.get() == 0xA0) rds.ECCtext = ECCtext[226];
else if (rds.ECC.get() == 0xA2) rds.ECCtext = ECCtext[224];
else if (rds.ECC.get() == 0xA3) rds.ECCtext = ECCtext[156];
else if (rds.ECC.get() == 0xA4) rds.ECCtext = ECCtext[132];
else if (rds.ECC.get() == 0xD0) rds.ECCtext = ECCtext[112];
else if (rds.ECC.get() == 0xD1) rds.ECCtext = ECCtext[119];
else if (rds.ECC.get() == 0xD2) rds.ECCtext = ECCtext[72];
else if (rds.ECC.get() == 0xD3) rds.ECCtext = ECCtext[92];
else if (rds.ECC.get() == 0xE0) rds.ECCtext = ECCtext[9];
else if (rds.ECC.get() == 0xE1) rds.ECCtext = ECCtext[10];
else if (rds.ECC.get() == 0xE2) rds.ECCtext = ECCtext[11];
else if (rds.ECC.get() == 0xE3) rds.ECCtext = ECCtext[12];
else if (rds.ECC.get() == 0xE4) rds.ECCtext = ECCtext[16];
else if (rds.ECC.get() == 0xE5) rds.ECCtext = ECCtext[63];
else if (rds.ECC.get() == 0xE6) rds.ECCtext = ECCtext[228];
else if (rds.ECC.get() == 0xF0) rds.ECCtext = ECCtext[181];
else if (rds.ECC.get() == 0xF1) rds.ECCtext = ECCtext[227];
else if (rds.ECC.get() == 0xF2) rds.ECCtext = ECCtext[189];
else if (rds.ECC.get() == 0xF3) rds.ECCtext = ECCtext[219];
break;
}
case '4': {
if (rds.ECC == 0xA0) rds.ECCtext = ECCtext[226];
else if (rds.ECC == 0xA2) rds.ECCtext = ECCtext[148];
else if (rds.ECC == 0xA3) rds.ECCtext = ECCtext[157];
else if (rds.ECC == 0xD0) rds.ECCtext = ECCtext[127];
else if (rds.ECC == 0xD1) rds.ECCtext = ECCtext[69];
else if (rds.ECC == 0xD2) rds.ECCtext = ECCtext[91];
else if (rds.ECC == 0xD3) rds.ECCtext = ECCtext[103];
else if (rds.ECC == 0xE0) rds.ECCtext = ECCtext[13];
else if (rds.ECC == 0xE1) rds.ECCtext = ECCtext[14];
else if (rds.ECC == 0xE2) rds.ECCtext = ECCtext[15];
else if (rds.ECC == 0xF0) rds.ECCtext = ECCtext[182];
else if (rds.ECC == 0xF1) rds.ECCtext = ECCtext[210];
else if (rds.ECC == 0xF2) rds.ECCtext = ECCtext[213];
if (rds.ECC.get() == 0xA0) rds.ECCtext = ECCtext[226];
else if (rds.ECC.get() == 0xA2) rds.ECCtext = ECCtext[148];
else if (rds.ECC.get() == 0xA3) rds.ECCtext = ECCtext[157];
else if (rds.ECC.get() == 0xD0) rds.ECCtext = ECCtext[127];
else if (rds.ECC.get() == 0xD1) rds.ECCtext = ECCtext[69];
else if (rds.ECC.get() == 0xD2) rds.ECCtext = ECCtext[91];
else if (rds.ECC.get() == 0xD3) rds.ECCtext = ECCtext[103];
else if (rds.ECC.get() == 0xE0) rds.ECCtext = ECCtext[13];
else if (rds.ECC.get() == 0xE1) rds.ECCtext = ECCtext[14];
else if (rds.ECC.get() == 0xE2) rds.ECCtext = ECCtext[15];
else if (rds.ECC.get() == 0xF0) rds.ECCtext = ECCtext[182];
else if (rds.ECC.get() == 0xF1) rds.ECCtext = ECCtext[210];
else if (rds.ECC.get() == 0xF2) rds.ECCtext = ECCtext[213];
break;
}
case '5': {
if (rds.ECC == 0xA0) rds.ECCtext = ECCtext[226];
else if (rds.ECC == 0xA2) rds.ECCtext = ECCtext[133];
else if (rds.ECC == 0xA4) rds.ECCtext = ECCtext[159];
else if (rds.ECC == 0xD0) rds.ECCtext = ECCtext[68];
else if (rds.ECC == 0xD1) rds.ECCtext = ECCtext[79];
else if (rds.ECC == 0xD2) rds.ECCtext = ECCtext[88];
else if (rds.ECC == 0xD3) rds.ECCtext = ECCtext[78];
else if (rds.ECC == 0xE0) rds.ECCtext = ECCtext[17];
else if (rds.ECC == 0xE1) rds.ECCtext = ECCtext[18];
else if (rds.ECC == 0xE2) rds.ECCtext = ECCtext[19];
else if (rds.ECC == 0xE3) rds.ECCtext = ECCtext[65];
else if (rds.ECC == 0xF0) rds.ECCtext = ECCtext[183];
else if (rds.ECC == 0xF1) rds.ECCtext = ECCtext[191];
else if (rds.ECC == 0xF2) rds.ECCtext = ECCtext[193];
if (rds.ECC.get() == 0xA0) rds.ECCtext = ECCtext[226];
else if (rds.ECC.get() == 0xA2) rds.ECCtext = ECCtext[133];
else if (rds.ECC.get() == 0xA4) rds.ECCtext = ECCtext[159];
else if (rds.ECC.get() == 0xD0) rds.ECCtext = ECCtext[68];
else if (rds.ECC.get() == 0xD1) rds.ECCtext = ECCtext[79];
else if (rds.ECC.get() == 0xD2) rds.ECCtext = ECCtext[88];
else if (rds.ECC.get() == 0xD3) rds.ECCtext = ECCtext[78];
else if (rds.ECC.get() == 0xE0) rds.ECCtext = ECCtext[17];
else if (rds.ECC.get() == 0xE1) rds.ECCtext = ECCtext[18];
else if (rds.ECC.get() == 0xE2) rds.ECCtext = ECCtext[19];
else if (rds.ECC.get() == 0xE3) rds.ECCtext = ECCtext[65];
else if (rds.ECC.get() == 0xF0) rds.ECCtext = ECCtext[183];
else if (rds.ECC.get() == 0xF1) rds.ECCtext = ECCtext[191];
else if (rds.ECC.get() == 0xF2) rds.ECCtext = ECCtext[193];
break;
}
case '6': {
if (rds.ECC == 0xA0) rds.ECCtext = ECCtext[226];
else if (rds.ECC == 0xA2) rds.ECCtext = ECCtext[134];
else if (rds.ECC == 0xA3) rds.ECCtext = ECCtext[163];
else if (rds.ECC == 0xA4) rds.ECCtext = ECCtext[171];
else if (rds.ECC == 0xD0) rds.ECCtext = ECCtext[96];
else if (rds.ECC == 0xD1) rds.ECCtext = ECCtext[105];
else if (rds.ECC == 0xD2) rds.ECCtext = ECCtext[123];
else if (rds.ECC == 0xD3) rds.ECCtext = ECCtext[125];
else if (rds.ECC == 0xE0) rds.ECCtext = ECCtext[20];
else if (rds.ECC == 0xE1) rds.ECCtext = ECCtext[21];
else if (rds.ECC == 0xE2) rds.ECCtext = ECCtext[22];
else if (rds.ECC == 0xE3) rds.ECCtext = ECCtext[24];
else if (rds.ECC == 0xF0) rds.ECCtext = ECCtext[184];
else if (rds.ECC == 0xF1) rds.ECCtext = ECCtext[76];
else if (rds.ECC == 0xF2) rds.ECCtext = ECCtext[201];
if (rds.ECC.get() == 0xA0) rds.ECCtext = ECCtext[226];
else if (rds.ECC.get() == 0xA2) rds.ECCtext = ECCtext[134];
else if (rds.ECC.get() == 0xA3) rds.ECCtext = ECCtext[163];
else if (rds.ECC.get() == 0xA4) rds.ECCtext = ECCtext[171];
else if (rds.ECC.get() == 0xD0) rds.ECCtext = ECCtext[96];
else if (rds.ECC.get() == 0xD1) rds.ECCtext = ECCtext[105];
else if (rds.ECC.get() == 0xD2) rds.ECCtext = ECCtext[123];
else if (rds.ECC.get() == 0xD3) rds.ECCtext = ECCtext[125];
else if (rds.ECC.get() == 0xE0) rds.ECCtext = ECCtext[20];
else if (rds.ECC.get() == 0xE1) rds.ECCtext = ECCtext[21];
else if (rds.ECC.get() == 0xE2) rds.ECCtext = ECCtext[22];
else if (rds.ECC.get() == 0xE3) rds.ECCtext = ECCtext[24];
else if (rds.ECC.get() == 0xF0) rds.ECCtext = ECCtext[184];
else if (rds.ECC.get() == 0xF1) rds.ECCtext = ECCtext[76];
else if (rds.ECC.get() == 0xF2) rds.ECCtext = ECCtext[201];
break;
}
case '7': {
if (rds.ECC == 0xA0) rds.ECCtext = ECCtext[226];
else if (rds.ECC == 0xA2) rds.ECCtext = ECCtext[139];
else if (rds.ECC == 0xA3) rds.ECCtext = ECCtext[161];
else if (rds.ECC == 0xA4) rds.ECCtext = ECCtext[164];
else if (rds.ECC == 0xD0) rds.ECCtext = ECCtext[113];
else if (rds.ECC == 0xD1) rds.ECCtext = ECCtext[81];
else if (rds.ECC == 0xD2) rds.ECCtext = ECCtext[84];
else if (rds.ECC == 0xE0) rds.ECCtext = ECCtext[25];
else if (rds.ECC == 0xE1) rds.ECCtext = ECCtext[26];
else if (rds.ECC == 0xE2) rds.ECCtext = ECCtext[27];
else if (rds.ECC == 0xE4) rds.ECCtext = ECCtext[62];
else if (rds.ECC == 0xF0) rds.ECCtext = ECCtext[185];
else if (rds.ECC == 0xF1) rds.ECCtext = ECCtext[207];
else if (rds.ECC == 0xF2) rds.ECCtext = ECCtext[221];
if (rds.ECC.get() == 0xA0) rds.ECCtext = ECCtext[226];
else if (rds.ECC.get() == 0xA2) rds.ECCtext = ECCtext[139];
else if (rds.ECC.get() == 0xA3) rds.ECCtext = ECCtext[161];
else if (rds.ECC.get() == 0xA4) rds.ECCtext = ECCtext[164];
else if (rds.ECC.get() == 0xD0) rds.ECCtext = ECCtext[113];
else if (rds.ECC.get() == 0xD1) rds.ECCtext = ECCtext[81];
else if (rds.ECC.get() == 0xD2) rds.ECCtext = ECCtext[84];
else if (rds.ECC.get() == 0xE0) rds.ECCtext = ECCtext[25];
else if (rds.ECC.get() == 0xE1) rds.ECCtext = ECCtext[26];
else if (rds.ECC.get() == 0xE2) rds.ECCtext = ECCtext[27];
else if (rds.ECC.get() == 0xE4) rds.ECCtext = ECCtext[62];
else if (rds.ECC.get() == 0xF0) rds.ECCtext = ECCtext[185];
else if (rds.ECC.get() == 0xF1) rds.ECCtext = ECCtext[207];
else if (rds.ECC.get() == 0xF2) rds.ECCtext = ECCtext[221];
break;
}
case '8': {
if (rds.ECC == 0xA0) rds.ECCtext = ECCtext[226];
else if (rds.ECC == 0xA2) rds.ECCtext = ECCtext[142];
else if (rds.ECC == 0xA4) rds.ECCtext = ECCtext[170];
else if (rds.ECC == 0xD0) rds.ECCtext = ECCtext[116];
else if (rds.ECC == 0xD1) rds.ECCtext = ECCtext[117];
else if (rds.ECC == 0xD2) rds.ECCtext = ECCtext[74];
else if (rds.ECC == 0xD3) rds.ECCtext = ECCtext[82];
else if (rds.ECC == 0xE0) rds.ECCtext = ECCtext[28];
else if (rds.ECC == 0xE1) rds.ECCtext = ECCtext[29];
else if (rds.ECC == 0xE2) rds.ECCtext = ECCtext[30];
else if (rds.ECC == 0xE3) rds.ECCtext = ECCtext[31];
else if (rds.ECC == 0xE4) rds.ECCtext = ECCtext[32];
else if (rds.ECC == 0xF0) rds.ECCtext = ECCtext[186];
else if (rds.ECC == 0xF1) rds.ECCtext = ECCtext[195];
else if (rds.ECC == 0xF2) rds.ECCtext = ECCtext[212];
else if (rds.ECC == 0xF3) rds.ECCtext = ECCtext[190];
if (rds.ECC.get() == 0xA0) rds.ECCtext = ECCtext[226];
else if (rds.ECC.get() == 0xA2) rds.ECCtext = ECCtext[142];
else if (rds.ECC.get() == 0xA4) rds.ECCtext = ECCtext[170];
else if (rds.ECC.get() == 0xD0) rds.ECCtext = ECCtext[116];
else if (rds.ECC.get() == 0xD1) rds.ECCtext = ECCtext[117];
else if (rds.ECC.get() == 0xD2) rds.ECCtext = ECCtext[74];
else if (rds.ECC.get() == 0xD3) rds.ECCtext = ECCtext[82];
else if (rds.ECC.get() == 0xE0) rds.ECCtext = ECCtext[28];
else if (rds.ECC.get() == 0xE1) rds.ECCtext = ECCtext[29];
else if (rds.ECC.get() == 0xE2) rds.ECCtext = ECCtext[30];
else if (rds.ECC.get() == 0xE3) rds.ECCtext = ECCtext[31];
else if (rds.ECC.get() == 0xE4) rds.ECCtext = ECCtext[32];
else if (rds.ECC.get() == 0xF0) rds.ECCtext = ECCtext[186];
else if (rds.ECC.get() == 0xF1) rds.ECCtext = ECCtext[195];
else if (rds.ECC.get() == 0xF2) rds.ECCtext = ECCtext[212];
else if (rds.ECC.get() == 0xF3) rds.ECCtext = ECCtext[190];
break;
}
case '9': {
if (rds.ECC == 0xA0) rds.ECCtext = ECCtext[226];
else if (rds.ECC == 0xA2) rds.ECCtext = ECCtext[143];
else if (rds.ECC == 0xA3) rds.ECCtext = ECCtext[162];
else if (rds.ECC == 0xA4) rds.ECCtext = ECCtext[174];
else if (rds.ECC == 0xD0) rds.ECCtext = ECCtext[120];
else if (rds.ECC == 0xD1) rds.ECCtext = ECCtext[102];
else if (rds.ECC == 0xD2) rds.ECCtext = ECCtext[107];
else if (rds.ECC == 0xE0) rds.ECCtext = ECCtext[33];
else if (rds.ECC == 0xE1) rds.ECCtext = ECCtext[34];
else if (rds.ECC == 0xE2) rds.ECCtext = ECCtext[35];
else if (rds.ECC == 0xE3) rds.ECCtext = ECCtext[36];
else if (rds.ECC == 0xE4) rds.ECCtext = ECCtext[37];
else if (rds.ECC == 0xF0) rds.ECCtext = ECCtext[80];
else if (rds.ECC == 0xF1) rds.ECCtext = ECCtext[209];
else if (rds.ECC == 0xF2) rds.ECCtext = ECCtext[196];
else if (rds.ECC == 0xF3) rds.ECCtext = ECCtext[211];
else if (rds.ECC == 0xF4) rds.ECCtext = ECCtext[190];
if (rds.ECC.get() == 0xA0) rds.ECCtext = ECCtext[226];
else if (rds.ECC.get() == 0xA2) rds.ECCtext = ECCtext[143];
else if (rds.ECC.get() == 0xA3) rds.ECCtext = ECCtext[162];
else if (rds.ECC.get() == 0xA4) rds.ECCtext = ECCtext[174];
else if (rds.ECC.get() == 0xD0) rds.ECCtext = ECCtext[120];
else if (rds.ECC.get() == 0xD1) rds.ECCtext = ECCtext[102];
else if (rds.ECC.get() == 0xD2) rds.ECCtext = ECCtext[107];
else if (rds.ECC.get() == 0xE0) rds.ECCtext = ECCtext[33];
else if (rds.ECC.get() == 0xE1) rds.ECCtext = ECCtext[34];
else if (rds.ECC.get() == 0xE2) rds.ECCtext = ECCtext[35];
else if (rds.ECC.get() == 0xE3) rds.ECCtext = ECCtext[36];
else if (rds.ECC.get() == 0xE4) rds.ECCtext = ECCtext[37];
else if (rds.ECC.get() == 0xF0) rds.ECCtext = ECCtext[80];
else if (rds.ECC.get() == 0xF1) rds.ECCtext = ECCtext[209];
else if (rds.ECC.get() == 0xF2) rds.ECCtext = ECCtext[196];
else if (rds.ECC.get() == 0xF3) rds.ECCtext = ECCtext[211];
else if (rds.ECC.get() == 0xF4) rds.ECCtext = ECCtext[190];
break;
}
case 'A': {
if (rds.ECC == 0xA0) rds.ECCtext = ECCtext[226];
else if (rds.ECC == 0xA2) rds.ECCtext = ECCtext[131];
else if (rds.ECC == 0xA3) rds.ECCtext = ECCtext[144];
else if (rds.ECC == 0xA4) rds.ECCtext = ECCtext[166];
else if (rds.ECC == 0xD0) rds.ECCtext = ECCtext[85];
else if (rds.ECC == 0xD1) rds.ECCtext = ECCtext[97];
else if (rds.ECC == 0xD2) rds.ECCtext = ECCtext[121];
else if (rds.ECC == 0xD3) rds.ECCtext = ECCtext[70];
else if (rds.ECC == 0xD4) rds.ECCtext = ECCtext[86];
else if (rds.ECC == 0xE0) rds.ECCtext = ECCtext[38];
else if (rds.ECC == 0xE1) rds.ECCtext = ECCtext[39];
else if (rds.ECC == 0xE2) rds.ECCtext = ECCtext[40];
else if (rds.ECC == 0xE3) rds.ECCtext = ECCtext[41];
else if (rds.ECC == 0xE4) rds.ECCtext = ECCtext[60];
else if (rds.ECC == 0xF0) rds.ECCtext = ECCtext[178];
else if (rds.ECC == 0xF1) rds.ECCtext = ECCtext[215];
else if (rds.ECC == 0xF2) rds.ECCtext = ECCtext[214];
if (rds.ECC.get() == 0xA0) rds.ECCtext = ECCtext[226];
else if (rds.ECC.get() == 0xA2) rds.ECCtext = ECCtext[131];
else if (rds.ECC.get() == 0xA3) rds.ECCtext = ECCtext[144];
else if (rds.ECC.get() == 0xA4) rds.ECCtext = ECCtext[166];
else if (rds.ECC.get() == 0xD0) rds.ECCtext = ECCtext[85];
else if (rds.ECC.get() == 0xD1) rds.ECCtext = ECCtext[97];
else if (rds.ECC.get() == 0xD2) rds.ECCtext = ECCtext[121];
else if (rds.ECC.get() == 0xD3) rds.ECCtext = ECCtext[70];
else if (rds.ECC.get() == 0xD4) rds.ECCtext = ECCtext[86];
else if (rds.ECC.get() == 0xE0) rds.ECCtext = ECCtext[38];
else if (rds.ECC.get() == 0xE1) rds.ECCtext = ECCtext[39];
else if (rds.ECC.get() == 0xE2) rds.ECCtext = ECCtext[40];
else if (rds.ECC.get() == 0xE3) rds.ECCtext = ECCtext[41];
else if (rds.ECC.get() == 0xE4) rds.ECCtext = ECCtext[60];
else if (rds.ECC.get() == 0xF0) rds.ECCtext = ECCtext[178];
else if (rds.ECC.get() == 0xF1) rds.ECCtext = ECCtext[215];
else if (rds.ECC.get() == 0xF2) rds.ECCtext = ECCtext[214];
break;
}
case 'B': {
if (rds.ECC == 0xA0) rds.ECCtext = ECCtext[226];
else if (rds.ECC == 0xA1) rds.ECCtext = ECCtext[138];
else if (rds.ECC == 0xA2) rds.ECCtext = ECCtext[137];
else if (rds.ECC == 0xA3) rds.ECCtext = ECCtext[145];
else if (rds.ECC == 0xA4) rds.ECCtext = ECCtext[167];
else if (rds.ECC == 0xA5) rds.ECCtext = ECCtext[158];
else if (rds.ECC == 0xD0) rds.ECCtext = ECCtext[101];
else if (rds.ECC == 0xD1) rds.ECCtext = ECCtext[100];
else if (rds.ECC == 0xD2) rds.ECCtext = ECCtext[109];
else if (rds.ECC == 0xE0) rds.ECCtext = ECCtext[42];
else if (rds.ECC == 0xE1) rds.ECCtext = ECCtext[43];
else if (rds.ECC == 0xE2) rds.ECCtext = ECCtext[44];
else if (rds.ECC == 0xE3) rds.ECCtext = ECCtext[61];
else if (rds.ECC == 0xE4) rds.ECCtext = ECCtext[66];
else if (rds.ECC == 0xF0) rds.ECCtext = ECCtext[206];
else if (rds.ECC == 0xF1) rds.ECCtext = ECCtext[188];
else if (rds.ECC == 0xF2) rds.ECCtext = ECCtext[203];
else if (rds.ECC == 0xF3) rds.ECCtext = ECCtext[93];
else if (rds.ECC == 0xF4) rds.ECCtext = ECCtext[204];
if (rds.ECC.get() == 0xA0) rds.ECCtext = ECCtext[226];
else if (rds.ECC.get() == 0xA1) rds.ECCtext = ECCtext[138];
else if (rds.ECC.get() == 0xA2) rds.ECCtext = ECCtext[137];
else if (rds.ECC.get() == 0xA3) rds.ECCtext = ECCtext[145];
else if (rds.ECC.get() == 0xA4) rds.ECCtext = ECCtext[167];
else if (rds.ECC.get() == 0xA5) rds.ECCtext = ECCtext[158];
else if (rds.ECC.get() == 0xD0) rds.ECCtext = ECCtext[101];
else if (rds.ECC.get() == 0xD1) rds.ECCtext = ECCtext[100];
else if (rds.ECC.get() == 0xD2) rds.ECCtext = ECCtext[109];
else if (rds.ECC.get() == 0xE0) rds.ECCtext = ECCtext[42];
else if (rds.ECC.get() == 0xE1) rds.ECCtext = ECCtext[43];
else if (rds.ECC.get() == 0xE2) rds.ECCtext = ECCtext[44];
else if (rds.ECC.get() == 0xE3) rds.ECCtext = ECCtext[61];
else if (rds.ECC.get() == 0xE4) rds.ECCtext = ECCtext[66];
else if (rds.ECC.get() == 0xF0) rds.ECCtext = ECCtext[206];
else if (rds.ECC.get() == 0xF1) rds.ECCtext = ECCtext[188];
else if (rds.ECC.get() == 0xF2) rds.ECCtext = ECCtext[203];
else if (rds.ECC.get() == 0xF3) rds.ECCtext = ECCtext[93];
else if (rds.ECC.get() == 0xF4) rds.ECCtext = ECCtext[204];
break;
}
case 'C': {
if (rds.ECC == 0xA1) rds.ECCtext = ECCtext[138];
else if (rds.ECC == 0xA2) rds.ECCtext = ECCtext[223];
else if (rds.ECC == 0xA3) rds.ECCtext = ECCtext[140];
else if (rds.ECC == 0xA4) rds.ECCtext = ECCtext[146];
else if (rds.ECC == 0xA5) rds.ECCtext = ECCtext[169];
else if (rds.ECC == 0xD0) rds.ECCtext = ECCtext[110];
else if (rds.ECC == 0xD1) rds.ECCtext = ECCtext[108];
else if (rds.ECC == 0xD2) rds.ECCtext = ECCtext[111];
else if (rds.ECC == 0xD3) rds.ECCtext = ECCtext[87];
else if (rds.ECC == 0xE0) rds.ECCtext = ECCtext[45];
else if (rds.ECC == 0xE1) rds.ECCtext = ECCtext[46];
else if (rds.ECC == 0xE2) rds.ECCtext = ECCtext[47];
else if (rds.ECC == 0xE3) rds.ECCtext = ECCtext[48];
else if (rds.ECC == 0xE4) rds.ECCtext = ECCtext[118];
else if (rds.ECC == 0xF0) rds.ECCtext = ECCtext[190];
else if (rds.ECC == 0xF1) rds.ECCtext = ECCtext[216];
else if (rds.ECC == 0xF2) rds.ECCtext = ECCtext[194];
if (rds.ECC.get() == 0xA1) rds.ECCtext = ECCtext[138];
else if (rds.ECC.get() == 0xA2) rds.ECCtext = ECCtext[223];
else if (rds.ECC.get() == 0xA3) rds.ECCtext = ECCtext[140];
else if (rds.ECC.get() == 0xA4) rds.ECCtext = ECCtext[146];
else if (rds.ECC.get() == 0xA5) rds.ECCtext = ECCtext[169];
else if (rds.ECC.get() == 0xD0) rds.ECCtext = ECCtext[110];
else if (rds.ECC.get() == 0xD1) rds.ECCtext = ECCtext[108];
else if (rds.ECC.get() == 0xD2) rds.ECCtext = ECCtext[111];
else if (rds.ECC.get() == 0xD3) rds.ECCtext = ECCtext[87];
else if (rds.ECC.get() == 0xE0) rds.ECCtext = ECCtext[45];
else if (rds.ECC.get() == 0xE1) rds.ECCtext = ECCtext[46];
else if (rds.ECC.get() == 0xE2) rds.ECCtext = ECCtext[47];
else if (rds.ECC.get() == 0xE3) rds.ECCtext = ECCtext[48];
else if (rds.ECC.get() == 0xE4) rds.ECCtext = ECCtext[118];
else if (rds.ECC.get() == 0xF0) rds.ECCtext = ECCtext[190];
else if (rds.ECC.get() == 0xF1) rds.ECCtext = ECCtext[216];
else if (rds.ECC.get() == 0xF2) rds.ECCtext = ECCtext[194];
break;
}
case 'D': {
if (rds.ECC == 0xA0) rds.ECCtext = ECCtext[226];
else if (rds.ECC == 0xA1) rds.ECCtext = ECCtext[138];
else if (rds.ECC == 0xA2) rds.ECCtext = ECCtext[225];
else if (rds.ECC == 0xA3) rds.ECCtext = ECCtext[150];
else if (rds.ECC == 0xA4) rds.ECCtext = ECCtext[154];
else if (rds.ECC == 0xA5) rds.ECCtext = ECCtext[158];
else if (rds.ECC == 0xD0) rds.ECCtext = ECCtext[90];
else if (rds.ECC == 0xD1) rds.ECCtext = ECCtext[89];
else if (rds.ECC == 0xE0) rds.ECCtext = ECCtext[0];
else if (rds.ECC == 0xE1) rds.ECCtext = ECCtext[49];
else if (rds.ECC == 0xE2) rds.ECCtext = ECCtext[23];
else if (rds.ECC == 0xE3) rds.ECCtext = ECCtext[122];
else if (rds.ECC == 0xF0) rds.ECCtext = ECCtext[198];
else if (rds.ECC == 0xF1) rds.ECCtext = ECCtext[217];
else if (rds.ECC == 0xF2) rds.ECCtext = ECCtext[128];
if (rds.ECC.get() == 0xA0) rds.ECCtext = ECCtext[226];
else if (rds.ECC.get() == 0xA1) rds.ECCtext = ECCtext[138];
else if (rds.ECC.get() == 0xA2) rds.ECCtext = ECCtext[225];
else if (rds.ECC.get() == 0xA3) rds.ECCtext = ECCtext[150];
else if (rds.ECC.get() == 0xA4) rds.ECCtext = ECCtext[154];
else if (rds.ECC.get() == 0xA5) rds.ECCtext = ECCtext[158];
else if (rds.ECC.get() == 0xD0) rds.ECCtext = ECCtext[90];
else if (rds.ECC.get() == 0xD1) rds.ECCtext = ECCtext[89];
else if (rds.ECC.get() == 0xE0) rds.ECCtext = ECCtext[0];
else if (rds.ECC.get() == 0xE1) rds.ECCtext = ECCtext[49];
else if (rds.ECC.get() == 0xE2) rds.ECCtext = ECCtext[23];
else if (rds.ECC.get() == 0xE3) rds.ECCtext = ECCtext[122];
else if (rds.ECC.get() == 0xF0) rds.ECCtext = ECCtext[198];
else if (rds.ECC.get() == 0xF1) rds.ECCtext = ECCtext[217];
else if (rds.ECC.get() == 0xF2) rds.ECCtext = ECCtext[128];
break;
}
case 'E': {
if (rds.ECC == 0xA0) rds.ECCtext = ECCtext[226];
else if (rds.ECC == 0xA1) rds.ECCtext = ECCtext[138];
else if (rds.ECC == 0xA2) rds.ECCtext = ECCtext[151];
else if (rds.ECC == 0xA3) rds.ECCtext = ECCtext[172];
else if (rds.ECC == 0xA4) rds.ECCtext = ECCtext[175];
else if (rds.ECC == 0xA5) rds.ECCtext = ECCtext[158];
else if (rds.ECC == 0xD0) rds.ECCtext = ECCtext[99];
else if (rds.ECC == 0xD1) rds.ECCtext = ECCtext[115];
else if (rds.ECC == 0xD2) rds.ECCtext = ECCtext[94];
else if (rds.ECC == 0xE0) rds.ECCtext = ECCtext[50];
else if (rds.ECC == 0xE1) rds.ECCtext = ECCtext[51];
else if (rds.ECC == 0xE2) rds.ECCtext = ECCtext[52];
else if (rds.ECC == 0xE3) rds.ECCtext = ECCtext[53];
else if (rds.ECC == 0xE4) rds.ECCtext = ECCtext[64];
else if (rds.ECC == 0xF0) rds.ECCtext = ECCtext[98];
else if (rds.ECC == 0xF1) rds.ECCtext = ECCtext[199];
else if (rds.ECC == 0xF2) rds.ECCtext = ECCtext[208];
else if (rds.ECC == 0xF3) rds.ECCtext = ECCtext[205];
if (rds.ECC.get() == 0xA0) rds.ECCtext = ECCtext[226];
else if (rds.ECC.get() == 0xA1) rds.ECCtext = ECCtext[138];
else if (rds.ECC.get() == 0xA2) rds.ECCtext = ECCtext[151];
else if (rds.ECC.get() == 0xA3) rds.ECCtext = ECCtext[172];
else if (rds.ECC.get() == 0xA4) rds.ECCtext = ECCtext[175];
else if (rds.ECC.get() == 0xA5) rds.ECCtext = ECCtext[158];
else if (rds.ECC.get() == 0xD0) rds.ECCtext = ECCtext[99];
else if (rds.ECC.get() == 0xD1) rds.ECCtext = ECCtext[115];
else if (rds.ECC.get() == 0xD2) rds.ECCtext = ECCtext[94];
else if (rds.ECC.get() == 0xE0) rds.ECCtext = ECCtext[50];
else if (rds.ECC.get() == 0xE1) rds.ECCtext = ECCtext[51];
else if (rds.ECC.get() == 0xE2) rds.ECCtext = ECCtext[52];
else if (rds.ECC.get() == 0xE3) rds.ECCtext = ECCtext[53];
else if (rds.ECC.get() == 0xE4) rds.ECCtext = ECCtext[64];
else if (rds.ECC.get() == 0xF0) rds.ECCtext = ECCtext[98];
else if (rds.ECC.get() == 0xF1) rds.ECCtext = ECCtext[199];
else if (rds.ECC.get() == 0xF2) rds.ECCtext = ECCtext[208];
else if (rds.ECC.get() == 0xF3) rds.ECCtext = ECCtext[205];
break;
}
case 'F': {
if (rds.ECC == 0xA1) rds.ECCtext = ECCtext[149];
else if (rds.ECC == 0xA2) rds.ECCtext = ECCtext[222];
else if (rds.ECC == 0xA3) rds.ECCtext = ECCtext[153];
else if (rds.ECC == 0xA4) rds.ECCtext = ECCtext[176];
else if (rds.ECC == 0xA5) rds.ECCtext = ECCtext[158];
else if (rds.ECC == 0xA6) rds.ECCtext = ECCtext[168];
else if (rds.ECC == 0xD0) rds.ECCtext = ECCtext[67];
else if (rds.ECC == 0xD1) rds.ECCtext = ECCtext[75];
else if (rds.ECC == 0xD2) rds.ECCtext = ECCtext[114];
else if (rds.ECC == 0xE0) rds.ECCtext = ECCtext[54];
else if (rds.ECC == 0xE1) rds.ECCtext = ECCtext[55];
else if (rds.ECC == 0xE2) rds.ECCtext = ECCtext[56];
else if (rds.ECC == 0xE3) rds.ECCtext = ECCtext[57];
else if (rds.ECC == 0xE4) rds.ECCtext = ECCtext[58];
else if (rds.ECC == 0xF0) rds.ECCtext = ECCtext[202];
else if (rds.ECC == 0xF1) rds.ECCtext = ECCtext[192];
else if (rds.ECC == 0xF2) rds.ECCtext = ECCtext[220];
else if (rds.ECC == 0xF3) rds.ECCtext = ECCtext[71];
if (rds.ECC.get() == 0xA1) rds.ECCtext = ECCtext[149];
else if (rds.ECC.get() == 0xA2) rds.ECCtext = ECCtext[222];
else if (rds.ECC.get() == 0xA3) rds.ECCtext = ECCtext[153];
else if (rds.ECC.get() == 0xA4) rds.ECCtext = ECCtext[176];
else if (rds.ECC.get() == 0xA5) rds.ECCtext = ECCtext[158];
else if (rds.ECC.get() == 0xA6) rds.ECCtext = ECCtext[168];
else if (rds.ECC.get() == 0xD0) rds.ECCtext = ECCtext[67];
else if (rds.ECC.get() == 0xD1) rds.ECCtext = ECCtext[75];
else if (rds.ECC.get() == 0xD2) rds.ECCtext = ECCtext[114];
else if (rds.ECC.get() == 0xE0) rds.ECCtext = ECCtext[54];
else if (rds.ECC.get() == 0xE1) rds.ECCtext = ECCtext[55];
else if (rds.ECC.get() == 0xE2) rds.ECCtext = ECCtext[56];
else if (rds.ECC.get() == 0xE3) rds.ECCtext = ECCtext[57];
else if (rds.ECC.get() == 0xE4) rds.ECCtext = ECCtext[58];
else if (rds.ECC.get() == 0xF0) rds.ECCtext = ECCtext[202];
else if (rds.ECC.get() == 0xF1) rds.ECCtext = ECCtext[192];
else if (rds.ECC.get() == 0xF2) rds.ECCtext = ECCtext[220];
else if (rds.ECC.get() == 0xF3) rds.ECCtext = ECCtext[71];
break;
}
default: {
@@ -1596,9 +1596,10 @@ void TEF6686::clearRDS(bool fullsearchrds) {
for (uint8_t i = 0; i < 10; i++) rds.aid[i] = 0;
rdsgroup = rds.ECC = 254;
rdsgroup = 254;
rds.ECC.set(0);
rds.dabaffreq = rds.correctPI = correctPIold = processed_rdsblocks = piold = 0;
rds.PTY = 32;
rds.PTY.set(0);
rds.hasECC = rds.hasRT = rds.hasRDS = false;
rds.TP = rds.hasAF = rds.hasTA = false;
rds.hasEON = rds.hasCT = false;

View File

@@ -55,16 +55,16 @@ bool Tuner_WriteBuffer(unsigned char *buf, uint16_t len) {
for (uint16_t i = 0; i < len; i++) Wire.write(buf[i]);
uint8_t r = Wire.endTransmission();
if (!Data_Accelerator) delay(2);
return (r == 0) ? 1 : 0;
return (r == 0) ? true : false;
}
bool Tuner_ReadBuffer(unsigned char *buf, uint16_t len) {
Wire.requestFrom(0x64, len);
if (Wire.available() == len) {
for (uint16_t i = 0; i < len; i++) buf[i] = Wire.read();
return 1;
return true;
}
return 0;
return false;
}
static void Tuner_Patch_Load(const unsigned char *pLutBytes, uint16_t size) {
@@ -87,7 +87,7 @@ static void Tuner_Patch_Load(const unsigned char *pLutBytes, uint16_t size) {
bool Tuner_Table_Write(const unsigned char *tab) {
if (tab[1] == 0xff) {
delay(tab[2]);
return 1;
return true;
} else return Tuner_WriteBuffer((unsigned char *)&tab[1], tab[0]);
}

View File

@@ -103,7 +103,6 @@ byte ContrastSet;
byte CurrentSkin;
byte CurrentTheme;
byte displayflip;
byte ECCold;
byte eonptyold[20];
byte EQset;
byte fmagc;
@@ -154,7 +153,7 @@ byte stepsize;
byte StereoLevel;
byte subnetclient;
byte TEF, tot, tunemode;
byte unit, spispeed, programTypePrevious;
byte unit, spispeed;
char buff[16];
char eonpicodeold[20][6];
const uint8_t* currentFont = nullptr;
@@ -230,7 +229,6 @@ int xPos2;
int xPos3;
int xPos4;
int xPos5;
int xPos6;
int16_t OStatus;
int16_t SAvg;
int16_t SAvg2;

View File

@@ -2974,9 +2974,6 @@ void BuildAdvancedRDS() {
batteryold = 6;
batteryVold = 0;
vPerold = 0;
ECCold = 253;
programTypePrevious = 32;
ptynold = " ";
PIold = " ";
PSold = " ";
stationIDold = " ";
@@ -3110,7 +3107,6 @@ void BuildDisplay() {
TPold = false;
haseonold = false;
rds_clockold = "";
programTypePrevious = 32;
PIold = " ";
PSold = " ";
stationIDold = " ";

View File

@@ -225,11 +225,11 @@ byte addRowToCSV() {
String TA = radio.rds.hasTA ? "" : " ";
String TP = radio.rds.TP ? "" : " ";
String Stereo = radio.getStereoStatus() ? "" : " ";
String pty = String(radio.rds.PTY);
String pty = String(radio.rds.PTY.get());
String ECC = "--";
if (radio.rds.hasECC) {
char eccBuffer[3];
snprintf(eccBuffer, sizeof(eccBuffer), "%02X", radio.rds.ECC); // Format ECC as uppercase 2-digit hex
snprintf(eccBuffer, sizeof(eccBuffer), "%02X", radio.rds.ECC.get()); // Format ECC as uppercase 2-digit hex
ECC = String(eccBuffer);
}
@@ -382,7 +382,7 @@ void sendUDPlog() {
String ECC = "";
if (radio.rds.hasECC) {
char eccBuffer[3];
snprintf(eccBuffer, sizeof(eccBuffer), "%02X", radio.rds.ECC);
snprintf(eccBuffer, sizeof(eccBuffer), "%02X", radio.rds.ECC.get());
ECC = String(eccBuffer);
}
@@ -418,7 +418,7 @@ void sendUDPlog() {
String row = CHIP + "," + VERSION + "," + String(scandxmode) + "," +
currentDateTime + "," + frequencyFormatted + "," + String(radio.rds.picode).substring(0, 4) + "," +
signal + "," + String(radio.getStereoStatus()) + "," + String(radio.rds.hasTA) + "," +
String(radio.rds.TP) + "," + String(radio.rds.hasTMC.get()) + "," + String(radio.rds.PTY) + "," +
String(radio.rds.TP) + "," + String(radio.rds.hasTMC.get()) + "," + String(radio.rds.PTY.get()) + "," +
ECC + "," + stationName + "," + radioTextModified + "," +
AF + "," + EON + "," + RTPLUS + "\n";

View File

@@ -3159,7 +3159,6 @@ void ShowFreq(int mode) {
if (spispeed == 7) setAutoSpeedSPI();
rdsreset = true;
ECCold = 253;
afmethodBold = false;
aid_counterold = 0;
dropout = false;

View File

@@ -57,7 +57,7 @@ void ShowAdvancedRDS() {
hasafold = radio.rds.hasAF;
}
if (ECCold != radio.rds.ECC) {
if (radio.rds.ECC.changed(0)) {
if (!screenmute) {
if (radio.rds.hasECC) ECCString = (radio.rds.ECCtext.length() == 0 ? textUI(73) : radio.rds.ECCtext); else ECCString = "N/A";
if (ECCString != ECColdString) {
@@ -67,27 +67,27 @@ void ShowAdvancedRDS() {
}
if (eccstringWidth < 270) {
xPos6 = 0;
xPos2 = 0;
RDSSprite.fillSprite(BackgroundColor);
if (RDSstatus) RDSSprite.setTextColor(RDSColor, RDSColorSmooth, false); else RDSSprite.setTextColor(RDSDropoutColor, RDSDropoutColorSmooth, false);
RDSSprite.drawString(ECCString, xPos6, 2);
RDSSprite.drawString(ECCString, xPos2, 2);
RDSSprite.pushSprite(35, 199);
} else {
if (millis() - eccticker >= 5) {
if (xPos6 < -eccstringWidth) xPos6 = 0;
if (xPos6 == 0) {
if (xPos2 < -eccstringWidth) xPos2 = 0;
if (xPos2 == 0) {
if (millis() - ecctickerhold >= 2000) {
xPos6--;
xPos2--;
ecctickerhold = millis();
}
} else {
xPos6--;
xPos2--;
ecctickerhold = millis();
}
RDSSprite.fillSprite(BackgroundColor);
if (RDSstatus) RDSSprite.setTextColor(RDSColor, RDSColorSmooth, false); else RDSSprite.setTextColor(RDSDropoutColor, RDSDropoutColorSmooth, false);
RDSSprite.drawString(ECCString, xPos6, 2);
RDSSprite.drawString(ECCString, xPos6 + eccstringWidth, 2);
RDSSprite.drawString(ECCString, xPos2, 2);
RDSSprite.drawString(ECCString, xPos2 + eccstringWidth, 2);
RDSSprite.pushSprite(35, 199);
eccticker = millis();
}
@@ -98,11 +98,10 @@ void ShowAdvancedRDS() {
if (wifi) {
Udp.beginPacket(remoteip, 9030);
Udp.print("from=TEF_tuner_" + String(stationlistid, DEC) + ";ECC=");
if (radio.rds.ECC < 0x10) Udp.print("0");
Udp.print(String(radio.rds.ECC, HEX));
if (radio.rds.ECC.get() < 0x10) Udp.print("0");
Udp.print(String(radio.rds.ECC.get(), HEX));
Udp.endPacket();
}
ECCold = radio.rds.ECC;
}
String eonstring;
@@ -130,11 +129,11 @@ void ShowAdvancedRDS() {
if (xPos3 < -eonstringWidth) xPos3 = 0;
if (xPos3 == 0) {
if (millis() - eontickerhold >= 2000) {
xPos3 --;
xPos3--;
eontickerhold = millis();
}
} else {
xPos3 --;
xPos3--;
eontickerhold = millis();
}
RDSSprite.fillSprite(BackgroundColor);
@@ -511,10 +510,8 @@ void showPI() {
}
void showPTY() {
if(radio.rds.PTY != programTypePrevious) {
String PTYString = String(radio.rds.PTY) + "/" + (radio.rds.region != 0 ? (radio.rds.region == 0 ? PTY_EU[radio.rds.PTY] : PTY_USA[radio.rds.PTY]) : textUI(228 + radio.rds.PTY));
if (radio.rds.PTY == 32) PTYString = "";
if(radio.rds.PTY.changed(0)) {
String PTYString = String(radio.rds.PTY.get()) + "/" + (radio.rds.region != 0 ? (radio.rds.region == 0 ? PTY_EU[radio.rds.PTY.get()] : PTY_USA[radio.rds.PTY.get()]) : textUI(228 + radio.rds.PTY.get()));
if (!screenmute) {
if (advancedRDS) {
@@ -530,10 +527,9 @@ void showPTY() {
if (wifi) {
Udp.beginPacket(remoteip, 9030);
Udp.print("from=TEF_tuner_" + String(stationlistid, DEC) + ";PTY=");
Udp.print(String(radio.rds.PTY, HEX));
Udp.print(String(radio.rds.PTY.get(), HEX));
Udp.endPacket();
}
programTypePrevious = radio.rds.PTY;
}
}
@@ -551,24 +547,27 @@ void showPS() {
// Handle scrolling logic for long PS
if (PSSprite.textWidth(trimTrailingSpaces(radio.rds.stationNameLong)) < 150) {
xPos5 = 0;
PSSprite.fillSprite(BackgroundColor);
PSSprite.setTextColor(RDSstatus ? RDSColor : RDSDropoutColor, RDSstatus ? RDSColorSmooth : RDSDropoutColorSmooth, false);
PSSprite.drawString(stationNameLongString, xPos5, 2);
} else {
if (millis() - pslongticker >= 5) {
if (xPos5 < -PSLongWidth) xPos5 = 0; // Reset position if fully scrolled
if (xPos5 == 0 && millis() - pslongtickerhold >= 2000) {
xPos5--; // Hold position for 2 seconds before scrolling
pslongtickerhold = millis();
} else xPos5--;
pslongticker = millis();
xPos5 = 0;
PSSprite.fillSprite(BackgroundColor);
PSSprite.setTextColor(RDSstatus ? RDSColor : RDSDropoutColor, RDSstatus ? RDSColorSmooth : RDSDropoutColorSmooth, false);
PSSprite.drawString(stationNameLongString, xPos5, 2);
PSSprite.drawString(stationNameLongString, xPos5 + PSLongWidth, 2);
} else {
if (millis() - pslongticker >= 5) {
if (xPos5 == 0 && millis() - pslongtickerhold < 2000) {
// Hold at position 0
} else {
xPos5--;
pslongtickerhold = millis();
}
if (xPos5 < -PSLongWidth) xPos5 = 0;
pslongticker = millis();
}
PSSprite.fillSprite(BackgroundColor);
PSSprite.setTextColor(RDSstatus ? RDSColor : RDSDropoutColor, RDSstatus ? RDSColorSmooth : RDSDropoutColorSmooth, false);
PSSprite.drawString(stationNameLongString, xPos5 + 8, 2);
PSSprite.drawString(stationNameLongString, xPos5 + PSLongWidth, 2);
}
} else {
xPos5 = 0;
@@ -690,15 +689,13 @@ void showCT() {
void showRadioText() {
String RTString = String(radio.rds.stationText + (radio.rds.stationText.length() > 0 ? " " : "") + radio.rds.stationText32 + (radio.rds.hasEnhancedRT ? " eRT: " + String(radio.rds.enhancedRTtext) : "") + " ");
// Check if RT has changed
if (radio.rds.hasRT && radio.rds.rtAB != rtABold) {
xPos = 0; // Reset ticker position
rttickerhold = millis(); // Hold the ticker momentarily
rtABold = radio.rds.rtAB; // Update old AB status
xPos = 0;
rttickerhold = millis();
rtABold = radio.rds.rtAB;
}
if (!screenmute) {
// Display RDS information if RT is available
if (radio.rds.hasRT &&
(radio.rds.stationText.length() > 0 || radio.rds.stationText32.length() > 0)) {