You've already forked TEF6686_ESP32
Changed PS behaviour
This commit is contained in:
@@ -251,7 +251,7 @@ void TEF6686::readRDS(bool showrdserrors)
|
|||||||
if (rdsReady) { // We have all data to decode... let's go...
|
if (rdsReady) { // We have all data to decode... let's go...
|
||||||
|
|
||||||
//PI decoder
|
//PI decoder
|
||||||
if (rds.region == 0 && (!correctpi || rds.dynamicpi)) {
|
if (rds.region != 1 && (!correctpi || rds.dynamicpi)) {
|
||||||
rds.picode[0] = (rds.rdsA >> 12) & 0xF;
|
rds.picode[0] = (rds.rdsA >> 12) & 0xF;
|
||||||
rds.picode[1] = (rds.rdsA >> 8) & 0xF;
|
rds.picode[1] = (rds.rdsA >> 8) & 0xF;
|
||||||
rds.picode[2] = (rds.rdsA >> 4) & 0xF;
|
rds.picode[2] = (rds.rdsA >> 4) & 0xF;
|
||||||
@@ -315,11 +315,15 @@ void TEF6686::readRDS(bool showrdserrors)
|
|||||||
offset = rds.rdsB & 0x03; // Let's get the character offset for PS
|
offset = rds.rdsB & 0x03; // Let's get the character offset for PS
|
||||||
|
|
||||||
if (ps_process == true && offset == 0) { // Activates every time character offset is at 0, so whole message is received
|
if (ps_process == true && offset == 0) { // Activates every time character offset is at 0, so whole message is received
|
||||||
for (byte i = 0; i < 9; i++) PStext[i] = L'\0'; // First erase buffer
|
ps_counter++;
|
||||||
RDScharConverter(ps_buffer, PStext, sizeof(PStext) / sizeof(wchar_t)); // Convert 8 bit ASCII to 16 bit ASCII
|
if (ps_counter > 2) {
|
||||||
String utf8String = convertToUTF8(PStext); // Convert RDS characterset to ASCII
|
for (byte i = 0; i < 9; i++) PStext[i] = L'\0'; // First erase buffer
|
||||||
rds.stationName = utf8String.substring(0, 8); // Make sure PS does not exceed 8 characters
|
RDScharConverter(ps_buffer, PStext, sizeof(PStext) / sizeof(wchar_t)); // Convert 8 bit ASCII to 16 bit ASCII
|
||||||
}
|
String utf8String = convertToUTF8(PStext); // Convert RDS characterset to ASCII
|
||||||
|
rds.stationName = utf8String.substring(0, 8); // Make sure PS does not exceed 8 characters
|
||||||
|
ps_counter = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
ps_buffer[(offset * 2) + 0] = rds.rdsD >> 8; // First character of segment
|
ps_buffer[(offset * 2) + 0] = rds.rdsD >> 8; // First character of segment
|
||||||
ps_buffer[(offset * 2) + 1] = rds.rdsD & 0xFF; // Second character of segment
|
ps_buffer[(offset * 2) + 1] = rds.rdsD & 0xFF; // Second character of segment
|
||||||
@@ -330,8 +334,11 @@ void TEF6686::readRDS(bool showrdserrors)
|
|||||||
RDScharConverter(ps_buffer, PStext, sizeof(PStext) / sizeof(wchar_t)); // Convert 8 bit ASCII to 16 bit ASCII
|
RDScharConverter(ps_buffer, PStext, sizeof(PStext) / sizeof(wchar_t)); // Convert 8 bit ASCII to 16 bit ASCII
|
||||||
String utf8String = convertToUTF8(PStext); // Convert RDS characterset to ASCII
|
String utf8String = convertToUTF8(PStext); // Convert RDS characterset to ASCII
|
||||||
rds.stationName = utf8String.substring(0, 8); // Make sure PS does not exceed 8 characters
|
rds.stationName = utf8String.substring(0, 8); // Make sure PS does not exceed 8 characters
|
||||||
if (ps_counter == 8) ps_process = true; // OK, we had 8 runs, now let's go the idle PS writing
|
if (ps_counter == 8) {
|
||||||
}
|
ps_process = true; // OK, we had 8 runs, now let's go the idle PS writing
|
||||||
|
ps_counter=0;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// PTY decoder
|
// PTY decoder
|
||||||
|
|||||||
Reference in New Issue
Block a user