You've already forked TEF6686_ESP32
Added RT buffering as menu option
This commit is contained in:
@@ -352,6 +352,7 @@ void setup() {
|
||||
HighCutLevel = EEPROM.readByte(EE_BYTE_HIGHCUTLEVEL);
|
||||
HighCutOffset = EEPROM.readByte(EE_BYTE_HIGHCUTOFFSET);
|
||||
LevelOffset = EEPROM.readByte(EE_BYTE_LEVELOFFSET);
|
||||
radio.rds.rtbuffer = EEPROM.readByte(EE_BYTE_RTBUFFER);
|
||||
edgebeep = EEPROM.readByte(EE_BYTE_EDGEBEEP);
|
||||
softmuteam = EEPROM.readByte(EE_BYTE_SOFTMUTEAM);
|
||||
softmutefm = EEPROM.readByte(EE_BYTE_SOFTMUTEFM);
|
||||
@@ -1802,7 +1803,8 @@ void ModeButtonPress() {
|
||||
EEPROM.writeByte(EE_BYTE_BANDAM, bandAM);
|
||||
EEPROM.writeByte(EE_BYTE_HIGHCUTLEVEL, HighCutLevel);
|
||||
EEPROM.writeByte(EE_BYTE_HIGHCUTOFFSET, HighCutOffset);
|
||||
EEPROM.writeInt(EE_BYTE_LEVELOFFSET, LevelOffset);
|
||||
EEPROM.writeByte(EE_BYTE_LEVELOFFSET, LevelOffset);
|
||||
EEPROM.writeByte(EE_BYTE_RTBUFFER, radio.rds.rtbuffer);
|
||||
EEPROM.writeByte(EE_BYTE_EDGEBEEP, edgebeep);
|
||||
EEPROM.writeByte(EE_BYTE_SOFTMUTEAM, softmuteam);
|
||||
EEPROM.writeByte(EE_BYTE_SOFTMUTEFM, softmutefm);
|
||||
@@ -3238,7 +3240,8 @@ void DefaultSettings(byte userhardwaremodel) {
|
||||
EEPROM.writeByte(EE_BYTE_BANDAM, AM_BAND_ALL);
|
||||
EEPROM.writeByte(EE_BYTE_HIGHCUTLEVEL, 70);
|
||||
EEPROM.writeByte(EE_BYTE_HIGHCUTOFFSET, 0);
|
||||
EEPROM.writeInt(EE_BYTE_LEVELOFFSET, 0);
|
||||
EEPROM.writeByte(EE_BYTE_LEVELOFFSET, 0);
|
||||
EEPROM.writeByte(EE_BYTE_RTBUFFER, 1);
|
||||
EEPROM.writeByte(EE_BYTE_EDGEBEEP, 0);
|
||||
EEPROM.writeByte(EE_BYTE_SOFTMUTEAM, 0);
|
||||
EEPROM.writeByte(EE_BYTE_SOFTMUTEFM, 0);
|
||||
|
||||
@@ -628,10 +628,12 @@ void TEF6686::readRDS(bool showrdserrors)
|
||||
|
||||
if (rds.rtAB != rtABold) { // Erase old RT, because of AB change
|
||||
initrt = false;
|
||||
if (rds.rtbuffer) {
|
||||
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
|
||||
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
|
||||
}
|
||||
|
||||
for (byte i = 0; i < 64; i++) {
|
||||
rt_buffer[i] = 0x20;
|
||||
@@ -646,7 +648,7 @@ void TEF6686::readRDS(bool showrdserrors)
|
||||
rt_buffer[offset + 2] = rds.rdsD >> 8; // Thirth character of segment
|
||||
rt_buffer[offset + 3] = rds.rdsD & 0xff; // Fourth character of segment
|
||||
|
||||
if (initrt) {
|
||||
if (initrt || !rds.rtbuffer) {
|
||||
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
|
||||
rds.stationText = convertToUTF8(RTtext); // Convert RDS characterset to ASCII
|
||||
@@ -757,12 +759,14 @@ void TEF6686::readRDS(bool showrdserrors)
|
||||
runningbit = bitRead(lowByte(rds.rdsB), 3);
|
||||
|
||||
switch (rds.rdsplusTag1) {
|
||||
case 0: rds.rdsplusTag1 = 169; break;
|
||||
case 1 ... 53: rds.rdsplusTag1 += 111; break;
|
||||
case 59 ... 63: rds.rdsplusTag1 += 105; break;
|
||||
default: rds.rdsplusTag1 = 169; break;
|
||||
}
|
||||
|
||||
switch (rds.rdsplusTag2) {
|
||||
case 0: rds.rdsplusTag2 = 169; break;
|
||||
case 1 ... 53: rds.rdsplusTag2 += 111; break;
|
||||
case 59 ... 63: rds.rdsplusTag2 += 105; break;
|
||||
default: rds.rdsplusTag2 = 169; break;
|
||||
|
||||
@@ -166,6 +166,7 @@ typedef struct _rds_ {
|
||||
bool underscore;
|
||||
bool rdsreset;
|
||||
bool pierrors;
|
||||
bool rtbuffer = true;
|
||||
} rds_;
|
||||
|
||||
typedef struct _af_ {
|
||||
|
||||
@@ -101,7 +101,7 @@
|
||||
|
||||
// EEPROM index defines
|
||||
#define EE_PRESETS_CNT 30
|
||||
#define EE_CHECKBYTE_VALUE 32 // 0 ~ 255,add new entry, change for new value
|
||||
#define EE_CHECKBYTE_VALUE 33 // 0 ~ 255,add new entry, change for new value
|
||||
|
||||
#define EE_TOTAL_CNT 274
|
||||
#define EE_UINT16_FREQUENCY_FM 0
|
||||
@@ -117,6 +117,7 @@
|
||||
#define EE_BYTE_HIGHCUTLEVEL 22
|
||||
#define EE_BYTE_HIGHCUTOFFSET 23
|
||||
#define EE_BYTE_LEVELOFFSET 24
|
||||
#define EE_BYTE_RTBUFFER 25
|
||||
#define EE_BYTE_EDGEBEEP 28
|
||||
#define EE_BYTE_SOFTMUTEAM 29
|
||||
#define EE_BYTE_SOFTMUTEFM 30
|
||||
|
||||
21
src/gui.cpp
21
src/gui.cpp
@@ -480,17 +480,21 @@ void BuildMenu() {
|
||||
case 5:
|
||||
tftPrint(-1, myLanguage[language][108], 8, 36, ActiveColor, ActiveColorSmooth, 16);
|
||||
tftPrint(-1, myLanguage[language][173], 8, 56, ActiveColor, ActiveColorSmooth, 16);
|
||||
tftPrint(-1, myLanguage[language][176], 8, 76, ActiveColor, ActiveColorSmooth, 16);
|
||||
|
||||
switch (hardwaremodel) {
|
||||
case BASE_ILI9341: tftPrint(1, myLanguage[language][109], 310, 36, PrimaryColor, PrimaryColorSmooth, 16); break;
|
||||
case PORTABLE_ILI9341: tftPrint(1, myLanguage[language][110 ], 310, 36, PrimaryColor, PrimaryColorSmooth, 16); break;
|
||||
case PORTABLE_TOUCH_ILI9341: tftPrint(1, myLanguage[language][111], 310, 36, PrimaryColor, PrimaryColorSmooth, 16); break;
|
||||
}
|
||||
|
||||
switch (batteryoptions) {
|
||||
case BATTERY_NONE: tftPrint(1, myLanguage[language][30], 310, 56, PrimaryColor, PrimaryColorSmooth, 16); break;
|
||||
case BATTERY_VALUE: tftPrint(1, myLanguage[language][174], 310, 56, PrimaryColor, PrimaryColorSmooth, 16); break;
|
||||
case BATTERY_PERCENT: tftPrint(1, myLanguage[language][175], 310, 56, PrimaryColor, PrimaryColorSmooth, 16); break;
|
||||
}
|
||||
|
||||
if (radio.rds.rtbuffer) tftPrint(1, myLanguage[language][42], 310, 76, PrimaryColor, PrimaryColorSmooth, 16); else tftPrint(1, myLanguage[language][30], 310, 76, PrimaryColor, PrimaryColorSmooth, 16);
|
||||
break;
|
||||
|
||||
}
|
||||
@@ -1130,6 +1134,12 @@ void MenuUp() {
|
||||
}
|
||||
batteryoptionsold = batteryoptions;
|
||||
break;
|
||||
|
||||
case 70:
|
||||
if (radio.rds.rtbuffer) tftPrint(0, myLanguage[language][42], 155, 118, BackgroundColor, BackgroundColor, 28); else tftPrint(0, myLanguage[language][30], 155, 118, BackgroundColor, BackgroundColor, 28);
|
||||
if (radio.rds.rtbuffer) radio.rds.rtbuffer = false; else radio.rds.rtbuffer = true;
|
||||
if (radio.rds.rtbuffer) tftPrint(0, myLanguage[language][42], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -1523,6 +1533,13 @@ void MenuDown() {
|
||||
}
|
||||
batteryoptionsold = batteryoptions;
|
||||
break;
|
||||
|
||||
case 70:
|
||||
if (radio.rds.rtbuffer) tftPrint(0, myLanguage[language][42], 155, 118, BackgroundColor, BackgroundColor, 28); else tftPrint(0, myLanguage[language][30], 155, 118, BackgroundColor, BackgroundColor, 28);
|
||||
if (radio.rds.rtbuffer) radio.rds.rtbuffer = false; else radio.rds.rtbuffer = true;
|
||||
if (radio.rds.rtbuffer) tftPrint(0, myLanguage[language][42], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28);
|
||||
break;
|
||||
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -1821,6 +1838,10 @@ void DoMenu() {
|
||||
}
|
||||
batteryoptionsold = batteryoptions;
|
||||
break;
|
||||
|
||||
case 70:
|
||||
tftPrint(0, myLanguage[language][176], 155, 78, ActiveColor, ActiveColorSmooth, 28);
|
||||
if (radio.rds.rtbuffer) tftPrint(0, myLanguage[language][42], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28);
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// [number of languages][number of texts][max. length of text]
|
||||
|
||||
static const char* const myLanguage[16][176] = {
|
||||
static const char* const myLanguage[16][177] = {
|
||||
{ "English", // English
|
||||
"Rotary direction changed", // 1
|
||||
"Please release button", // 2
|
||||
@@ -176,7 +176,8 @@ static const char* const myLanguage[16][176] = {
|
||||
"Indigo", // 172
|
||||
"Battery options", // 173
|
||||
"Show voltage", // 174
|
||||
"Show percentage" // 175
|
||||
"Show percentage", // 175
|
||||
"RT buffering" // 176
|
||||
},
|
||||
|
||||
{ "Nederlands", // Dutch
|
||||
@@ -354,7 +355,8 @@ static const char* const myLanguage[16][176] = {
|
||||
"Indigo", // 172
|
||||
"Battery options", // 173
|
||||
"Show voltage", // 174
|
||||
"Show percentage" // 175
|
||||
"Show percentage", // 175
|
||||
"RT buffering" // 176
|
||||
},
|
||||
|
||||
{ "Polski", // Polish
|
||||
@@ -532,7 +534,8 @@ static const char* const myLanguage[16][176] = {
|
||||
"Indigo", // 172
|
||||
"Opcje baterii", // 173
|
||||
"Pokaz napiecie", // 174
|
||||
"Pokaz procent nalad." // 175
|
||||
"Pokaz procent nalad.", // 175
|
||||
"RT buffering" // 176
|
||||
},
|
||||
|
||||
{ "Hrvatski", // Croatian
|
||||
@@ -710,7 +713,8 @@ static const char* const myLanguage[16][176] = {
|
||||
"Indigo", // 172
|
||||
"Battery options", // 173
|
||||
"Show voltage", // 174
|
||||
"Show percentage" // 175
|
||||
"Show percentage", // 175
|
||||
"RT buffering" // 176
|
||||
},
|
||||
|
||||
{ "Ελληνικά", // Greek
|
||||
@@ -888,7 +892,8 @@ static const char* const myLanguage[16][176] = {
|
||||
"Ινδικό", // 172
|
||||
"Επιλογές μπαταρίας", // 173
|
||||
"Εμφάνιση τάσης", // 174
|
||||
"Εμφάνιση ποσοστού" // 175
|
||||
"Εμφάνιση ποσοστού", // 175
|
||||
"RT buffering" // 176
|
||||
},
|
||||
|
||||
{ "Romana", // Romanian
|
||||
@@ -1066,7 +1071,8 @@ static const char* const myLanguage[16][176] = {
|
||||
"Indigo", // 172
|
||||
"Battery options", // 173
|
||||
"Show voltage", // 174
|
||||
"Show percentage" // 175
|
||||
"Show percentage", // 175
|
||||
"RT buffering" // 176
|
||||
},
|
||||
|
||||
{ "Deutsch", // German
|
||||
@@ -1244,7 +1250,8 @@ static const char* const myLanguage[16][176] = {
|
||||
"Indigo", // 172
|
||||
"Akkuoptionen", // 173
|
||||
"Zeige Spannung", // 174
|
||||
"Zeige Prozente" // 175
|
||||
"Zeige Prozente", // 175
|
||||
"RT buffering" // 176
|
||||
},
|
||||
|
||||
{ "Czech", // Czech
|
||||
@@ -1422,7 +1429,8 @@ static const char* const myLanguage[16][176] = {
|
||||
"Indigo", // 172
|
||||
"Battery options", // 173
|
||||
"Show voltage", // 174
|
||||
"Show percentage" // 175
|
||||
"Show percentage", // 175
|
||||
"RT buffering" // 176
|
||||
},
|
||||
|
||||
{ "Slovak", // Slovak
|
||||
@@ -1600,7 +1608,8 @@ static const char* const myLanguage[16][176] = {
|
||||
"Indigo", // 172
|
||||
"Battery options", // 173
|
||||
"Show voltage", // 174
|
||||
"Show percentage" // 175
|
||||
"Show percentage", // 175
|
||||
"RT buffering" // 176
|
||||
},
|
||||
|
||||
{ "Français", // French
|
||||
@@ -1778,7 +1787,8 @@ static const char* const myLanguage[16][176] = {
|
||||
"Indigo", // 172
|
||||
"Options de batterie", // 173
|
||||
"Montrer la tension", // 174
|
||||
"Montrer le pourcentage" // 175
|
||||
"Montrer le pourcentage", // 175
|
||||
"RT buffering" // 176
|
||||
},
|
||||
|
||||
{ "Български", // Bulgarian
|
||||
@@ -1956,7 +1966,8 @@ static const char* const myLanguage[16][176] = {
|
||||
"Indigo", // 172
|
||||
"Battery options", // 173
|
||||
"Show voltage", // 174
|
||||
"Show percentage" // 175
|
||||
"Show percentage", // 175
|
||||
"RT buffering" // 176
|
||||
},
|
||||
|
||||
{ "Русский", // Russian
|
||||
@@ -2134,7 +2145,8 @@ static const char* const myLanguage[16][176] = {
|
||||
"Индиго", // 172
|
||||
"Варианты батареи", // 173
|
||||
"Показать значение батареи", // 174
|
||||
"Показать процент заряда батареи" // 175
|
||||
"Показать процент заряда батареи", // 175
|
||||
"RT buffering" // 176
|
||||
},
|
||||
|
||||
{ "Українська", // Ukranian
|
||||
@@ -2312,7 +2324,8 @@ static const char* const myLanguage[16][176] = {
|
||||
"Індиго", // 172
|
||||
"Варіанти батареї", // 173
|
||||
"Показати заряд батареї", // 174
|
||||
"Показати відсоток батареї" // 175
|
||||
"Показати відсоток батареї", // 175
|
||||
"RT buffering" // 176
|
||||
},
|
||||
|
||||
{ "Italiano", // Italian
|
||||
@@ -2490,7 +2503,8 @@ static const char* const myLanguage[16][176] = {
|
||||
"Indigo", // 172
|
||||
"Battery options", // 173
|
||||
"Show voltage", // 174
|
||||
"Show percentage" // 175
|
||||
"Show percentage", // 175
|
||||
"RT buffering" // 176
|
||||
},
|
||||
|
||||
{ "Simplified Chinese", // Simplified Chinese
|
||||
@@ -2668,7 +2682,8 @@ static const char* const myLanguage[16][176] = {
|
||||
"靛青", // 172
|
||||
"显示电池", // 173
|
||||
"电压值", // 174
|
||||
"电池百分比" // 175
|
||||
"电池百分比", // 175
|
||||
"RT buffering" // 176
|
||||
},
|
||||
|
||||
{ "Norsk", // Norwegian
|
||||
@@ -2846,7 +2861,8 @@ static const char* const myLanguage[16][176] = {
|
||||
"Indigo", // 172
|
||||
"Batterialternativer", // 173
|
||||
"Vis batteriverdi", // 174
|
||||
"Vis batteriprosent" // 175
|
||||
"Vis batteriprosent", // 175
|
||||
"RT buffering" // 176
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user