Work on RT+
This commit is contained in:
+16
-7
@@ -734,14 +734,23 @@ void TEF6686::readRDS(bool showrdserrors)
|
||||
case RDS_GROUP_13A: {
|
||||
// RT+ decoding
|
||||
if (rds.correct && rtplusblock == rdsblock && rds.hasRDSplus) { // Are we in the right RT+ block and is all ok to go?
|
||||
uint16_t start_marker_1 = (rds.rdsC >> 0x07);
|
||||
start_marker_1 = (start_marker_1 & 0x3F);
|
||||
uint16_t length_marker_1 = (rds.rdsC >> 0x01);
|
||||
length_marker_1 = (length_marker_1 & 0x3F);
|
||||
uint16_t start_marker_2 = (rds.rdsD >> 0x05);
|
||||
start_marker_2 = (start_marker_2 & 0x3F);
|
||||
uint16_t content_type_1 = ((rds.rdsB & 0x07) << 3) + (rds.rdsC >> 13);
|
||||
uint16_t content_type_2 = ((rds.rdsC & 0x01) << 5) + (rds.rdsD >> 11);
|
||||
uint16_t start_marker_1 = (rds.rdsC >> 7) & 0x3F;
|
||||
uint16_t length_marker_1 = (rds.rdsC >> 1) & 0x3F;
|
||||
uint16_t start_marker_2 = (rds.rdsD >> 5) & 0x3F;
|
||||
uint16_t length_marker_2 = (rds.rdsD & 0x1F);
|
||||
togglebit = bitRead(lowByte(rds.rdsB), 4);
|
||||
runningbit = bitRead(lowByte(rds.rdsB), 3);
|
||||
|
||||
if (togglebit) {
|
||||
for (int i = 0; i < 45; i++) {
|
||||
RDSplus1[i] = 0;
|
||||
RDSplus2[i] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (runningbit && rds.rtAB == rtABold) {
|
||||
for (int i = 0; i <= length_marker_1; i++)RDSplus1[i] = rt_buffer2[i + start_marker_1];
|
||||
RDSplus1[length_marker_1 + 1] = 0;
|
||||
|
||||
@@ -758,7 +767,7 @@ void TEF6686::readRDS(bool showrdserrors)
|
||||
RDScharConverter(RDSplus2, RTtext2, sizeof(RTtext2) / sizeof(wchar_t), false); // Convert 8 bit ASCII to 16 bit ASCII
|
||||
rds.RTContent2 = convertToUTF8(RTtext2); // Convert RDS characterset to ASCII
|
||||
rds.RTContent2 = extractUTF8Substring(rds.RTContent2, 0, 44, false); // Make sure RT does not exceed 32 characters
|
||||
|
||||
}
|
||||
if (rds.correct && rdsblock == 16 && (rds.rdsB & (1 << 4))) rds.hasTMC = true; // TMC flag
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -274,4 +274,6 @@ class TEF6686 {
|
||||
char RDSplus1[45];
|
||||
char RDSplus2[45];
|
||||
uint16_t currentfreq;
|
||||
bool togglebit;
|
||||
bool runningbit;
|
||||
};
|
||||
+929
-17
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user