Added support for Long PS
This commit is contained in:
@@ -271,6 +271,7 @@ int xPos;
|
|||||||
int xPos2;
|
int xPos2;
|
||||||
int xPos3;
|
int xPos3;
|
||||||
int xPos4;
|
int xPos4;
|
||||||
|
int xPos5;
|
||||||
int16_t OStatus;
|
int16_t OStatus;
|
||||||
int16_t SAvg;
|
int16_t SAvg;
|
||||||
int16_t SAvg2;
|
int16_t SAvg2;
|
||||||
@@ -370,6 +371,8 @@ unsigned long eontickerhold;
|
|||||||
unsigned long flashingtimer;
|
unsigned long flashingtimer;
|
||||||
unsigned long lowsignaltimer;
|
unsigned long lowsignaltimer;
|
||||||
unsigned long peakholdmillis;
|
unsigned long peakholdmillis;
|
||||||
|
unsigned long pslongticker;
|
||||||
|
unsigned long pslongtickerhold;
|
||||||
unsigned long rtplusticker;
|
unsigned long rtplusticker;
|
||||||
unsigned long rtplustickerhold;
|
unsigned long rtplustickerhold;
|
||||||
unsigned long rtticker;
|
unsigned long rtticker;
|
||||||
@@ -391,6 +394,7 @@ TFT_eSprite SquelchSprite = TFT_eSprite(&tft);
|
|||||||
TFT_eSprite FullLineSprite = TFT_eSprite(&tft);
|
TFT_eSprite FullLineSprite = TFT_eSprite(&tft);
|
||||||
TFT_eSprite OneBigLineSprite = TFT_eSprite(&tft);
|
TFT_eSprite OneBigLineSprite = TFT_eSprite(&tft);
|
||||||
TFT_eSprite SignalSprite = TFT_eSprite(&tft);
|
TFT_eSprite SignalSprite = TFT_eSprite(&tft);
|
||||||
|
TFT_eSprite PSSprite = TFT_eSprite(&tft);
|
||||||
|
|
||||||
WiFiConnect wc;
|
WiFiConnect wc;
|
||||||
WiFiServer Server(7373);
|
WiFiServer Server(7373);
|
||||||
@@ -619,6 +623,9 @@ void setup() {
|
|||||||
RDSSprite.createSprite(165, 19);
|
RDSSprite.createSprite(165, 19);
|
||||||
RDSSprite.setTextDatum(TL_DATUM);
|
RDSSprite.setTextDatum(TL_DATUM);
|
||||||
|
|
||||||
|
PSSprite.createSprite(150, 30);
|
||||||
|
PSSprite.setTextDatum(TL_DATUM);
|
||||||
|
|
||||||
SquelchSprite.createSprite(47, 19);
|
SquelchSprite.createSprite(47, 19);
|
||||||
SquelchSprite.setTextDatum(TL_DATUM);
|
SquelchSprite.setTextDatum(TL_DATUM);
|
||||||
SquelchSprite.setSwapBytes(true);
|
SquelchSprite.setSwapBytes(true);
|
||||||
@@ -4217,9 +4224,11 @@ void UpdateFonts(bool mode) {
|
|||||||
if (language == LANGUAGE_CHS) {
|
if (language == LANGUAGE_CHS) {
|
||||||
RadiotextSprite.loadFont(FONT16_CHS);
|
RadiotextSprite.loadFont(FONT16_CHS);
|
||||||
RDSSprite.loadFont(FONT16_CHS);
|
RDSSprite.loadFont(FONT16_CHS);
|
||||||
|
PSSprite.loadFont(FONT28_CHS);
|
||||||
} else {
|
} else {
|
||||||
RadiotextSprite.loadFont(FONT16);
|
RadiotextSprite.loadFont(FONT16);
|
||||||
RDSSprite.loadFont(FONT16);
|
RDSSprite.loadFont(FONT16);
|
||||||
|
PSSprite.loadFont(FONT28);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -4240,6 +4249,7 @@ void UpdateFonts(bool mode) {
|
|||||||
OneBigLineSprite.unloadFont();
|
OneBigLineSprite.unloadFont();
|
||||||
RadiotextSprite.unloadFont();
|
RadiotextSprite.unloadFont();
|
||||||
RDSSprite.unloadFont();
|
RDSSprite.unloadFont();
|
||||||
|
PSSprite.unloadFont();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+57
-6
@@ -1499,6 +1499,45 @@ void TEF6686::readRDS(byte showrdserrors) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case RDS_GROUP_15A: {
|
||||||
|
if (showrdserrors == 3 || (!rdsBerrorThreshold && !rdsCerrorThreshold && !rdsDerrorThreshold)) {
|
||||||
|
if (pslong_process) rds.hasLongPS = true;
|
||||||
|
offset = (rds.rdsB & 0xf) * 4; // Get Long PS character segment
|
||||||
|
|
||||||
|
pslong_buffer2[offset + 0] = pslong_buffer[offset + 0]; // Copy PS long buffer
|
||||||
|
pslong_buffer2[offset + 1] = pslong_buffer[offset + 1];
|
||||||
|
pslong_buffer2[offset + 2] = pslong_buffer[offset + 2];
|
||||||
|
pslong_buffer2[offset + 3] = pslong_buffer[offset + 3];
|
||||||
|
pslong_buffer2[32] = '\0';
|
||||||
|
|
||||||
|
pslong_buffer[offset + 0] = rds.rdsC >> 8; // First character of segment
|
||||||
|
pslong_buffer[offset + 1] = rds.rdsC & 0xff; // Second character of segment
|
||||||
|
pslong_buffer[offset + 2] = rds.rdsD >> 8; // Thirth character of segment
|
||||||
|
pslong_buffer[offset + 3] = rds.rdsD & 0xff; // Fourth character of segment
|
||||||
|
pslong_buffer[32] = '\0';
|
||||||
|
|
||||||
|
if (offset == 28 && (pslong_process || !rds.fastps)) { // Last chars are received
|
||||||
|
if (strcmp(pslong_buffer, pslong_buffer2) == 0) { // When no difference between current and buffer, let's go...
|
||||||
|
RDScharConverter(pslong_buffer, PSLongtext, sizeof(PSLongtext) / sizeof(wchar_t), true); // Convert 8 bit ASCII to 16 bit ASCII
|
||||||
|
String utf8String = convertToUTF8(PSLongtext); // Convert RDS characterset to ASCII
|
||||||
|
rds.stationNameLong = extractUTF8Substring(utf8String, 0, 32, true); // Make sure PS Long does not exceed 32 characters
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!pslong_process && rds.fastps) { // Let's get 2 runs of 32 PS characters fast and without refresh
|
||||||
|
if (offset == 0) packet0long = true;
|
||||||
|
if (offset == 4) packet1long = true;
|
||||||
|
if (offset == 8) packet2long = true;
|
||||||
|
if (offset == 16) packet3long = true;
|
||||||
|
RDScharConverter(pslong_buffer, PSLongtext, sizeof(PSLongtext) / sizeof(wchar_t), true); // Convert 8 bit ASCII to 16 bit ASCII
|
||||||
|
String utf8String = convertToUTF8(PSLongtext); // Convert RDS characterset to ASCII
|
||||||
|
rds.stationNameLong = extractUTF8Substring(utf8String, 0, 32, true);
|
||||||
|
if (packet0long && packet1long && packet2long && packet3long) pslong_process = true; // OK, we had one runs, now let's go the idle PS Long writing
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1508,6 +1547,7 @@ void TEF6686::clearRDS (bool fullsearchrds) {
|
|||||||
rds.piBuffer.clear();
|
rds.piBuffer.clear();
|
||||||
rds.stationName = "";
|
rds.stationName = "";
|
||||||
rds.stationText = "";
|
rds.stationText = "";
|
||||||
|
rds.stationNameLong = "";
|
||||||
rds.stationText32 = "";
|
rds.stationText32 = "";
|
||||||
rds.RTContent1 = "";
|
rds.RTContent1 = "";
|
||||||
rds.RTContent2 = "";
|
rds.RTContent2 = "";
|
||||||
@@ -1517,11 +1557,6 @@ void TEF6686::clearRDS (bool fullsearchrds) {
|
|||||||
rds.stationIDtext = "";
|
rds.stationIDtext = "";
|
||||||
rds.stationStatetext = "";
|
rds.stationStatetext = "";
|
||||||
|
|
||||||
ps_buffer[8] = 0;
|
|
||||||
ptyn_buffer[8] = 0;
|
|
||||||
PStext[8] = L'\0';
|
|
||||||
PTYNtext[8] = L'\0';
|
|
||||||
|
|
||||||
uint8_t i;
|
uint8_t i;
|
||||||
for (i = 0; i < 8; i++) {
|
for (i = 0; i < 8; i++) {
|
||||||
ps_buffer[i] = 0x20;
|
ps_buffer[i] = 0x20;
|
||||||
@@ -1529,12 +1564,22 @@ void TEF6686::clearRDS (bool fullsearchrds) {
|
|||||||
ptyn_buffer[i] = 0x20;
|
ptyn_buffer[i] = 0x20;
|
||||||
PTYNtext[i] = L'\0';
|
PTYNtext[i] = L'\0';
|
||||||
}
|
}
|
||||||
|
ps_buffer[8] = 0;
|
||||||
|
ptyn_buffer[8] = 0;
|
||||||
|
PStext[8] = L'\0';
|
||||||
|
PTYNtext[8] = L'\0';
|
||||||
|
|
||||||
for (i = 0; i < 64; i++) rt_buffer[i] = 0x20;
|
for (i = 0; i < 64; i++) rt_buffer[i] = 0x20;
|
||||||
rt_buffer[64] = 0;
|
rt_buffer[64] = 0;
|
||||||
|
|
||||||
for (i = 0; i < 32; i++) rt_buffer32[i] = 0x20;
|
for (i = 0; i < 32; i++) {
|
||||||
|
rt_buffer32[i] = 0x20;
|
||||||
|
pslong_buffer[i] = 0x20;
|
||||||
|
PSLongtext[i] = L'\0';
|
||||||
|
}
|
||||||
rt_buffer32[32] = 0;
|
rt_buffer32[32] = 0;
|
||||||
|
pslong_buffer[32] = 0;
|
||||||
|
PSLongtext[32] = L'\0';
|
||||||
|
|
||||||
for (i = 0; i < 17; i++) rds.stationType[i] = 0x20;
|
for (i = 0; i < 17; i++) rds.stationType[i] = 0x20;
|
||||||
rds.stationType[17] = 0;
|
rds.stationType[17] = 0;
|
||||||
@@ -1611,10 +1656,12 @@ void TEF6686::clearRDS (bool fullsearchrds) {
|
|||||||
rds.hasCT = false;
|
rds.hasCT = false;
|
||||||
rds.hasTMC = false;
|
rds.hasTMC = false;
|
||||||
rds.hasAID = false;
|
rds.hasAID = false;
|
||||||
|
rds.hasLongPS = false;
|
||||||
rds.hasRDSplus = false;
|
rds.hasRDSplus = false;
|
||||||
rds.hasDABAF = false;
|
rds.hasDABAF = false;
|
||||||
rt_process = false;
|
rt_process = false;
|
||||||
ps_process = false;
|
ps_process = false;
|
||||||
|
pslong_process = false;
|
||||||
rds.rdsreset = true;
|
rds.rdsreset = true;
|
||||||
rds.hasArtificialhead = false;
|
rds.hasArtificialhead = false;
|
||||||
rds.hasCompressed = false;
|
rds.hasCompressed = false;
|
||||||
@@ -1640,6 +1687,10 @@ void TEF6686::clearRDS (bool fullsearchrds) {
|
|||||||
packet1 = false;
|
packet1 = false;
|
||||||
packet2 = false;
|
packet2 = false;
|
||||||
packet3 = false;
|
packet3 = false;
|
||||||
|
packet0long = false;
|
||||||
|
packet1long = false;
|
||||||
|
packet2long = false;
|
||||||
|
packet3long = false;
|
||||||
rds.aid_counter = 0;
|
rds.aid_counter = 0;
|
||||||
afmethodBprobe = false;
|
afmethodBprobe = false;
|
||||||
afmethodBtrigger = false;
|
afmethodBtrigger = false;
|
||||||
|
|||||||
+8
-4
@@ -568,10 +568,12 @@ typedef struct _rds_ {
|
|||||||
String ECCtext;
|
String ECCtext;
|
||||||
String LICtext;
|
String LICtext;
|
||||||
String stationIDtext;
|
String stationIDtext;
|
||||||
|
String stationNameLong;
|
||||||
String stationStatetext;
|
String stationStatetext;
|
||||||
char stationType[18];
|
char stationType[18];
|
||||||
char picode[7];
|
char picode[7];
|
||||||
char stationID[9];
|
char stationID[9];
|
||||||
|
char stationLongID[33];
|
||||||
char stationState[3];
|
char stationState[3];
|
||||||
char dabafeid[5];
|
char dabafeid[5];
|
||||||
char dabafchannel[4];
|
char dabafchannel[4];
|
||||||
@@ -598,6 +600,7 @@ typedef struct _rds_ {
|
|||||||
bool hasECC;
|
bool hasECC;
|
||||||
bool hasLIC;
|
bool hasLIC;
|
||||||
bool hasDABAF;
|
bool hasDABAF;
|
||||||
|
bool hasLongPS;
|
||||||
bool hasRT;
|
bool hasRT;
|
||||||
bool hasTP;
|
bool hasTP;
|
||||||
bool hasTA;
|
bool hasTA;
|
||||||
@@ -720,10 +723,13 @@ class TEF6686 {
|
|||||||
char ptyn_buffer[9];
|
char ptyn_buffer[9];
|
||||||
char eon_buffer[20][9];
|
char eon_buffer[20][9];
|
||||||
bool ps_process;
|
bool ps_process;
|
||||||
|
bool pslong_process;
|
||||||
bool rt_process;
|
bool rt_process;
|
||||||
char rt_buffer[65];
|
char rt_buffer[65];
|
||||||
char rt_buffer2[65];
|
char rt_buffer2[65];
|
||||||
char rt_buffer32[33];
|
char rt_buffer32[33];
|
||||||
|
char pslong_buffer[33];
|
||||||
|
char pslong_buffer2[33];
|
||||||
bool useRTPlus = true;
|
bool useRTPlus = true;
|
||||||
bool ABold;
|
bool ABold;
|
||||||
bool afreset;
|
bool afreset;
|
||||||
@@ -733,6 +739,7 @@ class TEF6686 {
|
|||||||
bool rtABold;
|
bool rtABold;
|
||||||
bool rtAB32old;
|
bool rtAB32old;
|
||||||
wchar_t PStext[9] = L"";
|
wchar_t PStext[9] = L"";
|
||||||
|
wchar_t PSLongtext[33] = L"";
|
||||||
wchar_t EONPStext[20][9];
|
wchar_t EONPStext[20][9];
|
||||||
wchar_t PTYNtext[9] = L"";
|
wchar_t PTYNtext[9] = L"";
|
||||||
char RDSplus1[45];
|
char RDSplus1[45];
|
||||||
@@ -749,10 +756,7 @@ class TEF6686 {
|
|||||||
bool rdsBerrorThreshold;
|
bool rdsBerrorThreshold;
|
||||||
bool rdsCerrorThreshold;
|
bool rdsCerrorThreshold;
|
||||||
bool rdsDerrorThreshold;
|
bool rdsDerrorThreshold;
|
||||||
bool packet0;
|
bool packet0, packet1, packet2, packet3, packet0long, packet1long, packet2long, packet3long;
|
||||||
bool packet1;
|
|
||||||
bool packet2;
|
|
||||||
bool packet3;
|
|
||||||
bool afmethodBprobe;
|
bool afmethodBprobe;
|
||||||
uint16_t rdsCold;
|
uint16_t rdsCold;
|
||||||
uint8_t af_counterb;
|
uint8_t af_counterb;
|
||||||
|
|||||||
+60
-17
@@ -7,6 +7,7 @@
|
|||||||
|
|
||||||
int Radiotextlengthold;
|
int Radiotextlengthold;
|
||||||
int RadiotextWidth;
|
int RadiotextWidth;
|
||||||
|
int PSLongWidth;
|
||||||
int AIDlengthold;
|
int AIDlengthold;
|
||||||
int AIDWidth;
|
int AIDWidth;
|
||||||
int afstringlengthold;
|
int afstringlengthold;
|
||||||
@@ -14,6 +15,7 @@ int afstringWidth;
|
|||||||
int eonstringlengthold;
|
int eonstringlengthold;
|
||||||
int eonstringWidth;
|
int eonstringWidth;
|
||||||
int rtplusstringlengthold;
|
int rtplusstringlengthold;
|
||||||
|
int PSLonglengthold;
|
||||||
int rtplusstringWidth;
|
int rtplusstringWidth;
|
||||||
|
|
||||||
void ShowAdvancedRDS() {
|
void ShowAdvancedRDS() {
|
||||||
@@ -315,16 +317,23 @@ void readRds() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PSSprite.fillSprite(BackgroundColor);
|
||||||
|
PSSprite.setTextColor(RDSDropoutColor, RDSDropoutColorSmooth, false);
|
||||||
|
PSSprite.drawString(PSold, 0, 0);
|
||||||
|
if (!radio.rds.hasLongPS) {
|
||||||
if (advancedRDS) {
|
if (advancedRDS) {
|
||||||
tftPrint(-1, PSold, 36, 75, RDSDropoutColor, RDSDropoutColorSmooth, 28);
|
PSSprite.pushSprite(36, 75);
|
||||||
} else {
|
} else {
|
||||||
tftPrint(-1, PSold, 36, 187, RDSDropoutColor, RDSDropoutColorSmooth, 28);
|
PSSprite.pushSprite(36, 187);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (advancedRDS) {
|
if (advancedRDS) {
|
||||||
tftPrint(-1, PTYold, 36, 109, RDSDropoutColor, RDSDropoutColorSmooth, 16);
|
tftPrint(-1, PTYold, 36, 109, RDSDropoutColor, RDSDropoutColorSmooth, 16);
|
||||||
} else {
|
} else {
|
||||||
tftPrint(-1, PTYold, 36, 163, RDSDropoutColor, RDSDropoutColorSmooth, 16);
|
tftPrint(-1, PTYold, 36, 163, RDSDropoutColor, RDSDropoutColorSmooth, 16);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (advancedRDS) {
|
if (advancedRDS) {
|
||||||
tft.fillCircle(86, 41, 5, SignificantColor);
|
tft.fillCircle(86, 41, 5, SignificantColor);
|
||||||
tft.fillCircle(124, 41, 5, SignificantColor);
|
tft.fillCircle(124, 41, 5, SignificantColor);
|
||||||
@@ -363,16 +372,23 @@ void readRds() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PSSprite.fillSprite(BackgroundColor);
|
||||||
|
PSSprite.setTextColor(RDSColor, RDSColorSmooth, false);
|
||||||
|
PSSprite.drawString(PSold, 0, 0);
|
||||||
|
if (!radio.rds.hasLongPS) {
|
||||||
if (advancedRDS) {
|
if (advancedRDS) {
|
||||||
tftPrint(-1, PSold, 36, 75, RDSColor, RDSColorSmooth, 28);
|
PSSprite.pushSprite(36, 75);
|
||||||
} else {
|
} else {
|
||||||
tftPrint(-1, PSold, 36, 187, RDSColor, RDSColorSmooth, 28);
|
PSSprite.pushSprite(36, 187);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (advancedRDS) {
|
if (advancedRDS) {
|
||||||
tftPrint(-1, PTYold, 36, 109, RDSColor, RDSColorSmooth, 16);
|
tftPrint(-1, PTYold, 36, 109, RDSColor, RDSColorSmooth, 16);
|
||||||
} else {
|
} else {
|
||||||
tftPrint(-1, PTYold, 36, 163, RDSColor, RDSColorSmooth, 16);
|
tftPrint(-1, PTYold, 36, 163, RDSColor, RDSColorSmooth, 16);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!advancedRDS) {
|
if (!advancedRDS) {
|
||||||
tft.fillCircle(314, 223, 2, GreyoutColor);
|
tft.fillCircle(314, 223, 2, GreyoutColor);
|
||||||
tft.fillCircle(314, 234, 2, GreyoutColor);
|
tft.fillCircle(314, 234, 2, GreyoutColor);
|
||||||
@@ -653,26 +669,53 @@ void showPTY() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void showPS() {
|
void showPS() {
|
||||||
if (radio.rds.stationName != PSold) {
|
if (radio.rds.stationName != PSold || radio.rds.hasLongPS) {
|
||||||
if (!screenmute) {
|
if (!screenmute) {
|
||||||
if (advancedRDS) {
|
if (afscreen) {
|
||||||
if (!RDSstatus) {
|
|
||||||
tftReplace(-1, PSold, radio.rds.stationName, 36, 75, RDSDropoutColor, RDSDropoutColorSmooth, BackgroundColor, 28);
|
|
||||||
} else {
|
|
||||||
tftReplace(-1, PSold, radio.rds.stationName, 36, 75, RDSColor, RDSColorSmooth, BackgroundColor, 28);
|
|
||||||
}
|
|
||||||
} else if (afscreen) {
|
|
||||||
tftReplace(0, PSold, radio.rds.stationName, 160, 201, BWAutoColor, BWAutoColorSmooth, BackgroundColor, 16);
|
tftReplace(0, PSold, radio.rds.stationName, 160, 201, BWAutoColor, BWAutoColorSmooth, BackgroundColor, 16);
|
||||||
} else {
|
} else {
|
||||||
if (!RDSstatus) {
|
if (radio.rds.hasLongPS) {
|
||||||
tftReplace(-1, PSold, radio.rds.stationName, 36, 187, RDSDropoutColor, RDSDropoutColorSmooth, BackgroundColor, 28);
|
PSLongWidth = (String(radio.rds.stationNameLong).length() * (charwidth + 4));
|
||||||
} else {
|
PSLonglengthold = String(radio.rds.stationNameLong).length();
|
||||||
tftReplace(-1, PSold, radio.rds.stationName, 36, 187, RDSColor, RDSColorSmooth, BackgroundColor, 28);
|
|
||||||
|
if (millis() - pslongticker >= (advancedRDS ? 5 : 15)) {
|
||||||
|
if (xPos5 == 0) {
|
||||||
|
if (millis() - pslongtickerhold >= 1000) {
|
||||||
|
xPos5 --;
|
||||||
|
pslongtickerhold = millis();
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
xPos5 --;
|
||||||
|
pslongtickerhold = millis();
|
||||||
|
}
|
||||||
|
|
||||||
|
PSSprite.setTextDatum(TL_DATUM);
|
||||||
|
if (xPos5 < -PSLongWidth) xPos5 = 0;
|
||||||
|
if (advancedRDS) {
|
||||||
|
PSSprite.fillSprite(BackgroundColor);
|
||||||
|
if (RDSstatus) PSSprite.setTextColor(RDSColor, RDSColorSmooth, false); else PSSprite.setTextColor(RDSDropoutColor, RDSDropoutColorSmooth, false);
|
||||||
|
PSSprite.drawString(radio.rds.stationNameLong, xPos5, 0);
|
||||||
|
PSSprite.drawString(radio.rds.stationNameLong, xPos5 + PSLongWidth, 0);
|
||||||
|
} else {
|
||||||
|
PSSprite.fillSprite(BackgroundColor);
|
||||||
|
if (RDSstatus) PSSprite.setTextColor(RDSColor, RDSColorSmooth, false); else PSSprite.setTextColor(RDSDropoutColor, RDSDropoutColorSmooth, false);
|
||||||
|
PSSprite.drawString(radio.rds.stationNameLong, xPos5, 0);
|
||||||
|
PSSprite.drawString(radio.rds.stationNameLong, xPos5 + PSLongWidth, 0);
|
||||||
|
}
|
||||||
|
pslongticker = millis();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
xPos5 = 0;
|
||||||
|
PSSprite.fillSprite(BackgroundColor);
|
||||||
|
if (!RDSstatus) PSSprite.setTextColor(RDSDropoutColor, RDSDropoutColorSmooth, false); else PSSprite.setTextColor(RDSColor, RDSColorSmooth, false);
|
||||||
|
PSSprite.drawString(radio.rds.stationName, 0, 0);
|
||||||
|
}
|
||||||
|
if (advancedRDS) PSSprite.pushSprite(36, 75); else PSSprite.pushSprite(36, 187);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
PSold = radio.rds.stationName;
|
PSold = radio.rds.stationName;
|
||||||
if (wifi) {
|
|
||||||
|
if (wifi && PSold != radio.rds.stationName) {
|
||||||
Udp.beginPacket(remoteip, 9030);
|
Udp.beginPacket(remoteip, 9030);
|
||||||
Udp.print("from=TEF_tuner " + String(stationlistid, DEC) + ";PS=");
|
Udp.print("from=TEF_tuner " + String(stationlistid, DEC) + ";PS=");
|
||||||
char PShex[9];
|
char PShex[9];
|
||||||
|
|||||||
@@ -86,6 +86,7 @@ extern int xPos;
|
|||||||
extern int xPos2;
|
extern int xPos2;
|
||||||
extern int xPos3;
|
extern int xPos3;
|
||||||
extern int xPos4;
|
extern int xPos4;
|
||||||
|
extern int xPos5;
|
||||||
extern int16_t SAvg3;
|
extern int16_t SAvg3;
|
||||||
extern IPAddress remoteip;
|
extern IPAddress remoteip;
|
||||||
extern String AIDString;
|
extern String AIDString;
|
||||||
@@ -114,6 +115,8 @@ extern unsigned long aftickerhold;
|
|||||||
extern unsigned long aftimer;
|
extern unsigned long aftimer;
|
||||||
extern unsigned long eonticker;
|
extern unsigned long eonticker;
|
||||||
extern unsigned long eontickerhold;
|
extern unsigned long eontickerhold;
|
||||||
|
extern unsigned long pslongticker;
|
||||||
|
extern unsigned long pslongtickerhold;
|
||||||
extern unsigned long rtplusticker;
|
extern unsigned long rtplusticker;
|
||||||
extern unsigned long rtplustickerhold;
|
extern unsigned long rtplustickerhold;
|
||||||
extern unsigned long rtticker;
|
extern unsigned long rtticker;
|
||||||
@@ -126,6 +129,7 @@ extern WiFiClient RemoteClient;
|
|||||||
extern WiFiUDP Udp;
|
extern WiFiUDP Udp;
|
||||||
extern TFT_eSprite RadiotextSprite;
|
extern TFT_eSprite RadiotextSprite;
|
||||||
extern TFT_eSprite RDSSprite;
|
extern TFT_eSprite RDSSprite;
|
||||||
|
extern TFT_eSprite PSSprite;
|
||||||
|
|
||||||
void ShowAdvancedRDS();
|
void ShowAdvancedRDS();
|
||||||
void readRds();
|
void readRds();
|
||||||
|
|||||||
Reference in New Issue
Block a user