From 3a92d1cdf1dfef3660bcabe25f1bbc754ae01574 Mon Sep 17 00:00:00 2001 From: KubaPro010 Date: Wed, 7 Jan 2026 21:42:22 +0100 Subject: [PATCH] little funcitonal changes, just performance --- include/TEF6686.h | 4 +- include/globals.h | 4 +- src/TEF6686.cpp | 497 ++++++++++++++++++++-------------------- src/Tuner_Interface.cpp | 8 +- src/globals.cpp | 4 +- src/gui.cpp | 4 - src/logbook.cpp | 8 +- src/main.cpp | 1 - src/rds.cpp | 75 +++--- 9 files changed, 297 insertions(+), 308 deletions(-) diff --git a/include/TEF6686.h b/include/TEF6686.h index 5bfaf16..27e7a89 100644 --- a/include/TEF6686.h +++ b/include/TEF6686.h @@ -434,7 +434,7 @@ const DABFrequencyLabel DABfrequencyTable[] = { typedef struct _rds_ { byte region; - byte PTY; + Detector PTY{0}; String stationName; String stationText; String stationText32; @@ -461,7 +461,7 @@ typedef struct _rds_ { uint32_t dabaffreq; byte aid_counter; byte fastps; - unsigned int ECC; + Detector ECC; bool rdsAerror; bool rdsBerror; bool rdsCerror; diff --git a/include/globals.h b/include/globals.h index 8246395..3507a94 100644 --- a/include/globals.h +++ b/include/globals.h @@ -122,7 +122,6 @@ extern byte ContrastSet; extern byte CurrentSkin; extern byte CurrentTheme; extern byte displayflip; -extern byte ECCold; extern byte eonptyold[20]; extern byte EQset; extern byte fmagc; @@ -173,7 +172,7 @@ extern byte stepsize; extern byte StereoLevel; extern byte subnetclient; extern byte TEF, tot, tunemode; -extern byte unit, spispeed, programTypePrevious; +extern byte unit, spispeed; extern char buff[16]; extern char eonpicodeold[20][6]; extern const uint8_t* currentFont; @@ -249,7 +248,6 @@ extern int xPos2; extern int xPos3; extern int xPos4; extern int xPos5; -extern int xPos6; extern int16_t OStatus; extern int16_t SAvg; extern int16_t SAvg2; diff --git a/src/TEF6686.cpp b/src/TEF6686.cpp index b2f6a42..c002b08 100644 --- a/src/TEF6686.cpp +++ b/src/TEF6686.cpp @@ -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; diff --git a/src/Tuner_Interface.cpp b/src/Tuner_Interface.cpp index f5f236c..ec8cfd5 100644 --- a/src/Tuner_Interface.cpp +++ b/src/Tuner_Interface.cpp @@ -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]); } diff --git a/src/globals.cpp b/src/globals.cpp index 7eccdf6..f55670c 100644 --- a/src/globals.cpp +++ b/src/globals.cpp @@ -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; diff --git a/src/gui.cpp b/src/gui.cpp index 625d34c..0caac56 100644 --- a/src/gui.cpp +++ b/src/gui.cpp @@ -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 = " "; diff --git a/src/logbook.cpp b/src/logbook.cpp index 5c0d1aa..4d17789 100644 --- a/src/logbook.cpp +++ b/src/logbook.cpp @@ -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"; diff --git a/src/main.cpp b/src/main.cpp index ff55090..de1cfac 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -3159,7 +3159,6 @@ void ShowFreq(int mode) { if (spispeed == 7) setAutoSpeedSPI(); rdsreset = true; - ECCold = 253; afmethodBold = false; aid_counterold = 0; dropout = false; diff --git a/src/rds.cpp b/src/rds.cpp index a3e8d2f..ef9d5da 100644 --- a/src/rds.cpp +++ b/src/rds.cpp @@ -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)) {