better scroll hold, and make everything use the class

This commit is contained in:
2026-01-16 20:46:01 +01:00
parent f975d21195
commit 25c6044d3f
7 changed files with 28 additions and 77 deletions
+6 -1
View File
@@ -1486,7 +1486,11 @@ void TEF6686::readRDS(byte showrdserrors) {
case RDS_GROUP_15A: {
if (pslong_process && rds.stationNameLong.length() > 0) rds.hasLongPS = true;
uint8_t offset = (rds.rdsB & 7) * 4;
uint8_t segment = rds.rdsB & 7;
uint8_t offset = segment * 4;
if(segments_received_lps[segment] >= (rds.rdsCerror + rds.rdsBerror)) segments_received_lps[segment] = rds.rdsCerror + rds.rdsBerror;
else return;
pslong_buffer2[offset + 0] = pslong_buffer[offset + 0];
pslong_buffer2[offset + 1] = pslong_buffer[offset + 1];
@@ -1629,6 +1633,7 @@ void TEF6686::clearRDS(bool fullsearchrds) {
afmethodBprobe = afmethodBtrigger = _hasEnhancedRT = false;
rds.ps12error = rds.ps34error = rds.ps56error = rds.ps78error = true;
memset(segments_received, 99, sizeof(segments_received));
memset(segments_received_lps, 99, sizeof(segments_received_lps));
}
void TEF6686::tone(uint16_t time, int16_t amplitude, uint16_t frequency) {
+4 -6
View File
@@ -204,8 +204,6 @@ int Squelchold;
int SStatusold;
int Stereostatus;
int XDRBWset;
int xPos;
int xPos2;
int16_t OStatus;
int16_t SAvg;
int16_t SAvg2;
@@ -312,8 +310,6 @@ unsigned long ModulationpeakPreviousMillis;
unsigned long NTPtimer;
unsigned long peakholdmillis;
unsigned long processed_rdsblocksold[33];
unsigned long pslongticker;
unsigned long pslongtickerhold;
unsigned long rtticker;
unsigned long rttickerhold;
unsigned long rotarytimer;
@@ -351,7 +347,9 @@ WiFiClient RemoteClient;
WiFiUDP Udp;
WebServer webserver(80);
ScrollingTextDisplay rtplusDisplay(&GeneralTextSprite, 147, 173, 19);
ScrollingTextDisplay eonDisplay(&GeneralTextSprite, 174, 173, 19);
ScrollingTextDisplay aidDisplay(&FullLineSprite, 220, 270, 5);
ScrollingTextDisplay lpsDisplay(&PSSprite, 0, 150);
ScrollingTextDisplay rtplusDisplay(&GeneralTextSprite, 147, 173, 35, 19);
ScrollingTextDisplay eonDisplay(&GeneralTextSprite, 174, 173, 35, 19);
ScrollingTextDisplay eccDisplay(&FullLineSprite, 198, 270);
ScrollingTextDisplay rtDisplay(&FullLineSprite, 220, 270);
+3 -7
View File
@@ -608,9 +608,7 @@ void BuildAFScreen() {
rds_clockold = "";
dropout = false;
rdsreset = true;
rtplusDisplay.reset();
eonDisplay.reset();
eccDisplay.reset();
aidDisplay.reset();
for (byte i = 0; i < 20; i++) {
mappedfreqold[i] = 0;
mappedfreqold2[i] = 0;
@@ -2980,9 +2978,8 @@ void BuildAdvancedRDS() {
dropout = false;
rdsreset = true;
ShowMemoryPos();
xPos = 0;
xPos2 = 0;
rtplusDisplay.reset();
lpsDisplay.reset();
eonDisplay.reset();
eccDisplay.reset();
rtDisplay.reset();
@@ -3109,6 +3106,7 @@ void BuildDisplay() {
BWreset = true;
dropout = false;
rtplusDisplay.reset();
lpsDisplay.reset();
eonDisplay.reset();
eccDisplay.reset();
rtDisplay.reset();
@@ -3124,8 +3122,6 @@ void BuildDisplay() {
radio.rds.hasTMC.call();
radio.rds.hasCT.call();
radio.rds.hasRTplus.call();
xPos = 0;
xPos2 = 0;
MPold = 99;
USold = 99;
}
+4 -54
View File
@@ -437,32 +437,9 @@ void showPS() {
stationNameLongOld = stationNameLongString;
}
// Handle scrolling logic for long PS
if (PSSprite.textWidth(trimTrailingSpaces(radio.rds.stationNameLong)) < 150) {
xPos2 = 0;
PSSprite.fillSprite(BackgroundColor);
PSSprite.setTextColor(RDSstatus ? RDSColor : RDSDropoutColor, RDSstatus ? RDSColorSmooth : RDSDropoutColorSmooth, false);
PSSprite.drawString(stationNameLongString, xPos2, 2);
} else {
if (millis() - pslongticker >= 5) {
if (xPos2 == 0 && millis() - pslongtickerhold < 2000) {
// Hold at position 0
} else {
xPos2--;
pslongtickerhold = millis();
}
if (xPos2 < -PSLongWidth) xPos2 = 0;
pslongticker = millis();
}
PSSprite.fillSprite(BackgroundColor);
PSSprite.setTextColor(RDSstatus ? RDSColor : RDSDropoutColor, RDSstatus ? RDSColorSmooth : RDSDropoutColorSmooth, false);
PSSprite.drawString(stationNameLongString, xPos2 + 8, 2);
PSSprite.drawString(stationNameLongString, xPos2 + PSLongWidth, 2);
}
lpsDisplay.update(stationNameLongString, RDSstatus, RDSColor, RDSColorSmooth, RDSDropoutColor, RDSDropoutColorSmooth, BackgroundColor);
} else {
xPos2 = 0;
lpsDisplay.reset();
PSSprite.fillSprite(BackgroundColor);
for (int i = 0; i < 7; i++) {
@@ -491,7 +468,7 @@ void showPS() {
if (PSold != radio.rds.stationName) ps12errorold = ps34errorold = ps56errorold = ps78errorold = true;
}
if (!screenmute) PSSprite.pushSprite(36, advancedRDS ? 72 : 185);
if (!screenmute) PSSprite.pushSprite(36, advancedRDS ? 72 : 185, TFT_TRANSPARENT);
if (wifi && radio.rds.stationName.length() > 0 && PSold != radio.rds.stationName) {
Udp.beginPacket(remoteip, 9030);
@@ -762,34 +739,7 @@ void ShowAFEON() {
}
}
if (FullLineSprite.textWidth(trimTrailingSpaces(AIDString)) < 270) {
xPos = 0;
FullLineSprite.fillSprite(BackgroundColor);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(AIDString, xPos, 2);
FullLineSprite.drawLine(283, 0, 283, 19, FrameColor);
FullLineSprite.pushSprite(5, 220);
} else {
if (millis() - rtticker >= 5) {
if (xPos < -AIDWidth) xPos = 0;
if (xPos == 0) {
if (millis() - rttickerhold >= 2000) {
xPos--;
rttickerhold = millis();
}
} else {
xPos--;
rttickerhold = millis();
}
FullLineSprite.fillSprite(BackgroundColor);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(AIDString, xPos, 2);
FullLineSprite.drawString(AIDString, xPos + AIDWidth, 2);
FullLineSprite.drawLine(314, 0, 314, 19, FrameColor);
FullLineSprite.pushSprite(5, 220);
rtticker = millis();
}
}
aidDisplay.update(AIDString, true, ActiveColor, ActiveColorSmooth, 0, 0, BackgroundColor);
}
}