Bigfixing on RDS
This commit is contained in:
+73
-72
@@ -39,132 +39,112 @@ TFT_eSPI tft = TFT_eSPI(320, 240);
|
|||||||
TFT_eSPI tft = TFT_eSPI(240, 320);
|
TFT_eSPI tft = TFT_eSPI(240, 320);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
IPAddress remoteip;
|
|
||||||
bool nobattery;
|
|
||||||
byte af_counterold;
|
|
||||||
byte battery;
|
|
||||||
byte batteryold;
|
|
||||||
byte subnetclient;
|
|
||||||
int rssi;
|
|
||||||
int rssiold = 200;
|
|
||||||
bool edgebeep;
|
|
||||||
byte ECCold;
|
|
||||||
bool RDSSPYUSB;
|
|
||||||
bool RDSSPYTCP;
|
|
||||||
byte audiomode;
|
|
||||||
bool BWreset;
|
bool BWreset;
|
||||||
bool change2;
|
bool change2;
|
||||||
bool cleanup;
|
bool cleanup;
|
||||||
bool showsquelch;
|
|
||||||
byte amnb;
|
|
||||||
byte fmnb;
|
|
||||||
bool direction;
|
bool direction;
|
||||||
bool dropout;
|
bool dropout;
|
||||||
|
bool edgebeep;
|
||||||
bool EONold;
|
bool EONold;
|
||||||
bool fullsearchrds;
|
bool fullsearchrds;
|
||||||
bool showrdserrors;
|
|
||||||
bool LowLevelInit;
|
bool LowLevelInit;
|
||||||
bool memorystore;
|
bool memorystore;
|
||||||
bool menu;
|
bool menu;
|
||||||
bool menuopen;
|
bool menuopen;
|
||||||
|
bool nobattery;
|
||||||
bool power = true;
|
bool power = true;
|
||||||
|
bool RDSSPYTCP;
|
||||||
|
bool RDSSPYUSB;
|
||||||
bool RDSstatusold;
|
bool RDSstatusold;
|
||||||
bool screenmute;
|
bool screenmute;
|
||||||
bool seek;
|
bool seek;
|
||||||
bool setupmode;
|
bool setupmode;
|
||||||
|
bool showrdserrors;
|
||||||
|
bool showsquelch;
|
||||||
bool softmuteam;
|
bool softmuteam;
|
||||||
bool softmutefm;
|
bool softmutefm;
|
||||||
bool SQ;
|
bool SQ;
|
||||||
bool Stereostatusold;
|
bool Stereostatusold;
|
||||||
bool StereoToggle = true;
|
bool StereoToggle = true;
|
||||||
bool store;
|
bool store;
|
||||||
bool TPold;
|
|
||||||
bool TAold;
|
bool TAold;
|
||||||
|
bool TPold;
|
||||||
bool tuned;
|
bool tuned;
|
||||||
bool USBmode = 1;
|
bool USBmode = 1;
|
||||||
bool XDRMute;
|
|
||||||
bool XDRGTKdata;
|
|
||||||
bool wifi;
|
bool wifi;
|
||||||
bool wificonnected;
|
bool wificonnected;
|
||||||
|
bool XDRGTKdata;
|
||||||
bool XDRGTKTCP;
|
bool XDRGTKTCP;
|
||||||
bool XDRGTKUSB;
|
bool XDRGTKUSB;
|
||||||
byte region;
|
bool XDRMute;
|
||||||
byte regionold;
|
byte af_counterold;
|
||||||
|
byte amnb;
|
||||||
|
byte audiomode;
|
||||||
|
byte band;
|
||||||
|
byte battery;
|
||||||
|
byte batteryold;
|
||||||
|
byte BWset;
|
||||||
|
byte colorinvert;
|
||||||
|
byte ContrastSet;
|
||||||
|
byte displayflip;
|
||||||
|
byte ECCold;
|
||||||
|
byte EQset;
|
||||||
|
byte fmnb;
|
||||||
|
byte freqoldcount;
|
||||||
|
byte HighCutLevel;
|
||||||
|
byte HighCutOffset;
|
||||||
|
byte iMSEQ;
|
||||||
|
byte iMSset;
|
||||||
byte language;
|
byte language;
|
||||||
byte theme;
|
byte memoryband[30];
|
||||||
byte tunemode;
|
|
||||||
byte memorypos;
|
byte memorypos;
|
||||||
String salt;
|
|
||||||
String saltkey = " ";
|
|
||||||
byte memoryposold;
|
byte memoryposold;
|
||||||
byte menupage = 1;
|
byte menupage = 1;
|
||||||
byte menupagestotal = 4;
|
byte menupagestotal = 4;
|
||||||
byte MSold;
|
byte MSold;
|
||||||
byte band;
|
|
||||||
byte BWset;
|
|
||||||
byte ContrastSet;
|
|
||||||
byte displayflip;
|
|
||||||
byte EQset;
|
|
||||||
byte freqoldcount;
|
|
||||||
byte iMSEQ;
|
|
||||||
byte iMSset;
|
|
||||||
byte memoryband[30];
|
|
||||||
byte optenc;
|
byte optenc;
|
||||||
|
byte region;
|
||||||
|
byte regionold;
|
||||||
byte rotarymode;
|
byte rotarymode;
|
||||||
byte colorinvert;
|
byte showmodulation;
|
||||||
|
byte showSWMIBand = 1;
|
||||||
byte SNR;
|
byte SNR;
|
||||||
byte SNRold;
|
byte SNRold;
|
||||||
|
byte specialstepOIRT;
|
||||||
byte stepsize;
|
byte stepsize;
|
||||||
|
byte StereoLevel;
|
||||||
|
byte subnetclient;
|
||||||
byte TEF;
|
byte TEF;
|
||||||
|
byte theme;
|
||||||
|
byte tunemode;
|
||||||
char buff[16];
|
char buff[16];
|
||||||
String programServicePrevious;
|
|
||||||
char programTypePrevious[17];
|
char programTypePrevious[17];
|
||||||
char radioIdPrevious[6];
|
char radioIdPrevious[6];
|
||||||
String radioTextPrevious;
|
|
||||||
int AGC;
|
int AGC;
|
||||||
int BWOld;
|
int BWOld;
|
||||||
|
int bwupdatetimer;
|
||||||
int charWidth = tft.textWidth("AA");
|
int charWidth = tft.textWidth("AA");
|
||||||
unsigned int ConverterSet;
|
|
||||||
int DeEmphasis;
|
int DeEmphasis;
|
||||||
int ForceMono;
|
int ForceMono;
|
||||||
int freqold;
|
int freqold;
|
||||||
byte HighCutLevel;
|
|
||||||
byte HighCutOffset;
|
|
||||||
unsigned int HighEdgeSet;
|
|
||||||
int LevelOffset;
|
int LevelOffset;
|
||||||
unsigned int LowEdgeSet;
|
|
||||||
int LowLevelSet;
|
int LowLevelSet;
|
||||||
byte specialstepOIRT;
|
|
||||||
unsigned int LowEdgeOIRTSet;
|
|
||||||
unsigned int HighEdgeOIRTSet;
|
|
||||||
unsigned int LWHighEdgeSet;
|
|
||||||
unsigned int LWLowEdgeSet;
|
|
||||||
unsigned int MWHighEdgeSet;
|
|
||||||
unsigned int MWLowEdgeSet;
|
|
||||||
unsigned int SWHighEdgeSet;
|
|
||||||
unsigned int SWLowEdgeSet;
|
|
||||||
byte showSWMIBand = 1;
|
|
||||||
uint16_t SWMIBandPos;
|
|
||||||
uint16_t SWMIBandPosold; // Fix Me: Should store this parameter into flash, for use of restart.
|
|
||||||
String SWMIBandstring = String();
|
|
||||||
String SWMIBandstringold = String();
|
|
||||||
int lowsignaltimer;
|
int lowsignaltimer;
|
||||||
int bwupdatetimer;
|
|
||||||
int offsetupdatetimer;
|
|
||||||
int snrupdatetimer;
|
|
||||||
int menuoption = 30;
|
int menuoption = 30;
|
||||||
int MStatusold;
|
int MStatusold;
|
||||||
|
int offsetupdatetimer;
|
||||||
int OStatusold;
|
int OStatusold;
|
||||||
int peakholdold;
|
int peakholdold;
|
||||||
int peakholdtimer;
|
int peakholdtimer;
|
||||||
int rotary;
|
int rotary;
|
||||||
|
int rssi;
|
||||||
|
int rssiold = 200;
|
||||||
int scanner_filter;
|
int scanner_filter;
|
||||||
|
int snrupdatetimer;
|
||||||
int Sqstatusold;
|
int Sqstatusold;
|
||||||
int Squelch;
|
int Squelch;
|
||||||
int Squelchold;
|
int Squelchold;
|
||||||
int SStatusold;
|
int SStatusold;
|
||||||
byte StereoLevel;
|
|
||||||
byte showmodulation;
|
|
||||||
int Stereostatus;
|
int Stereostatus;
|
||||||
int VolSet;
|
int VolSet;
|
||||||
int volume;
|
int volume;
|
||||||
@@ -176,35 +156,44 @@ int16_t OStatus;
|
|||||||
int16_t SAvg;
|
int16_t SAvg;
|
||||||
int16_t SAvg2;
|
int16_t SAvg2;
|
||||||
int16_t SStatus;
|
int16_t SStatus;
|
||||||
|
IPAddress remoteip;
|
||||||
|
String cryptedpassword;
|
||||||
String PIold;
|
String PIold;
|
||||||
|
String programServicePrevious;
|
||||||
String PSold;
|
String PSold;
|
||||||
String PTYold;
|
String PTYold;
|
||||||
|
String radioTextPrevious;
|
||||||
String rds_clock;
|
String rds_clock;
|
||||||
String rds_clockold;
|
String rds_clockold;
|
||||||
String cryptedpassword;
|
|
||||||
String RDSSPYRDS;
|
String RDSSPYRDS;
|
||||||
String RDSSPYRDSold;
|
String RDSSPYRDSold;
|
||||||
String RTold;
|
String RTold;
|
||||||
|
String salt;
|
||||||
|
String saltkey = " ";
|
||||||
|
String SWMIBandstring = String();
|
||||||
|
String SWMIBandstringold = String();
|
||||||
String XDRGTK_key;
|
String XDRGTK_key;
|
||||||
String XDRGTKRDS;
|
String XDRGTKRDS;
|
||||||
String XDRGTKRDSold;
|
String XDRGTKRDSold;
|
||||||
uint16_t BW;
|
uint16_t BW;
|
||||||
uint16_t MStatus;
|
uint16_t MStatus;
|
||||||
|
uint16_t SWMIBandPos;
|
||||||
|
uint16_t SWMIBandPosold; // Fix Me: Should store this parameter into flash, for use of restart.
|
||||||
uint16_t USN;
|
uint16_t USN;
|
||||||
uint16_t WAM;
|
uint16_t WAM;
|
||||||
uint8_t buff_pos;
|
uint8_t buff_pos;
|
||||||
uint8_t RDSstatus;
|
uint8_t RDSstatus;
|
||||||
unsigned int change;
|
unsigned int change;
|
||||||
|
unsigned int ConverterSet;
|
||||||
unsigned int freq_scan;
|
unsigned int freq_scan;
|
||||||
unsigned int frequency;
|
unsigned int frequency;
|
||||||
unsigned int frequency_AM;
|
unsigned int frequency_AM;
|
||||||
unsigned int frequency_LW;
|
unsigned int frequency_LW;
|
||||||
unsigned int frequency_MW;
|
|
||||||
unsigned int frequency_SW;
|
|
||||||
unsigned int frequencyold;
|
|
||||||
unsigned int frequency_MIBand_11M; // Surive before tuner restart
|
unsigned int frequency_MIBand_11M; // Surive before tuner restart
|
||||||
|
unsigned int frequency_MIBand_120M;
|
||||||
unsigned int frequency_MIBand_13M;
|
unsigned int frequency_MIBand_13M;
|
||||||
unsigned int frequency_MIBand_15M;
|
unsigned int frequency_MIBand_15M;
|
||||||
|
unsigned int frequency_MIBand_160M;
|
||||||
unsigned int frequency_MIBand_16M;
|
unsigned int frequency_MIBand_16M;
|
||||||
unsigned int frequency_MIBand_19M;
|
unsigned int frequency_MIBand_19M;
|
||||||
unsigned int frequency_MIBand_22M;
|
unsigned int frequency_MIBand_22M;
|
||||||
@@ -215,12 +204,23 @@ unsigned int frequency_MIBand_49M;
|
|||||||
unsigned int frequency_MIBand_60M;
|
unsigned int frequency_MIBand_60M;
|
||||||
unsigned int frequency_MIBand_75M;
|
unsigned int frequency_MIBand_75M;
|
||||||
unsigned int frequency_MIBand_90M;
|
unsigned int frequency_MIBand_90M;
|
||||||
unsigned int frequency_MIBand_120M;
|
unsigned int frequency_MW;
|
||||||
unsigned int frequency_MIBand_160M;
|
unsigned int frequency_SW;
|
||||||
|
unsigned int frequencyold;
|
||||||
|
unsigned int HighEdgeOIRTSet;
|
||||||
|
unsigned int HighEdgeSet;
|
||||||
|
unsigned int LowEdgeOIRTSet;
|
||||||
|
unsigned int LowEdgeSet;
|
||||||
|
unsigned int LWHighEdgeSet;
|
||||||
|
unsigned int LWLowEdgeSet;
|
||||||
unsigned int memory[30];
|
unsigned int memory[30];
|
||||||
|
unsigned int MWHighEdgeSet;
|
||||||
|
unsigned int MWLowEdgeSet;
|
||||||
unsigned int scanner_end;
|
unsigned int scanner_end;
|
||||||
unsigned int scanner_start;
|
unsigned int scanner_start;
|
||||||
unsigned int scanner_step;
|
unsigned int scanner_step;
|
||||||
|
unsigned int SWHighEdgeSet;
|
||||||
|
unsigned int SWLowEdgeSet;
|
||||||
unsigned long peakholdmillis;
|
unsigned long peakholdmillis;
|
||||||
unsigned long rtticker;
|
unsigned long rtticker;
|
||||||
|
|
||||||
@@ -234,7 +234,7 @@ WiFiUDP Udp;
|
|||||||
void setup() {
|
void setup() {
|
||||||
setupmode = true;
|
setupmode = true;
|
||||||
EEPROM.begin(259);
|
EEPROM.begin(259);
|
||||||
if (EEPROM.readByte(43) != 27) DefaultSettings();
|
if (EEPROM.readByte(43) != 28) DefaultSettings();
|
||||||
|
|
||||||
frequency = EEPROM.readUInt(0);
|
frequency = EEPROM.readUInt(0);
|
||||||
VolSet = EEPROM.readInt(4);
|
VolSet = EEPROM.readInt(4);
|
||||||
@@ -2067,6 +2067,7 @@ void KeyUp() {
|
|||||||
if (colorinvert) colorinvert = 0; else colorinvert = 1;
|
if (colorinvert) colorinvert = 0; else colorinvert = 1;
|
||||||
tft.setTextColor(TFT_YELLOW);
|
tft.setTextColor(TFT_YELLOW);
|
||||||
if (colorinvert) tft.drawCentreString(myLanguage[language][42], 155, 110, GFXFF); else tft.drawCentreString(myLanguage[language][30], 155, 110, GFXFF);
|
if (colorinvert) tft.drawCentreString(myLanguage[language][42], 155, 110, GFXFF); else tft.drawCentreString(myLanguage[language][30], 155, 110, GFXFF);
|
||||||
|
tft.invertDisplay(colorinvert);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -2446,6 +2447,7 @@ void KeyDown() {
|
|||||||
if (colorinvert) colorinvert = 0; else colorinvert = 1;
|
if (colorinvert) colorinvert = 0; else colorinvert = 1;
|
||||||
tft.setTextColor(TFT_YELLOW);
|
tft.setTextColor(TFT_YELLOW);
|
||||||
if (colorinvert) tft.drawCentreString(myLanguage[language][42], 155, 110, GFXFF); else tft.drawCentreString(myLanguage[language][30], 155, 110, GFXFF);
|
if (colorinvert) tft.drawCentreString(myLanguage[language][42], 155, 110, GFXFF); else tft.drawCentreString(myLanguage[language][30], 155, 110, GFXFF);
|
||||||
|
tft.invertDisplay(colorinvert);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -4672,7 +4674,7 @@ void passwordcrypt() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void DefaultSettings() {
|
void DefaultSettings() {
|
||||||
EEPROM.writeByte(43, 27);
|
EEPROM.writeByte(43, 28);
|
||||||
EEPROM.writeUInt(0, 10000);
|
EEPROM.writeUInt(0, 10000);
|
||||||
EEPROM.writeInt(4, 0);
|
EEPROM.writeInt(4, 0);
|
||||||
EEPROM.writeUInt(8, 0);
|
EEPROM.writeUInt(8, 0);
|
||||||
@@ -4722,7 +4724,6 @@ void DefaultSettings() {
|
|||||||
EEPROM.writeByte(249, 0);
|
EEPROM.writeByte(249, 0);
|
||||||
EEPROM.writeUInt(250, 0);
|
EEPROM.writeUInt(250, 0);
|
||||||
EEPROM.writeUInt(254, 0);
|
EEPROM.writeUInt(254, 0);
|
||||||
EEPROM.writeByte(258,1);
|
EEPROM.writeByte(258, 0);
|
||||||
|
|
||||||
EEPROM.commit();
|
EEPROM.commit();
|
||||||
}
|
}
|
||||||
|
|||||||
+47
-8
@@ -315,11 +315,11 @@ void TEF6686::readRDS(bool showrdserrors)
|
|||||||
offset = rds.rdsB & 0x03; // Let's get the character offset for PS
|
offset = rds.rdsB & 0x03; // Let's get the character offset for PS
|
||||||
|
|
||||||
if (ps_process == true && offset == 8) { // Activates every time character offset is at 0, so whole message is received
|
if (ps_process == true && offset == 8) { // Activates every time character offset is at 0, so whole message is received
|
||||||
for (byte i = 0; i < 9; i++) PStext[i] = L'\0'; // First erase buffer
|
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
|
RDScharConverter(ps_buffer, PStext, sizeof(PStext) / sizeof(wchar_t)); // Convert 8 bit ASCII to 16 bit ASCII
|
||||||
String utf8String = convertToUTF8(PStext); // Convert RDS characterset to ASCII
|
String utf8String = convertToUTF8(PStext); // Convert RDS characterset to ASCII
|
||||||
rds.stationName = utf8String.substring(0, 8); // Make sure PS does not exceed 8 characters
|
rds.stationName = extractUTF8Substring(utf8String, 0, 8); // Make sure PS does not exceed 8 characters
|
||||||
}
|
}
|
||||||
|
|
||||||
ps_buffer[(offset * 2) + 0] = rds.rdsD >> 8; // First character of segment
|
ps_buffer[(offset * 2) + 0] = rds.rdsD >> 8; // First character of segment
|
||||||
ps_buffer[(offset * 2) + 1] = rds.rdsD & 0xFF; // Second character of segment
|
ps_buffer[(offset * 2) + 1] = rds.rdsD & 0xFF; // Second character of segment
|
||||||
@@ -329,9 +329,9 @@ void TEF6686::readRDS(bool showrdserrors)
|
|||||||
ps_counter ++; // Let's count each run
|
ps_counter ++; // Let's count each run
|
||||||
RDScharConverter(ps_buffer, PStext, sizeof(PStext) / sizeof(wchar_t)); // Convert 8 bit ASCII to 16 bit ASCII
|
RDScharConverter(ps_buffer, PStext, sizeof(PStext) / sizeof(wchar_t)); // Convert 8 bit ASCII to 16 bit ASCII
|
||||||
String utf8String = convertToUTF8(PStext); // Convert RDS characterset to ASCII
|
String utf8String = convertToUTF8(PStext); // Convert RDS characterset to ASCII
|
||||||
rds.stationName = utf8String.substring(0, 8); // Make sure PS does not exceed 8 characters
|
rds.stationName = extractUTF8Substring(utf8String, 0, 8);
|
||||||
if (ps_counter == 8) ps_process = true; // OK, we had 8 runs, now let's go the idle PS writing
|
if (ps_counter == 8) ps_process = true; // OK, we had 8 runs, now let's go the idle PS writing
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// PTY decoder
|
// PTY decoder
|
||||||
@@ -403,6 +403,7 @@ void TEF6686::readRDS(bool showrdserrors)
|
|||||||
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)); // Convert 8 bit ASCII to 16 bit 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 = convertToUTF8(RTtext); // Convert RDS characterset to ASCII
|
||||||
|
rds.stationText = extractUTF8Substring(rds.stationText, 0, 64); // Make sure PS does not exceed 64 characters
|
||||||
rds.stationText += " "; // Add extra space
|
rds.stationText += " "; // Add extra space
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
@@ -520,6 +521,44 @@ String TEF6686::convertToUTF8(const wchar_t* input) {
|
|||||||
return output;
|
return output;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String TEF6686::extractUTF8Substring(const String& utf8String, size_t start, size_t length) {
|
||||||
|
String substring;
|
||||||
|
size_t utf8Length = utf8String.length();
|
||||||
|
size_t utf8Index = 0;
|
||||||
|
size_t charIndex = 0;
|
||||||
|
|
||||||
|
while (utf8Index < utf8Length && charIndex < start + length) {
|
||||||
|
uint8_t currentByte = utf8String.charAt(utf8Index);
|
||||||
|
uint8_t numBytes = 0;
|
||||||
|
|
||||||
|
if (currentByte < 0x80) {
|
||||||
|
numBytes = 1;
|
||||||
|
} else if ((currentByte >> 5) == 0x6) {
|
||||||
|
numBytes = 2;
|
||||||
|
} else if ((currentByte >> 4) == 0xE) {
|
||||||
|
numBytes = 3;
|
||||||
|
} else if ((currentByte >> 3) == 0x1E) {
|
||||||
|
numBytes = 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (charIndex >= start) {
|
||||||
|
substring += utf8String.substring(utf8Index, utf8Index + numBytes);
|
||||||
|
}
|
||||||
|
|
||||||
|
utf8Index += numBytes;
|
||||||
|
charIndex++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (rds.underscore) {
|
||||||
|
while (substring.length() < length) {
|
||||||
|
substring += '_';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return substring;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void TEF6686::RDScharConverter(const char* input, wchar_t* output, size_t size) {
|
void TEF6686::RDScharConverter(const char* input, wchar_t* output, size_t size) {
|
||||||
for (size_t i = 0; i < size - 1; i++) {
|
for (size_t i = 0; i < size - 1; i++) {
|
||||||
char currentChar = input[i];
|
char currentChar = input[i];
|
||||||
|
|||||||
@@ -259,6 +259,7 @@ class TEF6686 {
|
|||||||
private:
|
private:
|
||||||
void RDScharConverter(const char* input, wchar_t* output, size_t size);
|
void RDScharConverter(const char* input, wchar_t* output, size_t size);
|
||||||
String convertToUTF8(const wchar_t* input);
|
String convertToUTF8(const wchar_t* input);
|
||||||
|
String extractUTF8Substring(const String& utf8String, size_t start, size_t length);
|
||||||
char ps_buffer[9];
|
char ps_buffer[9];
|
||||||
bool ps_process;
|
bool ps_process;
|
||||||
bool rt_process;
|
bool rt_process;
|
||||||
|
|||||||
+2
-2
@@ -70,7 +70,7 @@ static const char myLanguage[9][70][85] = {
|
|||||||
"Defaults loaded",
|
"Defaults loaded",
|
||||||
"Audio output",
|
"Audio output",
|
||||||
"FM OIRT 30 kHz steps",
|
"FM OIRT 30 kHz steps",
|
||||||
"Display color invert"
|
"Invert display"
|
||||||
},
|
},
|
||||||
|
|
||||||
{ "Nederlands", // Dutch
|
{ "Nederlands", // Dutch
|
||||||
@@ -142,7 +142,7 @@ static const char myLanguage[9][70][85] = {
|
|||||||
"Opnieuw geconfigureerd",
|
"Opnieuw geconfigureerd",
|
||||||
"Audio uitgang",
|
"Audio uitgang",
|
||||||
"FM OIRT 30 kHz steps",
|
"FM OIRT 30 kHz steps",
|
||||||
"Display color invert"
|
"Inverteer scherm"
|
||||||
},
|
},
|
||||||
|
|
||||||
{ "Polski", // Polish
|
{ "Polski", // Polish
|
||||||
|
|||||||
Reference in New Issue
Block a user