Added Advanced RDS view
Hold band button in FM mode to switch to advanced RDS view
This commit is contained in:
+705
-364
File diff suppressed because it is too large
Load Diff
+78
-120
@@ -252,7 +252,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 != 1 && (rds.correct || rds.pierrors)) {
|
if (rds.region != 1 && (!rds.rdsAerror || rds.pierrors)) {
|
||||||
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;
|
||||||
@@ -265,7 +265,7 @@ void TEF6686::readRDS(bool showrdserrors)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!rds.correct) rds.picode[4] = '?'; else rds.picode[4] = ' '; // Not sure, add a ?
|
if (rds.rdsAerror) rds.picode[4] = '?'; else rds.picode[4] = ' '; // Not sure, add a ?
|
||||||
rds.picode[5] = '\0';
|
rds.picode[5] = '\0';
|
||||||
if (strcmp(rds.picode, "0000?") == 0) {
|
if (strcmp(rds.picode, "0000?") == 0) {
|
||||||
memset(rds.picode, 0, sizeof(rds.picode));
|
memset(rds.picode, 0, sizeof(rds.picode));
|
||||||
@@ -305,10 +305,10 @@ void TEF6686::readRDS(bool showrdserrors)
|
|||||||
// TP Indicator
|
// TP Indicator
|
||||||
rds.hasTP = (bitRead(rds.rdsB, 10));
|
rds.hasTP = (bitRead(rds.rdsB, 10));
|
||||||
|
|
||||||
|
if (rds.correct) rdsblock = rds.rdsB >> 11;
|
||||||
switch (rds.rdsB >> 11) {
|
switch (rds.rdsB >> 11) {
|
||||||
case RDS_GROUP_0A:
|
case RDS_GROUP_0A:
|
||||||
{
|
{
|
||||||
// Serial.println(rds.rdsB,BIN);
|
|
||||||
//PS decoder
|
//PS decoder
|
||||||
if (showrdserrors || rds.correct) {
|
if (showrdserrors || rds.correct) {
|
||||||
offset = rds.rdsB & 0x03; // Let's get the character offset for PS
|
offset = rds.rdsB & 0x03; // Let's get the character offset for PS
|
||||||
@@ -351,15 +351,15 @@ void TEF6686::readRDS(bool showrdserrors)
|
|||||||
|
|
||||||
if (rds.correct) {
|
if (rds.correct) {
|
||||||
//TA decoder
|
//TA decoder
|
||||||
rds.hasTA = (bitRead(rds.rdsB, 4)) && (bitRead(rds.rdsB, 10)) & 0x1F; // Read TA flag
|
rds.hasTA = (bitRead(rds.rdsB, 4)) && (bitRead(rds.rdsB, 10)) & 0x1F; // Read TA flag
|
||||||
|
|
||||||
//MS decoder
|
//MS decoder
|
||||||
if (((bitRead(rds.rdsB, 3)) & 0x1F) == 1) rds.MS = 1; else rds.MS = 2; // Read MS flag
|
if (((bitRead(rds.rdsB, 3)) & 0x1F) == 1) rds.MS = 1; else rds.MS = 2; // Read MS flag
|
||||||
|
|
||||||
//AF decoder
|
//AF decoder
|
||||||
if ((rds.rdsB >> 11) == 0 && af_counter < 50) {
|
if ((rds.rdsB >> 11) == 0 && af_counter < 50) {
|
||||||
uint16_t buffer0;// = (rds.rdsC >> 8);
|
uint16_t buffer0;
|
||||||
uint16_t buffer1;// = (rds.rdsC & 0xFF);
|
uint16_t buffer1;
|
||||||
|
|
||||||
if ((rds.rdsC >> 8) > 0 && (rds.rdsC >> 8) < 205) buffer0 = (rds.rdsC >> 8) * 10 + 8750; else buffer0 = 0;
|
if ((rds.rdsC >> 8) > 0 && (rds.rdsC >> 8) < 205) buffer0 = (rds.rdsC >> 8) * 10 + 8750; else buffer0 = 0;
|
||||||
if ((rds.rdsC & 0xFF) > 0 && (rds.rdsC & 0xFF) < 205) buffer1 = (rds.rdsC & 0xFF) * 10 + 8750; else buffer1 = 0;
|
if ((rds.rdsC & 0xFF) > 0 && (rds.rdsC & 0xFF) < 205) buffer1 = (rds.rdsC & 0xFF) * 10 + 8750; else buffer1 = 0;
|
||||||
@@ -431,8 +431,7 @@ void TEF6686::readRDS(bool showrdserrors)
|
|||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
|
|
||||||
case RDS_GROUP_2A:
|
case RDS_GROUP_2A: {
|
||||||
case RDS_GROUP_2B: {
|
|
||||||
if (showrdserrors || rds.correct) {
|
if (showrdserrors || rds.correct) {
|
||||||
// RT decoder
|
// RT decoder
|
||||||
rds.rtAB = (bitRead(rds.rdsB, 4)); // Get AB flag
|
rds.rtAB = (bitRead(rds.rdsB, 4)); // Get AB flag
|
||||||
@@ -452,12 +451,20 @@ void TEF6686::readRDS(bool showrdserrors)
|
|||||||
rt_buffer[offset + 3] = rds.rdsD & 0xff; // Fourth character of segment
|
rt_buffer[offset + 3] = rds.rdsD & 0xff; // Fourth character of segment
|
||||||
|
|
||||||
wchar_t RTtext[65] = L""; // Create 16 bit char buffer for Extended ASCII
|
wchar_t RTtext[65] = L""; // Create 16 bit char buffer for Extended ASCII
|
||||||
RDScharConverter(rt_buffer, RTtext, sizeof(RTtext) / sizeof(wchar_t), true); // Convert 8 bit ASCII to 16 bit ASCII
|
RDScharConverter(rt_buffer, RTtext, sizeof(RTtext) / sizeof(wchar_t), true); // Convert 8 bit ASCII to 16 bit ASCII
|
||||||
rds.stationText = convertToUTF8(RTtext); // Convert RDS characterset to ASCII
|
rds.stationText = convertToUTF8(RTtext); // Convert RDS characterset to ASCII
|
||||||
rds.stationText = extractUTF8Substring(rds.stationText, 0, 64, true); // Make sure RT does not exceed 64 characters
|
rds.stationText = extractUTF8Substring(rds.stationText, 0, 64, true); // Make sure RT does not exceed 64 characters
|
||||||
rds.stationText += " "; // Add extra spaces
|
rds.stationText += " "; // Add extra spaces
|
||||||
|
|
||||||
for (int i = 0; i < 64; i++) rt_buffer2[i] = rt_buffer[i];
|
for (int i = 0; i < 64; i++) rt_buffer2[i] = rt_buffer[i];
|
||||||
|
}
|
||||||
|
} break;
|
||||||
|
|
||||||
|
case RDS_GROUP_3A: {
|
||||||
|
// RT+ init
|
||||||
|
if (rds.rdsD == 0x4BD7) { // Check for RT+ application
|
||||||
|
rds.hasRDSplus = true; // Set flag
|
||||||
|
rtplusblock = ((rds.rdsB & 0x1F) >> 1) * 2; // Get RT+ Block
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
|
|
||||||
@@ -508,18 +515,16 @@ void TEF6686::readRDS(bool showrdserrors)
|
|||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
|
|
||||||
case RDS_GROUP_10B:
|
case RDS_GROUP_5A:
|
||||||
|
case RDS_GROUP_6A:
|
||||||
|
case RDS_GROUP_7A:
|
||||||
|
case RDS_GROUP_8A:
|
||||||
|
case RDS_GROUP_9A:
|
||||||
case RDS_GROUP_11A:
|
case RDS_GROUP_11A:
|
||||||
case RDS_GROUP_11B:
|
|
||||||
case RDS_GROUP_12A:
|
case RDS_GROUP_12A:
|
||||||
case RDS_GROUP_12B: {
|
case RDS_GROUP_13A: {
|
||||||
if (rds.correct) {
|
// RT+ decoding
|
||||||
uint16_t content_byte_1 = (rds.rdsB & 0x07);
|
if (rds.correct && rtplusblock == rdsblock && rds.hasRDSplus) { // Are we in the right RT+ block and is all ok to go?
|
||||||
content_byte_1 = (content_byte_1 << 0x03);
|
|
||||||
content_byte_1 += (rds.rdsC >> 0x0D);
|
|
||||||
uint16_t content_byte_2 = (rds.rdsC & 0x01);
|
|
||||||
content_byte_2 = (content_byte_2 << 0x05);
|
|
||||||
content_byte_2 += (rds.rdsD >> 0x0B);
|
|
||||||
uint16_t start_marker_1 = (rds.rdsC >> 0x07);
|
uint16_t start_marker_1 = (rds.rdsC >> 0x07);
|
||||||
start_marker_1 = (start_marker_1 & 0x3F);
|
start_marker_1 = (start_marker_1 & 0x3F);
|
||||||
uint16_t length_marker_1 = (rds.rdsC >> 0x01);
|
uint16_t length_marker_1 = (rds.rdsC >> 0x01);
|
||||||
@@ -527,125 +532,84 @@ void TEF6686::readRDS(bool showrdserrors)
|
|||||||
uint16_t start_marker_2 = (rds.rdsD >> 0x05);
|
uint16_t start_marker_2 = (rds.rdsD >> 0x05);
|
||||||
start_marker_2 = (start_marker_2 & 0x3F);
|
start_marker_2 = (start_marker_2 & 0x3F);
|
||||||
uint16_t length_marker_2 = (rds.rdsD & 0x1F);
|
uint16_t length_marker_2 = (rds.rdsD & 0x1F);
|
||||||
rds.hasRDSplus = true;
|
|
||||||
|
|
||||||
if (content_byte_1 == 0x04) { // Artist
|
for (int i = 0; i <= length_marker_1; i++)RDSplus1[i] = rt_buffer2[i + start_marker_1];
|
||||||
rds.hasArtist = true;
|
RDSplus1[length_marker_1 + 1] = 0;
|
||||||
for (int i = 0; i <= length_marker_1; i++)musicArtist[i] = rt_buffer2[i + start_marker_1];
|
|
||||||
musicArtist[length_marker_1 + 1] = 0;
|
|
||||||
} else if (content_byte_1 == 0x01) { // Title
|
|
||||||
rds.hasTitle = true;
|
|
||||||
for (int i = 0; i <= length_marker_1; i++)musicTitle[i] = rt_buffer2[i + start_marker_1];
|
|
||||||
musicTitle[length_marker_1 + 1] = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (content_byte_2 == 0x04) { // Artist
|
for (int i = 0; i <= length_marker_2; i++)RDSplus2[i] = rt_buffer2[i + start_marker_2];
|
||||||
rds.hasArtist = true;
|
RDSplus2[length_marker_2 + 1] = 0;
|
||||||
for (int i = 0; i <= length_marker_2; i++)musicArtist[i] = rt_buffer2[i + start_marker_2];
|
|
||||||
musicArtist[length_marker_2 + 1] = 0;
|
|
||||||
} else if (content_byte_2 == 0x01) { // Title
|
|
||||||
rds.hasTitle = true;
|
|
||||||
for (int i = 0; i <= length_marker_2; i++)musicTitle[i] = rt_buffer2[i + start_marker_2];
|
|
||||||
musicTitle[length_marker_2 + 1] = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (content_byte_1 == 0x24) { // Host
|
|
||||||
rds.hasHost = true;
|
|
||||||
for (int i = 0; i <= length_marker_1; i++)stationHost[i] = rt_buffer2[i + start_marker_1];
|
|
||||||
stationHost[length_marker_1 + 1] = 0;
|
|
||||||
} else if (content_byte_2 == 0x24) { // Host
|
|
||||||
rds.hasHost = true;
|
|
||||||
for (int i = 0; i <= length_marker_2; i++)stationHost[i] = rt_buffer2[i + start_marker_2];
|
|
||||||
stationHost[length_marker_2 + 1] = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (content_byte_1 == 0x21) { // Event
|
|
||||||
rds.hasEvent = true;
|
|
||||||
for (int i = 0; i <= length_marker_1; i++)stationEvent[i] = rt_buffer2[i + start_marker_1];
|
|
||||||
stationEvent[length_marker_1 + 1] = 0;
|
|
||||||
} else if (content_byte_2 == 0x21) { // Event
|
|
||||||
rds.hasEvent = true;
|
|
||||||
for (int i = 0; i <= length_marker_2; i++)stationEvent[i] = rt_buffer2[i + start_marker_2];
|
|
||||||
stationEvent[length_marker_2 + 1] = 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (rds.hasArtist) {
|
wchar_t RTtext1[45] = L""; // Create 16 bit char buffer for Extended ASCII
|
||||||
wchar_t RTtext[33] = L""; // Create 16 bit char buffer for Extended ASCII
|
RDScharConverter(RDSplus1, RTtext1, sizeof(RTtext1) / sizeof(wchar_t), false); // Convert 8 bit ASCII to 16 bit ASCII
|
||||||
RDScharConverter(musicArtist, RTtext, sizeof(RTtext) / sizeof(wchar_t), false); // Convert 8 bit ASCII to 16 bit ASCII
|
rds.RTContent1 = convertToUTF8(RTtext1); // Convert RDS characterset to ASCII
|
||||||
rds.RTArtist = convertToUTF8(RTtext); // Convert RDS characterset to ASCII
|
rds.RTContent1 = extractUTF8Substring(rds.RTContent1, 0, 44, false); // Make sure RT does not exceed 32 characters
|
||||||
rds.RTArtist = extractUTF8Substring(rds.RTArtist, 0, 33, false); // Make sure RT does not exceed 32 characters
|
|
||||||
}
|
|
||||||
|
|
||||||
if (rds.hasTitle) {
|
wchar_t RTtext2[45] = L""; // Create 16 bit char buffer for Extended ASCII
|
||||||
wchar_t RTtext[45] = L""; // Create 16 bit char buffer for Extended ASCII
|
RDScharConverter(RDSplus2, RTtext2, sizeof(RTtext2) / sizeof(wchar_t), false); // Convert 8 bit ASCII to 16 bit ASCII
|
||||||
RDScharConverter(musicTitle, RTtext, sizeof(RTtext) / sizeof(wchar_t), false); // Convert 8 bit ASCII to 16 bit ASCII
|
rds.RTContent2 = convertToUTF8(RTtext2); // Convert RDS characterset to ASCII
|
||||||
rds.RTTitle = convertToUTF8(RTtext); // Convert RDS characterset to ASCII
|
rds.RTContent2 = extractUTF8Substring(rds.RTContent2, 0, 44, false); // Make sure RT does not exceed 32 characters
|
||||||
rds.RTTitle = extractUTF8Substring(rds.RTTitle, 0, 44, false); // Make sure RT does not exceed 32 characters
|
|
||||||
}
|
|
||||||
|
|
||||||
if (rds.hasEvent) {
|
|
||||||
wchar_t RTtext[45] = L""; // Create 16 bit char buffer for Extended ASCII
|
|
||||||
RDScharConverter(stationEvent, RTtext, sizeof(RTtext) / sizeof(wchar_t), false); // Convert 8 bit ASCII to 16 bit ASCII
|
|
||||||
rds.RTEvent = convertToUTF8(RTtext); // Convert RDS characterset to ASCII
|
|
||||||
rds.RTEvent = extractUTF8Substring(rds.RTEvent, 0, 44, false); // Make sure RT does not exceed 32 characters
|
|
||||||
}
|
|
||||||
|
|
||||||
if (rds.hasHost) {
|
|
||||||
wchar_t RTtext[45] = L""; // Create 16 bit char buffer for Extended ASCII
|
|
||||||
RDScharConverter(stationHost, RTtext, sizeof(RTtext) / sizeof(wchar_t), false); // Convert 8 bit ASCII to 16 bit ASCII
|
|
||||||
rds.RTHost = convertToUTF8(RTtext); // Convert RDS characterset to ASCII
|
|
||||||
rds.RTHost = extractUTF8Substring(rds.RTHost, 0, 44, false); // Make sure RT does not exceed 32 characters
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case RDS_GROUP_14A: {
|
case RDS_GROUP_14A: {
|
||||||
// EON
|
// EON
|
||||||
if (rds.correct) {
|
if (rds.correct) {
|
||||||
rds.hasEON = true; // Group is there, so we have EON
|
rds.hasEON = true; // Group is there, so we have EON
|
||||||
|
|
||||||
bool isValuePresent = false;
|
bool isValuePresent = false;
|
||||||
for (int i = 0; i < 20; i++) {
|
for (int i = 0; i < 20; i++) {
|
||||||
if (eon[i].pi == rds.rdsD) { // Check if EON is already in array
|
if (eon[i].pi == rds.rdsD) { // Check if EON is already in array
|
||||||
isValuePresent = true;
|
isValuePresent = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!isValuePresent) {
|
if (!isValuePresent) {
|
||||||
eon[eon_counter].pi = rds.rdsD; // Store PI on next array
|
eon[eon_counter].picode[0] = (rds.rdsD >> 12) & 0xF;
|
||||||
|
eon[eon_counter].picode[1] = (rds.rdsD >> 8) & 0xF;
|
||||||
|
eon[eon_counter].picode[2] = (rds.rdsD >> 4) & 0xF;
|
||||||
|
eon[eon_counter].picode[3] = rds.rdsD & 0xF;
|
||||||
|
for (int i = 0; i < 4; i++) {
|
||||||
|
if (eon[eon_counter].picode[i] < 10) {
|
||||||
|
eon[eon_counter].picode[i] += '0'; // Add ASCII offset for decimal digits
|
||||||
|
} else {
|
||||||
|
eon[eon_counter].picode[i] += 'A' - 10; // Add ASCII offset for hexadecimal letters A-F
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
eon[eon_counter].pi = rds.rdsD; // Store PI on next array
|
||||||
if (eon_counter < 20) eon_counter++;
|
if (eon_counter < 20) eon_counter++;
|
||||||
}
|
}
|
||||||
|
|
||||||
offset = rds.rdsB & 0x0F; // Read offset
|
offset = rds.rdsB & 0x0F; // Read offset
|
||||||
|
|
||||||
if (offset < 4) {
|
if (offset < 9) {
|
||||||
byte position;
|
byte position;
|
||||||
for (position = 0; position < 20; position++) {
|
for (position = 0; position < 20; position++) {
|
||||||
if (eon[position].pi == rds.rdsD) { // Find position in array
|
if (eon[position].pi == rds.rdsD) { // Find position in array
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
eon_buffer2[position][(offset * 2) + 0] = eon_buffer[position][(offset * 2) + 0]; // Make a copy of the PS buffer
|
eon_buffer2[position][(offset * 2) + 0] = eon_buffer[position][(offset * 2) + 0]; // Make a copy of the PS buffer
|
||||||
eon_buffer2[position][(offset * 2) + 1] = eon_buffer[position][(offset * 2) + 1];
|
eon_buffer2[position][(offset * 2) + 1] = eon_buffer[position][(offset * 2) + 1];
|
||||||
|
|
||||||
eon_buffer[position][(offset * 2) + 0] = rds.rdsC >> 8; // First character of segment
|
eon_buffer[position][(offset * 2) + 0] = rds.rdsC >> 8; // First character of segment
|
||||||
eon_buffer[position][(offset * 2) + 1] = rds.rdsC & 0xFF; // Second character of segment
|
eon_buffer[position][(offset * 2) + 1] = rds.rdsC & 0xFF; // Second character of segment
|
||||||
eon_buffer[position][(offset * 2) + 2] = '\0'; // Endmarker of segment
|
eon_buffer[position][(offset * 2) + 2] = '\0'; // Endmarker of segment
|
||||||
|
|
||||||
if (offset > 2) { // Last chars are received
|
if (offset > 2) { // Last chars are received
|
||||||
if (eon_buffer[position] != eon_buffer2[position]) { // When difference between old and new, let's go...
|
if (eon_buffer[position] != eon_buffer2[position]) { // When difference between old and new, let's go...
|
||||||
RDScharConverter(eon_buffer[position], EONPStext, sizeof(EONPStext) / sizeof(wchar_t), true); // Convert 8 bit ASCII to 16 bit ASCII
|
RDScharConverter(eon_buffer[position], EONPStext[position], sizeof(EONPStext[position]) / sizeof(wchar_t), true); // Convert 8 bit ASCII to 16 bit ASCII
|
||||||
String utf8String = convertToUTF8(EONPStext); // Convert RDS characterset to ASCII
|
String utf8String = convertToUTF8(EONPStext[position]); // Convert RDS characterset to ASCII
|
||||||
eon[position].ps = extractUTF8Substring(utf8String, 0, 8, true); // Make sure PS does not exceed 8 characters
|
eon[position].ps = extractUTF8Substring(utf8String, 0, 8, true); // Make sure PS does not exceed 8 characters
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (offset > 4 && offset < 9) {
|
if (offset > 4) {
|
||||||
if (((rds.rdsC >> 8) * 10 + 8750) == currentfreq) { // Check if mapped frequency belongs to current frequency
|
if (((rds.rdsC >> 8) * 10 + 8750) == currentfreq) { // Check if mapped frequency belongs to current frequency
|
||||||
eon[position].mappedfreq = ((rds.rdsC & 0xFF) * 10 + 8750); // Add mapped frequency to array
|
eon[position].mappedfreq = ((rds.rdsC & 0xFF) * 10 + 8750); // Add mapped frequency to array
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -666,10 +630,9 @@ void TEF6686::clearRDS (bool fullsearchrds)
|
|||||||
uint8_t i;
|
uint8_t i;
|
||||||
rds.stationName = "";
|
rds.stationName = "";
|
||||||
rds.stationText = "";
|
rds.stationText = "";
|
||||||
rds.RTArtist = "";
|
rds.RTContent1 = "";
|
||||||
rds.RTTitle = "";
|
rds.RTContent2 = "";
|
||||||
rds.RTHost = "";
|
|
||||||
rds.RTEvent = "";
|
|
||||||
for (i = 0; i < 9; i++) {
|
for (i = 0; i < 9; i++) {
|
||||||
ps_buffer[i] = 0;
|
ps_buffer[i] = 0;
|
||||||
PStext[i] = L'\0';
|
PStext[i] = L'\0';
|
||||||
@@ -685,22 +648,21 @@ void TEF6686::clearRDS (bool fullsearchrds)
|
|||||||
af[i].filler = false;
|
af[i].filler = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < 5; i++) {
|
for (i = 0; i < 20; i++) {
|
||||||
eon[i].pi = 0;
|
eon[i].pi = 0;
|
||||||
for (int y = 0; y < 9; y++) {
|
for (int y = 0; y < 9; y++) {
|
||||||
eon_buffer[i][y] = 0;
|
eon_buffer[i][y] = 0;
|
||||||
eon_buffer2[i][y] = 0;
|
eon_buffer2[i][y] = 0;
|
||||||
|
EONPStext[i][y] = L'\0';
|
||||||
}
|
}
|
||||||
eon[i].ps = "";
|
eon[i].ps = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < 45; i++) {
|
for (i = 0; i < 45; i++) {
|
||||||
musicArtist[i] = 0;
|
RDSplus1[i] = 0;
|
||||||
musicTitle[i] = 0;
|
RDSplus2[i] = 0;
|
||||||
stationEvent[i] = 0;
|
|
||||||
stationHost[i] = 0;
|
|
||||||
}
|
}
|
||||||
|
rdsblock = 0;
|
||||||
rds.ECC = 0;
|
rds.ECC = 0;
|
||||||
rds.LIC = 0;
|
rds.LIC = 0;
|
||||||
rds.pinHour = 0;
|
rds.pinHour = 0;
|
||||||
@@ -720,10 +682,6 @@ void TEF6686::clearRDS (bool fullsearchrds)
|
|||||||
rt_process = false;
|
rt_process = false;
|
||||||
ps_process = false;
|
ps_process = false;
|
||||||
rds.rdsreset = true;
|
rds.rdsreset = true;
|
||||||
rds.hasTitle = false;
|
|
||||||
rds.hasArtist = false;
|
|
||||||
rds.hasEvent = false;
|
|
||||||
rds.hasHost = false;
|
|
||||||
rds.hasArtificialhead = false;
|
rds.hasArtificialhead = false;
|
||||||
rds.hasCompressed = false;
|
rds.hasCompressed = false;
|
||||||
rds.hasDynamicPTY = false;
|
rds.hasDynamicPTY = false;
|
||||||
|
|||||||
+8
-14
@@ -97,10 +97,8 @@ typedef struct _rds_ {
|
|||||||
byte MS;
|
byte MS;
|
||||||
String stationName;
|
String stationName;
|
||||||
String stationText;
|
String stationText;
|
||||||
String RTArtist;
|
String RTContent1;
|
||||||
String RTTitle;
|
String RTContent2;
|
||||||
String RTHost;
|
|
||||||
String RTEvent;
|
|
||||||
String PTYN;
|
String PTYN;
|
||||||
char stationType[18];
|
char stationType[18];
|
||||||
char picode[6];
|
char picode[6];
|
||||||
@@ -131,10 +129,6 @@ typedef struct _rds_ {
|
|||||||
bool hasCT;
|
bool hasCT;
|
||||||
bool rtAB;
|
bool rtAB;
|
||||||
bool hasRDSplus;
|
bool hasRDSplus;
|
||||||
bool hasTitle;
|
|
||||||
bool hasArtist;
|
|
||||||
bool hasHost;
|
|
||||||
bool hasEvent;
|
|
||||||
bool correct;
|
bool correct;
|
||||||
bool filter;
|
bool filter;
|
||||||
bool underscore;
|
bool underscore;
|
||||||
@@ -150,6 +144,7 @@ typedef struct _af_ {
|
|||||||
typedef struct _eon_ {
|
typedef struct _eon_ {
|
||||||
uint16_t mappedfreq;
|
uint16_t mappedfreq;
|
||||||
uint16_t pi;
|
uint16_t pi;
|
||||||
|
char picode[6];
|
||||||
String ps;
|
String ps;
|
||||||
} eon_;
|
} eon_;
|
||||||
|
|
||||||
@@ -201,6 +196,8 @@ class TEF6686 {
|
|||||||
void tone(uint16_t time, int16_t amplitude, uint16_t frequency);
|
void tone(uint16_t time, int16_t amplitude, uint16_t frequency);
|
||||||
uint8_t af_counter;
|
uint8_t af_counter;
|
||||||
uint8_t eon_counter;
|
uint8_t eon_counter;
|
||||||
|
uint8_t rdsblock;
|
||||||
|
uint8_t rtplusblock;
|
||||||
bool mute;
|
bool mute;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@@ -219,18 +216,15 @@ class TEF6686 {
|
|||||||
bool useRTPlus = true;
|
bool useRTPlus = true;
|
||||||
bool ABold;
|
bool ABold;
|
||||||
char stationTextBuffer[65];
|
char stationTextBuffer[65];
|
||||||
uint64_t doublecheck;
|
|
||||||
uint16_t rdsBprevious;
|
uint16_t rdsBprevious;
|
||||||
uint16_t rdsCprevious;
|
uint16_t rdsCprevious;
|
||||||
uint16_t rdsDprevious;
|
uint16_t rdsDprevious;
|
||||||
bool rtABold;
|
bool rtABold;
|
||||||
wchar_t PStext[9] = L"";
|
wchar_t PStext[9] = L"";
|
||||||
wchar_t EONPStext[9] = L"";
|
wchar_t EONPStext[20][9];
|
||||||
wchar_t PTYNtext[9] = L"";
|
wchar_t PTYNtext[9] = L"";
|
||||||
byte ps_counter;
|
byte ps_counter;
|
||||||
char musicArtist[45];
|
char RDSplus1[45];
|
||||||
char musicTitle[45];
|
char RDSplus2[45];
|
||||||
char stationHost[45];
|
|
||||||
char stationEvent[45];
|
|
||||||
uint16_t currentfreq;
|
uint16_t currentfreq;
|
||||||
};
|
};
|
||||||
+147
-478
@@ -1,6 +1,6 @@
|
|||||||
// [number of languages][number of texts][max. length of text]
|
// [number of languages][number of texts][max. length of text]
|
||||||
|
|
||||||
static const char myLanguage[9][140][85] = {
|
static const char myLanguage[9][90][85] = {
|
||||||
{ "English", // English
|
{ "English", // English
|
||||||
"Rotary direction changed", // 1
|
"Rotary direction changed", // 1
|
||||||
"Please release button", // 2
|
"Please release button", // 2
|
||||||
@@ -88,59 +88,9 @@ static const char myLanguage[9][140][85] = {
|
|||||||
"Sakura", // 84
|
"Sakura", // 84
|
||||||
"Whiteout", // 85
|
"Whiteout", // 85
|
||||||
"NOT POSSIBLE", // 86
|
"NOT POSSIBLE", // 86
|
||||||
"Albanian", // 87
|
"No AF available", // 87
|
||||||
"Breton", // 88
|
"No EON available", // 88
|
||||||
"Catalan", // 89
|
"No RT+ available" // 89
|
||||||
"Croatian", // 90
|
|
||||||
"Welsh", // 91
|
|
||||||
"Czech", // 92
|
|
||||||
"Danish", // 93
|
|
||||||
"German", // 94
|
|
||||||
"English", // 95
|
|
||||||
"Spanish", // 96
|
|
||||||
"Esperanto", // 97
|
|
||||||
"Estonian", // 98
|
|
||||||
"Basque", // 99
|
|
||||||
"Faroese", // 100
|
|
||||||
"French", // 101
|
|
||||||
"Frisian", // 102
|
|
||||||
"Irish", // 103
|
|
||||||
"Gaelic", // 104
|
|
||||||
"Galician", // 105
|
|
||||||
"Icelandic", // 106
|
|
||||||
"Italian", // 107
|
|
||||||
"Lappish", // 108
|
|
||||||
"Latin", // 109
|
|
||||||
"Latvian", // 110
|
|
||||||
"Luxembourgian", // 111
|
|
||||||
"Lithuanian", // 112
|
|
||||||
"Hungarian", // 113
|
|
||||||
"Maltese", // 114
|
|
||||||
"Dutch", // 115
|
|
||||||
"Norwegian", // 116
|
|
||||||
"Occitan", // 117
|
|
||||||
"Polish", // 118
|
|
||||||
"Portuguese", // 119
|
|
||||||
"Romanian", // 120
|
|
||||||
"Romansh", // 121
|
|
||||||
"Serbian", // 122
|
|
||||||
"Slovak", // 123
|
|
||||||
"Slovene", // 124
|
|
||||||
"Finnish", // 125
|
|
||||||
"Swedish", // 126
|
|
||||||
"Turkish", // 127
|
|
||||||
"Flemish", // 128
|
|
||||||
"Walloon", // 129
|
|
||||||
"Ukranian", // 130
|
|
||||||
"Russian", // 131
|
|
||||||
"Moldovian", // 132
|
|
||||||
"Macedonian", // 133
|
|
||||||
"Hebrew", // 134
|
|
||||||
"Greek", // 135
|
|
||||||
"Georgian", // 136
|
|
||||||
"Bulgarian", // 137
|
|
||||||
"Armenian", // 138
|
|
||||||
"Arabic" // 139
|
|
||||||
},
|
},
|
||||||
|
|
||||||
{ "Nederlands", // Dutch
|
{ "Nederlands", // Dutch
|
||||||
@@ -230,59 +180,9 @@ static const char myLanguage[9][140][85] = {
|
|||||||
"Sakura", // 84
|
"Sakura", // 84
|
||||||
"Whiteout", // 85
|
"Whiteout", // 85
|
||||||
"NIET MOGELIJK", // 86
|
"NIET MOGELIJK", // 86
|
||||||
"Albanees", // 87
|
"AF niet beschikbaar", // 87
|
||||||
"Bretons", // 88
|
"EON niet beschikbaar", // 88
|
||||||
"Catalaans", // 89
|
"RT+ niet beschikbaar" // 89
|
||||||
"Kroatisch", // 90
|
|
||||||
"Welsh", // 91
|
|
||||||
"Tsjechisch", // 92
|
|
||||||
"Deens", // 93
|
|
||||||
"Duits", // 94
|
|
||||||
"Engels", // 95
|
|
||||||
"Spaans", // 96
|
|
||||||
"Esperanto", // 97
|
|
||||||
"Ests", // 98
|
|
||||||
"Baskisch", // 99
|
|
||||||
"Faroese", // 100
|
|
||||||
"Frans", // 101
|
|
||||||
"Fries", // 102
|
|
||||||
"Iers", // 103
|
|
||||||
"Gaelic", // 104
|
|
||||||
"Gallicisch", // 105
|
|
||||||
"IJslands", // 106
|
|
||||||
"Italiaans", // 107
|
|
||||||
"Laplands", // 108
|
|
||||||
"Latijn", // 109
|
|
||||||
"Lets", // 110
|
|
||||||
"Luxemburgs", // 111
|
|
||||||
"Litouws", // 112
|
|
||||||
"Hongaars", // 113
|
|
||||||
"Maltees", // 114
|
|
||||||
"Nederlands", // 115
|
|
||||||
"Noors", // 116
|
|
||||||
"Occitaans", // 117
|
|
||||||
"Pools", // 118
|
|
||||||
"Portugees", // 119
|
|
||||||
"Roemeens", // 120
|
|
||||||
"Reto-Romaans", // 121
|
|
||||||
"Servisch", // 122
|
|
||||||
"Slowaaks", // 123
|
|
||||||
"Sloveens", // 124
|
|
||||||
"Fins", // 125
|
|
||||||
"Zweeds", // 126
|
|
||||||
"Turks", // 127
|
|
||||||
"Vlaams", // 128
|
|
||||||
"Waals", // 129
|
|
||||||
"Oekraïens", // 130
|
|
||||||
"Russisch", // 131
|
|
||||||
"Moldavisch", // 132
|
|
||||||
"Macedonisch", // 133
|
|
||||||
"Hebreeuws", // 134
|
|
||||||
"Grieks", // 135
|
|
||||||
"Georgisch", // 136
|
|
||||||
"Bulgaars", // 137
|
|
||||||
"Armeens", // 138
|
|
||||||
"Arabisch" // 139
|
|
||||||
}, //
|
}, //
|
||||||
|
|
||||||
{ "Polski", // Polish
|
{ "Polski", // Polish
|
||||||
@@ -372,59 +272,9 @@ static const char myLanguage[9][140][85] = {
|
|||||||
"Sakura", // 84
|
"Sakura", // 84
|
||||||
"Whiteout", // 85
|
"Whiteout", // 85
|
||||||
"NOT POSSIBLE", // 86
|
"NOT POSSIBLE", // 86
|
||||||
"Albanian", // 87
|
"No AF available", // 87
|
||||||
"Breton", // 88
|
"No EON available", // 88
|
||||||
"Catalan", // 89
|
"No RT+ available" // 89
|
||||||
"Croatian", // 90
|
|
||||||
"Welsh", // 91
|
|
||||||
"Czech", // 92
|
|
||||||
"Danish", // 93
|
|
||||||
"German", // 94
|
|
||||||
"English", // 95
|
|
||||||
"Spanish", // 96
|
|
||||||
"Esperanto", // 97
|
|
||||||
"Estonian", // 98
|
|
||||||
"Basque", // 99
|
|
||||||
"Faroese", // 100
|
|
||||||
"French", // 101
|
|
||||||
"Frisian", // 102
|
|
||||||
"Irish", // 103
|
|
||||||
"Gaelic", // 104
|
|
||||||
"Galician", // 105
|
|
||||||
"Icelandic", // 106
|
|
||||||
"Italian", // 107
|
|
||||||
"Lappish", // 108
|
|
||||||
"Latin", // 109
|
|
||||||
"Latvian", // 110
|
|
||||||
"Luxembourgian", // 111
|
|
||||||
"Lithuanian", // 112
|
|
||||||
"Hungarian", // 113
|
|
||||||
"Maltese", // 114
|
|
||||||
"Dutch", // 115
|
|
||||||
"Norwegian", // 116
|
|
||||||
"Occitan", // 117
|
|
||||||
"Polish", // 118
|
|
||||||
"Portuguese", // 119
|
|
||||||
"Romanian", // 120
|
|
||||||
"Romansh", // 121
|
|
||||||
"Serbian", // 122
|
|
||||||
"Slovak", // 123
|
|
||||||
"Slovene", // 124
|
|
||||||
"Finnish", // 125
|
|
||||||
"Swedish", // 126
|
|
||||||
"Turkish", // 127
|
|
||||||
"Flemish", // 128
|
|
||||||
"Walloon", // 129
|
|
||||||
"Ukranian", // 130
|
|
||||||
"Russian", // 131
|
|
||||||
"Moldovian", // 132
|
|
||||||
"Macedonian", // 133
|
|
||||||
"Hebrew", // 134
|
|
||||||
"Greek", // 135
|
|
||||||
"Georgian", // 136
|
|
||||||
"Bulgarian", // 137
|
|
||||||
"Armenian", // 138
|
|
||||||
"Arabic" // 139
|
|
||||||
},
|
},
|
||||||
|
|
||||||
{ "Hrvatski", // Croatian
|
{ "Hrvatski", // Croatian
|
||||||
@@ -514,59 +364,9 @@ static const char myLanguage[9][140][85] = {
|
|||||||
"Sakura", // 84
|
"Sakura", // 84
|
||||||
"Whiteout", // 85
|
"Whiteout", // 85
|
||||||
"NOT POSSIBLE", // 86
|
"NOT POSSIBLE", // 86
|
||||||
"Albanian", // 87
|
"No AF available", // 87
|
||||||
"Breton", // 88
|
"No EON available", // 88
|
||||||
"Catalan", // 89
|
"No RT+ available" // 89
|
||||||
"Croatian", // 90
|
|
||||||
"Welsh", // 91
|
|
||||||
"Czech", // 92
|
|
||||||
"Danish", // 93
|
|
||||||
"German", // 94
|
|
||||||
"English", // 95
|
|
||||||
"Spanish", // 96
|
|
||||||
"Esperanto", // 97
|
|
||||||
"Estonian", // 98
|
|
||||||
"Basque", // 99
|
|
||||||
"Faroese", // 100
|
|
||||||
"French", // 101
|
|
||||||
"Frisian", // 102
|
|
||||||
"Irish", // 103
|
|
||||||
"Gaelic", // 104
|
|
||||||
"Galician", // 105
|
|
||||||
"Icelandic", // 106
|
|
||||||
"Italian", // 107
|
|
||||||
"Lappish", // 108
|
|
||||||
"Latin", // 109
|
|
||||||
"Latvian", // 110
|
|
||||||
"Luxembourgian", // 111
|
|
||||||
"Lithuanian", // 112
|
|
||||||
"Hungarian", // 113
|
|
||||||
"Maltese", // 114
|
|
||||||
"Dutch", // 115
|
|
||||||
"Norwegian", // 116
|
|
||||||
"Occitan", // 117
|
|
||||||
"Polish", // 118
|
|
||||||
"Portuguese", // 119
|
|
||||||
"Romanian", // 120
|
|
||||||
"Romansh", // 121
|
|
||||||
"Serbian", // 122
|
|
||||||
"Slovak", // 123
|
|
||||||
"Slovene", // 124
|
|
||||||
"Finnish", // 125
|
|
||||||
"Swedish", // 126
|
|
||||||
"Turkish", // 127
|
|
||||||
"Flemish", // 128
|
|
||||||
"Walloon", // 129
|
|
||||||
"Ukranian", // 130
|
|
||||||
"Russian", // 131
|
|
||||||
"Moldovian", // 132
|
|
||||||
"Macedonian", // 133
|
|
||||||
"Hebrew", // 134
|
|
||||||
"Greek", // 135
|
|
||||||
"Georgian", // 136
|
|
||||||
"Bulgarian", // 137
|
|
||||||
"Armenian", // 138
|
|
||||||
"Arabic" // 139
|
|
||||||
},
|
},
|
||||||
|
|
||||||
{ "Ελληνικά", // Greek
|
{ "Ελληνικά", // Greek
|
||||||
@@ -656,59 +456,9 @@ static const char myLanguage[9][140][85] = {
|
|||||||
"Σάκουρα", // 84
|
"Σάκουρα", // 84
|
||||||
"Λευκό", // 85
|
"Λευκό", // 85
|
||||||
"ΜΗ ΔΥΝΑΤΟ", // 86
|
"ΜΗ ΔΥΝΑΤΟ", // 86
|
||||||
"Αλβανικά", // 87
|
"No AF available", // 87
|
||||||
"Βρετόν", // 88
|
"No EON available", // 88
|
||||||
"Καταλανικά", // 89
|
"No RT+ available" // 89
|
||||||
"Κροατικά", // 90
|
|
||||||
"Ουαλλικά", // 91
|
|
||||||
"Τσεχικά", // 92
|
|
||||||
"Δανικά", // 93
|
|
||||||
"Γερμανικά", // 94
|
|
||||||
"Αγγλικά", // 95
|
|
||||||
"Ισπανικά", // 96
|
|
||||||
"Εσπεράντο", // 97
|
|
||||||
"Εσθονικά", // 98
|
|
||||||
"Βασκικά", // 99
|
|
||||||
"Φερόε", // 100
|
|
||||||
"Γαλλικά", // 101
|
|
||||||
"Φριζιακά", // 102
|
|
||||||
"Ιρλανδικά", // 103
|
|
||||||
"Κελτικά", // 104
|
|
||||||
"Γαλικιακά", // 105
|
|
||||||
"Ισλανδικά", // 106
|
|
||||||
"Ιταλικά", // 107
|
|
||||||
"Λαπωνικά", // 108
|
|
||||||
"Λατινικά", // 109
|
|
||||||
"Λετονικά", // 110
|
|
||||||
"Λουξεμβρουργιανά", // 111
|
|
||||||
"Λιθουανικά", // 112
|
|
||||||
"Ουγγρικά", // 113
|
|
||||||
"Μαλτέζικα", // 114
|
|
||||||
"Ολλανδικά", // 115
|
|
||||||
"Νορβηγικά", // 116
|
|
||||||
"Οξιτανικά", // 117
|
|
||||||
"Πολωνικά", // 118
|
|
||||||
"Πορτογαλικά", // 119
|
|
||||||
"Ρουμανικά", // 120
|
|
||||||
"Ρομανσικά", // 121
|
|
||||||
"Σερβικά", // 122
|
|
||||||
"Σλοβακικά", // 123
|
|
||||||
"Σλοβενικά", // 124
|
|
||||||
"Φινλανδικά", // 125
|
|
||||||
"Σουηδικά", // 126
|
|
||||||
"Τουρκικά", // 127
|
|
||||||
"Φλαμανδικά", // 128
|
|
||||||
"Βαλλωνικά" // 129
|
|
||||||
"Ουκρανικά", // 130
|
|
||||||
"Ρωσικά", // 131
|
|
||||||
"Μολδαβικά", // 132
|
|
||||||
"Σκοπιανικά", // 133
|
|
||||||
"Εβραϊκά", // 134
|
|
||||||
"Ελληνικά", // 135
|
|
||||||
"Γεωργιανά", // 136
|
|
||||||
"Βουλγαρικά", // 137
|
|
||||||
"Αρμενικά", // 138
|
|
||||||
"Αραβικά" // 139
|
|
||||||
},
|
},
|
||||||
|
|
||||||
{ "Romana", // Romanian
|
{ "Romana", // Romanian
|
||||||
@@ -798,59 +548,9 @@ static const char myLanguage[9][140][85] = {
|
|||||||
"Sakura", // 84
|
"Sakura", // 84
|
||||||
"Whiteout", // 85
|
"Whiteout", // 85
|
||||||
"NOT POSSIBLE", // 86
|
"NOT POSSIBLE", // 86
|
||||||
"Albanian", // 87
|
"No AF available", // 87
|
||||||
"Breton", // 88
|
"No EON available", // 88
|
||||||
"Catalan", // 89
|
"No RT+ available" // 89
|
||||||
"Croatian", // 90
|
|
||||||
"Welsh", // 91
|
|
||||||
"Czech", // 92
|
|
||||||
"Danish", // 93
|
|
||||||
"German", // 94
|
|
||||||
"English", // 95
|
|
||||||
"Spanish", // 96
|
|
||||||
"Esperanto", // 97
|
|
||||||
"Estonian", // 98
|
|
||||||
"Basque", // 99
|
|
||||||
"Faroese", // 100
|
|
||||||
"French", // 101
|
|
||||||
"Frisian", // 102
|
|
||||||
"Irish", // 103
|
|
||||||
"Gaelic", // 104
|
|
||||||
"Galician", // 105
|
|
||||||
"Icelandic", // 106
|
|
||||||
"Italian", // 107
|
|
||||||
"Lappish", // 108
|
|
||||||
"Latin", // 109
|
|
||||||
"Latvian", // 110
|
|
||||||
"Luxembourgian", // 111
|
|
||||||
"Lithuanian", // 112
|
|
||||||
"Hungarian", // 113
|
|
||||||
"Maltese", // 114
|
|
||||||
"Dutch", // 115
|
|
||||||
"Norwegian", // 116
|
|
||||||
"Occitan", // 117
|
|
||||||
"Polish", // 118
|
|
||||||
"Portuguese", // 119
|
|
||||||
"Romanian", // 120
|
|
||||||
"Romansh", // 121
|
|
||||||
"Serbian", // 122
|
|
||||||
"Slovak", // 123
|
|
||||||
"Slovene", // 124
|
|
||||||
"Finnish", // 125
|
|
||||||
"Swedish", // 126
|
|
||||||
"Turkish", // 127
|
|
||||||
"Flemish", // 128
|
|
||||||
"Walloon", // 129
|
|
||||||
"Ukranian", // 130
|
|
||||||
"Russian", // 131
|
|
||||||
"Moldovian", // 132
|
|
||||||
"Macedonian", // 133
|
|
||||||
"Hebrew", // 134
|
|
||||||
"Greek", // 135
|
|
||||||
"Georgian", // 136
|
|
||||||
"Bulgarian", // 137
|
|
||||||
"Armenian", // 138
|
|
||||||
"Arabic" // 139
|
|
||||||
},
|
},
|
||||||
|
|
||||||
{ "Deutsch", // German
|
{ "Deutsch", // German
|
||||||
@@ -940,59 +640,9 @@ static const char myLanguage[9][140][85] = {
|
|||||||
"Sakura", // 84
|
"Sakura", // 84
|
||||||
"Whiteout", // 85
|
"Whiteout", // 85
|
||||||
"NOT POSSIBLE", // 86
|
"NOT POSSIBLE", // 86
|
||||||
"Albanian", // 87
|
"No AF available", // 87
|
||||||
"Breton", // 88
|
"No EON available", // 88
|
||||||
"Catalan", // 89
|
"No RT+ available" // 89
|
||||||
"Croatian", // 90
|
|
||||||
"Welsh", // 91
|
|
||||||
"Czech", // 92
|
|
||||||
"Danish", // 93
|
|
||||||
"German", // 94
|
|
||||||
"English", // 95
|
|
||||||
"Spanish", // 96
|
|
||||||
"Esperanto", // 97
|
|
||||||
"Estonian", // 98
|
|
||||||
"Basque", // 99
|
|
||||||
"Faroese", // 100
|
|
||||||
"French", // 101
|
|
||||||
"Frisian", // 102
|
|
||||||
"Irish", // 103
|
|
||||||
"Gaelic", // 104
|
|
||||||
"Galician", // 105
|
|
||||||
"Icelandic", // 106
|
|
||||||
"Italian", // 107
|
|
||||||
"Lappish", // 108
|
|
||||||
"Latin", // 109
|
|
||||||
"Latvian", // 110
|
|
||||||
"Luxembourgian", // 111
|
|
||||||
"Lithuanian", // 112
|
|
||||||
"Hungarian", // 113
|
|
||||||
"Maltese", // 114
|
|
||||||
"Dutch", // 115
|
|
||||||
"Norwegian", // 116
|
|
||||||
"Occitan", // 117
|
|
||||||
"Polish", // 118
|
|
||||||
"Portuguese", // 119
|
|
||||||
"Romanian", // 120
|
|
||||||
"Romansh", // 121
|
|
||||||
"Serbian", // 122
|
|
||||||
"Slovak", // 123
|
|
||||||
"Slovene", // 124
|
|
||||||
"Finnish", // 125
|
|
||||||
"Swedish", // 126
|
|
||||||
"Turkish", // 127
|
|
||||||
"Flemish", // 128
|
|
||||||
"Walloon", // 129
|
|
||||||
"Ukranian", // 130
|
|
||||||
"Russian", // 131
|
|
||||||
"Moldovian", // 132
|
|
||||||
"Macedonian", // 133
|
|
||||||
"Hebrew", // 134
|
|
||||||
"Greek", // 135
|
|
||||||
"Georgian", // 136
|
|
||||||
"Bulgarian", // 137
|
|
||||||
"Armenian", // 138
|
|
||||||
"Arabic" // 139
|
|
||||||
},
|
},
|
||||||
|
|
||||||
{ "Czech", // Czech
|
{ "Czech", // Czech
|
||||||
@@ -1082,59 +732,9 @@ static const char myLanguage[9][140][85] = {
|
|||||||
"Sakura", // 84
|
"Sakura", // 84
|
||||||
"Whiteout", // 85
|
"Whiteout", // 85
|
||||||
"NOT POSSIBLE", // 86
|
"NOT POSSIBLE", // 86
|
||||||
"Albanian", // 87
|
"No AF available", // 87
|
||||||
"Breton", // 88
|
"No EON available", // 88
|
||||||
"Catalan", // 89
|
"No RT+ available" // 89
|
||||||
"Croatian", // 90
|
|
||||||
"Welsh", // 91
|
|
||||||
"Czech", // 92
|
|
||||||
"Danish", // 93
|
|
||||||
"German", // 94
|
|
||||||
"English", // 95
|
|
||||||
"Spanish", // 96
|
|
||||||
"Esperanto", // 97
|
|
||||||
"Estonian", // 98
|
|
||||||
"Basque", // 99
|
|
||||||
"Faroese", // 100
|
|
||||||
"French", // 101
|
|
||||||
"Frisian", // 102
|
|
||||||
"Irish", // 103
|
|
||||||
"Gaelic", // 104
|
|
||||||
"Galician", // 105
|
|
||||||
"Icelandic", // 106
|
|
||||||
"Italian", // 107
|
|
||||||
"Lappish", // 108
|
|
||||||
"Latin", // 109
|
|
||||||
"Latvian", // 110
|
|
||||||
"Luxembourgian", // 111
|
|
||||||
"Lithuanian", // 112
|
|
||||||
"Hungarian", // 113
|
|
||||||
"Maltese", // 114
|
|
||||||
"Dutch", // 115
|
|
||||||
"Norwegian", // 116
|
|
||||||
"Occitan", // 117
|
|
||||||
"Polish", // 118
|
|
||||||
"Portuguese", // 119
|
|
||||||
"Romanian", // 120
|
|
||||||
"Romansh", // 121
|
|
||||||
"Serbian", // 122
|
|
||||||
"Slovak", // 123
|
|
||||||
"Slovene", // 124
|
|
||||||
"Finnish", // 125
|
|
||||||
"Swedish", // 126
|
|
||||||
"Turkish", // 127
|
|
||||||
"Flemish", // 128
|
|
||||||
"Walloon", // 129
|
|
||||||
"Ukranian", // 130
|
|
||||||
"Russian", // 131
|
|
||||||
"Moldovian", // 132
|
|
||||||
"Macedonian", // 133
|
|
||||||
"Hebrew", // 134
|
|
||||||
"Greek", // 135
|
|
||||||
"Georgian", // 136
|
|
||||||
"Bulgarian", // 137
|
|
||||||
"Armenian", // 138
|
|
||||||
"Arabic" // 139
|
|
||||||
},
|
},
|
||||||
|
|
||||||
{ "Slovak", // Slovak
|
{ "Slovak", // Slovak
|
||||||
@@ -1224,58 +824,127 @@ static const char myLanguage[9][140][85] = {
|
|||||||
"Sakura", // 84
|
"Sakura", // 84
|
||||||
"Whiteout", // 85
|
"Whiteout", // 85
|
||||||
"NOT POSSIBLE", // 86
|
"NOT POSSIBLE", // 86
|
||||||
"Albanian", // 87
|
"No AF available", // 87
|
||||||
"Breton", // 88
|
"No EON available", // 88
|
||||||
"Catalan", // 89
|
"No RT+ available" // 89
|
||||||
"Croatian", // 90
|
|
||||||
"Welsh", // 91
|
|
||||||
"Czech", // 92
|
|
||||||
"Danish", // 93
|
|
||||||
"German", // 94
|
|
||||||
"English", // 95
|
|
||||||
"Spanish", // 96
|
|
||||||
"Esperanto", // 97
|
|
||||||
"Estonian", // 98
|
|
||||||
"Basque", // 99
|
|
||||||
"Faroese", // 100
|
|
||||||
"French", // 101
|
|
||||||
"Frisian", // 102
|
|
||||||
"Irish", // 103
|
|
||||||
"Gaelic", // 104
|
|
||||||
"Galician", // 105
|
|
||||||
"Icelandic", // 106
|
|
||||||
"Italian", // 107
|
|
||||||
"Lappish", // 108
|
|
||||||
"Latin", // 109
|
|
||||||
"Latvian", // 110
|
|
||||||
"Luxembourgian", // 111
|
|
||||||
"Lithuanian", // 112
|
|
||||||
"Hungarian", // 113
|
|
||||||
"Maltese", // 114
|
|
||||||
"Dutch", // 115
|
|
||||||
"Norwegian", // 116
|
|
||||||
"Occitan", // 117
|
|
||||||
"Polish", // 118
|
|
||||||
"Portuguese", // 119
|
|
||||||
"Romanian", // 120
|
|
||||||
"Romansh", // 121
|
|
||||||
"Serbian", // 122
|
|
||||||
"Slovak", // 123
|
|
||||||
"Slovene", // 124
|
|
||||||
"Finnish", // 125
|
|
||||||
"Swedish", // 126
|
|
||||||
"Turkish", // 127
|
|
||||||
"Flemish", // 128
|
|
||||||
"Walloon", // 129
|
|
||||||
"Ukranian", // 130
|
|
||||||
"Russian", // 131
|
|
||||||
"Moldovian", // 132
|
|
||||||
"Macedonian", // 133
|
|
||||||
"Hebrew", // 134
|
|
||||||
"Greek", // 135
|
|
||||||
"Georgian", // 136
|
|
||||||
"Bulgarian", // 137
|
|
||||||
"Armenian", // 138
|
|
||||||
"Arabic" // 139
|
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static const char* const myCountries[] {
|
||||||
|
"Germany", // 0
|
||||||
|
"Greece", // 1
|
||||||
|
"Marocco", // 2
|
||||||
|
"Moldova", // 3
|
||||||
|
"Algeria", // 4
|
||||||
|
"Cyprus", // 5
|
||||||
|
"Czech R.", // 6
|
||||||
|
"Ireland", // 7
|
||||||
|
"Estonia", // 8
|
||||||
|
"Andorra", // 9
|
||||||
|
"San Marino", // 10
|
||||||
|
"Poland", // 11
|
||||||
|
"Turkey", // 12
|
||||||
|
"Israel", // 13
|
||||||
|
"Switzerland", // 14
|
||||||
|
"Vatican", // 15
|
||||||
|
"Macedonia", // 16
|
||||||
|
"Italy", // 17
|
||||||
|
"Jordan", // 18
|
||||||
|
"Slovakia", // 19
|
||||||
|
"Belgium", // 20
|
||||||
|
"Finland", // 21
|
||||||
|
"Syria", // 22
|
||||||
|
"Serbia", // 23
|
||||||
|
"Ukraine", // 24
|
||||||
|
"Russia", // 25
|
||||||
|
"Luxembourg", // 26
|
||||||
|
"Tunisia", // 27
|
||||||
|
"Azores", // 28
|
||||||
|
"Bulgaria", // 29
|
||||||
|
"Madeira", // 30
|
||||||
|
"Netherlands", // 31
|
||||||
|
"Portugal", // 32
|
||||||
|
"Albania", // 33
|
||||||
|
"Denmark", // 34
|
||||||
|
"Liechtenstein", // 35
|
||||||
|
"Latvia", // 36
|
||||||
|
"Slovenia", // 37
|
||||||
|
"Austria", // 38
|
||||||
|
"Gibraltar", // 39
|
||||||
|
"Iceland", // 40
|
||||||
|
"Lebanon", // 41
|
||||||
|
"Hungary", // 42
|
||||||
|
"Iraq", // 43
|
||||||
|
"Monaco", // 44
|
||||||
|
"Malta", // 45
|
||||||
|
"U.K.", // 46
|
||||||
|
"Lithunia", // 47
|
||||||
|
"Croatia", // 48
|
||||||
|
"Libya", // 49
|
||||||
|
"Canaries", // 50
|
||||||
|
"Romania", // 51
|
||||||
|
"Spain", // 52
|
||||||
|
"Sweden", // 53
|
||||||
|
"Egypt", // 54
|
||||||
|
"France", // 55
|
||||||
|
"Norway", // 56
|
||||||
|
"Belarus", // 57
|
||||||
|
"Bosnia" // 58
|
||||||
|
};
|
||||||
|
|
||||||
|
static const char* const myLanguages[] {
|
||||||
|
"Unknown", // 0
|
||||||
|
"Albanian", // 1
|
||||||
|
"Breton", // 2
|
||||||
|
"Catalan", // 3
|
||||||
|
"Croatian", // 4
|
||||||
|
"Welsh", // 5
|
||||||
|
"Czech", // 6
|
||||||
|
"Danish", // 7
|
||||||
|
"German", // 8
|
||||||
|
"English", // 9
|
||||||
|
"Spanish", // 10
|
||||||
|
"Esperanto", // 11
|
||||||
|
"Estonian", // 12
|
||||||
|
"Basque", // 13
|
||||||
|
"Faroese", // 14
|
||||||
|
"French", // 15
|
||||||
|
"Frisian", // 16
|
||||||
|
"Irish", // 17
|
||||||
|
"Gaelic", // 18
|
||||||
|
"Galician", // 19
|
||||||
|
"Icelandic", // 20
|
||||||
|
"Italian", // 21
|
||||||
|
"Lappish", // 22
|
||||||
|
"Latin", // 23
|
||||||
|
"Latvian", // 24
|
||||||
|
"Luxembourgian", // 25
|
||||||
|
"Lithuanian", // 26
|
||||||
|
"Hungarian", // 27
|
||||||
|
"Maltese", // 28
|
||||||
|
"Dutch", // 29
|
||||||
|
"Norwegian", // 30
|
||||||
|
"Occitan", // 31
|
||||||
|
"Polish", // 32
|
||||||
|
"Portuguese", // 33
|
||||||
|
"Romanian", // 34
|
||||||
|
"Romansh", // 35
|
||||||
|
"Serbian", // 36
|
||||||
|
"Slovak", // 37
|
||||||
|
"Slovene", // 38
|
||||||
|
"Finnish", // 39
|
||||||
|
"Swedish", // 40
|
||||||
|
"Turkish", // 41
|
||||||
|
"Flemish", // 42
|
||||||
|
"Walloon", // 43
|
||||||
|
"Ukranian", // 44
|
||||||
|
"Russian", // 45
|
||||||
|
"Moldovian", // 46
|
||||||
|
"Macedonian", // 47
|
||||||
|
"Hebrew", // 48
|
||||||
|
"Greek", // 49
|
||||||
|
"Georgian", // 50
|
||||||
|
"Bulgarian", // 51
|
||||||
|
"Armenian", // 52
|
||||||
|
"Arabic" // 53
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user