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