Fix for special characters RDS

This commit is contained in:
Sjef Verhoeven PE5PVB
2023-06-14 17:45:18 +02:00
parent f88c627d02
commit 06768fb5ab
5 changed files with 2160 additions and 3067 deletions
+56 -63
View File
@@ -10,11 +10,9 @@
#define GFXFF 1
#define FONT24 &Aura2CondensedPro_Regular24pt7b
#define FONT14 &Aura2CondensedPro_Regular14pt8b
#define FONT7 &Aura2CondensedPro_Light7pt8b
#define FONTRDS7 &Aura2RDS_Regular7pt8b
#define FONTRDS14 &Aura2RDS_Regular14pt8b
#define FONT24 &Aura2Regular24pt7b
#define FONT14 &Aura2Regular14pt8b
#define FONT7 &Aura2Pro_Light7pt8b
#define FONTDEC &Digital7num36pt7b
#define GUI2_FONT8 &Aura2Regular8pt8b
@@ -69,7 +67,6 @@ bool store;
bool TPold;
bool TAold;
bool tuned;
bool underscore;
bool USBstatus;
bool XDRMute;
byte region;
@@ -98,10 +95,10 @@ byte SNRold;
byte stepsize;
byte TEF;
char buff[16];
char programServicePrevious[9];
String programServicePrevious;
char programTypePrevious[17];
char radioIdPrevious[5];
char radioTextPrevious[65];
String radioTextPrevious;
int AGC;
int BWOld;
int charWidth = tft.textWidth("AA");
@@ -238,7 +235,7 @@ void setup() {
LowLevelSet = EEPROM.readInt(47);
memorypos = EEPROM.readByte(51);
region = EEPROM.readByte(52);
underscore = EEPROM.readByte(53);
radio.rds.underscore = EEPROM.readByte(53);
for (int i = 0; i < 30; i++) memoryband[i] = EEPROM.readByte(i + 60);
for (int i = 0; i < 30; i++) memory[i] = EEPROM.readUInt((i * 4) + 100);
@@ -250,13 +247,13 @@ void setup() {
if (iMSset == 1 && EQset == 0) iMSEQ = 4;
if (iMSset == 0 && EQset == 0) iMSEQ = 1;
switch(band) {
switch (band) {
case BAND_LW: frequency_LW = frequency_AM; break;
case BAND_MW: frequency_MW = frequency_AM; break;
case BAND_SW: frequency_SW = frequency_AM; break;
default: break;
}
tft.init();
if (displayflip == 0) {
@@ -588,9 +585,9 @@ void PWRButtonPress() {
} else {
if (tunemode != 2) {
if (band == BAND_FM) band = BAND_LW;
else if(band == BAND_LW) band = BAND_MW;
else if(band == BAND_MW) band = BAND_SW;
else if(band == BAND_SW) band = BAND_FM;
else if (band == BAND_LW) band = BAND_MW;
else if (band == BAND_MW) band = BAND_SW;
else if (band == BAND_SW) band = BAND_FM;
StoreFrequency();
SelectBand();
}
@@ -621,27 +618,27 @@ void StoreFrequency() {
}
void LimitAMFrequency() {
switch(band){
switch (band) {
case BAND_LW:
frequency_AM = frequency_LW;
if(frequency_AM > FREQ_LW_END || frequency_AM < FREQ_LW_START) {
if (frequency_AM > FREQ_LW_END || frequency_AM < FREQ_LW_START) {
frequency_AM = FREQ_LW_START;
}
break;
break;
case BAND_MW:
frequency_AM = frequency_MW;
if(frequency_AM > (region == 0 ? FREQ_MW_END_EU : FREQ_MW_END_US) || frequency_AM < (region == 0 ? FREQ_MW_START_EU : FREQ_MW_START_US)) {
if (frequency_AM > (region == 0 ? FREQ_MW_END_EU : FREQ_MW_END_US) || frequency_AM < (region == 0 ? FREQ_MW_START_EU : FREQ_MW_START_US)) {
frequency_AM = region == 0 ? FREQ_MW_START_EU : FREQ_MW_START_US;
}
break;
break;
case BAND_SW:
frequency_AM = frequency_SW;
if(frequency_AM > FREQ_SW_END || frequency_AM < FREQ_SW_START) {
if (frequency_AM > FREQ_SW_END || frequency_AM < FREQ_SW_START) {
frequency_AM = FREQ_SW_START;
}
break;
break;
default:
break;
break;
}
}
@@ -783,7 +780,7 @@ void ModeButtonPress() {
EEPROM.writeByte(36, showrdserrors);
EEPROM.writeInt(47, LowLevelSet);
EEPROM.writeByte(52, region);
EEPROM.writeByte(53, underscore);
EEPROM.writeByte(53, radio.rds.underscore);
EEPROM.commit();
}
while (digitalRead(MODEBUTTON) == LOW) delay(50);
@@ -1044,7 +1041,7 @@ void ButtonPress() {
tft.setTextColor(TFT_WHITE);
tft.drawCentreString(myLanguage[language][49], 155, 70, GFXFF);
tft.setTextColor(TFT_YELLOW);
if (underscore) tft.drawCentreString(myLanguage[language][42], 155, 110, GFXFF); else tft.drawCentreString(myLanguage[language][30], 155, 110, GFXFF);
if (radio.rds.underscore) tft.drawCentreString(myLanguage[language][42], 155, 110, GFXFF); else tft.drawCentreString(myLanguage[language][30], 155, 110, GFXFF);
break;
}
}
@@ -1274,10 +1271,10 @@ void KeyUp() {
case 150:
tft.setTextColor(TFT_BLACK);
if (underscore) tft.drawCentreString(myLanguage[language][42], 155, 110, GFXFF); else tft.drawCentreString(myLanguage[language][30], 155, 110, GFXFF);
if (underscore) underscore = false; else underscore = true;
if (radio.rds.underscore) tft.drawCentreString(myLanguage[language][42], 155, 110, GFXFF); else tft.drawCentreString(myLanguage[language][30], 155, 110, GFXFF);
if (radio.rds.underscore) radio.rds.underscore = false; else radio.rds.underscore = true;
tft.setTextColor(TFT_YELLOW);
if (underscore) tft.drawCentreString(myLanguage[language][42], 155, 110, GFXFF); else tft.drawCentreString(myLanguage[language][30], 155, 110, GFXFF);
if (radio.rds.underscore) tft.drawCentreString(myLanguage[language][42], 155, 110, GFXFF); else tft.drawCentreString(myLanguage[language][30], 155, 110, GFXFF);
}
}
}
@@ -1504,10 +1501,10 @@ void KeyDown() {
case 150:
tft.setTextColor(TFT_BLACK);
if (underscore) tft.drawCentreString(myLanguage[language][42], 155, 110, GFXFF); else tft.drawCentreString(myLanguage[language][30], 155, 110, GFXFF);
if (underscore) underscore = false; else underscore = true;
if (radio.rds.underscore) tft.drawCentreString(myLanguage[language][42], 155, 110, GFXFF); else tft.drawCentreString(myLanguage[language][30], 155, 110, GFXFF);
if (radio.rds.underscore) radio.rds.underscore = false; else radio.rds.underscore = true;
tft.setTextColor(TFT_YELLOW);
if (underscore) tft.drawCentreString(myLanguage[language][42], 155, 110, GFXFF); else tft.drawCentreString(myLanguage[language][30], 155, 110, GFXFF);
if (radio.rds.underscore) tft.drawCentreString(myLanguage[language][42], 155, 110, GFXFF); else tft.drawCentreString(myLanguage[language][30], 155, 110, GFXFF);
}
}
}
@@ -1549,12 +1546,12 @@ void readRds() {
tft.setTextColor(TFT_SKYBLUE);
tft.setFreeFont(FONT14);
tft.drawString(PIold, 244, 183, GFXFF);
tft.setFreeFont(FONTRDS14);
tft.setFreeFont(FONT14);
tft.drawString(PSold, 38, 183, GFXFF);
tft.setFreeFont(FONT7);
tft.drawString(PTYold, 38, 164, GFXFF);
tft.setTextColor(TFT_BLACK);
tft.setFreeFont(FONTRDS7);
tft.setFreeFont(FONT7);
tft.drawString(RTold, 1, 223, GFXFF);
dropout = true;
} else {
@@ -1562,7 +1559,7 @@ void readRds() {
tft.setTextColor(TFT_YELLOW);
tft.setFreeFont(FONT14);
tft.drawString(PIold, 244, 183, GFXFF);
tft.setFreeFont(FONTRDS14);
tft.setFreeFont(FONT14);
tft.drawString(PSold, 38, 183, GFXFF);
tft.setFreeFont(FONT7);
tft.drawString(PTYold, 38, 164, GFXFF);
@@ -1620,22 +1617,14 @@ void showPTY() {
}
void showPS() {
if (strcmp(radio.rds.stationName, programServicePrevious)) {
tft.setFreeFont(FONTRDS14);
if (radio.rds.stationName != programServicePrevious) {
tft.setFreeFont(FONT14);
tft.setTextColor(TFT_BLACK);
tft.drawString(PSold, 38, 183, GFXFF);
tft.setTextColor(TFT_YELLOW);
if (underscore) {
char PS_[9];
strcpy (PS_, radio.rds.stationName);
for (int i = 0; i < 8; i++) if (PS_[i] == 0x20) PS_[i] = '_';
tft.drawString(PS_, 38, 183, GFXFF);
PSold = PS_;
} else {
tft.drawString(radio.rds.stationName, 38, 183, GFXFF);
PSold = radio.rds.stationName;
}
strcpy(programServicePrevious, radio.rds.stationName);
tft.drawString(radio.rds.stationName, 38, 183, GFXFF);
PSold = radio.rds.stationName;
programServicePrevious = radio.rds.stationName;
}
}
@@ -1644,7 +1633,7 @@ void showRadioText() {
if (millis() - rtticker >= 350) {
xPos -= charWidth;
if (xPos < -tft.textWidth(radio.rds.stationText) + (charWidth * 24)) xPos = 6;
sprite.setFreeFont(FONTRDS7);
sprite.setFreeFont(FONT7);
sprite.setTextDatum(ML_DATUM);
sprite.fillSprite(TFT_BLACK);
sprite.setTextColor(TFT_YELLOW);
@@ -1652,7 +1641,7 @@ void showRadioText() {
sprite.pushSprite(1, 223);
rtticker = millis();
RTold = radio.rds.stationText;
strcpy(radioTextPrevious, radio.rds.stationText);
radioTextPrevious = radio.rds.stationText;
cleanup = true;
}
} else if (cleanup == true) {
@@ -1800,7 +1789,7 @@ void BuildMenu() {
if (edgebeep) tft.drawRightString(myLanguage[language][42], 305, 110, GFXFF); else tft.drawRightString(myLanguage[language][30], 305, 110, GFXFF);
if (region == 0) tft.drawRightString(myLanguage[language][47], 305, 130, GFXFF);
if (region == 1) tft.drawRightString(myLanguage[language][48], 305, 130, GFXFF);
if (underscore) tft.drawRightString(myLanguage[language][42], 305, 150, GFXFF); else tft.drawRightString(myLanguage[language][30], 305, 150, GFXFF);
if (radio.rds.underscore) tft.drawRightString(myLanguage[language][42], 305, 150, GFXFF); else tft.drawRightString(myLanguage[language][30], 305, 150, GFXFF);
break;
}
analogWrite(SMETERPIN, 0);
@@ -1890,10 +1879,10 @@ void BuildDisplay() {
}
tft.setTextColor(TFT_SKYBLUE);
tft.setFreeFont(FONT7);
if (band == BAND_LW) tft.drawString("LW", 50, 26, GFXFF);
else if(band == BAND_MW) tft.drawString("MW", 50, 26, GFXFF);
else if(band == BAND_SW) tft.drawString("SW", 50, 26, GFXFF);
else tft.drawString("FM", 50, 26, GFXFF);
if (band == BAND_LW) tft.drawString("LW", 50, 26, GFXFF);
else if (band == BAND_MW) tft.drawString("MW", 50, 26, GFXFF);
else if (band == BAND_SW) tft.drawString("SW", 50, 26, GFXFF);
else tft.drawString("FM", 50, 26, GFXFF);
tft.setTextColor(TFT_GREYOUT);
tft.drawString("S", 162, 184, GFXFF);
tft.drawRightString("M", 185, 184, GFXFF);
@@ -2023,8 +2012,8 @@ void BuildDisplay() {
rds_clockold = "";
strcpy(programTypePrevious, "");
strcpy(radioIdPrevious, "");
strcpy(programServicePrevious, "");
strcpy(radioTextPrevious, "");
programServicePrevious = "";
radioTextPrevious = "";
}
void ShowFreq(int mode) {
@@ -2451,6 +2440,8 @@ void updateiMS() {
}
radio.setiMS(0);
}
} else {
tft.setTextColor(TFT_GREYOUT);
}
tft.drawCentreString("iMS", 264, 54, GFXFF);
}
@@ -2471,6 +2462,8 @@ void updateEQ() {
}
radio.setEQ(0);
}
} else {
tft.setTextColor(TFT_GREYOUT);
}
tft.drawCentreString("EQ", 302, 54, GFXFF);
}
@@ -2764,15 +2757,15 @@ void XDRGTKRoutine() {
band = BAND_FM;
SelectBand();
Serial.print("M0\nT" + String(frequency * 10) + "\n");
} else if (XDRband == BAND_LW){
} else if (XDRband == BAND_LW) {
band = BAND_LW;
SelectBand();
Serial.print("M1\nT" + String(frequency_AM) + "\n");
} else if (XDRband == BAND_MW){
} else if (XDRband == BAND_MW) {
band = BAND_MW;
SelectBand();
Serial.print("M2\nT" + String(frequency_AM) + "\n");
} else if (XDRband == BAND_SW){
} else if (XDRband == BAND_SW) {
band = BAND_SW;
SelectBand();
Serial.print("M3\nT" + String(frequency_AM) + "\n");
@@ -2792,7 +2785,7 @@ void XDRGTKRoutine() {
radio.SetFreqAM(frequency_AM);
}
Serial.print("M1\n");
} else if(freqtemp >= (region == 0 ? FREQ_MW_START_EU : FREQ_MW_START_US) && freqtemp <= (region == 0 ? FREQ_MW_END_EU : FREQ_MW_END_US)) {
} else if (freqtemp >= (region == 0 ? FREQ_MW_START_EU : FREQ_MW_START_US) && freqtemp <= (region == 0 ? FREQ_MW_END_EU : FREQ_MW_END_US)) {
frequency_AM = freqtemp;
if (band != BAND_MW) {
band = BAND_MW;
@@ -2801,7 +2794,7 @@ void XDRGTKRoutine() {
radio.SetFreqAM(frequency_AM);
}
Serial.print("M2\n");
} else if(freqtemp >= FREQ_SW_START && freqtemp <= FREQ_SW_END) {
} else if (freqtemp >= FREQ_SW_START && freqtemp <= FREQ_SW_END) {
frequency_AM = freqtemp;
if (band != BAND_SW) {
band = BAND_SW;
@@ -2979,7 +2972,7 @@ void TuneUp() {
if (region == 0) {
temp = FREQ_MW_STEP_9K;
frequency_AM = (frequency_AM / FREQ_MW_STEP_9K) * FREQ_MW_STEP_9K;
}else if(region == 1) {
} else if (region == 1) {
temp = FREQ_MW_STEP_10K;
frequency_AM = (frequency_AM / FREQ_MW_STEP_10K) * FREQ_MW_STEP_10K;
}
@@ -3036,7 +3029,7 @@ void TuneUp() {
void TuneDown() {
unsigned int temp;
if (stepsize == 0) {
if (band != BAND_FM) {
if (band != BAND_FM) {
if (frequency_AM <= FREQ_SW_START) {
if (frequency_AM == 2000) { // Fix Me :take care of 9K/10K Step
frequency_AM = 1998;
@@ -3083,7 +3076,7 @@ void TuneDown() {
}
radio.SetFreqAM(frequency_AM);
frequency_MW = frequency_AM;
}else if (band == BAND_SW) {
} else if (band == BAND_SW) {
frequency_AM -= temp;
if (frequency_AM < FREQ_SW_START) {
frequency_AM = FREQ_SW_END;
+151 -9
View File
@@ -298,10 +298,10 @@ bool TEF6686::readRDS(bool showrdserrors)
}
if (ps_process == 2) {
strcpy(rds.stationName, ps_buffer);
// strcpy(rds.stationName, ps_buffer);
RDScharConverter(ps_buffer, rds.PStext, sizeof(rds.PStext) / sizeof(wchar_t));
rds.RDSPS = convertToUTF8(rds.PStext);
rds.stationName = convertToUTF8(rds.PStext);
for (int i = 0; i < 9; i++) ps_buffer[i] = '\0';
ps_process = 0;
@@ -364,8 +364,13 @@ bool TEF6686::readRDS(bool showrdserrors)
if (rds.rtAB != ABold) {
offsetold = 0;
for (int i = 0; i < 65; i++) rds.stationText[i] = 0;
if (rt_timer == 64) strcpy(rds.stationText, stationTextBuffer);
rds.stationText = "";
//for (int i = 0; i < 65; i++) rds.stationText[i] = 0;
if (rt_timer == 64) {
// strcpy(rds.stationText, stationTextBuffer);
RDScharConverter(stationTextBuffer, rds.RTtext, sizeof(rds.RTtext) / sizeof(wchar_t));
rds.stationText = convertToUTF8(rds.RTtext);
}
for (int i = 0; i < 65; i++) {
rt_buffer[i] = 0;
@@ -394,7 +399,9 @@ bool TEF6686::readRDS(bool showrdserrors)
strcpy(stationTextBuffer, rt_buffer);
for (int i = 0; i < 64; i++) stationTextBuffer[i] = stationTextBuffer[i];
if (rt_timer < 64) {
strcpy(rds.stationText, stationTextBuffer);
// strcpy(rds.stationText, stationTextBuffer);
RDScharConverter(stationTextBuffer, rds.RTtext, sizeof(rds.RTtext) / sizeof(wchar_t));
rds.stationText = convertToUTF8(rds.RTtext);
rt_timer++;
} else {
rt_timer = 64;
@@ -529,12 +536,13 @@ void TEF6686::clearRDS (bool fullsearchrds)
{
devTEF_Radio_Set_RDS(fullsearchrds);
uint8_t i;
rds.stationName = "";
rds.stationText = "";
for (i = 0; i < 9; i++) {
rds.stationName[i] = 0;
// rds.stationName[i] = 0;
ps_buffer[i] = 0;
}
for (i = 0; i < 65; i++) {
rds.stationText[i] = 0;
stationTextBuffer[i] = 0;
rt_buffer[i] = 0;
rt_buffer2[i] = 0;
@@ -619,8 +627,142 @@ void TEF6686::RDScharConverter(const char* input, wchar_t* output, size_t size)
for (size_t i = 0; i < size - 1; i++) {
char currentChar = input[i];
switch (currentChar) {
case 0x45: output[i] = L'ë'; break; // Test convert E to ë
default: output[i] = static_cast<wchar_t>(currentChar); break;
case 0x20: if(rds.underscore) output[i] = L'_'; else output[i] = L' '; break;
case 0x21 ... 0x5D: output[i] = static_cast<wchar_t>(currentChar); break;
case 0x5E: output[i] = L''; break;
case 0x5F: output[i] = L'_'; break;
case 0x60: output[i] = L''; break;
case 0x61 ... 0x7d: output[i] = static_cast<wchar_t>(currentChar); break;
case 0x7E: output[i] = L'¯'; break;
case 0x7F: output[i] = L' '; break;
case 0x80: output[i] = L'á'; break;
case 0x81: output[i] = L'à'; break;
case 0x82: output[i] = L'é'; break;
case 0x83: output[i] = L'è'; break;
case 0x84: output[i] = L'í'; break;
case 0x85: output[i] = L'ì'; break;
case 0x86: output[i] = L'ó'; break;
case 0x87: output[i] = L'ò'; break;
case 0x88: output[i] = L'ú'; break;
case 0x89: output[i] = L'ù'; break;
case 0x8A: output[i] = L'Ñ'; break;
case 0x8B: output[i] = L'Ç'; break;
case 0x8C: output[i] = L'Ş'; break;
case 0x8D: output[i] = L'β'; break;
case 0x8E: output[i] = L'¡'; break;
case 0x8F: output[i] = L'IJ'; break;
case 0x90: output[i] = L'â'; break;
case 0x91: output[i] = L'ä'; break;
case 0x92: output[i] = L'ê'; break;
case 0x93: output[i] = L'ë'; break;
case 0x94: output[i] = L'î'; break;
case 0x95: output[i] = L'ï'; break;
case 0x96: output[i] = L'ô'; break;
case 0x97: output[i] = L'ö'; break;
case 0x98: output[i] = L'û'; break;
case 0x99: output[i] = L'ü'; break;
case 0x9A: output[i] = L'ñ'; break;
case 0x9B: output[i] = L'ç'; break;
case 0x9C: output[i] = L'ş'; break;
case 0x9D: output[i] = L'ǧ'; break;
case 0x9E: output[i] = L'ı'; break;
case 0x9F: output[i] = L'ij'; break;
case 0xA0: output[i] = L'ª'; break;
case 0xA1: output[i] = L'α'; break;
case 0xA2: output[i] = L'©'; break;
case 0xA3: output[i] = L''; break;
case 0xA4: output[i] = L'Ǧ'; break;
case 0xA5: output[i] = L'ě'; break;
case 0xA6: output[i] = L'ň'; break;
case 0xA7: output[i] = L'ő'; break;
case 0xA8: output[i] = L'π'; break;
case 0xA9: output[i] = L''; break;
case 0xAA: output[i] = L'£'; break;
case 0xAB: output[i] = L'$'; break;
case 0xAC: output[i] = L''; break;
case 0xAD: output[i] = L''; break;
case 0xAE: output[i] = L''; break;
case 0xAF: output[i] = L''; break;
case 0xB0: output[i] = L'º'; break;
case 0xB1: output[i] = L'¹'; break;
case 0xB2: output[i] = L'²'; break;
case 0xB3: output[i] = L'³'; break;
case 0xB4: output[i] = L'±'; break;
case 0xB5: output[i] = L'İ'; break;
case 0xB6: output[i] = L'ń'; break;
case 0xB7: output[i] = L'ű'; break;
case 0xB8: output[i] = L'µ'; break;
case 0xB9: output[i] = L'¿'; break;
case 0xBA: output[i] = L'÷'; break;
case 0xBB: output[i] = L'°'; break;
case 0xBC: output[i] = L'¼'; break;
case 0xBD: output[i] = L'½'; break;
case 0xBE: output[i] = L'¾'; break;
case 0xBF: output[i] = L'§'; break;
case 0xC0: output[i] = L'Á'; break;
case 0xC1: output[i] = L'À'; break;
case 0xC2: output[i] = L'É'; break;
case 0xC3: output[i] = L'È'; break;
case 0xC4: output[i] = L'Í'; break;
case 0xC5: output[i] = L'Ì'; break;
case 0xC6: output[i] = L'Ó'; break;
case 0xC7: output[i] = L'Ò'; break;
case 0xC8: output[i] = L'Ú'; break;
case 0xC9: output[i] = L'Ù'; break;
case 0xCA: output[i] = L'Ř'; break;
case 0xCB: output[i] = L'Č'; break;
case 0xCC: output[i] = L'Š'; break;
case 0xCD: output[i] = L'Ž'; break;
case 0xCE: output[i] = L'Ð'; break;
case 0xCF: output[i] = L'Ŀ'; break;
case 0xD0: output[i] = L'Â'; break;
case 0xD1: output[i] = L'Ä'; break;
case 0xD2: output[i] = L'Ê'; break;
case 0xD3: output[i] = L'Ë'; break;
case 0xD4: output[i] = L'Î'; break;
case 0xD5: output[i] = L'Ï'; break;
case 0xD6: output[i] = L'Ô'; break;
case 0xD7: output[i] = L'Ö'; break;
case 0xD8: output[i] = L'Û'; break;
case 0xD9: output[i] = L'Ü'; break;
case 0xDA: output[i] = L'ř'; break;
case 0xDB: output[i] = L'č'; break;
case 0xDC: output[i] = L'š'; break;
case 0xDD: output[i] = L'ž'; break;
case 0xDE: output[i] = L'đ'; break;
case 0xDF: output[i] = L'ŀ'; break;
case 0xE0: output[i] = L'Ã'; break;
case 0xE1: output[i] = L'Å'; break;
case 0xE2: output[i] = L'Æ'; break;
case 0xE3: output[i] = L'Œ'; break;
case 0xE4: output[i] = L'ŷ'; break;
case 0xE5: output[i] = L'Ý'; break;
case 0xE6: output[i] = L'Õ'; break;
case 0xE7: output[i] = L'Ø'; break;
case 0xE8: output[i] = L'Þ'; break;
case 0xE9: output[i] = L'Ŋ'; break;
case 0xEA: output[i] = L'Ŕ'; break;
case 0xEB: output[i] = L'Ć'; break;
case 0xEC: output[i] = L'Ś'; break;
case 0xED: output[i] = L'Ź'; break;
case 0xEE: output[i] = L'Ŧ'; break;
case 0xEF: output[i] = L'ð'; break;
case 0xF0: output[i] = L'ã'; break;
case 0xF1: output[i] = L'å'; break;
case 0xF2: output[i] = L'æ'; break;
case 0xF3: output[i] = L'œ'; break;
case 0xF4: output[i] = L'ŵ'; break;
case 0xF5: output[i] = L'ý'; break;
case 0xF6: output[i] = L'õ'; break;
case 0xF7: output[i] = L'ø'; break;
case 0xF8: output[i] = L'þ'; break;
case 0xF9: output[i] = L'ŋ'; break;
case 0xFA: output[i] = L'ŕ'; break;
case 0xFB: output[i] = L'ć'; break;
case 0xFC: output[i] = L'ś'; break;
case 0xFD: output[i] = L'ź'; break;
case 0xFE: output[i] = L'ŧ'; break;
case 0xFF: output[i] = L' '; break;
}
}
output[size - 1] = L'\0';
+4 -3
View File
@@ -138,10 +138,10 @@ typedef struct _rds_ {
byte region;
byte stationTypeCode;
byte MS;
char stationName[9];
wchar_t PStext[9] = L"";
String RDSPS;
char stationText[65];
wchar_t RTtext[65] = L"";
String stationName;
String stationText;
char stationType[17];
char musicTitle[48];
char musicArtist[48];
@@ -170,6 +170,7 @@ typedef struct _rds_ {
bool rtAB;
bool correct;
bool correctPI;
bool underscore;
} rds_;
typedef struct _af_ {
+1940 -2983
View File
File diff suppressed because it is too large Load Diff
+9 -9
View File
@@ -50,7 +50,7 @@ const char myLanguage[9][50][100] = {
"Region",
"Europe",
"USA",
"Show underscore in PS"
"Show underscore in RDS"
},
{ "Nederlands", // Dutch
@@ -102,7 +102,7 @@ const char myLanguage[9][50][100] = {
"Regio",
"Europa",
"USA",
"Toon underscore in PS"
"Toon underscore in RDS"
},
{ "Polski", // Polish
@@ -154,7 +154,7 @@ const char myLanguage[9][50][100] = {
"Region",
"Europe",
"USA",
"Show underscore in PS"
"Show underscore in RDS"
},
{"Hrvatski", // Croatian
@@ -206,7 +206,7 @@ const char myLanguage[9][50][100] = {
"Region",
"Europe",
"USA",
"Show underscore in PS"
"Show underscore in RDS"
},
{"Ελληνικά", // Greek
@@ -258,7 +258,7 @@ const char myLanguage[9][50][100] = {
"Περιοχή",
"Ευρώπη",
"Η.Π.Α.",
"Εμφάνιση κάτω παύλας στο PS"
"Εμφάνιση κάτω παύλας στο RDS"
},
{ "Romana", // Romana
@@ -310,7 +310,7 @@ const char myLanguage[9][50][100] = {
"Regiune",
"Europa",
"SUA",
"Arata evidentiat in PS"
"Arata evidentiat in RDS"
},
{ "Deutsch", // German
@@ -362,7 +362,7 @@ const char myLanguage[9][50][100] = {
"Region",
"Europa",
"USA",
"Zeige Unterstrich im PS"
"Zeige Unterstrich im RDS"
},
{ "Czech", // English
"Směr enkóderu byl změněn",
@@ -413,7 +413,7 @@ const char myLanguage[9][50][100] = {
"Region",
"Evropa",
"USA",
"Zobrazit podtržítka v PS"
"Zobrazit podtržítka v RDS"
},
{ "Slovak", // English
"Smer enkóderu bol zmenený",
@@ -464,6 +464,6 @@ const char myLanguage[9][50][100] = {
"Region",
"Európa",
"USA",
"Zobraziť podtržítka v PS"
"Zobraziť podtržítka v RDS"
},
};