This commit is contained in:
Sjef Verhoeven PE5PVB
2023-07-16 01:20:02 +02:00
parent 755f288781
commit 406fe4762f
7 changed files with 181 additions and 28 deletions
+64 -6
View File
@@ -40,6 +40,8 @@ TFT_eSPI tft = TFT_eSPI(240, 320);
#endif #endif
bool advancedRDS; bool advancedRDS;
bool af;
bool aftest;
bool afpage; bool afpage;
bool afscreen; bool afscreen;
bool artheadold; bool artheadold;
@@ -277,6 +279,8 @@ unsigned long rttickerhold;
unsigned long rtplusticker; unsigned long rtplusticker;
unsigned long rtplustickerhold; unsigned long rtplustickerhold;
unsigned long aftimer;
TEF6686 radio; TEF6686 radio;
TFT_eSprite sprite = TFT_eSprite(&tft); TFT_eSprite sprite = TFT_eSprite(&tft);
TFT_eSprite sprite2 = TFT_eSprite(&tft); TFT_eSprite sprite2 = TFT_eSprite(&tft);
@@ -345,7 +349,8 @@ void setup() {
fmdefaultstepsize = EEPROM.readByte(EE_BYTE_FMDEFAULTSTEPSIZE); fmdefaultstepsize = EEPROM.readByte(EE_BYTE_FMDEFAULTSTEPSIZE);
screensaverset = EEPROM.readByte(EE_BYTE_SCREENSAVERSET); screensaverset = EEPROM.readByte(EE_BYTE_SCREENSAVERSET);
AMLevelOffset = EEPROM.readInt(EE_INT_AMLEVELOFFSET); AMLevelOffset = EEPROM.readInt(EE_INT_AMLEVELOFFSET);
unit = EEPROM.readByte(EE_BYTE_UINT); unit = EEPROM.readByte(EE_BYTE_UNIT);
af = EEPROM.readByte(EE_BYTE_AF);
LWLowEdgeSet = FREQ_LW_LOW_EDGE_MIN; // later will read from flash LWLowEdgeSet = FREQ_LW_LOW_EDGE_MIN; // later will read from flash
LWHighEdgeSet = FREQ_LW_HIGH_EDGE_MAX; // later will read from flash LWHighEdgeSet = FREQ_LW_HIGH_EDGE_MAX; // later will read from flash
@@ -610,11 +615,34 @@ void setup() {
} }
void loop() { void loop() {
Communication();
if (digitalRead(BANDBUTTON) == LOW && XDRGTKUSB == false && XDRGTKTCP == false) BANDBUTTONPress(); if (digitalRead(BANDBUTTON) == LOW && XDRGTKUSB == false && XDRGTKTCP == false) BANDBUTTONPress();
if (power == true) { if (power == true) {
Communication();
if (af) {
if (aftest && millis() >= aftimer + 5000) {
aftimer = millis();
aftest = false;
frequency = radio.TestAF();
if (freqold != frequency) {
ShowFreq(0);
store = true;
}
}
if (millis() >= aftimer + 10000) {
aftimer = millis();
if (USN > 150 || WAM > 150) {
frequency = radio.TestAF();
if (freqold != frequency) {
ShowFreq(0);
store = true;
}
}
}
}
if (seek == true) Seek(direction); if (seek == true) Seek(direction);
if ((SStatus / 10 > LowLevelSet) && LowLevelInit == false && menu == false && band == BAND_FM) { if ((SStatus / 10 > LowLevelSet) && LowLevelInit == false && menu == false && band == BAND_FM) {
@@ -1551,7 +1579,8 @@ void ModeButtonPress() {
EEPROM.writeByte(EE_BYTE_FMDEFAULTSTEPSIZE, fmdefaultstepsize); EEPROM.writeByte(EE_BYTE_FMDEFAULTSTEPSIZE, fmdefaultstepsize);
EEPROM.writeByte(EE_BYTE_SCREENSAVERSET, screensaverset); EEPROM.writeByte(EE_BYTE_SCREENSAVERSET, screensaverset);
EEPROM.writeInt(EE_INT_AMLEVELOFFSET, AMLevelOffset); EEPROM.writeInt(EE_INT_AMLEVELOFFSET, AMLevelOffset);
EEPROM.writeByte(EE_BYTE_UINT, unit); EEPROM.writeByte(EE_BYTE_UNIT, unit);
EEPROM.writeByte(EE_BYTE_AF, af);
EEPROM.commit(); EEPROM.commit();
Serial.end(); Serial.end();
if (wifi) remoteip = IPAddress (WiFi.localIP()[0], WiFi.localIP()[1], WiFi.localIP()[2], subnetclient); if (wifi) remoteip = IPAddress (WiFi.localIP()[0], WiFi.localIP()[1], WiFi.localIP()[2], subnetclient);
@@ -2066,6 +2095,12 @@ void ButtonPress() {
tft.setTextColor(PrimaryColor); tft.setTextColor(PrimaryColor);
tft.drawCentreString(unitString[unit], 155, 110, GFXFF); tft.drawCentreString(unitString[unit], 155, 110, GFXFF);
break; break;
case 170:
if (CurrentTheme == 7) tft.setTextColor(TFT_BLACK); else tft.setTextColor(TFT_WHITE);
tft.drawCentreString(myLanguage[language][99], 155, 70, GFXFF);
if (CurrentTheme == 7) tft.setTextColor(TFT_BLACK); else tft.setTextColor(TFT_WHITE);
if (af) tft.drawCentreString(myLanguage[language][42], 155, 110, GFXFF); else tft.drawCentreString(myLanguage[language][30], 155, 110, GFXFF);
break;
} }
break; break;
} }
@@ -2504,6 +2539,14 @@ void KeyUp() {
if (CurrentTheme == 7) tft.setTextColor(TFT_BLACK); else tft.setTextColor(PrimaryColor); if (CurrentTheme == 7) tft.setTextColor(TFT_BLACK); else tft.setTextColor(PrimaryColor);
tft.drawCentreString(unitString[unit], 155, 110, GFXFF); tft.drawCentreString(unitString[unit], 155, 110, GFXFF);
break; break;
case 170:
if (CurrentTheme == 7) tft.setTextColor(TFT_WHITE); else tft.setTextColor(TFT_BLACK);
if (af) tft.drawCentreString(myLanguage[language][42], 155, 110, GFXFF); else tft.drawCentreString(myLanguage[language][30], 155, 110, GFXFF);
if (af) af = false; else af = true;
if (CurrentTheme == 7) tft.setTextColor(TFT_BLACK); else tft.setTextColor(TFT_WHITE);
if (af) tft.drawCentreString(myLanguage[language][42], 155, 110, GFXFF); else tft.drawCentreString(myLanguage[language][30], 155, 110, GFXFF);
break;
} }
break; break;
} }
@@ -2936,6 +2979,14 @@ void KeyDown() {
if (CurrentTheme == 7) tft.setTextColor(TFT_BLACK); else tft.setTextColor(PrimaryColor); if (CurrentTheme == 7) tft.setTextColor(TFT_BLACK); else tft.setTextColor(PrimaryColor);
tft.drawCentreString(unitString[unit], 155, 110, GFXFF); tft.drawCentreString(unitString[unit], 155, 110, GFXFF);
break; break;
case 170:
if (CurrentTheme == 7) tft.setTextColor(TFT_WHITE); else tft.setTextColor(TFT_BLACK);
if (af) tft.drawCentreString(myLanguage[language][42], 155, 110, GFXFF); else tft.drawCentreString(myLanguage[language][30], 155, 110, GFXFF);
if (af) af = false; else af = true;
if (CurrentTheme == 7) tft.setTextColor(TFT_BLACK); else tft.setTextColor(TFT_WHITE);
if (af) tft.drawCentreString(myLanguage[language][42], 155, 110, GFXFF); else tft.drawCentreString(myLanguage[language][30], 155, 110, GFXFF);
break;
} }
break; break;
} }
@@ -3672,12 +3723,14 @@ void BuildMenu() {
tft.drawString(myLanguage[language][91], 14, 110, GFXFF); tft.drawString(myLanguage[language][91], 14, 110, GFXFF);
tft.drawString(myLanguage[language][97], 14, 130, GFXFF); tft.drawString(myLanguage[language][97], 14, 130, GFXFF);
tft.drawString(myLanguage[language][98], 14, 150, GFXFF); tft.drawString(myLanguage[language][98], 14, 150, GFXFF);
tft.drawString(myLanguage[language][99], 14, 170, GFXFF);
tft.setTextColor(PrimaryColor); tft.setTextColor(PrimaryColor);
tft.drawRightString(CurrentThemeString, 305, 30, GFXFF); tft.drawRightString(CurrentThemeString, 305, 30, GFXFF);
ShowPowerOptions(false); ShowPowerOptions(false);
if (fmdefaultstepsize) tft.drawRightString(String(FREQ_FM_STEP_100K * 10, DEC), 265, 90, GFXFF); else tft.drawRightString(String(FREQ_FM_STEP_50K * 10, DEC), 265, 90, GFXFF); if (fmdefaultstepsize) tft.drawRightString(String(FREQ_FM_STEP_100K * 10, DEC), 265, 90, GFXFF); else tft.drawRightString(String(FREQ_FM_STEP_50K * 10, DEC), 265, 90, GFXFF);
if (!screensaverset) tft.drawRightString(myLanguage[language][30], 305, 110, GFXFF); else tft.drawRightString(String(screensaverOptions[screensaverset], DEC), 265, 110, GFXFF); if (!screensaverset) tft.drawRightString(myLanguage[language][30], 305, 110, GFXFF); else tft.drawRightString(String(screensaverOptions[screensaverset], DEC), 265, 110, GFXFF);
if (AMLevelOffset > 0) tft.drawRightString("+" + String(AMLevelOffset, DEC), 265, 130, GFXFF); else tft.drawRightString(String(AMLevelOffset, DEC), 265, 130, GFXFF); if (AMLevelOffset > 0) tft.drawRightString("+" + String(AMLevelOffset, DEC), 265, 130, GFXFF); else tft.drawRightString(String(AMLevelOffset, DEC), 265, 130, GFXFF);
if (af) tft.drawRightString(myLanguage[language][42], 305, 170, GFXFF); else tft.drawRightString(myLanguage[language][30], 305, 170, GFXFF);
tft.drawRightString(unitString[unit], 305, 150, GFXFF); tft.drawRightString(unitString[unit], 305, 150, GFXFF);
break; break;
} }
@@ -4309,7 +4362,7 @@ void ShowSignalLevel() {
tft.drawRightString(String(SStatusold / 10) + "." + String(abs(SStatusold % 10)), 274, 45, GFXFF); tft.drawRightString(String(SStatusold / 10) + "." + String(abs(SStatusold % 10)), 274, 45, GFXFF);
tft.setTextColor(PrimaryColor); tft.setTextColor(PrimaryColor);
tft.drawRightString(String(SStatusprint / 10) + "." + String(abs(SStatusprint % 10)), 274, 45, GFXFF); tft.drawRightString(String(SStatusprint / 10) + "." + String(abs(SStatusprint % 10)), 274, 45, GFXFF);
SStatusold = SStatus; SStatusold = SStatusprint;
} else { } else {
tft.setFreeFont(FONT24); tft.setFreeFont(FONT24);
tft.setTextColor(BackgroundColor); tft.setTextColor(BackgroundColor);
@@ -5530,6 +5583,8 @@ void XDRGTKRoutine() {
} }
void TuneUp() { void TuneUp() {
aftest = true;
aftimer = millis();
unsigned int temp; unsigned int temp;
if (stepsize == 0) { if (stepsize == 0) {
if (band != BAND_FM) { if (band != BAND_FM) {
@@ -5609,6 +5664,8 @@ void TuneUp() {
} }
void TuneDown() { void TuneDown() {
aftest = true;
aftimer = millis();
unsigned int temp; unsigned int temp;
if (stepsize == 0) { if (stepsize == 0) {
if (band != BAND_FM) { if (band != BAND_FM) {
@@ -5970,6 +6027,7 @@ void DefaultSettings() {
EEPROM.writeByte(EE_BYTE_FMDEFAULTSTEPSIZE, 0); EEPROM.writeByte(EE_BYTE_FMDEFAULTSTEPSIZE, 0);
EEPROM.writeByte(EE_BYTE_SCREENSAVERSET, 0); EEPROM.writeByte(EE_BYTE_SCREENSAVERSET, 0);
EEPROM.writeInt(EE_INT_AMLEVELOFFSET, 0); EEPROM.writeInt(EE_INT_AMLEVELOFFSET, 0);
EEPROM.writeByte(EE_BYTE_UINT, 0); EEPROM.writeByte(EE_BYTE_UNIT, 0);
EEPROM.writeByte(EE_BYTE_AF, 0);
EEPROM.commit(); EEPROM.commit();
} }
+75 -1
View File
@@ -7,6 +7,74 @@ unsigned long rdstimer = 0;
unsigned long bitStartTime = 0; unsigned long bitStartTime = 0;
bool lastBitState = false; bool lastBitState = false;
uint16_t TEF6686::TestAF() {
if (rds.hasRDS) {
uint16_t status;
uint16_t rdsStat;
uint16_t dummy1;
uint16_t dummy2;
uint8_t dummy3;
int16_t aflevel;
uint16_t afusn;
uint16_t afwam;
int16_t afoffset;
int16_t currentlevel;
uint16_t currentusn;
uint16_t currentwam;
int16_t currentoffset;
uint16_t currentpi;
byte timing;
devTEF_Radio_Get_Quality_Status(&status, &currentlevel, &currentusn, &currentwam, &currentoffset, &dummy1, &dummy2, &dummy3);
devTEF_Radio_Get_RDS_Status(&rdsStat, &currentpi, &rds.rdsB, &rds.rdsC, &rds.rdsD, &rds.rdsErr);
for (int x = 0; x < af_counter; x++) {
timing = 0;
devTEF_Set_Cmd(TEF_FM, Cmd_Tune_To, 7, 3, af[x].frequency);
while (timing == 0 && !bitRead(timing, 15)) {
devTEF_Radio_Get_Quality_Status(&status, &aflevel, &afusn, &afwam, &afoffset, &dummy1, &dummy2, &dummy3);
timing = lowByte(status);
}
af[x].score = aflevel - afusn - afwam;
if (afoffset < -125 || afoffset > 125) af[x].score = -32767;
}
int16_t highestValue = af[0].score;
int highestIndex = 0;
for (int i = 1; i < af_counter; i++) {
if (af[i].score > highestValue) {
highestValue = af[i].score;
highestIndex = i;
}
}
if (af_counter != 0 && af[highestIndex].afvalid && af[highestIndex].score > (currentlevel - currentusn - currentwam) && (af[highestIndex].score - (currentlevel - currentusn - currentwam)) >= 70) {
devTEF_Set_Cmd(TEF_FM, Cmd_Tune_To, 7, 4, af[highestIndex].frequency);
delay(200);
devTEF_Radio_Get_RDS_Status(&rdsStat, &rds.rdsA, &rds.rdsB, &rds.rdsC, &rds.rdsD, &rds.rdsErr);
if ((rdsStat & (1 << 9)) && rds.rdsA == currentpi) {
currentfreq = af[highestIndex].frequency;
for (byte y = 0; y < 50; y++) {
af[y].frequency = 0;
af[y].score = -32767;
af[y].afvalid = true;
af[y].filler = false;
af_counter = 0;
}
} else {
af[highestIndex].afvalid = false;
devTEF_Set_Cmd(TEF_FM, Cmd_Tune_To, 7, 4, currentfreq);
}
}
}
return currentfreq;
}
void TEF6686::init(byte TEF) { void TEF6686::init(byte TEF) {
uint8_t bootstatus; uint8_t bootstatus;
@@ -210,7 +278,8 @@ bool TEF6686::getProcessing(uint16_t &highcut, uint16_t &stereo, uint16_t &sthib
} }
bool TEF6686::getStatus(int16_t &level, uint16_t &USN, uint16_t &WAM, int16_t &offset, uint16_t &bandwidth, uint16_t &modulation, uint8_t &snr) { bool TEF6686::getStatus(int16_t &level, uint16_t &USN, uint16_t &WAM, int16_t &offset, uint16_t &bandwidth, uint16_t &modulation, uint8_t &snr) {
bool result = devTEF_Radio_Get_Quality_Status(&level, &USN, &WAM, &offset, &bandwidth, &modulation, &snr); uint16_t status;
bool result = devTEF_Radio_Get_Quality_Status(&status, &level, &USN, &WAM, &offset, &bandwidth, &modulation, &snr);
return level; return level;
return USN; return USN;
return WAM; return WAM;
@@ -438,10 +507,13 @@ void TEF6686::readRDS(bool showrdserrors)
if (af[j].frequency > af[j + 1].frequency && af[j + 1].frequency != 0) { if (af[j].frequency > af[j + 1].frequency && af[j + 1].frequency != 0) {
uint16_t temp = af[j].frequency; uint16_t temp = af[j].frequency;
bool temp2 = af[j].filler; bool temp2 = af[j].filler;
bool temp3 = af[j].afvalid;
af[j].frequency = af[j + 1].frequency; af[j].frequency = af[j + 1].frequency;
af[j].filler = af[j + 1].filler; af[j].filler = af[j + 1].filler;
af[j].afvalid = af[j + 1].afvalid;
af[j + 1].frequency = temp; af[j + 1].frequency = temp;
af[j + 1].filler = temp2; af[j + 1].filler = temp2;
af[j + 1].afvalid = temp3;
} }
} }
} }
@@ -726,7 +798,9 @@ void TEF6686::clearRDS (bool fullsearchrds)
for (i = 0; i < 50; i++) { for (i = 0; i < 50; i++) {
af[i].frequency = 0; af[i].frequency = 0;
af[i].score = -32767;
af[i].filler = false; af[i].filler = false;
af[i].afvalid = true;
} }
for (i = 0; i < 20; i++) { for (i = 0; i < 20; i++) {
+3
View File
@@ -144,7 +144,9 @@ typedef struct _rds_ {
typedef struct _af_ { typedef struct _af_ {
uint16_t frequency; uint16_t frequency;
int16_t score;
bool filler; bool filler;
bool afvalid;
} af_; } af_;
typedef struct _eon_ { typedef struct _eon_ {
@@ -162,6 +164,7 @@ class TEF6686 {
af_ af[50]; af_ af[50];
eon_ eon[20]; eon_ eon[20];
rds_ rds; rds_ rds;
uint16_t TestAF();
void readRDS(bool showrdserrors); void readRDS(bool showrdserrors);
void SetFreq(uint16_t frequency); void SetFreq(uint16_t frequency);
void SetFreqAM(uint16_t frequency); void SetFreqAM(uint16_t frequency);
+4 -2
View File
@@ -206,10 +206,12 @@ bool devTEF_Radio_Get_Processing_Status (uint16_t *highcut, uint16_t *stereo, ui
return r; return r;
} }
bool devTEF_Radio_Get_Quality_Status (int16_t *level, uint16_t *usn, uint16_t *wam, int16_t *offset, uint16_t *bandwidth, uint16_t *mod, uint8_t *snr) { bool devTEF_Radio_Get_Quality_Status (uint16_t *status, int16_t *level, uint16_t *usn, uint16_t *wam, int16_t *offset, uint16_t *bandwidth, uint16_t *mod, uint8_t *snr) {
uint8_t buf[14]; uint8_t buf[14];
uint16_t r = devTEF_Get_Cmd(TEF_FM, Cmd_Get_Quality_Data, buf, sizeof(buf)); uint16_t r = devTEF_Get_Cmd(TEF_FM, Cmd_Get_Quality_Data, buf, sizeof(buf));
uint16_t test = Convert8bto16b(buf);
bool bitValue = bitRead(test,15);
*status = Convert8bto16b(buf);
*level = Convert8bto16b(buf + 2); *level = Convert8bto16b(buf + 2);
*usn = Convert8bto16b(buf + 4); *usn = Convert8bto16b(buf + 4);
*wam = Convert8bto16b(buf + 6); *wam = Convert8bto16b(buf + 6);
+1 -1
View File
@@ -64,7 +64,7 @@ bool devTEF_Set_Cmd(TEF_MODULE module, uint8_t cmd, uint16_t len, ...);
bool devTEF_Radio_Get_Identification (uint16_t *device, uint16_t *hw_version, uint16_t *sw_version); bool devTEF_Radio_Get_Identification (uint16_t *device, uint16_t *hw_version, uint16_t *sw_version);
bool devTEF_Radio_Tune_To (uint16_t frequency ); bool devTEF_Radio_Tune_To (uint16_t frequency );
bool devTEF_Radio_Tune_AM (uint16_t frequency ); bool devTEF_Radio_Tune_AM (uint16_t frequency );
bool devTEF_Radio_Get_Quality_Status (int16_t *level, uint16_t *usn, uint16_t *wam, int16_t *offset, uint16_t *bandwidth, uint16_t *mod, uint8_t *snr); bool devTEF_Radio_Get_Quality_Status (uint16_t *status, int16_t *level, uint16_t *usn, uint16_t *wam, int16_t *offset, uint16_t *bandwidth, uint16_t *mod, uint8_t *snr);
bool devTEF_Radio_Get_Processing_Status (uint16_t *highcut, uint16_t *stereo, uint16_t *sthiblend, uint8_t *stband_1, uint8_t *stband_2, uint8_t *stband_3, uint8_t *stband_4); bool devTEF_Radio_Get_Processing_Status (uint16_t *highcut, uint16_t *stereo, uint16_t *sthiblend, uint8_t *stband_1, uint8_t *stband_2, uint8_t *stband_3, uint8_t *stband_4);
bool devTEF_Radio_Get_Quality_Status_AM (int16_t *level, uint16_t *noise, uint16_t *cochannel, int16_t *offset, uint16_t *bandwidth, uint16_t *mod, uint8_t *snr); bool devTEF_Radio_Get_Quality_Status_AM (int16_t *level, uint16_t *noise, uint16_t *cochannel, int16_t *offset, uint16_t *bandwidth, uint16_t *mod, uint8_t *snr);
bool devTEF_APPL_Get_Operation_Status(uint8_t *bootstatus); bool devTEF_APPL_Get_Operation_Status(uint8_t *bootstatus);
+3 -2
View File
@@ -97,7 +97,7 @@
#define EE_PRESETS_CNT 30 #define EE_PRESETS_CNT 30
#define EE_CHECKBYTE_VALUE 34 // 0 ~ 255,add new entry, change for new value #define EE_CHECKBYTE_VALUE 34 // 0 ~ 255,add new entry, change for new value
#define EE_TOTAL_CNT 268 #define EE_TOTAL_CNT 269
#define EE_UINT_FREQUENCY_FM 0 #define EE_UINT_FREQUENCY_FM 0
#define EE_INT_VOLSET 4 #define EE_INT_VOLSET 4
#define EE_UINT_CONVERTERSET 8 #define EE_UINT_CONVERTERSET 8
@@ -156,7 +156,8 @@
#define EE_BYTE_FMDEFAULTSTEPSIZE 261 #define EE_BYTE_FMDEFAULTSTEPSIZE 261
#define EE_BYTE_SCREENSAVERSET 262 #define EE_BYTE_SCREENSAVERSET 262
#define EE_INT_AMLEVELOFFSET 263 #define EE_INT_AMLEVELOFFSET 263
#define EE_BYTE_UINT 267 #define EE_BYTE_UNIT 267
#define EE_BYTE_AF 268
// End of EEPROM index defines // End of EEPROM index defines
static const char* const unitString[] = {"dBμV", "dBf", "dBm"}; static const char* const unitString[] = {"dBμV", "dBf", "dBm"};
+31 -16
View File
@@ -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* const myLanguage[15][99] = { static const char* const myLanguage[15][100] = {
{ "English", // English { "English", // English
"Rotary direction changed", // 1 "Rotary direction changed", // 1
"Please release button", // 2 "Please release button", // 2
@@ -99,7 +99,8 @@ static const char* const myLanguage[15][99] = {
"25% brightness", // 95 "25% brightness", // 95
"50% brightness", // 96 "50% brightness", // 96
"AM RF Level offset:", // 97 "AM RF Level offset:", // 97
"Signalmeter unit:" // 98 "Signalmeter unit:", // 98
"Use AF:" // 99
}, },
{ "Nederlands", // Dutch { "Nederlands", // Dutch
@@ -200,7 +201,8 @@ static const char* const myLanguage[15][99] = {
"25% helderheid", // 95 "25% helderheid", // 95
"50% helderheid", // 96 "50% helderheid", // 96
"AM RF Level afwijking:", // 97 "AM RF Level afwijking:", // 97
"Signaalmeter eenheid:" // 98 "Signaalmeter eenheid:", // 98
"Gebruik AF:" // 99
}, },
{ "Polski", // Polish { "Polski", // Polish
@@ -301,7 +303,8 @@ static const char* const myLanguage[15][99] = {
"25% jasnosci", // 95 "25% jasnosci", // 95
"50% jasnosci", // 96 "50% jasnosci", // 96
"Odchylenie poziomu RF AM:", // 97 "Odchylenie poziomu RF AM:", // 97
"Jednostka sygnalu:" // 98 "Jednostka sygnalu:", // 98
"Use AF:" // 99
}, },
{ "Hrvatski", // Croatian { "Hrvatski", // Croatian
@@ -402,7 +405,8 @@ static const char* const myLanguage[15][99] = {
"25% svjetlina", // 95 "25% svjetlina", // 95
"50% svjetlina", // 96 "50% svjetlina", // 96
"AM pomak RF razine:", // 97 "AM pomak RF razine:", // 97
"Jedinica mjerača signala:" // 98 "Jedinica mjerača signala:", // 98
"Use AF:" // 99
}, },
{ "Ελληνικά", // Greek { "Ελληνικά", // Greek
@@ -503,7 +507,8 @@ static const char* const myLanguage[15][99] = {
"25% φωτεινότητα", // 95 "25% φωτεινότητα", // 95
"50% φωτεινότητα", // 96 "50% φωτεινότητα", // 96
"AM Ολίσθηση επιπέδου RF:", // 97 "AM Ολίσθηση επιπέδου RF:", // 97
"Μονάδα μέτρησης σήματος:" // 98 "Μονάδα μέτρησης σήματος:", // 98
"Use AF:" // 99
}, },
{ "Romana", // Romanian { "Romana", // Romanian
@@ -604,7 +609,8 @@ static const char* const myLanguage[15][99] = {
"25% brightness", // 95 "25% brightness", // 95
"50% brightness", // 96 "50% brightness", // 96
"AM RF Level offset:", // 97 "AM RF Level offset:", // 97
"Signalmeter unit:" // 98 "Signalmeter unit:", // 98
"Use AF:" // 99
}, },
{ "Deutsch", // German { "Deutsch", // German
@@ -705,7 +711,8 @@ static const char* const myLanguage[15][99] = {
"25% Helligkeit", // 95 "25% Helligkeit", // 95
"50% Helligkeit", // 96 "50% Helligkeit", // 96
"AM RF Level offset:", // 97 "AM RF Level offset:", // 97
"Signalmeter unit:" // 98 "Signalmeter unit:", // 98
"Use AF:" // 99
}, },
{ "Czech", // Czech { "Czech", // Czech
@@ -806,7 +813,8 @@ static const char* const myLanguage[15][99] = {
"25% brightness", // 95 "25% brightness", // 95
"50% brightness", // 96 "50% brightness", // 96
"AM RF Level offset:", // 97 "AM RF Level offset:", // 97
"Signalmeter unit:" // 98 "Signalmeter unit:", // 98
"Use AF:" // 99
}, },
{ "Slovak", // Slovak { "Slovak", // Slovak
@@ -907,7 +915,8 @@ static const char* const myLanguage[15][99] = {
"25% brightness", // 95 "25% brightness", // 95
"50% brightness", // 96 "50% brightness", // 96
"AM RF Level offset:", // 97 "AM RF Level offset:", // 97
"Signalmeter unit:" // 98 "Signalmeter unit:", // 98
"Use AF:" // 99
}, },
{ "Français", // French { "Français", // French
@@ -1008,7 +1017,8 @@ static const char* const myLanguage[15][99] = {
"25% brightness", // 95 "25% brightness", // 95
"50% brightness", // 96 "50% brightness", // 96
"AM RF Level offset:", // 97 "AM RF Level offset:", // 97
"Signalmeter unit:" // 98 "Signalmeter unit:", // 98
"Use AF:" // 99
}, },
{ "Български", // Bulgarian { "Български", // Bulgarian
@@ -1109,7 +1119,8 @@ static const char* const myLanguage[15][99] = {
"25% brightness", // 95 "25% brightness", // 95
"50% brightness", // 96 "50% brightness", // 96
"AM RF Level offset:", // 97 "AM RF Level offset:", // 97
"Signalmeter unit:" // 98 "Signalmeter unit:", // 98
"Use AF:" // 99
}, },
{ "Русский", // Russian { "Русский", // Russian
@@ -1210,7 +1221,8 @@ static const char* const myLanguage[15][99] = {
"25% яркости", // 95 "25% яркости", // 95
"50% яркости", // 96 "50% яркости", // 96
"Смещение уровня AM RF:", // 97 "Смещение уровня AM RF:", // 97
"Измеритель сигнала:" // 98 "Измеритель сигнала:", // 98
"Use AF:" // 99
}, },
{ "Українська", // Ukranian { "Українська", // Ukranian
@@ -1311,7 +1323,8 @@ static const char* const myLanguage[15][99] = {
"25% яскравості", // 95 "25% яскравості", // 95
"50% яскравості", // 96 "50% яскравості", // 96
"Зміщення рівня AM RF:", // 97 "Зміщення рівня AM RF:", // 97
"Вимірник сигналу:" // 98 "Вимірник сигналу:", // 98
"Use AF:" // 99
}, },
{ "Italiano", // Italian { "Italiano", // Italian
@@ -1412,7 +1425,8 @@ static const char* const myLanguage[15][99] = {
"25 % di luminosità", // 95 "25 % di luminosità", // 95
"50 % di luminosità", // 96 "50 % di luminosità", // 96
"Offset livello RF AM: ", // 97 "Offset livello RF AM: ", // 97
"Unità S - meter: " // 98 "Unità S - meter: ", // 98
"Use AF:" // 99
}, },
{ "Simplified Chinese", // Simplified Chinese { "Simplified Chinese", // Simplified Chinese
@@ -1513,7 +1527,8 @@ static const char* const myLanguage[15][99] = {
"屏幕25% 亮度", // 95 "屏幕25% 亮度", // 95
"屏幕50% 亮度", // 96 "屏幕50% 亮度", // 96
"AM 高频信号偏移:", // 97 "AM 高频信号偏移:", // 97
"信号单位:" // 98 "信号单位:", // 98
"Use AF:" // 99
} }
}; };