Massive changes in font rendering and also show seconds in ct

This commit is contained in:
2026-01-11 19:52:01 +01:00
parent a4346aa4f1
commit d64c14a96b
16 changed files with 1202 additions and 4060 deletions

View File

@@ -1209,7 +1209,6 @@ void TEF6686::readRDS(byte showrdserrors) {
}
}
} break;
case RDS_GROUP_4A: {
if (!rdsBerrorThreshold && !rdsCerrorThreshold && !rdsDerrorThreshold && rds.ctupdate && (rds.PICTlock == pi || rds.PICTlock == 0)) {
auto rtc_time = rtc.getEpoch();
@@ -1254,10 +1253,12 @@ void TEF6686::readRDS(byte showrdserrors) {
rtcset = true;
time_t rds_utc_time = rdstime + timeoffset;
rds.clock_correction = rtc_time - rds_utc_time;
int32_t current_correction = rtc_time - rds_utc_time;
rds.clock_correction = current_correction;
if (!NTPupdated) {
rtc.setTime(rds_utc_time);
time_t corrected_time = rds_utc_time - (current_correction / 2);
rtc.setTime(corrected_time);
sync_to_rx_rtc();
}
} else rds.hasCT = false;

View File

@@ -332,16 +332,14 @@ mem presets[EE_PRESETS_CNT];
TEF6686 radio;
// FrequencySprite.createSprite(200, 50);
// RDSSprite.createSprite(165, 19);
// PSSprite.createSprite(150, 32);
// PTYSprite.createSprite(160, 19);
// GeneralTextSprite.createSprite(308, 28);
// SquelchSprite.createSprite(27, 19);
// FullLineSprite.createSprite(308, 19);
// OneBigLineSprite.createSprite(270, 30);
TFT_eSprite FrequencySprite = TFT_eSprite(&tft);
TFT_eSprite RDSSprite = TFT_eSprite(&tft);
TFT_eSprite PTYSprite = TFT_eSprite(&tft);
TFT_eSprite GeneralTextSprite = TFT_eSprite(&tft);
TFT_eSprite SignalSprite = TFT_eSprite(&tft);
TFT_eSprite SquelchSprite = TFT_eSprite(&tft);
TFT_eSprite FullLineSprite = TFT_eSprite(&tft);
@@ -354,7 +352,7 @@ WiFiClient RemoteClient;
WiFiUDP Udp;
WebServer webserver(80);
ScrollingTextDisplay rtplusDisplay(&RDSSprite, 147, 180);
ScrollingTextDisplay eonDisplay(&RDSSprite, 174, 180);
ScrollingTextDisplay rtplusDisplay(&GeneralTextSprite, 147, 180, 165, 19);
ScrollingTextDisplay eonDisplay(&GeneralTextSprite, 174, 180, 165, 19);
ScrollingTextDisplay eccDisplay(&FullLineSprite, 198, 270);
ScrollingTextDisplay rtDisplay(&FullLineSprite, 220, 270);

View File

@@ -5538,6 +5538,7 @@ void DoMenu() {
void Infoboxprint(const char* input) {
int length = strlen(input);
int newlineIndex = -1;
uint8_t font = (language == LANGUAGE_CHS) ? 6 : 7; // six seven
for (int i = 0; i < length; i++) {
if (input[i] == '\n') {
@@ -5560,8 +5561,8 @@ void Infoboxprint(const char* input) {
tftPrint(ACENTER, line1, 155, 40, ActiveColor, ActiveColorSmooth, 28);
tftPrint(ACENTER, line2, 155, 70, ActiveColor, ActiveColorSmooth, 28);
} else {
FrequencySprite.drawString(line1, 100, 5);
FrequencySprite.drawString(line2, 100, 25);
FrequencySprite.drawString(line1, 100, 5, font);
FrequencySprite.drawString(line2, 100, 25, font);
}
free(line1);
free(line2);
@@ -5570,9 +5571,7 @@ void Infoboxprint(const char* input) {
tftPrint(ACENTER, input, 155, 78, ActiveColor, ActiveColorSmooth, 28);
} else if (setupmode) {
tftPrint(ACENTER, input, 155, 70, ActiveColor, ActiveColorSmooth, 28);
} else {
FrequencySprite.drawString(input, 100, 15);
}
} else FrequencySprite.drawString(input, 100, 15, font);
}
}

View File

@@ -207,7 +207,7 @@ void updateSWMIBand() {
case SW_MI_BAND_90M:
case SW_MI_BAND_120M:
case SW_MI_BAND_160M:
FrequencySprite.drawString(SWMIBandstring + " ", 0, 0);
FrequencySprite.drawString(SWMIBandstring + " ", 0, 0, 6);
beepresetstart = true;
if (beepresetstop) {
EdgeBeeper();
@@ -816,22 +816,12 @@ void TuneFreq(int temp) {
}
void ShowNum(int val) {
switch (freqfont) {
case 1: FrequencySprite.loadFont(FREQFONT1); break;
case 2: FrequencySprite.loadFont(FREQFONT2); break;
case 3: FrequencySprite.loadFont(FREQFONT3); break;
case 4: FrequencySprite.loadFont(FREQFONT4); break;
default: FrequencySprite.loadFont(FREQFONT0); break;
}
FrequencySprite.setTextDatum(TR_DATUM);
FrequencySprite.fillSprite(BackgroundColor);
FrequencySprite.setTextColor(SecondaryColor, SecondaryColorSmooth, false);
FrequencySprite.drawString(String(val) + " ", 218, -6);
FrequencySprite.drawString(String(val) + " ", 218, -6, freqfont);
FrequencySprite.pushSprite(46, 46);
FrequencySprite.unloadFont();
}
byte numval[16] = {2, 3, 127, 5, 6, 0, 9, 13, 8, 7, 4, 1, 0, 0, 0, 0};
@@ -981,8 +971,7 @@ void NumpadProcess(int num) {
if (spispeed == 7) tft.setSPISpeed(40);
submenu = true;
menu = true;
PSSprite.unloadFont();
if (language == LANGUAGE_CHS) PSSprite.loadFont(FONT16_CHS); else PSSprite.loadFont(FONT16);
if (language == LANGUAGE_CHS) PSSprite.setTextFont(1); else PSSprite.setTextFont(0);
BuildMenu();
} else if (num == 13) {
if (freq_in != 0) {
@@ -1068,8 +1057,7 @@ void endMenu() {
if (USBmode) Serial.begin(19200); else Serial.begin(115200);
leave = true;
PSSprite.unloadFont();
if (language == LANGUAGE_CHS) PSSprite.loadFont(FONT28_CHS); else PSSprite.loadFont(FONT28);
if (language == LANGUAGE_CHS) PSSprite.setTextFont(3); else PSSprite.setTextFont(2);
PSSprite.setTextDatum(TL_DATUM);
BuildDisplay();
SelectBand();
@@ -1248,6 +1236,12 @@ void setup() {
tft.init();
tft.initDMA();
tft.loadFont(FONT16, 0);
tft.loadFont(FONT16_CHS, 1);
tft.loadFont(FONT28, 2);
tft.loadFont(FONT28_CHS, 3);
tft.loadFont(FONT48, 4);
doTheme();
if (displayflip == 0) {
@@ -1289,26 +1283,47 @@ void setup() {
FrequencySprite.createSprite(200, 50);
FrequencySprite.setTextDatum(TR_DATUM);
FrequencySprite.setSwapBytes(true);
FrequencySprite.loadFont(FREQFONT0, 0);
FrequencySprite.loadFont(FREQFONT1, 1);
FrequencySprite.loadFont(FREQFONT2, 2);
FrequencySprite.loadFont(FREQFONT3, 3);
FrequencySprite.loadFont(FREQFONT4, 4);
FrequencySprite.loadFont(FREQFONT5, 5);
FrequencySprite.loadFont(FONT16, 6);
FrequencySprite.loadFont(FONT16_CHS, 7);
RDSSprite.createSprite(165, 19);
RDSSprite.setSwapBytes(true);
PTYSprite.createSprite(160, 19);
PTYSprite.setSwapBytes(true);
GeneralTextSprite.createSprite(308, 28);
GeneralTextSprite.setSwapBytes(true);
GeneralTextSprite.loadFont(FONT16, 0);
GeneralTextSprite.loadFont(FONT16_CHS, 1);
GeneralTextSprite.loadFont(FONT28, 2);
GeneralTextSprite.loadFont(FONT28_CHS, 3);
GeneralTextSprite.loadFont(FONT48, 4);
PSSprite.createSprite(150, 32);
PSSprite.setSwapBytes(true);
PSSprite.loadFont(FONT16, 0);
PSSprite.loadFont(FONT16_CHS, 1);
PSSprite.loadFont(FONT28, 2);
PSSprite.loadFont(FONT28_CHS, 3);
SquelchSprite.createSprite(27, 19);
SquelchSprite.setSwapBytes(true);
SquelchSprite.loadFont(FONT16, 0);
SquelchSprite.loadFont(FONT16_CHS, 1);
FullLineSprite.createSprite(308, 19);
FullLineSprite.setSwapBytes(true);
FullLineSprite.loadFont(FONT16, 0);
FullLineSprite.loadFont(FONT16_CHS, 0);
OneBigLineSprite.createSprite(270, 30);
OneBigLineSprite.setSwapBytes(true);
OneBigLineSprite.loadFont(FONT28, 0);
OneBigLineSprite.loadFont(FONT28_CHS, 0);
SignalSprite.createSprite(80, 48);
SignalSprite.loadFont(FONT28, 0);
SignalSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
SignalSprite.setSwapBytes(true);
@@ -2421,8 +2436,7 @@ void ModeButtonPress() {
menupage = INDEX;
menuitem = 0;
if (spispeed == 7) tft.setSPISpeed(40);
PSSprite.unloadFont();
if (language == LANGUAGE_CHS) PSSprite.loadFont(FONT16_CHS); else PSSprite.loadFont(FONT16);
if (language == LANGUAGE_CHS) PSSprite.setTextFont(1); else PSSprite.setTextFont(0);
BuildMenu();
freq_in = 0;
menu = true;
@@ -2465,8 +2479,7 @@ void ModeButtonPress() {
menuoption = ITEM1;
menupage = INDEX;
menuitem = 0;
PSSprite.unloadFont();
if (language == LANGUAGE_CHS) PSSprite.loadFont(FONT16_CHS); else PSSprite.loadFont(FONT16);
if (language == LANGUAGE_CHS) PSSprite.setTextFont(1); else PSSprite.setTextFont(0);
BuildMenu();
freq_in = 0;
}
@@ -2881,30 +2894,17 @@ void ShowFreq(int mode) {
if (!screenmute) {
FrequencySprite.fillSprite(BackgroundColor);
switch (freqfont) {
case 0: FrequencySprite.loadFont(FREQFONT0); break;
case 1: FrequencySprite.loadFont(FREQFONT1); break;
case 2: FrequencySprite.loadFont(FREQFONT2); break;
case 3: FrequencySprite.loadFont(FREQFONT3); break;
case 4: FrequencySprite.loadFont(FREQFONT4); break;
case 5: FrequencySprite.loadFont(FREQFONT5); break;
}
FrequencySprite.setTextDatum(TR_DATUM);
FrequencySprite.setTextColor(FreqColor, FreqColorSmooth, false);
FrequencySprite.drawString(String(frequency_AM) + " ", 218, -6);
FrequencySprite.unloadFont();
FrequencySprite.drawString(String(frequency_AM) + " ", 218, -6, freqfont);
FrequencySprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FrequencySprite.setTextDatum(TL_DATUM);
FrequencySprite.loadFont(FONT16);
if (band == BAND_SW && showSWMIBand) {
DivdeSWMIBand();
updateSWMIBand();
}
FrequencySprite.unloadFont();
FrequencySprite.pushSprite(46, 46);
}
@@ -2923,33 +2923,21 @@ void ShowFreq(int mode) {
tftReplace(ARIGHT, String(freqold / 100) + "." + (freqold % 100 < 10 ? "0" : "") + String(freqold % 100) + " MHz", String(freq / 100) + "." + (freq % 100 < 10 ? "0" : "") + String(freq % 100), 290, 201, BWAutoColor, BWAutoColorSmooth, BackgroundColor, 16);
freqold = freq;
} else {
switch (freqfont) {
case 0: FrequencySprite.loadFont(FREQFONT0); break;
case 1: FrequencySprite.loadFont(FREQFONT1); break;
case 2: FrequencySprite.loadFont(FREQFONT2); break;
case 3: FrequencySprite.loadFont(FREQFONT3); break;
case 4: FrequencySprite.loadFont(FREQFONT4); break;
case 5: FrequencySprite.loadFont(FREQFONT5); break;
}
FrequencySprite.fillSprite(BackgroundColor);
if (mode == 0) {
FrequencySprite.setTextDatum(TR_DATUM);
FrequencySprite.setTextColor(FreqColor, FreqColorSmooth, false);
} else {
FrequencySprite.unloadFont();
FrequencySprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FrequencySprite.setTextDatum(TC_DATUM);
if (language == LANGUAGE_CHS) FrequencySprite.loadFont(FONT16_CHS); else FrequencySprite.loadFont(FONT16);
}
switch (mode) {
case 0:
FrequencySprite.drawString(String(freq / 100) + "." + (freq % 100 < 10 ? "0" : "") + String(freq % 100) + " ", 218, -6);
FrequencySprite.drawString(String(freq / 100) + "." + (freq % 100 < 10 ? "0" : "") + String(freq % 100) + " ", 218, -6, freqfont);
freqold = freq;
break;
case 1: Infoboxprint(textUI(34)); break;
case 2: Infoboxprint(textUI(290)); break;
case 3: Infoboxprint(textUI(291)); break;
@@ -2958,7 +2946,6 @@ void ShowFreq(int mode) {
}
FrequencySprite.pushSprite(46, 46);
FrequencySprite.unloadFont();
if (mode == 5) delay(1000);
}
}
@@ -2988,8 +2975,9 @@ void ShowFreq(int mode) {
tft.fillCircle(314, 223, 2, GreyoutColor);
tft.fillCircle(314, 234, 2, GreyoutColor);
} else {
RDSSprite.fillSprite(BackgroundColor);
RDSSprite.pushSprite(36, 220);
GeneralTextSprite.fillSprite(TFT_TRANSPARENT);
GeneralTextSprite.fillRect(0, 0, 165, 19, BackgroundColor);
GeneralTextSprite.pushSprite(36, 220, TFT_TRANSPARENT);
tft.fillCircle(314, 223, 2, GreyoutColor);
tft.fillCircle(314, 234, 2, GreyoutColor);
}
@@ -3311,16 +3299,14 @@ void doSquelch() {
}
}
} else {
if (language == LANGUAGE_CHS) SquelchSprite.loadFont(FONT16_CHS); else SquelchSprite.loadFont(FONT16);
if (!XDRGTKUSB && !XDRGTKTCP && usesquelch && (!scandxmode || (scandxmode && !scanmute))) {
if (!screenmute && usesquelch && !advancedRDS && !afscreen && !rdsstatscreen) {
if (!BWtune && !menu && (Squelch > Squelchold + 2 || Squelch < Squelchold - 2)) {
SquelchSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
SquelchSprite.fillSprite(BackgroundColor);
if (Squelch == -100) SquelchSprite.drawString("--", 0, 0);
else if (Squelch == 920) SquelchSprite.drawString("ST", 0, 0);
else SquelchSprite.drawString(String(SquelchShow), 0, 0);
if (Squelch == -100) SquelchSprite.drawString("--", 0, 0, (language == LANGUAGE_CHS) ? 1 : 0);
else if (Squelch == 920) SquelchSprite.drawString("ST", 0, 0, (language == LANGUAGE_CHS) ? 1 : 0);
else SquelchSprite.drawString(String(SquelchShow), 0, 0, (language == LANGUAGE_CHS) ? 1 : 0);
SquelchSprite.pushSprite(223, 147);
Squelchold = Squelch;
}
@@ -3355,9 +3341,9 @@ void doSquelch() {
SquelchSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
SquelchSprite.fillSprite(BackgroundColor);
if (Squelch == -1) SquelchSprite.drawString("ST", 0, 0);
else if (Squelch == 0) SquelchSprite.drawString("--", 0, 0);
else SquelchSprite.drawString(String(SquelchShow), 0, 0);
if (Squelch == -1) SquelchSprite.drawString("ST", 0, 0, (language == LANGUAGE_CHS) ? 1 : 0);
else if (Squelch == 0) SquelchSprite.drawString("--", 0, 0, (language == LANGUAGE_CHS) ? 1 : 0);
else SquelchSprite.drawString(String(SquelchShow), 0, 0, (language == LANGUAGE_CHS) ? 1 : 0);
if (Squelch != Squelchold) SquelchSprite.pushSprite(223, 147);
Squelchold = Squelch;
}
@@ -3387,7 +3373,6 @@ void doSquelch() {
}
}
}
SquelchSprite.unloadFont();
}
void doBW() {
@@ -3860,17 +3845,16 @@ void read_encoder() {
}
void tftReplace(int8_t offset, const String & textold, const String & text, int16_t x, int16_t y, int color, int smoothcolor, int background, uint8_t fontsize) {
const uint8_t *selectedFont = nullptr;
uint8_t selectedFont = 0;
if (language == LANGUAGE_CHS) {
if (fontsize == 16) selectedFont = FONT16_CHS;
else if (fontsize == 28) selectedFont = FONT28_CHS;
if (fontsize == 16) selectedFont = 1;
else if (fontsize == 28) selectedFont = 3;
} else {
if (fontsize == 16) selectedFont = FONT16;
else if (fontsize == 28) selectedFont = FONT28;
if (fontsize == 16) selectedFont = 0;
else if (fontsize == 28) selectedFont = 2;
}
if (fontsize == 48) selectedFont = FONT48;
if (fontsize == 48) selectedFont = 4;
tft.loadFont(selectedFont);
tft.setTextColor(background, background, false);
switch (offset) {
@@ -3879,7 +3863,7 @@ void tftReplace(int8_t offset, const String & textold, const String & text, int1
case 1: tft.setTextDatum(TR_DATUM); break;
}
tft.drawString(textold, x, y);
tft.drawString(textold, x, y, selectedFont);
tft.setTextColor(color, smoothcolor, false);
switch (offset) {
@@ -3891,23 +3875,19 @@ void tftReplace(int8_t offset, const String & textold, const String & text, int1
String modifiedText = text;
modifiedText.replace("\n", " ");
tft.drawString(modifiedText, x, y);
tft.unloadFont();
tft.drawString(modifiedText, x, y, selectedFont);
}
void tftPrint(int8_t offset, const String & text, int16_t x, int16_t y, int color, int smoothcolor, uint8_t fontsize) {
const uint8_t *selectedFont = nullptr;
uint8_t selectedFont = 0;
if (language == LANGUAGE_CHS) {
if (fontsize == 16) selectedFont = FONT16_CHS;
else if (fontsize == 28) selectedFont = FONT28_CHS;
if (fontsize == 16) selectedFont = 1;
else if (fontsize == 28) selectedFont = 3;
} else {
if (fontsize == 16) selectedFont = FONT16;
else if (fontsize == 28) selectedFont = FONT28;
if (fontsize == 16) selectedFont = 0;
else if (fontsize == 28) selectedFont = 2;
}
if (fontsize == 48) selectedFont = FONT48;
tft.loadFont(selectedFont);
if (fontsize == 48) selectedFont = 4;
tft.setTextColor(color, smoothcolor, (fontsize == 52 ? true : false));
@@ -3920,40 +3900,24 @@ void tftPrint(int8_t offset, const String & text, int16_t x, int16_t y, int colo
String modifiedText = text;
modifiedText.replace("\n", " ");
tft.drawString(modifiedText, x, y, 1);
tft.unloadFont();
tft.drawString(modifiedText, x, y, selectedFont);
}
void UpdateFonts(byte mode) {
switch (mode) {
case 0:
RDSSprite.unloadFont();
PTYSprite.unloadFont();
PSSprite.unloadFont();
FullLineSprite.unloadFont();
OneBigLineSprite.unloadFont();
if (language == LANGUAGE_CHS) {
RDSSprite.loadFont(FONT16_CHS);
PTYSprite.loadFont(FONT16_CHS);
if (menu) PSSprite.loadFont(FONT16_CHS); else PSSprite.loadFont(FONT28_CHS);
FullLineSprite.loadFont(FONT16_CHS);
OneBigLineSprite.loadFont(FONT28_CHS);
if (menu) PSSprite.setTextFont(1); else PSSprite.setTextFont(3);
OneBigLineSprite.setTextFont(1);
GeneralTextSprite.setTextFont(1);
FullLineSprite.setTextFont(1);
} else {
RDSSprite.loadFont(FONT16);
PTYSprite.loadFont(FONT16);
if (menu) PSSprite.loadFont(FONT16); else PSSprite.loadFont(FONT28);
FullLineSprite.loadFont(FONT16);
OneBigLineSprite.loadFont(FONT28);
if (menu) PSSprite.setTextFont(0); else PSSprite.setTextFont(2);
OneBigLineSprite.setTextFont(0);
GeneralTextSprite.setTextFont(0);
FullLineSprite.setTextFont(0);
}
break;
case 1:
FullLineSprite.unloadFont();
OneBigLineSprite.unloadFont();
RDSSprite.unloadFont();
PTYSprite.unloadFont();
PSSprite.unloadFont();
break;
}
}
@@ -4043,14 +4007,11 @@ uint8_t doAutoMemory(uint16_t startfreq, uint16_t stopfreq, uint8_t startmem, ui
SignalSprite.setTextColor(SecondaryColor, SecondaryColorSmooth, false);
SignalSprite.setTextDatum(TC_DATUM);
SignalSprite.loadFont(FONT28);
SignalSprite.drawString(String(percent) + "%", 40, 0);
SignalSprite.unloadFont();
SignalSprite.pushSprite(120, 125);
if (language == LANGUAGE_CHS) SquelchSprite.loadFont(FONT16_CHS); else SquelchSprite.loadFont(FONT16);
SquelchSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
SquelchSprite.drawString(String(counter), 0, 0);
SquelchSprite.drawString(String(counter), 0, 0, (language == LANGUAGE_CHS) ? 1 : 0);
SquelchSprite.pushSprite(200, 155);
tft.fillRect(60, 110, 2 * percent, 6, BarInsignificantColor);

View File

@@ -406,14 +406,15 @@ void showPI() {
void showPTY() {
if(radio.rds.PTY.changed(0)) {
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));
PTYSprite.fillSprite(BackgroundColor);
if(RDSstatus) PTYSprite.setTextColor(RDSColor, RDSColorSmooth, false);
else PTYSprite.setTextColor(RDSDropoutColor, RDSDropoutColorSmooth, false);
if(band < BAND_GAP) PTYSprite.drawString(PTYString, 0, 2); // only draw it on fm
GeneralTextSprite.fillSprite(TFT_TRANSPARENT);
GeneralTextSprite.fillRect(0, 0, 160, 19, BackgroundColor);
if(RDSstatus) GeneralTextSprite.setTextColor(RDSColor, RDSColorSmooth, false);
else GeneralTextSprite.setTextColor(RDSDropoutColor, RDSDropoutColorSmooth, false);
if(band < BAND_GAP) GeneralTextSprite.drawString(PTYString, 0, 2); // only draw it on fm
if (!screenmute) {
if (advancedRDS) PTYSprite.pushSprite(35, 107);
else PTYSprite.pushSprite(35, 161);
if (advancedRDS) GeneralTextSprite.pushSprite(35, 107, TFT_TRANSPARENT);
else GeneralTextSprite.pushSprite(35, 161, TFT_TRANSPARENT);
}
if (wifi) {
@@ -514,7 +515,7 @@ void showPS() {
void showCT() {
char timeStr[16];
char dateStr[9];
time_t t = rtc.getEpoch() + (NTPupdated ? 0 : radio.rds.offset);
time_t t = rtc.getEpoch();
if (NTPupdated) {
t += NTPoffset * 3600; // Convert offset from hours to seconds
@@ -537,7 +538,7 @@ void showCT() {
int hour = localtm->tm_hour;
if (hour < 0 || hour > 23) hour = 0;
snprintf(timeStr, sizeof(timeStr), "%02d:%02d", hour, localtm->tm_min);
snprintf(timeStr, sizeof(timeStr), "%02d:%02d:%02d", hour, localtm->tm_min, localtm->tm_sec);
}
rds_clock = String(timeStr);
@@ -547,26 +548,11 @@ void showCT() {
rds_date = String(dateStr);
if (!screenmute && showclock && (rds_clock != rds_clockold || rds_date != rds_dateold || radio.rds.hasCT.changed(0))) {
if ((radio.rds.hasCT && RDSstatus) || NTPupdated) {
rtcset = true;
tftReplace(ACENTER, rds_clockold, rds_clock, 134, 1, RDSColor, RDSColorSmooth, BackgroundColor, 16);
tftReplace(ACENTER, rds_dateold, rds_date, 134, 15, RDSColor, RDSColorSmooth, BackgroundColor, 16);
} else { // Handle dropout scenarios
if (rtcset) { // Display dropout message if RTC was set
tftReplace(ACENTER, rds_clockold, rds_clock, 134, 1, RDSDropoutColor, RDSDropoutColorSmooth, BackgroundColor, 16);
tftReplace(ACENTER, rds_dateold, rds_date, 134, 15, RDSDropoutColor, RDSDropoutColorSmooth, BackgroundColor, 16);
} else { // Clear and reprint the clock and date
tftPrint(ACENTER, rds_clockold, 134, 1, BackgroundColor, BackgroundColor, 16);
tftPrint(ACENTER, rds_clock, 134, 1, BackgroundColor, BackgroundColor, 16);
tftPrint(ACENTER, rds_dateold, 134, 15, BackgroundColor, BackgroundColor, 16);
tftPrint(ACENTER, rds_date, 134, 15, BackgroundColor, BackgroundColor, 16);
}
}
tftReplace(ACENTER, rds_clockold, rds_clock, 134, 1, RDSColor, RDSColorSmooth, BackgroundColor, 16);
tftReplace(ACENTER, rds_dateold, rds_date, 134, 15, RDSColor, RDSColorSmooth, BackgroundColor, 16);
rds_clockold = rds_clock;
rds_dateold = rds_date;
}
rds_clockold = rds_clock;
rds_dateold = rds_date;
}
void showRadioText() {