You've already forked TEF6686_ESP32
Small fix for PS and more
- Added menu option for dynamic PI. When PI changes (due fading and another station is received on the same frequency), when dynamic PI is enabled, new PI will be shown. Disadvance of this, is that on weak signals correct received PI can be overwritten by a false PI. - Smallest font now 1px larger - When no battery, the icon is not shown. - PS is now stable when length < 8 characters - Enabled Stationlist for AM (tuning currently not possible)
This commit is contained in:
@@ -245,32 +245,33 @@ void TEF6686::readRDS(bool showrdserrors)
|
||||
if (((rds.rdsErr >> 12) & 0x02) > 1) rds.rdsBerror = true; else rds.rdsBerror = false; // Any errors in Block B?
|
||||
if (((rds.rdsErr >> 10) & 0x02) > 1) rds.rdsCerror = true; else rds.rdsCerror = false; // Any errors in Block C?
|
||||
if (((rds.rdsErr >> 8) & 0x02) > 1) rds.rdsDerror = true; else rds.rdsDerror = false; // Any errors in Block D?
|
||||
if (!rds.rdsAerror && !rds.rdsBerror && !rds.rdsCerror && !rds.rdsDerror) rds.correct = true; // Any errors in all blocks?
|
||||
if ((rdsStat & (1 << 9))) rds.hasRDS = true; // RDS decoder synchronized and data available
|
||||
if (!rds.rdsAerror && !rds.rdsBerror && !rds.rdsCerror && !rds.rdsDerror) rds.correct = true; // Any errors in all blocks?
|
||||
if ((rdsStat & (1 << 9))) rds.hasRDS = true; // RDS decoder synchronized and data available
|
||||
if ((rdsStat & (1 << 15))) rdsReady = true;
|
||||
|
||||
if (rdsReady) { // We have all data to decode... let's go...
|
||||
if (rdsReady) { // We have all data to decode... let's go...
|
||||
|
||||
//PI decoder
|
||||
if (rds.region == 0 && !correctpi) {
|
||||
if (rds.region == 0 && (!correctpi || rds.dynamicpi)) {
|
||||
rds.picode[0] = (rds.rdsA >> 12) & 0xF;
|
||||
rds.picode[1] = (rds.rdsA >> 8) & 0xF;
|
||||
rds.picode[2] = (rds.rdsA >> 4) & 0xF;
|
||||
rds.picode[3] = rds.rdsA & 0xF;
|
||||
for (int i = 0; i < 4; i++) {
|
||||
if (rds.picode[i] < 10) {
|
||||
rds.picode[i] += '0'; // Add ASCII offset for decimal digits
|
||||
rds.picode[i] += '0'; // Add ASCII offset for decimal digits
|
||||
} else {
|
||||
rds.picode[i] += 'A' - 10; // Add ASCII offset for hexadecimal letters A-F
|
||||
rds.picode[i] += 'A' - 10; // Add ASCII offset for hexadecimal letters A-F
|
||||
}
|
||||
}
|
||||
if (!rds.correct) rds.picode[4] = '?'; else rds.picode[4] = ' '; // Not sure, add a ?
|
||||
|
||||
if (!rds.correct) rds.picode[4] = '?'; else rds.picode[4] = ' '; // Not sure, add a ?
|
||||
rds.picode[5] = '\0';
|
||||
correctpi = rds.correct;
|
||||
}
|
||||
|
||||
// USA Station callsign decoder
|
||||
if (rds.region == 1) { // When ID was decoded correctly before, no need to decode again.
|
||||
if (rds.region == 1) { // When ID was decoded correctly before, no need to decode again.
|
||||
uint16_t stationID = rds.rdsA;
|
||||
if (stationID > 4096) {
|
||||
if (stationID > 21671 && (stationID & 0xF00U) >> 8 == 0) stationID = ((uint16_t)uint8_t(0xA0 + ((stationID & 0xF000U) >> 12)) << 8) + lowByte(stationID); // C0DE -> ACDE
|
||||
@@ -313,12 +314,12 @@ void TEF6686::readRDS(bool showrdserrors)
|
||||
ps_buffer[(offset * 2) + 1] = rds.rdsD & 0xFF; // Second character of segment
|
||||
ps_buffer[(offset * 2) + 2] = '\0'; // Endmarker of segment
|
||||
|
||||
wchar_t PStext[9] = L""; // Create 16 bit char buffer for Extended ASCII
|
||||
if (!ps_process) { // After new tune just fill the characters received
|
||||
RDScharConverter(ps_buffer, PStext, sizeof(PStext) / sizeof(wchar_t)); // Convert 8 bit ASCII to 16 bit ASCII
|
||||
rds.stationName = convertToUTF8(PStext); // Convert RDS characterset to ASCII
|
||||
}
|
||||
if (strlen(ps_buffer) == 8) { // Becomes active after a full PS has been decoded
|
||||
if (strlen(ps_buffer) == 8) { // Becomes active after a full 8 character PS has been decoded
|
||||
for (byte i = 0; i < 9; i++) PStext[i] = L'\0'; // First erase buffer
|
||||
RDScharConverter(ps_buffer, PStext, sizeof(PStext) / sizeof(wchar_t)); // Convert 8 bit ASCII to 16 bit ASCII
|
||||
rds.stationName = convertToUTF8(PStext); // Convert RDS characterset to ASCII
|
||||
ps_process = true;
|
||||
@@ -394,7 +395,7 @@ void TEF6686::readRDS(bool showrdserrors)
|
||||
wchar_t RTtext[65] = L""; // Create 16 bit char buffer for Extended ASCII
|
||||
RDScharConverter(rt_buffer, RTtext, sizeof(RTtext) / sizeof(wchar_t)); // Convert 8 bit ASCII to 16 bit ASCII
|
||||
rds.stationText = convertToUTF8(RTtext); // Convert RDS characterset to ASCII
|
||||
rds.stationText += " "; // Add extra spaces
|
||||
rds.stationText += " "; // Add extra space
|
||||
}
|
||||
} break;
|
||||
|
||||
@@ -453,7 +454,10 @@ void TEF6686::clearRDS (bool fullsearchrds)
|
||||
uint8_t i;
|
||||
rds.stationName = "";
|
||||
rds.stationText = "";
|
||||
for (i = 0; i < 9; i++) ps_buffer[i] = 0;
|
||||
for (i = 0; i < 9; i++) {
|
||||
ps_buffer[i] = 0;
|
||||
PStext[i] = L'\0';
|
||||
}
|
||||
for (i = 0; i < 65; i++) rt_buffer[i] = 0;
|
||||
for (i = 0; i < 17; i++) rds.stationType[i] = 0;
|
||||
for (i = 0; i < 6; i++) rds.picode[i] = 0;
|
||||
|
||||
@@ -196,6 +196,7 @@ typedef struct _rds_ {
|
||||
bool filter;
|
||||
bool underscore;
|
||||
bool rdsreset;
|
||||
bool dynamicpi;
|
||||
} rds_;
|
||||
|
||||
typedef struct _af_ {
|
||||
@@ -267,4 +268,5 @@ class TEF6686 {
|
||||
uint16_t rdsDprevious;
|
||||
bool correctpi;
|
||||
bool rtABold;
|
||||
wchar_t PStext[9] = L"";
|
||||
};
|
||||
2112
src/font.h
2112
src/font.h
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,6 @@
|
||||
// [number of languages][number of texts][max. length of text]
|
||||
|
||||
static const char myLanguage[9][61][78] = {
|
||||
static const char myLanguage[9][62][78] = {
|
||||
{ "English", // English
|
||||
"Rotary direction changed",
|
||||
"Please release button",
|
||||
@@ -61,7 +61,8 @@ static const char myLanguage[9][61][78] = {
|
||||
"CONNECTED!",
|
||||
"Stationlist client IP",
|
||||
"Show SW wavelength",
|
||||
"RDS filter"
|
||||
"RDS filter",
|
||||
"Dynamic PI"
|
||||
},
|
||||
|
||||
{ "Nederlands", // Dutch
|
||||
@@ -124,7 +125,8 @@ static const char myLanguage[9][61][78] = {
|
||||
"VERBONDEN!",
|
||||
"Stationlist client IP",
|
||||
"Toon SW golflengte",
|
||||
"RDS filter"
|
||||
"RDS filter",
|
||||
"Dynamische PI"
|
||||
},
|
||||
|
||||
{ "Polski", // Polish
|
||||
@@ -187,7 +189,8 @@ static const char myLanguage[9][61][78] = {
|
||||
"POLACZONO!",
|
||||
"IP klienta Stationlist",
|
||||
"Pokaz dlugosci fal SW",
|
||||
"RDS filter"
|
||||
"RDS filter",
|
||||
"Dynamic PI"
|
||||
},
|
||||
|
||||
{ "Hrvatski", // Croatian
|
||||
@@ -250,7 +253,8 @@ static const char myLanguage[9][61][78] = {
|
||||
"SPOJENO!",
|
||||
"IP klijenta StationList",
|
||||
"Prikaži valnu duljinu KV-a",
|
||||
"RDS filter"
|
||||
"RDS filter",
|
||||
"Dynamic PI"
|
||||
},
|
||||
|
||||
{ "Ελληνικά", // Greek
|
||||
@@ -313,7 +317,8 @@ static const char myLanguage[9][61][78] = {
|
||||
"ΣΕ ΣΥΝΔΕΣΗ!",
|
||||
"Stationlist client IP",
|
||||
"Show SW wavelength",
|
||||
"RDS filter"
|
||||
"RDS filter",
|
||||
"Dynamic PI"
|
||||
},
|
||||
|
||||
{ "Romana", // Romanian
|
||||
@@ -376,7 +381,8 @@ static const char myLanguage[9][61][78] = {
|
||||
"CONNECTED!",
|
||||
"Stationlist client IP",
|
||||
"Show SW wavelength",
|
||||
"RDS filter"
|
||||
"RDS filter",
|
||||
"Dynamic PI"
|
||||
},
|
||||
|
||||
{ "Deutsch", // German
|
||||
@@ -439,7 +445,8 @@ static const char myLanguage[9][61][78] = {
|
||||
"VERBUNDEN!",
|
||||
"Stationlist client IP",
|
||||
"Show SW wavelength",
|
||||
"RDS filter"
|
||||
"RDS filter",
|
||||
"Dynamic PI"
|
||||
},
|
||||
{ "Czech", // Czech
|
||||
"Směr enkóderu byl změněn",
|
||||
@@ -501,7 +508,8 @@ static const char myLanguage[9][61][78] = {
|
||||
"CONNECTED!",
|
||||
"Stationlist client IP",
|
||||
"Show SW wavelength",
|
||||
"RDS filter"
|
||||
"RDS filter",
|
||||
"Dynamic PI"
|
||||
},
|
||||
{ "Slovak", // Slovak
|
||||
"Smer enkóderu bol zmenený",
|
||||
@@ -563,6 +571,7 @@ static const char myLanguage[9][61][78] = {
|
||||
"CONNECTED!",
|
||||
"Stationlist client IP",
|
||||
"Show SW wavelength",
|
||||
"RDS filter"
|
||||
"RDS filter",
|
||||
"Dynamic PI"
|
||||
},
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user