Merge branch 'main' into New_Model_DP_666
This commit is contained in:
+60
-33
@@ -283,6 +283,7 @@ int xPos;
|
||||
int xPos2;
|
||||
int xPos3;
|
||||
int xPos4;
|
||||
int xPos5;
|
||||
int16_t OStatus;
|
||||
int16_t SAvg;
|
||||
int16_t SAvg2;
|
||||
@@ -382,6 +383,8 @@ unsigned long eontickerhold;
|
||||
unsigned long flashingtimer;
|
||||
unsigned long lowsignaltimer;
|
||||
unsigned long peakholdmillis;
|
||||
unsigned long pslongticker;
|
||||
unsigned long pslongtickerhold;
|
||||
unsigned long rtplusticker;
|
||||
unsigned long rtplustickerhold;
|
||||
unsigned long rtticker;
|
||||
@@ -403,6 +406,7 @@ TFT_eSprite SquelchSprite = TFT_eSprite(&tft);
|
||||
TFT_eSprite FullLineSprite = TFT_eSprite(&tft);
|
||||
TFT_eSprite OneBigLineSprite = TFT_eSprite(&tft);
|
||||
TFT_eSprite SignalSprite = TFT_eSprite(&tft);
|
||||
TFT_eSprite PSSprite = TFT_eSprite(&tft);
|
||||
|
||||
WiFiConnect wc;
|
||||
WiFiServer Server(7373);
|
||||
@@ -634,32 +638,7 @@ void setup() {
|
||||
tft.setSwapBytes(true);
|
||||
tft.fillScreen(BackgroundColor);
|
||||
|
||||
RadiotextSprite.createSprite(270, 19);
|
||||
RadiotextSprite.setTextDatum(TL_DATUM);
|
||||
RadiotextSprite.setSwapBytes(true);
|
||||
|
||||
FrequencySprite.createSprite(200, 50);
|
||||
FrequencySprite.setTextDatum(TR_DATUM);
|
||||
FrequencySprite.setSwapBytes(true);
|
||||
|
||||
RDSSprite.createSprite(165, 19);
|
||||
RDSSprite.setTextDatum(TL_DATUM);
|
||||
|
||||
SquelchSprite.createSprite(47, 19);
|
||||
SquelchSprite.setTextDatum(TL_DATUM);
|
||||
SquelchSprite.setSwapBytes(true);
|
||||
|
||||
FullLineSprite.createSprite(308, 20);
|
||||
FullLineSprite.setSwapBytes(true);
|
||||
|
||||
OneBigLineSprite.createSprite(270, 30);
|
||||
OneBigLineSprite.setSwapBytes(true);
|
||||
|
||||
SignalSprite.createSprite(80, 48);
|
||||
SignalSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
|
||||
SignalSprite.setTextDatum(TR_DATUM);
|
||||
SignalSprite.setSwapBytes(true);
|
||||
|
||||
UpdateSprites(0);
|
||||
UpdateFonts(0);
|
||||
|
||||
if (digitalRead(BWBUTTON) == LOW && digitalRead(ROTARY_BUTTON) == HIGH) {
|
||||
@@ -1180,20 +1159,16 @@ void WakeToSleep(bool yes) {
|
||||
screensavertriggered = true;
|
||||
switch (poweroptions) {
|
||||
case LCD_OFF:
|
||||
analogWrite(SMETERPIN, 0);
|
||||
MuteScreen(1);
|
||||
StoreFrequency();
|
||||
break;
|
||||
case LCD_BRIGHTNESS_1_PERCENT:
|
||||
analogWrite(SMETERPIN, 0);
|
||||
analogWrite(CONTRASTPIN, 1 * 2 + 27);
|
||||
break;
|
||||
case LCD_BRIGHTNESS_A_QUARTER:
|
||||
analogWrite(SMETERPIN, 0);
|
||||
analogWrite(CONTRASTPIN, MIN(ContrastSet, 25) * 2 + 27);
|
||||
break;
|
||||
case LCD_BRIGHTNESS_HALF:
|
||||
analogWrite(SMETERPIN, 0);
|
||||
analogWrite(CONTRASTPIN, MIN(ContrastSet, 50) * 2 + 27);
|
||||
break;
|
||||
}
|
||||
@@ -2180,7 +2155,8 @@ void BWButtonPress() {
|
||||
BWtune = true;
|
||||
}
|
||||
if (screensaverset) {
|
||||
ScreensaverTimerRestart();
|
||||
WakeToSleep(REVERSE);
|
||||
return;
|
||||
}
|
||||
delay(100);
|
||||
}
|
||||
@@ -2241,7 +2217,8 @@ void ModeButtonPress() {
|
||||
if (counter - counterold <= 1000) {
|
||||
doTuneMode();
|
||||
if (screensaverset) {
|
||||
ScreensaverTimerRestart();
|
||||
WakeToSleep(REVERSE);
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
if (!menu) {
|
||||
@@ -4265,18 +4242,67 @@ void deepSleep() {
|
||||
esp_deep_sleep_start();
|
||||
}
|
||||
|
||||
void UpdateFonts(bool mode) {
|
||||
void UpdateSprites(bool mode) {
|
||||
switch (mode) {
|
||||
case 0:
|
||||
RadiotextSprite.createSprite(270, 19);
|
||||
RadiotextSprite.setTextDatum(TL_DATUM);
|
||||
RadiotextSprite.setSwapBytes(true);
|
||||
|
||||
FrequencySprite.createSprite(200, 50);
|
||||
FrequencySprite.setTextDatum(TR_DATUM);
|
||||
FrequencySprite.setSwapBytes(true);
|
||||
|
||||
RDSSprite.createSprite(165, 19);
|
||||
RDSSprite.setTextDatum(TL_DATUM);
|
||||
|
||||
PSSprite.createSprite(150, 30);
|
||||
PSSprite.setTextDatum(TL_DATUM);
|
||||
|
||||
SquelchSprite.createSprite(47, 19);
|
||||
SquelchSprite.setTextDatum(TL_DATUM);
|
||||
SquelchSprite.setSwapBytes(true);
|
||||
|
||||
FullLineSprite.createSprite(308, 20);
|
||||
FullLineSprite.setSwapBytes(true);
|
||||
|
||||
OneBigLineSprite.createSprite(270, 30);
|
||||
OneBigLineSprite.setSwapBytes(true);
|
||||
|
||||
SignalSprite.createSprite(80, 48);
|
||||
SignalSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
|
||||
SignalSprite.setTextDatum(TR_DATUM);
|
||||
SignalSprite.setSwapBytes(true);
|
||||
break;
|
||||
|
||||
case 1:
|
||||
RadiotextSprite.deleteSprite();
|
||||
FrequencySprite.deleteSprite();
|
||||
RDSSprite.deleteSprite();
|
||||
PSSprite.deleteSprite();
|
||||
SquelchSprite.deleteSprite();
|
||||
FullLineSprite.deleteSprite();
|
||||
OneBigLineSprite.deleteSprite();
|
||||
SignalSprite.deleteSprite();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void UpdateFonts(byte mode) {
|
||||
switch (mode) {
|
||||
case 0: // Use in radio mode
|
||||
RadiotextSprite.unloadFont();
|
||||
RDSSprite.unloadFont();
|
||||
PSSprite.unloadFont();
|
||||
|
||||
if (language == LANGUAGE_CHS) {
|
||||
RadiotextSprite.loadFont(FONT16_CHS);
|
||||
RDSSprite.loadFont(FONT16_CHS);
|
||||
PSSprite.loadFont(FONT28_CHS);
|
||||
} else {
|
||||
RadiotextSprite.loadFont(FONT16);
|
||||
RDSSprite.loadFont(FONT16);
|
||||
PSSprite.loadFont(FONT28);
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -4297,6 +4323,7 @@ void UpdateFonts(bool mode) {
|
||||
OneBigLineSprite.unloadFont();
|
||||
RadiotextSprite.unloadFont();
|
||||
RDSSprite.unloadFont();
|
||||
PSSprite.unloadFont();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
+5178
-4888
File diff suppressed because it is too large
Load Diff
+13980
-14177
File diff suppressed because it is too large
Load Diff
+71
-11
@@ -1443,11 +1443,11 @@ void TEF6686::readRDS(byte showrdserrors) {
|
||||
eon_buffer[position][(offset * 2) + 2] = '\0'; // Endmarker of segment
|
||||
}
|
||||
|
||||
if (offset > 3 && eon[position].pi == rds.rdsD) { // Last chars are received
|
||||
RDScharConverter(eon_buffer[position], EONPStext[position], sizeof(EONPStext[position]) / sizeof(wchar_t), false); // Convert 8 bit ASCII to 16 bit ASCII
|
||||
String utf8String = convertToUTF8(EONPStext[position]); // Convert RDS characterset to ASCII
|
||||
eon[position].ps = extractUTF8Substring(utf8String, 0, 8, false); // Make sure PS does not exceed 8 characters
|
||||
for (int j = 0; j < 9; j++) eon_buffer[position][j] = '\0'; // Clear buffer
|
||||
if (offset > 3 && eon[position].pi == rds.rdsD) { // Last chars are received
|
||||
RDScharConverter(eon_buffer[position], EONPStext[position], sizeof(EONPStext[position]) / sizeof(wchar_t), false); // Convert 8 bit ASCII to 16 bit ASCII
|
||||
String utf8String = convertToUTF8(EONPStext[position]); // Convert RDS characterset to ASCII
|
||||
eon[position].ps = extractUTF8Substring(utf8String, 0, 8, false); // Make sure PS does not exceed 8 characters
|
||||
for (int j = 0; j < 9; j++) eon_buffer[position][j] = '\0'; // Clear buffer
|
||||
}
|
||||
|
||||
if (offset == 13 && eon[position].pi == rds.rdsD) {
|
||||
@@ -1499,6 +1499,53 @@ void TEF6686::readRDS(byte showrdserrors) {
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case RDS_GROUP_15A: {
|
||||
if (showrdserrors == 3 || (!rdsBerrorThreshold && !rdsCerrorThreshold && !rdsDerrorThreshold)) {
|
||||
if (pslong_process) rds.hasLongPS = true;
|
||||
offset = (rds.rdsB & 0xf) * 4; // Get Long PS character segment
|
||||
|
||||
pslong_buffer2[offset + 0] = pslong_buffer[offset + 0]; // Copy PS long buffer
|
||||
pslong_buffer2[offset + 1] = pslong_buffer[offset + 1];
|
||||
pslong_buffer2[offset + 2] = pslong_buffer[offset + 2];
|
||||
pslong_buffer2[offset + 3] = pslong_buffer[offset + 3];
|
||||
pslong_buffer2[32] = '\0';
|
||||
|
||||
pslong_buffer[offset + 0] = rds.rdsC >> 8; // First character of segment
|
||||
pslong_buffer[offset + 1] = rds.rdsC & 0xff; // Second character of segment
|
||||
pslong_buffer[offset + 2] = rds.rdsD >> 8; // Thirth character of segment
|
||||
pslong_buffer[offset + 3] = rds.rdsD & 0xff; // Fourth character of segment
|
||||
pslong_buffer[32] = '\0';
|
||||
|
||||
byte endmarker = 32;
|
||||
for (byte i = 0; i < 33; i++) {
|
||||
if (pslong_buffer[i] == 0x0d) {
|
||||
endmarker = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (offset == 28 && (pslong_process || !rds.fastps)) { // Last chars are received
|
||||
if (strcmp(pslong_buffer, pslong_buffer2) == 0) { // When no difference between current and buffer, let's go...
|
||||
RDScharConverter(pslong_buffer, PSLongtext, sizeof(PSLongtext) / sizeof(wchar_t), true); // Convert 8 bit ASCII to 16 bit ASCII
|
||||
String utf8String = convertToUTF8(PSLongtext); // Convert RDS characterset to ASCII
|
||||
rds.stationNameLong = extractUTF8Substring(utf8String, 0, endmarker, true); // Make sure PS Long does not exceed 32 characters
|
||||
}
|
||||
}
|
||||
|
||||
if (!pslong_process && rds.fastps) { // Let's get 2 runs of 32 PS characters fast and without refresh
|
||||
if (offset == 0) packet0long = true;
|
||||
if (offset == 4) packet1long = true;
|
||||
if (offset == 8) packet2long = true;
|
||||
if (offset == 16) packet3long = true;
|
||||
RDScharConverter(pslong_buffer, PSLongtext, sizeof(PSLongtext) / sizeof(wchar_t), true); // Convert 8 bit ASCII to 16 bit ASCII
|
||||
String utf8String = convertToUTF8(PSLongtext); // Convert RDS characterset to ASCII
|
||||
rds.stationNameLong = extractUTF8Substring(utf8String, 0, endmarker, true);
|
||||
if (packet0long && packet1long && packet2long && packet3long) pslong_process = true; // OK, we had one runs, now let's go the idle PS Long writing
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1508,6 +1555,7 @@ void TEF6686::clearRDS (bool fullsearchrds) {
|
||||
rds.piBuffer.clear();
|
||||
rds.stationName = "";
|
||||
rds.stationText = "";
|
||||
rds.stationNameLong = "";
|
||||
rds.stationText32 = "";
|
||||
rds.RTContent1 = "";
|
||||
rds.RTContent2 = "";
|
||||
@@ -1517,11 +1565,6 @@ void TEF6686::clearRDS (bool fullsearchrds) {
|
||||
rds.stationIDtext = "";
|
||||
rds.stationStatetext = "";
|
||||
|
||||
ps_buffer[8] = 0;
|
||||
ptyn_buffer[8] = 0;
|
||||
PStext[8] = L'\0';
|
||||
PTYNtext[8] = L'\0';
|
||||
|
||||
uint8_t i;
|
||||
for (i = 0; i < 8; i++) {
|
||||
ps_buffer[i] = 0x20;
|
||||
@@ -1529,12 +1572,22 @@ void TEF6686::clearRDS (bool fullsearchrds) {
|
||||
ptyn_buffer[i] = 0x20;
|
||||
PTYNtext[i] = L'\0';
|
||||
}
|
||||
ps_buffer[8] = 0;
|
||||
ptyn_buffer[8] = 0;
|
||||
PStext[8] = L'\0';
|
||||
PTYNtext[8] = L'\0';
|
||||
|
||||
for (i = 0; i < 64; i++) rt_buffer[i] = 0x20;
|
||||
rt_buffer[64] = 0;
|
||||
|
||||
for (i = 0; i < 32; i++) rt_buffer32[i] = 0x20;
|
||||
for (i = 0; i < 32; i++) {
|
||||
rt_buffer32[i] = 0x20;
|
||||
pslong_buffer[i] = 0x20;
|
||||
PSLongtext[i] = L'\0';
|
||||
}
|
||||
rt_buffer32[32] = 0;
|
||||
pslong_buffer[32] = 0;
|
||||
PSLongtext[32] = L'\0';
|
||||
|
||||
for (i = 0; i < 17; i++) rds.stationType[i] = 0x20;
|
||||
rds.stationType[17] = 0;
|
||||
@@ -1611,10 +1664,12 @@ void TEF6686::clearRDS (bool fullsearchrds) {
|
||||
rds.hasCT = false;
|
||||
rds.hasTMC = false;
|
||||
rds.hasAID = false;
|
||||
rds.hasLongPS = false;
|
||||
rds.hasRDSplus = false;
|
||||
rds.hasDABAF = false;
|
||||
rt_process = false;
|
||||
ps_process = false;
|
||||
pslong_process = false;
|
||||
rds.rdsreset = true;
|
||||
rds.hasArtificialhead = false;
|
||||
rds.hasCompressed = false;
|
||||
@@ -1640,6 +1695,10 @@ void TEF6686::clearRDS (bool fullsearchrds) {
|
||||
packet1 = false;
|
||||
packet2 = false;
|
||||
packet3 = false;
|
||||
packet0long = false;
|
||||
packet1long = false;
|
||||
packet2long = false;
|
||||
packet3long = false;
|
||||
rds.aid_counter = 0;
|
||||
afmethodBprobe = false;
|
||||
afmethodBtrigger = false;
|
||||
@@ -1724,6 +1783,7 @@ 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 0x0A: if (under && underscore) output[i] = L'_'; else output[i] = L' '; break;
|
||||
case 0x20: if (under && 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;
|
||||
|
||||
+8
-4
@@ -568,10 +568,12 @@ typedef struct _rds_ {
|
||||
String ECCtext;
|
||||
String LICtext;
|
||||
String stationIDtext;
|
||||
String stationNameLong;
|
||||
String stationStatetext;
|
||||
char stationType[18];
|
||||
char picode[7];
|
||||
char stationID[9];
|
||||
char stationLongID[33];
|
||||
char stationState[3];
|
||||
char dabafeid[5];
|
||||
char dabafchannel[4];
|
||||
@@ -598,6 +600,7 @@ typedef struct _rds_ {
|
||||
bool hasECC;
|
||||
bool hasLIC;
|
||||
bool hasDABAF;
|
||||
bool hasLongPS;
|
||||
bool hasRT;
|
||||
bool hasTP;
|
||||
bool hasTA;
|
||||
@@ -720,10 +723,13 @@ class TEF6686 {
|
||||
char ptyn_buffer[9];
|
||||
char eon_buffer[20][9];
|
||||
bool ps_process;
|
||||
bool pslong_process;
|
||||
bool rt_process;
|
||||
char rt_buffer[65];
|
||||
char rt_buffer2[65];
|
||||
char rt_buffer32[33];
|
||||
char pslong_buffer[33];
|
||||
char pslong_buffer2[33];
|
||||
bool useRTPlus = true;
|
||||
bool ABold;
|
||||
bool afreset;
|
||||
@@ -733,6 +739,7 @@ class TEF6686 {
|
||||
bool rtABold;
|
||||
bool rtAB32old;
|
||||
wchar_t PStext[9] = L"";
|
||||
wchar_t PSLongtext[33] = L"";
|
||||
wchar_t EONPStext[20][9];
|
||||
wchar_t PTYNtext[9] = L"";
|
||||
char RDSplus1[45];
|
||||
@@ -749,10 +756,7 @@ class TEF6686 {
|
||||
bool rdsBerrorThreshold;
|
||||
bool rdsCerrorThreshold;
|
||||
bool rdsDerrorThreshold;
|
||||
bool packet0;
|
||||
bool packet1;
|
||||
bool packet2;
|
||||
bool packet3;
|
||||
bool packet0, packet1, packet2, packet3, packet0long, packet1long, packet2long, packet3long;
|
||||
bool afmethodBprobe;
|
||||
uint16_t rdsCold;
|
||||
uint8_t af_counterb;
|
||||
|
||||
+15
-4
@@ -465,6 +465,10 @@ void BuildAFScreen() {
|
||||
PIold = " ";
|
||||
PSold = " ";
|
||||
xPos = 0;
|
||||
xPos2 = 0;
|
||||
xPos3 = 0;
|
||||
xPos4 = 0;
|
||||
xPos5 = 0;
|
||||
for (byte i = 0; i < 20; i++) {
|
||||
mappedfreqold[i] = 0;
|
||||
mappedfreqold2[i] = 0;
|
||||
@@ -1554,6 +1558,7 @@ void BuildAdvancedRDS() {
|
||||
xPos2 = 0;
|
||||
xPos3 = 0;
|
||||
xPos4 = 0;
|
||||
xPos5 = 0;
|
||||
}
|
||||
|
||||
void BuildDisplay() {
|
||||
@@ -1707,6 +1712,10 @@ void BuildDisplay() {
|
||||
BWreset = true;
|
||||
dropout = false;
|
||||
xPos = 0;
|
||||
xPos2 = 0;
|
||||
xPos3 = 0;
|
||||
xPos4 = 0;
|
||||
xPos5 = 0;
|
||||
}
|
||||
|
||||
void MenuUp() {
|
||||
@@ -2021,7 +2030,7 @@ void MenuUp() {
|
||||
case ITEM1:
|
||||
language ++;
|
||||
if (language == (sizeof (myLanguage) / sizeof (myLanguage[0]))) language = 0;
|
||||
UpdateFonts(2);
|
||||
UpdateFonts(1);
|
||||
OneBigLineSprite.drawString(myLanguage[language][0], 135, 0);
|
||||
OneBigLineSprite.pushSprite(24, 118);
|
||||
break;
|
||||
@@ -2868,7 +2877,7 @@ void MenuDown() {
|
||||
case ITEM1:
|
||||
language --;
|
||||
if (language > (sizeof (myLanguage) / sizeof (myLanguage[0]))) language = (sizeof (myLanguage) / sizeof (myLanguage[0])) - 1;
|
||||
UpdateFonts(2);
|
||||
UpdateFonts(1);
|
||||
OneBigLineSprite.drawString(myLanguage[language][0], 135, 0);
|
||||
OneBigLineSprite.pushSprite(24, 118);
|
||||
break;
|
||||
@@ -4154,7 +4163,8 @@ void DoMenu() {
|
||||
tftPrint(0, "http://192.168.4.1", 155, 174, PrimaryColor, PrimaryColorSmooth, 16);
|
||||
char key [9];
|
||||
XDRGTK_key.toCharArray(key, 9);
|
||||
UpdateFonts(3);
|
||||
UpdateFonts(2);
|
||||
UpdateSprites(1);
|
||||
WiFiConnectParam XDRGTK_key_text("Set XDRGTK Password: (max 8 characters)");
|
||||
WiFiConnectParam XDRGTK_key_input("XDRGTK_key", "Password", key, 9);
|
||||
wc.addParameter(&XDRGTK_key_text);
|
||||
@@ -4163,7 +4173,8 @@ void DoMenu() {
|
||||
XDRGTK_key = XDRGTK_key_input.getValue();
|
||||
EEPROM.writeString(EE_STRING_XDRGTK_KEY, XDRGTK_key);
|
||||
EEPROM.commit();
|
||||
UpdateFonts(2);
|
||||
UpdateSprites(0);
|
||||
UpdateFonts(1);
|
||||
wifi = true;
|
||||
tryWiFi();
|
||||
delay(2000);
|
||||
|
||||
@@ -174,6 +174,7 @@ extern int xPos;
|
||||
extern int xPos2;
|
||||
extern int xPos3;
|
||||
extern int xPos4;
|
||||
extern int xPos5;
|
||||
extern int16_t SStatus;
|
||||
extern int8_t LevelOffset;
|
||||
extern int8_t LowLevelSet;
|
||||
@@ -229,7 +230,8 @@ extern void TuneUp();
|
||||
extern void endMenu();
|
||||
extern void startFMDXScan();
|
||||
extern void DoMemoryPosTune();
|
||||
extern void UpdateFonts(bool mode);
|
||||
extern void UpdateFonts(byte mode);
|
||||
extern void UpdateSprites(bool mode);
|
||||
extern void tftPrint(int8_t offset, const String & text, int16_t x, int16_t y, int color, int smoothcolor, uint8_t fontsize);
|
||||
extern void setAutoSpeedSPI();
|
||||
extern void showAutoSquelch(bool mode);
|
||||
|
||||
+120
-120
@@ -1,7 +1,7 @@
|
||||
#ifndef LANGUAGE_H
|
||||
#define LANGUAGE_H
|
||||
|
||||
#define VERSION "v2.10 RC1"
|
||||
#define VERSION "v2.10 RC3"
|
||||
|
||||
// [number of languages][number of texts]
|
||||
// *** means the text is the same as in English
|
||||
@@ -460,7 +460,7 @@ static const char* const myLanguage[18][228] PROGMEM = {
|
||||
"Signaal", // 221
|
||||
"Geen geluid\ntijdens scannen", // 222
|
||||
"AIR", // 223
|
||||
"5 sec. bandbutton ingedrukt", // 224
|
||||
"5 sec.\nbandbutton ingedrukt", // 224
|
||||
"Uitschakelen", // 225
|
||||
"Scherm uit", // 226
|
||||
"Geen functie" // 227
|
||||
@@ -690,10 +690,10 @@ static const char* const myLanguage[18][228] PROGMEM = {
|
||||
"Sygnał", // 221
|
||||
"Wycisz dźwięk\npodczas skanowania", // 222
|
||||
"AIR", // 223
|
||||
"5 sec. bandbutton press", // 224
|
||||
"Power off", // 225
|
||||
"Mute screen", // 226
|
||||
"Disabled" // 227
|
||||
"5 sek. naciśnięcie przyc. BAND", // 224
|
||||
"Wyłącz", // 225
|
||||
"Wyłącz ekran", // 226
|
||||
"Wyłączone" // 227
|
||||
},
|
||||
|
||||
{ "Hrvatski", // Croatian
|
||||
@@ -1610,20 +1610,20 @@ static const char* const myLanguage[18][228] PROGMEM = {
|
||||
"Signal", // 221
|
||||
"Stumm beim Scannen", // 222
|
||||
"AIR", // 223
|
||||
"5 sec. bandbutton press", // 224
|
||||
"Power off", // 225
|
||||
"Mute screen", // 226
|
||||
"Disabled" // 227
|
||||
"5 Sek. BAND-Knopf drücken", // 224
|
||||
"Ausschalten", // 225
|
||||
"Bildschirmschoner", // 226
|
||||
"Deaktiviert" // 227
|
||||
},
|
||||
|
||||
{ "Český", // Czech
|
||||
"Směr enkóderu byl změněn", // 1
|
||||
"Směr enkodéru byl změněn", // 1
|
||||
"Prosím, pusťte tlačítko", // 2
|
||||
"Obrazovka otočena", // 3
|
||||
"Kalibrace analog. měřiče", // 4
|
||||
"Po dokončení pusťte tlačítko", // 5
|
||||
"enkóder nastaven na optický", // 6
|
||||
"enkóder nastaven na standardní", // 7
|
||||
"enkodér nastaven na optický", // 6
|
||||
"enkodér nastaven na standardní", // 7
|
||||
"FM/AM přijímač", // 8
|
||||
"Tuner: !ŽÁDNÝ!", // 9
|
||||
"Hlasitost:", // 10
|
||||
@@ -1632,42 +1632,42 @@ static const char* const myLanguage[18][228] PROGMEM = {
|
||||
"Vrch pásma:", // 13
|
||||
"FM Offset frekvence:", // 14
|
||||
"Práh pro stereo:", // 15
|
||||
"Práh utlumeni:", // 16
|
||||
"Práh zvuku:", // 17
|
||||
"Práh nizkého signálu:", // 18
|
||||
"Kontrast:", // 19
|
||||
"Práh frekvence zvuku\nk utlumení:", // 16
|
||||
"Práh signálu pro utlumení\nvysokých tónů:", // 17
|
||||
"Práh nízkého signálu:", // 18
|
||||
"Jas:", // 19
|
||||
"Hlasitost", // 20
|
||||
"Offset frekvence", // 21
|
||||
"Spodek pásma", // 22
|
||||
"Vrch pásma", // 23
|
||||
"Offset signálu", // 24
|
||||
"Práh pro stereo", // 25
|
||||
"Práh utlumení", // 26
|
||||
"Práh signálu pro utlumení", // 27
|
||||
"Práh frekvence zvuku k utlumení", // 26
|
||||
"Práh signálu pro utlumení vysokých tónů", // 27
|
||||
"Práh nízkého signálu", // 28
|
||||
"Jas", // 29
|
||||
"Vyp", // 30
|
||||
"Vyp.", // 30
|
||||
"Obrazovka je ztlumena!", // 31
|
||||
"Pro spuštění zrušte RF+", // 32
|
||||
"VYP", // 33
|
||||
"VYP.", // 33
|
||||
"SKENUJI...", // 34
|
||||
"Tuner nedetekován", // 35
|
||||
"AM Antenna gain", // 36
|
||||
"Zisk AM antény", // 36
|
||||
"FM AGC", // 37
|
||||
"Zobrazit chyby v RDS", // 38
|
||||
"Jazyk", // 39
|
||||
"Vyberte jazyk", // 40
|
||||
"ZMÁČKNĚTE MODE PRO ULOŽENÍ", // 41
|
||||
"Zap", // 42
|
||||
"Zap.", // 42
|
||||
"Softmute FM", // 43 ***
|
||||
"Softmute AM", // 44 ***
|
||||
"Pípnutí na konci pásma", // 45
|
||||
"Pípnout na konci pásma", // 45
|
||||
"Region", // 46 ***
|
||||
"Evropa", // 47
|
||||
"America", // 48 ***
|
||||
"Amerika", // 48 ***
|
||||
"Zobrazit podtržítka v RDS", // 49
|
||||
"USB mód", // 50
|
||||
"Wi-Fi active", // 51 ***
|
||||
"Režim USB", // 50
|
||||
"Wi-Fi aktivní", // 51 ***
|
||||
"Konfigurace Wi-Fi", // 52
|
||||
"Připojte se k: ", // 53
|
||||
"pro nakonfigurování Wi-Fi", // 54
|
||||
@@ -1676,44 +1676,44 @@ static const char* const myLanguage[18][228] PROGMEM = {
|
||||
"PŘIPOJENO!", // 57
|
||||
"Stationlist IP", // 58
|
||||
"Zobrazit SW pásmo", // 59
|
||||
"RDS filter", // 60 ***
|
||||
"RDS filtr", // 60 ***
|
||||
"Zobrazit chyby v PI", // 61
|
||||
"Zobrazit squelch", // 62 NEEDS NEW TRANSLATION, ENGLISH: USE SQUELCH
|
||||
"Použít squelch", // 62
|
||||
"Graf modulace", // 63
|
||||
"Tlumič šumu (AM)", // 64
|
||||
"Tlumič šumu (FM)", // 65
|
||||
"Výchozí hodnoty načteny", // 66
|
||||
"Zvukový výstup", // 67
|
||||
"Povolit ladění přes šetřic", // 68
|
||||
"Povolit ladění přes spořič", // 68
|
||||
"Invertování barev", // 69
|
||||
"O softvéru", // 70
|
||||
"O softwaru", // 70
|
||||
"Hlavní kód:", // 71
|
||||
"Přispěli:", // 72
|
||||
"Neznámý", // 73
|
||||
"Nastavení šetřiče obrazovky", // 74
|
||||
"Čas", // 75
|
||||
"Nastavení spořiče obrazovky", // 74
|
||||
"Časovač vypnutí", // 75
|
||||
"Vypnutí obrazovky", // 76
|
||||
"Vzhled", // 77
|
||||
"Skin", // 78 ***
|
||||
"Detekované aplikace", // 79
|
||||
"Min.", // 80 ***
|
||||
"Dynamic SPI speed", // 81 ***
|
||||
"Scan sensitivity", // 82
|
||||
"NONE", // 83 represents: AM/FM bands unavailable(please delete this note after translation)
|
||||
"Software version", // 84
|
||||
"Frequency font", // 85 ***
|
||||
"Dynamická rychlost SPI", // 81 ***
|
||||
"Citlivost skenu", // 82
|
||||
"Žádné", // 83
|
||||
"Verze softwaru", // 84
|
||||
"Font frekvence", // 85 ***
|
||||
"Auto", // 86
|
||||
"AF nedostupné", // 87
|
||||
"EON nedostupný", // 88
|
||||
"RT+ nedostupný", // 89
|
||||
"Krokování FM", // 90
|
||||
"Šetřič obrazovky", // 91
|
||||
"Sekund", // 92
|
||||
"Výchozí krok ladění FM", // 90
|
||||
"Spořič obrazovky", // 91
|
||||
"Sec.", // 92
|
||||
"ZMÁČKNĚTE BAND PRO ZAVŘENÍ", // 93
|
||||
"1% jas", // 94
|
||||
"25% jas", // 95
|
||||
"50% jas", // 96
|
||||
"AM Offset signálu:", // 97
|
||||
"AM offset signálu:", // 97
|
||||
"Jednotka signálu:", // 98
|
||||
"AF:", // 99
|
||||
"Zvolte FM pásmo:", // 100
|
||||
@@ -1723,7 +1723,7 @@ static const char* const myLanguage[18][228] PROGMEM = {
|
||||
"SW", // 104 ***
|
||||
"FM", // 105 ***
|
||||
"OIRT", // 106 ***
|
||||
"Rotating while screen off", // 107 ***
|
||||
"Ladění při vypnuté obrazovce", // 107 ***
|
||||
"Volba modelu", // 108
|
||||
"Základ (ILI9341)", // 109
|
||||
"Přenosný (ILI9341)", // 110
|
||||
@@ -1785,14 +1785,14 @@ static const char* const myLanguage[18][228] PROGMEM = {
|
||||
"Identifier", // 166 ***
|
||||
"Purchase", // 167 ***
|
||||
"Get data", // 168 ***
|
||||
"MW default stepsize", // 169 ***
|
||||
"Výchozí krok ladění MW", // 169 ***
|
||||
"Tangerine", // 170 ***
|
||||
"Ocean", // 171 ***
|
||||
"Indigo", // 172 ***
|
||||
"Nastavení baterie", // 173
|
||||
"Úroveň nabití baterie", // 173
|
||||
"Zobrazit napětí", // 174
|
||||
"Zobrazit procenta", // 175
|
||||
"RT načítaní", // 176
|
||||
"RT buffering", // 176
|
||||
"Hlavní nastavení", // 177
|
||||
"Nastavení zvuku", // 178
|
||||
"Nastavení displeje", // 179
|
||||
@@ -1811,39 +1811,39 @@ static const char* const myLanguage[18][228] PROGMEM = {
|
||||
"RDS", // 192 ***
|
||||
"FM", // 193 ***
|
||||
"AM", // 194 ***
|
||||
"PŘIPOJENÍ", // 195
|
||||
"DX MODE", // 196
|
||||
"KONEKTIVITA", // 195
|
||||
"DX REŽIM", // 196
|
||||
"Stationlist ID", // 197 ***
|
||||
"AM ATT", // 198
|
||||
"FM deemphasis", // 199 ***
|
||||
"Malý", // 200
|
||||
"Velký", // 201
|
||||
"FM deemfáze", // 199 ***
|
||||
"Malé", // 200
|
||||
"Velké", // 201
|
||||
"Vše", // 202
|
||||
"Rychlé načtení PS", // 203
|
||||
"Default", // 204
|
||||
"Mute screen on\nXDRGTK connection", // 205
|
||||
"FMSI stereo\nimprovement", // 206
|
||||
"Function only available\non TEF6687/6689!", // 207
|
||||
"Function not available\non selected skin!", // 208
|
||||
"Begin scanning\nmemory channels", // 209
|
||||
"Stop scanning\nmemory channels", // 210
|
||||
"Wait time", // 211
|
||||
"Start DX scanning", // 212
|
||||
"FM DX Options", // 213
|
||||
"Abort! The start channel\nis marked as skipped.", // 214
|
||||
"Výchozí", // 204
|
||||
"Vypnout displej při\nXDRGTK připojení", // 205
|
||||
"FMSI stereo\nvylepšení", // 206
|
||||
"Funkce dostupná pouze\nu TEF6687/6689!", // 207
|
||||
"Funkce není dostupná\nu zvoleného skinu!", // 208
|
||||
"Začít skenovat\nod předvolby č.", // 209
|
||||
"Skončit skenování\nu předvolby č.", // 210
|
||||
"Doba čekání", // 211
|
||||
"Spustit DX skenování", // 212
|
||||
"Nastavení FM DX", // 213
|
||||
"Přerušeno! Začáteční předvolba\nje označena jako prázdná.", // 214
|
||||
"Auto řazení AF", // 215
|
||||
"Memory channels", // 216
|
||||
"Exclude", // 217
|
||||
"Only", // 218
|
||||
"Auto cancel scan", // 219
|
||||
"Correct PI", // 220
|
||||
"Signal", // 221
|
||||
"Mute audio\nwhile scanning", // 222
|
||||
"Předvolby paměti", // 216
|
||||
"Vyloučit", // 217
|
||||
"Pouze", // 218
|
||||
"Automaticky zastavit skenování", // 219
|
||||
"při načtení korektního PI", // 220
|
||||
"při signálu", // 221
|
||||
"Ztlumit zvuk\nběhem skenování", // 222
|
||||
"AIR", // 223
|
||||
"5 sec. bandbutton press", // 224
|
||||
"Power off", // 225
|
||||
"Mute screen", // 226
|
||||
"Disabled" // 227
|
||||
"Při 5 sec. stisknutí tl. BAND", // 224
|
||||
"Vypnout", // 225
|
||||
"Vypnout displej", // 226
|
||||
"Zakázáno" // 227
|
||||
},
|
||||
|
||||
{ "Slovenský", // Slovak
|
||||
@@ -2759,11 +2759,11 @@ static const char* const myLanguage[18][228] PROGMEM = {
|
||||
"При корректном PI", // 220
|
||||
"При наличии сигнала", // 221
|
||||
"Отключать аудио\nпри сканировании", // 222
|
||||
"AIR", // 223
|
||||
"5 sec. bandbutton press", // 224
|
||||
"Power off", // 225
|
||||
"Mute screen", // 226
|
||||
"Disabled" // 227
|
||||
"Эфир", // 223
|
||||
"5 сек. зажатия кнопки диапазона", // 224
|
||||
"Приемник выключен", // 225
|
||||
"Экран выключен", // 226
|
||||
"Выключено" // 227
|
||||
},
|
||||
|
||||
{ "Українська", // Ukranian
|
||||
@@ -2970,30 +2970,30 @@ static const char* const myLanguage[18][228] PROGMEM = {
|
||||
"Багато", // 201
|
||||
"Усе", // 202
|
||||
"Швидкий PS", // 203
|
||||
"Default", // 204
|
||||
"Mute screen on\nXDRGTK connection", // 205
|
||||
"FMSI stereo\nimprovement", // 206
|
||||
"Function only available\non TEF6687/6689!", // 207
|
||||
"Function not available\non selected skin!", // 208
|
||||
"Begin scanning\nmemory channels", // 209
|
||||
"Stop scanning\nmemory channels", // 210
|
||||
"Wait time", // 211
|
||||
"Start DX scanning", // 212
|
||||
"FM DX Options", // 213
|
||||
"Abort! The start channel\nis marked as skipped.", // 214
|
||||
"За замовчуванням", // 204
|
||||
"Вимкнути екран під час підключення\nXDRGTK", // 205
|
||||
"Покращення стерео\nFMSI", // 206
|
||||
"Функція доступна лише\nдля TEF6687/6689!", // 207
|
||||
"Функція недоступна\nдля вибраної шкіри!", // 208
|
||||
"Почати сканування\nканалів пам'яті", // 209
|
||||
"Зупинити сканування\nканалів пам'яті", // 210
|
||||
"Час очікування", // 211
|
||||
"Почати сканування DX", // 212
|
||||
"Параметри FM DX", // 213
|
||||
"Припинити! Початковий канал\позначено як пропущений.", // 214
|
||||
"Авто сорт. AF", // 215
|
||||
"Memory channels", // 216
|
||||
"Exclude", // 217
|
||||
"Only", // 218
|
||||
"Auto cancel scan", // 219
|
||||
"Correct PI", // 220
|
||||
"Signal", // 221
|
||||
"Mute audio\nwhile scanning", // 222
|
||||
"AIR", // 223
|
||||
"5 sec. bandbutton press", // 224
|
||||
"Power off", // 225
|
||||
"Mute screen", // 226
|
||||
"Disabled" // 227
|
||||
"Канали пам'яті", // 216
|
||||
"Виключити", // 217
|
||||
"ільки", // 218
|
||||
"Автоматичне скасування сканування", // 219
|
||||
"Правильний ПІ", // 220
|
||||
"Сигнал", // 221
|
||||
"Вимкнути звук\nпід час сканування", // 222
|
||||
"Ефір", // 223
|
||||
"5 сек. затискання кнопки діапазону", // 224
|
||||
"Приймач вимкнений", // 225
|
||||
"Екран вимкнено", // 226
|
||||
"Вимкнено" // 227
|
||||
},
|
||||
|
||||
{ "Italiano", // Italian
|
||||
@@ -3037,7 +3037,7 @@ static const char* const myLanguage[18][228] PROGMEM = {
|
||||
"Mostra errori RDS", // 38
|
||||
"Lingua", // 39
|
||||
"Scegli la lingua", // 40
|
||||
"SALVA E ESCI: PREMI MODE", // 41
|
||||
"SALVA E ESCI: PREMI MODO", // 41
|
||||
"On", // 42 ***
|
||||
"Softmute FM", // 43 ***
|
||||
"Softmute AM", // 44 ***
|
||||
@@ -3088,8 +3088,8 @@ static const char* const myLanguage[18][228] PROGMEM = {
|
||||
"RT + non disponibile", // 89
|
||||
"Passo di sintonia predef. FM", // 90
|
||||
"Salvaschermo", // 91
|
||||
"Secondi", // 92
|
||||
"PREMI BAND PER CHIUDERE", // 93
|
||||
"Sec.", // 92
|
||||
"PREMI BANDA PER CHIUDERE", // 93
|
||||
"1% luminosità", // 94
|
||||
"25% di luminosità", // 95
|
||||
"50% di luminosità", // 96
|
||||
@@ -3180,7 +3180,7 @@ static const char* const myLanguage[18][228] PROGMEM = {
|
||||
"Impostazioni FM", // 181 ***
|
||||
"Impostazioni AM", // 182 ***
|
||||
"Connettività", // 183 ***
|
||||
"PREMI MODO PER RITORNARE", // 184 ***
|
||||
"PREMI MODO PER CHIUDERE", // 184 ***
|
||||
"CoChannelDet AM", // 185
|
||||
"Sensibilità CoChannelDet", // 186
|
||||
"Soglia CoChannelDet AM", // 187
|
||||
@@ -3192,38 +3192,38 @@ static const char* const myLanguage[18][228] PROGMEM = {
|
||||
"FM", // 193 ***
|
||||
"AM", // 194 ***
|
||||
"CONNETTI", // 195 ***
|
||||
"DX MODE", // 196
|
||||
"MODO DX", // 196
|
||||
"ID Stationlist", // 197 ***
|
||||
"ATT AM", // 198
|
||||
"Deenfasi FM", // 199 ***
|
||||
"Piccolo", // 200 ***
|
||||
"Grande", // 201 ***
|
||||
"Tutto", // 202 ***
|
||||
"PS veloce", // 203 ***
|
||||
"PS rapido", // 203 ***
|
||||
"Default", // 204
|
||||
"Spegni schermo se\nconnesso a XDRGTK", // 205
|
||||
"FMSI miglioramento\nsuono stereofonico", // 206
|
||||
"FMSI audio stereofonico\nottimizzato", // 206
|
||||
"Funzione disponibile\nsolo su TEF6687/6689!", // 207
|
||||
"Funzione non disponibile\nsulla skin selezionata!", // 208
|
||||
"Avvio scansione\ncanali in memoria", // 209
|
||||
"Fine scansione\ncanali in memoria", // 210
|
||||
"Funzione non disponibile\nsu skin selezionata!", // 208
|
||||
"Avvio scansione\ncanale in memoria", // 209
|
||||
"Fine scansione\ncanale in memoria", // 210
|
||||
"Tempo di attesa", // 211
|
||||
"Avvio scansione DX", // 212
|
||||
"Opzioni FM DX", // 213
|
||||
"Interrotto! Il canale di avvio\nviene saltato.", // 214
|
||||
"Stop! Canale di avvio\nimpost. su ignora", // 214
|
||||
"Autoordinamento AF", // 215
|
||||
"Canali di memoria", // 216
|
||||
"Escludere", // 217
|
||||
"Canali in memoria", // 216
|
||||
"Esclusi", // 217
|
||||
"Solamente", // 218
|
||||
"Fine scansione automatica", // 219
|
||||
"Uscita automatica scansione", // 219
|
||||
"PI corretto", // 220
|
||||
"Signale", // 221
|
||||
"Segnale", // 221
|
||||
"Audio silenziato\ndurante scansione", // 222
|
||||
"AIR", // 223
|
||||
"5 sec. bandbutton press", // 224
|
||||
"Power off", // 225
|
||||
"Mute screen", // 226
|
||||
"Disabled" // 227
|
||||
"Pressione x 5 sec.\npulsante BANDA", // 224
|
||||
"Spegnimento", // 225
|
||||
"Disattiva schermo", // 226
|
||||
"Funzione disabilitata" // 227
|
||||
},
|
||||
|
||||
{ "Simplified Chinese", // Simplified Chinese
|
||||
|
||||
+66
-23
@@ -7,6 +7,7 @@
|
||||
|
||||
int Radiotextlengthold;
|
||||
int RadiotextWidth;
|
||||
int PSLongWidth;
|
||||
int AIDlengthold;
|
||||
int AIDWidth;
|
||||
int afstringlengthold;
|
||||
@@ -14,6 +15,7 @@ int afstringWidth;
|
||||
int eonstringlengthold;
|
||||
int eonstringWidth;
|
||||
int rtplusstringlengthold;
|
||||
int PSLonglengthold;
|
||||
int rtplusstringWidth;
|
||||
|
||||
void ShowAdvancedRDS() {
|
||||
@@ -74,7 +76,7 @@ void ShowAdvancedRDS() {
|
||||
}
|
||||
|
||||
String afstring;
|
||||
if (radio.rds.hasAF) for (byte i = 0; i < radio.af_counter; i++) afstring += String(radio.af[i].frequency / 100) + "." + String((radio.af[i].frequency % 100) / 10) + (i == radio.af_counter - 1 ? " " : " | "); else afstring = myLanguage[language][87];
|
||||
if (radio.rds.hasAF && radio.af_counter > 0) for (byte i = 0; i < radio.af_counter; i++) afstring += String(radio.af[i].frequency / 100) + "." + String((radio.af[i].frequency % 100) / 10) + (i == radio.af_counter - 1 ? " " : " | "); else afstring = myLanguage[language][87];
|
||||
if (hasafold != radio.rds.hasAF) {
|
||||
if (!screenmute) {
|
||||
if (radio.rds.hasAF) tftPrint(-1, "AF", 50, 51, RDSColor, RDSColorSmooth, 16); else tftPrint(-1, "AF", 50, 51, GreyoutColor, BackgroundColor, 16);
|
||||
@@ -83,7 +85,7 @@ void ShowAdvancedRDS() {
|
||||
}
|
||||
|
||||
if (millis() - afticker >= 5) {
|
||||
if (radio.rds.hasAF) {
|
||||
if (radio.rds.hasAF && afstring.length() > 30) {
|
||||
if (afstring.length() != afstringlengthold) {
|
||||
afstringWidth = afstring.length() * charwidth;
|
||||
afstringlengthold = afstring.length();
|
||||
@@ -105,7 +107,7 @@ void ShowAdvancedRDS() {
|
||||
RDSSprite.fillSprite(BackgroundColor);
|
||||
if (RDSstatus) RDSSprite.setTextColor(RDSColor, RDSColorSmooth, false); else RDSSprite.setTextColor(RDSDropoutColor, RDSDropoutColorSmooth, false);
|
||||
RDSSprite.drawString(afstring, xPos2, 2);
|
||||
if (radio.rds.hasAF) RDSSprite.drawString(afstring, xPos2 + afstringWidth, 2);
|
||||
if (radio.rds.hasAF && afstring.length() > 30) RDSSprite.drawString(afstring, xPos2 + afstringWidth, 2);
|
||||
RDSSprite.pushSprite(35, 197);
|
||||
afticker = millis();
|
||||
}
|
||||
@@ -315,16 +317,23 @@ void readRds() {
|
||||
}
|
||||
}
|
||||
|
||||
if (advancedRDS) {
|
||||
tftPrint(-1, PSold, 36, 75, RDSDropoutColor, RDSDropoutColorSmooth, 28);
|
||||
} else {
|
||||
tftPrint(-1, PSold, 36, 187, RDSDropoutColor, RDSDropoutColorSmooth, 28);
|
||||
PSSprite.fillSprite(BackgroundColor);
|
||||
PSSprite.setTextColor(RDSDropoutColor, RDSDropoutColorSmooth, false);
|
||||
PSSprite.drawString(PSold, 0, 0);
|
||||
if (!radio.rds.hasLongPS) {
|
||||
if (advancedRDS) {
|
||||
PSSprite.pushSprite(36, 74);
|
||||
} else {
|
||||
PSSprite.pushSprite(36, 187);
|
||||
}
|
||||
}
|
||||
|
||||
if (advancedRDS) {
|
||||
tftPrint(-1, PTYold, 36, 109, RDSDropoutColor, RDSDropoutColorSmooth, 16);
|
||||
} else {
|
||||
tftPrint(-1, PTYold, 36, 163, RDSDropoutColor, RDSDropoutColorSmooth, 16);
|
||||
}
|
||||
|
||||
if (advancedRDS) {
|
||||
tft.fillCircle(86, 41, 5, SignificantColor);
|
||||
tft.fillCircle(124, 41, 5, SignificantColor);
|
||||
@@ -363,16 +372,23 @@ void readRds() {
|
||||
}
|
||||
}
|
||||
|
||||
if (advancedRDS) {
|
||||
tftPrint(-1, PSold, 36, 75, RDSColor, RDSColorSmooth, 28);
|
||||
} else {
|
||||
tftPrint(-1, PSold, 36, 187, RDSColor, RDSColorSmooth, 28);
|
||||
PSSprite.fillSprite(BackgroundColor);
|
||||
PSSprite.setTextColor(RDSColor, RDSColorSmooth, false);
|
||||
PSSprite.drawString(PSold, 0, 0);
|
||||
if (!radio.rds.hasLongPS) {
|
||||
if (advancedRDS) {
|
||||
PSSprite.pushSprite(36, 74);
|
||||
} else {
|
||||
PSSprite.pushSprite(36, 187);
|
||||
}
|
||||
}
|
||||
|
||||
if (advancedRDS) {
|
||||
tftPrint(-1, PTYold, 36, 109, RDSColor, RDSColorSmooth, 16);
|
||||
} else {
|
||||
tftPrint(-1, PTYold, 36, 163, RDSColor, RDSColorSmooth, 16);
|
||||
}
|
||||
|
||||
if (!advancedRDS) {
|
||||
tft.fillCircle(314, 223, 2, GreyoutColor);
|
||||
tft.fillCircle(314, 234, 2, GreyoutColor);
|
||||
@@ -653,26 +669,53 @@ void showPTY() {
|
||||
}
|
||||
|
||||
void showPS() {
|
||||
if (radio.rds.stationName != PSold) {
|
||||
if (radio.rds.stationName != PSold || radio.rds.hasLongPS) {
|
||||
if (!screenmute) {
|
||||
if (advancedRDS) {
|
||||
if (!RDSstatus) {
|
||||
tftReplace(-1, PSold, radio.rds.stationName, 36, 75, RDSDropoutColor, RDSDropoutColorSmooth, BackgroundColor, 28);
|
||||
} else {
|
||||
tftReplace(-1, PSold, radio.rds.stationName, 36, 75, RDSColor, RDSColorSmooth, BackgroundColor, 28);
|
||||
}
|
||||
} else if (afscreen) {
|
||||
if (afscreen) {
|
||||
tftReplace(0, PSold, radio.rds.stationName, 160, 201, BWAutoColor, BWAutoColorSmooth, BackgroundColor, 16);
|
||||
} else {
|
||||
if (!RDSstatus) {
|
||||
tftReplace(-1, PSold, radio.rds.stationName, 36, 187, RDSDropoutColor, RDSDropoutColorSmooth, BackgroundColor, 28);
|
||||
if (radio.rds.hasLongPS) {
|
||||
PSLongWidth = (String(radio.rds.stationNameLong).length() * (charwidth + 4));
|
||||
PSLonglengthold = String(radio.rds.stationNameLong).length();
|
||||
|
||||
if (millis() - pslongticker >= (advancedRDS ? 5 : 15)) {
|
||||
if (xPos5 == 0) {
|
||||
if (millis() - pslongtickerhold >= 1000) {
|
||||
xPos5 --;
|
||||
pslongtickerhold = millis();
|
||||
}
|
||||
} else {
|
||||
xPos5 --;
|
||||
pslongtickerhold = millis();
|
||||
}
|
||||
|
||||
PSSprite.setTextDatum(TL_DATUM);
|
||||
if (xPos5 < -PSLongWidth) xPos5 = 0;
|
||||
if (advancedRDS) {
|
||||
PSSprite.fillSprite(BackgroundColor);
|
||||
if (RDSstatus) PSSprite.setTextColor(RDSColor, RDSColorSmooth, false); else PSSprite.setTextColor(RDSDropoutColor, RDSDropoutColorSmooth, false);
|
||||
PSSprite.drawString(radio.rds.stationNameLong, xPos5, 0);
|
||||
PSSprite.drawString(radio.rds.stationNameLong, xPos5 + PSLongWidth, 0);
|
||||
} else {
|
||||
PSSprite.fillSprite(BackgroundColor);
|
||||
if (RDSstatus) PSSprite.setTextColor(RDSColor, RDSColorSmooth, false); else PSSprite.setTextColor(RDSDropoutColor, RDSDropoutColorSmooth, false);
|
||||
PSSprite.drawString(radio.rds.stationNameLong, xPos5, 0);
|
||||
PSSprite.drawString(radio.rds.stationNameLong, xPos5 + PSLongWidth, 0);
|
||||
}
|
||||
pslongticker = millis();
|
||||
}
|
||||
} else {
|
||||
tftReplace(-1, PSold, radio.rds.stationName, 36, 187, RDSColor, RDSColorSmooth, BackgroundColor, 28);
|
||||
xPos5 = 0;
|
||||
PSSprite.fillSprite(BackgroundColor);
|
||||
if (!RDSstatus) PSSprite.setTextColor(RDSDropoutColor, RDSDropoutColorSmooth, false); else PSSprite.setTextColor(RDSColor, RDSColorSmooth, false);
|
||||
PSSprite.drawString(radio.rds.stationName, 0, 0);
|
||||
}
|
||||
if (advancedRDS) PSSprite.pushSprite(36, 74); else PSSprite.pushSprite(36, 187);
|
||||
}
|
||||
}
|
||||
PSold = radio.rds.stationName;
|
||||
if (wifi) {
|
||||
|
||||
if (wifi && PSold != radio.rds.stationName) {
|
||||
Udp.beginPacket(remoteip, 9030);
|
||||
Udp.print("from=TEF_tuner " + String(stationlistid, DEC) + ";PS=");
|
||||
char PShex[9];
|
||||
|
||||
@@ -86,6 +86,7 @@ extern int xPos;
|
||||
extern int xPos2;
|
||||
extern int xPos3;
|
||||
extern int xPos4;
|
||||
extern int xPos5;
|
||||
extern int16_t SAvg3;
|
||||
extern IPAddress remoteip;
|
||||
extern String AIDString;
|
||||
@@ -114,6 +115,8 @@ extern unsigned long aftickerhold;
|
||||
extern unsigned long aftimer;
|
||||
extern unsigned long eonticker;
|
||||
extern unsigned long eontickerhold;
|
||||
extern unsigned long pslongticker;
|
||||
extern unsigned long pslongtickerhold;
|
||||
extern unsigned long rtplusticker;
|
||||
extern unsigned long rtplustickerhold;
|
||||
extern unsigned long rtticker;
|
||||
@@ -126,6 +129,7 @@ extern WiFiClient RemoteClient;
|
||||
extern WiFiUDP Udp;
|
||||
extern TFT_eSprite RadiotextSprite;
|
||||
extern TFT_eSprite RDSSprite;
|
||||
extern TFT_eSprite PSSprite;
|
||||
|
||||
void ShowAdvancedRDS();
|
||||
void readRds();
|
||||
|
||||
Reference in New Issue
Block a user