You've already forked TEF6686_ESP32
Merge branch 'main' into New_Model_DP_666
This commit is contained in:
@@ -378,7 +378,7 @@ bool TEF6686::getStatusAM(int16_t &level, uint16_t &noise, uint16_t &cochannel,
|
||||
|
||||
void TEF6686::readRDS(byte showrdserrors) {
|
||||
uint8_t offset;
|
||||
if (rds.filter || ps_process) {
|
||||
if (rds.filter && ps_process) {
|
||||
devTEF_Radio_Get_RDS_Status(&rds.rdsStat, &rds.rdsA, &rds.rdsB, &rds.rdsC, &rds.rdsD, &rds.rdsErr);
|
||||
} else {
|
||||
if (millis() >= rdstimer + 87) {
|
||||
@@ -407,8 +407,8 @@ void TEF6686::readRDS(byte showrdserrors) {
|
||||
rdsCerrorThreshold = (((rds.rdsErr >> 10) & 0x03) > showrdserrors);
|
||||
rdsDerrorThreshold = (((rds.rdsErr >> 8) & 0x03) > showrdserrors);
|
||||
|
||||
if (bitRead(rds.rdsStat, 9)) { // We have all data to decode... let's go...
|
||||
rds.rdsAerror = (((rds.rdsErr >> 14) & 0x03) > 1);
|
||||
if (bitRead(rds.rdsStat, 9) && (rds.rdsA != previous_rdsA || rds.rdsB != previous_rdsB || rds.rdsC != previous_rdsC || rds.rdsD != previous_rdsD)) {
|
||||
rds.rdsAerror = (((rds.rdsErr >> 14) & 0x03) > 1); // We have all data to decode... let's go...
|
||||
rds.rdsBerror = (((rds.rdsErr >> 12) & 0x03) > 1);
|
||||
rds.rdsCerror = (((rds.rdsErr >> 10) & 0x03) > 1);
|
||||
rds.rdsDerror = (((rds.rdsErr >> 8) & 0x03) > 1);
|
||||
@@ -606,7 +606,7 @@ void TEF6686::readRDS(byte showrdserrors) {
|
||||
ps_buffer[(offset * 2) + 1] = rds.rdsD & 0xFF; // Second character of segment
|
||||
ps_buffer[8] = '\0'; // Endmarker
|
||||
|
||||
if (ps_process || !rds.fastps) {
|
||||
if (ps_process || rds.fastps == 0) {
|
||||
if (offset == 0) {
|
||||
packet0 = true;
|
||||
packet1 = false;
|
||||
@@ -618,12 +618,12 @@ void TEF6686::readRDS(byte showrdserrors) {
|
||||
if (offset == 3) packet3 = true;
|
||||
}
|
||||
|
||||
if (packet0 && packet1 && packet2 && packet3 && (ps_process || !rds.fastps)) { // Last chars are received
|
||||
if (strcmp(ps_buffer, ps_buffer2) == 0) { // When no difference between current and buffer, let's go...
|
||||
if (packet0 && packet1 && packet2 && packet3 && (ps_process || (rds.fastps == 0 && rds.fastps != 2))) { // Last chars are received
|
||||
if (strcmp(ps_buffer, ps_buffer2) == 0) { // When no difference between current and buffer, let's go...
|
||||
ps_process = true;
|
||||
RDScharConverter(ps_buffer2, PStext, sizeof(PStext) / sizeof(wchar_t), true); // Convert 8 bit ASCII to 16 bit ASCII
|
||||
String utf8String = convertToUTF8(PStext); // Convert RDS characterset to ASCII
|
||||
rds.stationName = extractUTF8Substring(utf8String, 0, 8, true); // Make sure PS does not exceed 8 characters
|
||||
RDScharConverter(ps_buffer2, PStext, sizeof(PStext) / sizeof(wchar_t), true); // Convert 8 bit ASCII to 16 bit ASCII
|
||||
String utf8String = convertToUTF8(PStext); // Convert RDS characterset to ASCII
|
||||
rds.stationName = extractUTF8Substring(utf8String, 0, 8, true); // Make sure PS does not exceed 8 characters
|
||||
for (byte x = 0; x < 8; x++) {
|
||||
ps_buffer[x] = '\0';
|
||||
ps_buffer2[x] = '\0';
|
||||
@@ -631,15 +631,15 @@ void TEF6686::readRDS(byte showrdserrors) {
|
||||
}
|
||||
}
|
||||
|
||||
if (!ps_process && rds.fastps) { // Let's get 2 runs of 8 PS characters fast and without refresh
|
||||
if ((!ps_process && rds.fastps > 0 && rds.fastps != 2) || rds.fastps == 2) { // Let's get 2 runs of 8 PS characters fast and without refresh
|
||||
if (offset == 0) packet0 = true;
|
||||
if (offset == 1) packet1 = true;
|
||||
if (offset == 2) packet2 = true;
|
||||
if (offset == 3) packet3 = true;
|
||||
RDScharConverter(ps_buffer, PStext, sizeof(PStext) / sizeof(wchar_t), true); // Convert 8 bit ASCII to 16 bit ASCII
|
||||
String utf8String = convertToUTF8(PStext); // Convert RDS characterset to ASCII
|
||||
RDScharConverter(ps_buffer, PStext, sizeof(PStext) / sizeof(wchar_t), true); // Convert 8 bit ASCII to 16 bit ASCII
|
||||
String utf8String = convertToUTF8(PStext); // Convert RDS characterset to ASCII
|
||||
rds.stationName = extractUTF8Substring(utf8String, 0, 8, true);
|
||||
if (packet0 && packet1 && packet2 && packet3) ps_process = true; // OK, we had one runs, now let's go the idle PS writing
|
||||
if (packet0 && packet1 && packet2 && packet3) ps_process = true; // OK, we had one runs, now let's go the idle PS writing
|
||||
}
|
||||
|
||||
if (offset == 0) rds.hasDynamicPTY = bitRead(rds.rdsB, 2) & 0x1F; // Dynamic PTY flag
|
||||
@@ -1372,6 +1372,7 @@ void TEF6686::readRDS(byte showrdserrors) {
|
||||
RDScharConverter(ptyn_buffer, PTYNtext, sizeof(PTYNtext) / sizeof(wchar_t), false); // Convert 8 bit ASCII to 16 bit ASCII
|
||||
String utf8String = convertToUTF8(PTYNtext); // Convert RDS characterset to ASCII
|
||||
rds.PTYN = extractUTF8Substring(utf8String, 0, 8, false); // Make sure text is not longer than 8 chars
|
||||
rds.hasPTYN = true;
|
||||
}
|
||||
}
|
||||
} break;
|
||||
@@ -1639,6 +1640,10 @@ void TEF6686::readRDS(byte showrdserrors) {
|
||||
}
|
||||
break;
|
||||
}
|
||||
previous_rdsA = rds.rdsA;
|
||||
previous_rdsB = rds.rdsB;
|
||||
previous_rdsC = rds.rdsC;
|
||||
previous_rdsD = rds.rdsD;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1761,6 +1766,7 @@ void TEF6686::clearRDS (bool fullsearchrds) {
|
||||
rds.hasCT = false;
|
||||
rds.hasTMC = false;
|
||||
rds.hasAID = false;
|
||||
rds.hasPTYN = false;
|
||||
rds.hasLongPS = false;
|
||||
rds.hasRDSplus = false;
|
||||
rds.hasDABAF = false;
|
||||
|
||||
@@ -582,6 +582,7 @@ typedef struct _rds_ {
|
||||
uint16_t aid[10];
|
||||
uint32_t dabaffreq;
|
||||
byte aid_counter;
|
||||
byte fastps;
|
||||
int8_t offset;
|
||||
unsigned int ECC;
|
||||
unsigned int LIC;
|
||||
@@ -611,6 +612,7 @@ typedef struct _rds_ {
|
||||
bool hasTMC;
|
||||
bool hasAF;
|
||||
bool hasCT;
|
||||
bool hasPTYN;
|
||||
bool rtAB;
|
||||
bool rtAB32;
|
||||
bool hasRDSplus;
|
||||
@@ -618,7 +620,6 @@ typedef struct _rds_ {
|
||||
bool rdsreset;
|
||||
bool pierrors;
|
||||
bool sortaf;
|
||||
bool fastps;
|
||||
bool rtbuffer = true;
|
||||
bool afreg;
|
||||
RdsPiBuffer piBuffer;
|
||||
@@ -707,7 +708,7 @@ class TEF6686 {
|
||||
void setUnMute();
|
||||
void setVolume(int8_t volume);
|
||||
void tone(uint16_t time, int16_t amplitude, uint16_t frequency);
|
||||
String trimTrailingSpaces(String str);
|
||||
String trimTrailingSpaces(String str);
|
||||
uint8_t af_counter;
|
||||
uint8_t eon_counter;
|
||||
uint8_t logbook_counter;
|
||||
@@ -759,11 +760,9 @@ class TEF6686 {
|
||||
bool initab;
|
||||
bool afinit;
|
||||
bool errorfreepi;
|
||||
bool rdsAerrorThreshold;
|
||||
bool rdsBerrorThreshold;
|
||||
bool rdsCerrorThreshold;
|
||||
bool rdsDerrorThreshold;
|
||||
bool rdsAerrorThreshold, rdsBerrorThreshold, rdsCerrorThreshold, rdsDerrorThreshold;
|
||||
bool packet0, packet1, packet2, packet3, packet0long, packet1long, packet2long, packet3long;
|
||||
uint16_t previous_rdsA, previous_rdsB, previous_rdsC, previous_rdsD;
|
||||
bool afmethodBprobe;
|
||||
bool eRTcoding;
|
||||
uint16_t rdsCold;
|
||||
|
||||
34
src/gui.cpp
34
src/gui.cpp
@@ -1327,7 +1327,12 @@ void ShowOneLine(byte position, byte item, bool selected) {
|
||||
FullLineSprite.drawString(removeNewline(myLanguage[language][203]), 6, 3);
|
||||
FullLineSprite.setTextDatum(TR_DATUM);
|
||||
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
|
||||
FullLineSprite.drawString((radio.rds.fastps ? myLanguage[language][42] : myLanguage[language][30]), 298, 3);
|
||||
|
||||
switch (radio.rds.fastps) {
|
||||
case 0: FullLineSprite.drawString(myLanguage[language][30], 298, 3); break;
|
||||
case 1: FullLineSprite.drawString(myLanguage[language][260], 298, 3); break;
|
||||
case 2: FullLineSprite.drawString(myLanguage[language][261], 298, 3); break;
|
||||
}
|
||||
break;
|
||||
|
||||
case FMSETTINGS:
|
||||
@@ -2212,9 +2217,15 @@ void MenuUp() {
|
||||
break;
|
||||
|
||||
case ITEM9:
|
||||
radio.rds.fastps = !radio.rds.fastps;
|
||||
radio.rds.fastps++;
|
||||
if (radio.rds.fastps > 2) radio.rds.fastps = 0;
|
||||
|
||||
switch (radio.rds.fastps) {
|
||||
case 0: OneBigLineSprite.drawString(myLanguage[language][30], 135, 0); break;
|
||||
case 1: OneBigLineSprite.drawString(myLanguage[language][260], 135, 0); break;
|
||||
case 2: OneBigLineSprite.drawString(myLanguage[language][261], 135, 0); break;
|
||||
}
|
||||
|
||||
OneBigLineSprite.drawString((radio.rds.fastps ? myLanguage[language][42] : myLanguage[language][30]), 135, 0);
|
||||
OneBigLineSprite.pushSprite(24, 118);
|
||||
break;
|
||||
}
|
||||
@@ -3061,9 +3072,15 @@ void MenuDown() {
|
||||
break;
|
||||
|
||||
case ITEM9:
|
||||
radio.rds.fastps = !radio.rds.fastps;
|
||||
radio.rds.fastps--;
|
||||
if (radio.rds.fastps > 2) radio.rds.fastps = 2;
|
||||
|
||||
switch (radio.rds.fastps) {
|
||||
case 0: OneBigLineSprite.drawString(myLanguage[language][30], 135, 0); break;
|
||||
case 1: OneBigLineSprite.drawString(myLanguage[language][260], 135, 0); break;
|
||||
case 2: OneBigLineSprite.drawString(myLanguage[language][261], 135, 0); break;
|
||||
}
|
||||
|
||||
OneBigLineSprite.drawString((radio.rds.fastps ? myLanguage[language][42] : myLanguage[language][30]), 135, 0);
|
||||
OneBigLineSprite.pushSprite(24, 118);
|
||||
break;
|
||||
}
|
||||
@@ -3921,7 +3938,12 @@ void DoMenu() {
|
||||
case ITEM9:
|
||||
Infoboxprint(myLanguage[language][203]);
|
||||
|
||||
OneBigLineSprite.drawString((radio.rds.fastps ? myLanguage[language][42] : myLanguage[language][30]), 135, 0);
|
||||
switch (radio.rds.fastps) {
|
||||
case 0: OneBigLineSprite.drawString(myLanguage[language][30], 135, 0); break;
|
||||
case 1: OneBigLineSprite.drawString(myLanguage[language][260], 135, 0); break;
|
||||
case 2: OneBigLineSprite.drawString(myLanguage[language][261], 135, 0); break;
|
||||
}
|
||||
|
||||
OneBigLineSprite.pushSprite(24, 118);
|
||||
break;
|
||||
}
|
||||
|
||||
1188
src/language.h
1188
src/language.h
File diff suppressed because it is too large
Load Diff
@@ -48,11 +48,11 @@ void ShowAdvancedRDS() {
|
||||
|
||||
if (ptynold != radio.rds.PTYN || rdsreset) {
|
||||
if (!screenmute) {
|
||||
if (ptynold != "PTYN N/A") {
|
||||
if (ptynold != "PTYN N/A" || radio.rds.hasPTYN) {
|
||||
tftPrint(-1, "PTYN N/A", 216, 109, BackgroundColor, BackgroundColor, 16);
|
||||
tftPrint(-1, ptynold, 216, 109, BackgroundColor, BackgroundColor, 16);
|
||||
}
|
||||
if (radio.rds.PTYN.length() == 0) radio.rds.PTYN = "PTYN N/A";
|
||||
if (!radio.rds.hasPTYN) radio.rds.PTYN = "PTYN N/A";
|
||||
tftPrint(-1, String(radio.rds.PTYN), 216, 109, RDSColor, RDSColorSmooth, 16);
|
||||
ptynold = radio.rds.PTYN;
|
||||
}
|
||||
@@ -723,7 +723,7 @@ void showPS() {
|
||||
} else {
|
||||
xPos5 = 0;
|
||||
PSSprite.fillSprite(BackgroundColor);
|
||||
if (!RDSstatus) PSSprite.setTextColor(RDSDropoutColor, RDSDropoutColorSmooth, false); else PSSprite.setTextColor(RDSColor, RDSColorSmooth, false);
|
||||
if (!RDSstatus || band > BAND_GAP) PSSprite.setTextColor(RDSDropoutColor, RDSDropoutColorSmooth, false); else PSSprite.setTextColor(RDSColor, RDSColorSmooth, false);
|
||||
PSSprite.drawString(radio.rds.stationName, 0, 0);
|
||||
}
|
||||
if (advancedRDS) PSSprite.pushSprite(36, 74); else PSSprite.pushSprite(36, 187);
|
||||
|
||||
Reference in New Issue
Block a user