GUI optimalisation and bugfixes

Mute symbol added
This commit is contained in:
Sjef Verhoeven PE5PVB
2023-07-20 22:55:12 +02:00
parent 9365ebea7e
commit 3478ae08fa
9 changed files with 22517 additions and 23305 deletions
+229 -155
View File
@@ -2,6 +2,7 @@
#include <EEPROM.h> #include <EEPROM.h>
#include <Wire.h> #include <Wire.h>
#include <math.h> #include <math.h>
#include <FS.h>
#include <TFT_eSPI.h> // https://github.com/Bodmer/TFT_eSPI #include <TFT_eSPI.h> // https://github.com/Bodmer/TFT_eSPI
#include <TimeLib.h> // https://github.com/PaulStoffregen/Time #include <TimeLib.h> // https://github.com/PaulStoffregen/Time
#include <Hash.h> // https://github.com/bbx10/Hash_tng #include <Hash.h> // https://github.com/bbx10/Hash_tng
@@ -187,10 +188,10 @@ int Stereostatus;
int volume; int volume;
int XDRBWset; int XDRBWset;
int XDRBWsetold; int XDRBWsetold;
int xPos = 6; int xPos;
int xPos2 = 6; int xPos2;
int xPos3 = 6; int xPos3;
int xPos4 = 6; int xPos4;
int16_t OStatus; int16_t OStatus;
int16_t SAvg; int16_t SAvg;
int16_t SAvg2; int16_t SAvg2;
@@ -199,10 +200,12 @@ int8_t LevelOffset;
int8_t LowLevelSet; int8_t LowLevelSet;
int8_t VolSet; int8_t VolSet;
IPAddress remoteip; IPAddress remoteip;
String afstringold;
String cryptedpassword; String cryptedpassword;
String CurrentThemeString; String CurrentThemeString;
String ECColdtxt; String ECColdtxt;
String eonpsold[11]; String eonpsold[11];
String eonstringold;
String LIColdString; String LIColdString;
String pinstringold; String pinstringold;
String PIold; String PIold;
@@ -215,6 +218,7 @@ String rds_clockold;
String RDSSPYRDS; String RDSSPYRDS;
String RDSSPYRDSold; String RDSSPYRDSold;
String RTold; String RTold;
String rtplusstringold;
String salt; String salt;
String saltkey = " "; String saltkey = " ";
String SWMIBandstring = String(); String SWMIBandstring = String();
@@ -579,8 +583,10 @@ void setup() {
SelectBand(); SelectBand();
setupmode = false; setupmode = false;
sprite.createSprite(317, 16); sprite.createSprite(280, 16);
sprite2.createSprite(172, 16); sprite2.createSprite(172, 16);
sprite.setTextDatum(TL_DATUM);
sprite2.setTextDatum(TL_DATUM);
radio.tone(50, -5, 2000); radio.tone(50, -5, 2000);
if (screensaverset) { if (screensaverset) {
@@ -595,7 +601,7 @@ void loop() {
if (power == true) { if (power == true) {
Communication(); Communication();
if (af && radio.rds.correctPI != 0) { if (band == BAND_FM && af && radio.rds.correctPI != 0) {
if ((aftest && millis() >= aftimer + 3000) || ((USN > 250 || WAM > 250) && millis() >= aftimer + 1000)) { if ((aftest && millis() >= aftimer + 3000) || ((USN > 250 || WAM > 250) && millis() >= aftimer + 1000)) {
aftimer = millis(); aftimer = millis();
aftest = false; aftest = false;
@@ -607,7 +613,7 @@ void loop() {
} }
} }
if (millis() >= aftimer + 10000) { if (band == BAND_FM && millis() >= aftimer + 10000) {
aftimer = millis(); aftimer = millis();
if (USN > 150 || WAM > 150) { if (USN > 150 || WAM > 150) {
frequency = radio.TestAF(); frequency = radio.TestAF();
@@ -642,6 +648,7 @@ void loop() {
if (region == 0) tftPrint(-1, "PI:", 216, 197, ActiveColor, ActiveColorSmooth, FONT16); if (region == 0) tftPrint(-1, "PI:", 216, 197, ActiveColor, ActiveColorSmooth, FONT16);
if (region == 1) tftPrint(-1, "ID:", 216, 197, ActiveColor, ActiveColorSmooth, FONT16); if (region == 1) tftPrint(-1, "ID:", 216, 197, ActiveColor, ActiveColorSmooth, FONT16);
tftPrint(-1, "PS:", 6, 197, ActiveColor, ActiveColorSmooth, FONT16); tftPrint(-1, "PS:", 6, 197, ActiveColor, ActiveColorSmooth, FONT16);
tftPrint(-1, "RT:", 6, 222, ActiveColor, ActiveColorSmooth, FONT16);
tftPrint(-1, "PTY:", 6, 170, ActiveColor, ActiveColorSmooth, FONT16); tftPrint(-1, "PTY:", 6, 170, ActiveColor, ActiveColorSmooth, FONT16);
if (!showmodulation) tft.drawLine(20, 150, 204, 150, GreyoutColor); else tft.drawLine(20, 150, 204, 150, TFT_DARKGREY); if (!showmodulation) tft.drawLine(20, 150, 204, 150, GreyoutColor); else tft.drawLine(20, 150, 204, 150, TFT_DARKGREY);
} }
@@ -670,9 +677,10 @@ void loop() {
if (region == 0) tftPrint(-1, "PI:", 216, 197, GreyoutColor, BackgroundColor, FONT16); if (region == 0) tftPrint(-1, "PI:", 216, 197, GreyoutColor, BackgroundColor, FONT16);
if (region == 1) tftPrint(-1, "ID:", 216, 197, GreyoutColor, BackgroundColor, FONT16); if (region == 1) tftPrint(-1, "ID:", 216, 197, GreyoutColor, BackgroundColor, FONT16);
tftPrint(-1, "PS:", 6, 197, GreyoutColor, BackgroundColor, FONT16); tftPrint(-1, "PS:", 6, 197, GreyoutColor, BackgroundColor, FONT16);
tftPrint(-1, "RT:", 6, 222, GreyoutColor, BackgroundColor, FONT16);
tftPrint(-1, "PTY:", 6, 170, GreyoutColor, BackgroundColor, FONT16); tftPrint(-1, "PTY:", 6, 170, GreyoutColor, BackgroundColor, FONT16);
tft.drawLine(20, 150, 204, 150, GreyoutColor); tft.drawLine(20, 150, 204, 150, GreyoutColor);
tft.drawBitmap(110, 5, RDSLogo, 67, 22, GreyoutColor); tft.drawBitmap(139, 5, RDSLogo, 35, 22, GreyoutColor);
} }
LowLevelInit = false; LowLevelInit = false;
} }
@@ -1334,11 +1342,12 @@ void SelectBand() {
doBW(); doBW();
radio.getStatusAM(SStatus, USN, WAM, OStatus, BW, MStatus, SNR); radio.getStatusAM(SStatus, USN, WAM, OStatus, BW, MStatus, SNR);
if (screenmute == false) radio.clearRDS(fullsearchrds); BuildDisplay(); if (screenmute == false) radio.clearRDS(fullsearchrds); BuildDisplay();
if (region == 0) tftPrint(-1, "PI:", 216, 197, PrimaryColor, PrimaryColorSmooth, FONT16); if (region == 0) tftPrint(-1, "PI:", 216, 197, GreyoutColor, BackgroundColor, FONT16);
if (region == 1) tftPrint(-1, "ID:", 216, 195, PrimaryColor, PrimaryColorSmooth, FONT16); if (region == 1) tftPrint(-1, "ID:", 216, 195, GreyoutColor, BackgroundColor, FONT16);
tftPrint(-1, "PS:", 6, 197, PrimaryColor, PrimaryColorSmooth, FONT16); tftPrint(-1, "PS:", 6, 197, GreyoutColor, BackgroundColor, FONT16);
tftPrint(-1, "PTY:", 6, 170, PrimaryColor, PrimaryColorSmooth, FONT16); tftPrint(-1, "RT:", 6, 222, GreyoutColor, BackgroundColor, FONT16);
tft.drawBitmap(110, 5, RDSLogo, 67, 22, GreyoutColor); tftPrint(-1, "PTY:", 6, 170, GreyoutColor, BackgroundColor, FONT16);
tft.drawBitmap(139, 5, RDSLogo, 35, 22, GreyoutColor);
tft.drawRoundRect(248, 56, 32, 20, 5, GreyoutColor); tft.drawRoundRect(248, 56, 32, 20, 5, GreyoutColor);
tftPrint(0, "iMS", 265, 59, GreyoutColor, BackgroundColor, FONT16); tftPrint(0, "iMS", 265, 59, GreyoutColor, BackgroundColor, FONT16);
tft.drawRoundRect(286, 56, 32, 20, 5, GreyoutColor); tft.drawRoundRect(286, 56, 32, 20, 5, GreyoutColor);
@@ -2783,7 +2792,7 @@ void readRds() {
if (advancedRDS) tftPrint(-1, PIold, 244, 76, SecondaryColor, SecondaryColorSmooth, FONT28); else tftPrint(-1, PIold, 244, 191, SecondaryColor, SecondaryColorSmooth, FONT28); if (advancedRDS) tftPrint(-1, PIold, 244, 76, SecondaryColor, SecondaryColorSmooth, FONT28); else tftPrint(-1, PIold, 244, 191, SecondaryColor, SecondaryColorSmooth, FONT28);
if (advancedRDS) tftPrint(-1, PSold, 38, 76, SecondaryColor, SecondaryColorSmooth, FONT28); else tftPrint(-1, PSold, 38, 191, SecondaryColor, SecondaryColorSmooth, FONT28); if (advancedRDS) tftPrint(-1, PSold, 38, 76, SecondaryColor, SecondaryColorSmooth, FONT28); else tftPrint(-1, PSold, 38, 191, SecondaryColor, SecondaryColorSmooth, FONT28);
if (advancedRDS) tftPrint(-1, PTYold, 38, 109, SecondaryColor, SecondaryColorSmooth, FONT16); else tftPrint(-1, PTYold, 38, 170, SecondaryColor, SecondaryColorSmooth, FONT16); if (advancedRDS) tftPrint(-1, PTYold, 38, 109, SecondaryColor, SecondaryColorSmooth, FONT16); else tftPrint(-1, PTYold, 38, 170, SecondaryColor, SecondaryColorSmooth, FONT16);
if (advancedRDS) tftPrint(-1, String(ptynold), 255, 109, SecondaryColor, SecondaryColorSmooth, FONT16); if (advancedRDS) tftPrint(-1, String(ptynold), 216, 109, SecondaryColor, SecondaryColorSmooth, FONT16);
if (!advancedRDS) tftPrint(-1, RTold, 1, 229, BackgroundColor, BackgroundColor, FONT16); if (!advancedRDS) tftPrint(-1, RTold, 1, 229, BackgroundColor, BackgroundColor, FONT16);
dropout = true; dropout = true;
aftest = true; aftest = true;
@@ -2793,7 +2802,7 @@ void readRds() {
if (advancedRDS) tftPrint(-1, PIold, 244, 76, PrimaryColor, PrimaryColorSmooth, FONT28); else tftPrint(-1, PIold, 244, 191, PrimaryColor, PrimaryColorSmooth, FONT28); if (advancedRDS) tftPrint(-1, PIold, 244, 76, PrimaryColor, PrimaryColorSmooth, FONT28); else tftPrint(-1, PIold, 244, 191, PrimaryColor, PrimaryColorSmooth, FONT28);
if (advancedRDS) tftPrint(-1, PSold, 38, 76, PrimaryColor, PrimaryColorSmooth, FONT28); else tftPrint(-1, PSold, 38, 191, PrimaryColor, PrimaryColorSmooth, FONT28); if (advancedRDS) tftPrint(-1, PSold, 38, 76, PrimaryColor, PrimaryColorSmooth, FONT28); else tftPrint(-1, PSold, 38, 191, PrimaryColor, PrimaryColorSmooth, FONT28);
if (advancedRDS) tftPrint(-1, PTYold, 38, 109, PrimaryColor, PrimaryColorSmooth, FONT16); else tftPrint(-1, PTYold, 38, 170, PrimaryColor, PrimaryColorSmooth, FONT16); if (advancedRDS) tftPrint(-1, PTYold, 38, 109, PrimaryColor, PrimaryColorSmooth, FONT16); else tftPrint(-1, PTYold, 38, 170, PrimaryColor, PrimaryColorSmooth, FONT16);
if (advancedRDS) tftPrint(-1, String(ptynold), 255, 109, PrimaryColor, PrimaryColorSmooth, FONT16); if (advancedRDS) tftPrint(-1, String(ptynold), 216, 109, PrimaryColor, PrimaryColorSmooth, FONT16);
dropout = false; dropout = false;
} }
} }
@@ -2942,18 +2951,28 @@ void ShowAdvancedRDS() {
if (radio.rds.hasAF) tftPrint(-1, "AF", 50, 51, SecondaryColor, SecondaryColorSmooth, FONT16); else tftPrint(-1, "AF", 50, 51, GreyoutColor, BackgroundColor, FONT16); if (radio.rds.hasAF) tftPrint(-1, "AF", 50, 51, SecondaryColor, SecondaryColorSmooth, FONT16); else tftPrint(-1, "AF", 50, 51, GreyoutColor, BackgroundColor, FONT16);
hasafold = radio.rds.hasAF; hasafold = radio.rds.hasAF;
} }
if (millis() - afticker >= 100) { //500
if (xPos2 == 6) { if (afstring.length() < 20) {
if (afstringold != afstring) {
xPos2 = 0;
sprite2.fillSprite(BackgroundColor);
sprite2.loadFont(FONT16);
sprite2.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
sprite2.drawString(afstring, xPos2, 0, 1);
sprite2.pushSprite(35, 200);
}
} else {
if (millis() - afticker >= 50) {
if (xPos2 == 0) {
if (millis() - aftickerhold >= 2000) { if (millis() - aftickerhold >= 2000) {
xPos2 -= 1;//charWidth; xPos2 --;
aftickerhold = millis(); aftickerhold = millis();
} }
} else { } else {
xPos2 -= 1;//charWidth; xPos2 --;
aftickerhold = millis(); aftickerhold = millis();
} }
if (xPos2 < -tft.textWidth(afstring) + (charWidth * 21)) xPos2 = 6; if (xPos2 < -tft.textWidth(afstring) + (charWidth * 16)) xPos2 = 0;
sprite2.setTextDatum(TL_DATUM);
sprite2.fillSprite(BackgroundColor); sprite2.fillSprite(BackgroundColor);
sprite2.loadFont(FONT16); sprite2.loadFont(FONT16);
sprite2.setTextColor(PrimaryColor, PrimaryColorSmooth, false); sprite2.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
@@ -2961,6 +2980,8 @@ void ShowAdvancedRDS() {
sprite2.pushSprite(35, 200); sprite2.pushSprite(35, 200);
afticker = millis(); afticker = millis();
} }
}
afstringold = afstring;
String eonstring; String eonstring;
if (radio.rds.hasEON) for (byte i = 0; i < radio.eon_counter; i++) eonstring += String(radio.eon[i].picode) + (radio.eon[i].ps.length() > 0 ? String(": " + String(radio.eon[i].ps)) : "") + (radio.eon[i].mappedfreq > 0 ? String(" " + String(radio.eon[i].mappedfreq / 100) + "." + String((radio.eon[i].mappedfreq % 100) / 10)) : "") + (radio.eon[i].mappedfreq2 > 0 ? String(" / " + String(radio.eon[i].mappedfreq2 / 100) + "." + String((radio.eon[i].mappedfreq2 % 100) / 10)) : "") + (radio.eon[i].mappedfreq3 > 0 ? String(" / " + String(radio.eon[i].mappedfreq3 / 100) + "." + String((radio.eon[i].mappedfreq3 % 100) / 10)) : "") + (i == radio.eon_counter - 1 ? " " : " | "); else eonstring = myLanguage[language][88]; if (radio.rds.hasEON) for (byte i = 0; i < radio.eon_counter; i++) eonstring += String(radio.eon[i].picode) + (radio.eon[i].ps.length() > 0 ? String(": " + String(radio.eon[i].ps)) : "") + (radio.eon[i].mappedfreq > 0 ? String(" " + String(radio.eon[i].mappedfreq / 100) + "." + String((radio.eon[i].mappedfreq % 100) / 10)) : "") + (radio.eon[i].mappedfreq2 > 0 ? String(" / " + String(radio.eon[i].mappedfreq2 / 100) + "." + String((radio.eon[i].mappedfreq2 % 100) / 10)) : "") + (radio.eon[i].mappedfreq3 > 0 ? String(" / " + String(radio.eon[i].mappedfreq3 / 100) + "." + String((radio.eon[i].mappedfreq3 % 100) / 10)) : "") + (i == radio.eon_counter - 1 ? " " : " | "); else eonstring = myLanguage[language][88];
@@ -2968,18 +2989,27 @@ void ShowAdvancedRDS() {
if (radio.rds.hasEON) tftPrint(-1, "EON", 153, 51, SecondaryColor, SecondaryColorSmooth, FONT16); else tftPrint(-1, "EON", 153, 51, GreyoutColor, BackgroundColor, FONT16); if (radio.rds.hasEON) tftPrint(-1, "EON", 153, 51, SecondaryColor, SecondaryColorSmooth, FONT16); else tftPrint(-1, "EON", 153, 51, GreyoutColor, BackgroundColor, FONT16);
haseonold = radio.rds.hasEON; haseonold = radio.rds.hasEON;
} }
if (millis() - eonticker >= 100) { //500 if (eonstring.length() < 20) {
if (xPos3 == 6) { if (eonstringold != eonstring) {
xPos3 = 0;
sprite2.fillSprite(BackgroundColor);
sprite2.loadFont(FONT16);
sprite2.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
sprite2.drawString(eonstring, xPos3, 0);
sprite2.pushSprite(35, 175);
}
} else {
if (millis() - eonticker >= 50) {
if (xPos3 == 0) {
if (millis() - eontickerhold >= 2000) { if (millis() - eontickerhold >= 2000) {
xPos3 -= 1;//charWidth; xPos3 --;
eontickerhold = millis(); eontickerhold = millis();
} }
} else { } else {
xPos3 -= 1;//charWidth; xPos3 --;
eontickerhold = millis(); eontickerhold = millis();
} }
if (xPos3 < -tft.textWidth(eonstring) + (charWidth * 21)) xPos3 = 6; if (xPos3 < -tft.textWidth(eonstring) + (charWidth * 16)) xPos3 = 0;
sprite2.setTextDatum(TL_DATUM);
sprite2.fillSprite(BackgroundColor); sprite2.fillSprite(BackgroundColor);
sprite2.loadFont(FONT16); sprite2.loadFont(FONT16);
sprite2.setTextColor(PrimaryColor, PrimaryColorSmooth, false); sprite2.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
@@ -2987,6 +3017,8 @@ void ShowAdvancedRDS() {
sprite2.pushSprite(35, 175); sprite2.pushSprite(35, 175);
eonticker = millis(); eonticker = millis();
} }
}
eonstringold = eonstring;
String rtplusstring; String rtplusstring;
if (radio.rds.hasRDSplus) rtplusstring = "1) " + String(radio.rds.RTContent1) + " - 2) " + String(radio.rds.RTContent2) + " "; else rtplusstring = myLanguage[language][89]; if (radio.rds.hasRDSplus) rtplusstring = "1) " + String(radio.rds.RTContent1) + " - 2) " + String(radio.rds.RTContent2) + " "; else rtplusstring = myLanguage[language][89];
@@ -2994,18 +3026,27 @@ void ShowAdvancedRDS() {
if (radio.rds.hasRDSplus) tftPrint(-1, "RT+", 124, 51, SecondaryColor, SecondaryColorSmooth, FONT16); else tftPrint(-1, "RT+", 124, 51, GreyoutColor, BackgroundColor, FONT16); if (radio.rds.hasRDSplus) tftPrint(-1, "RT+", 124, 51, SecondaryColor, SecondaryColorSmooth, FONT16); else tftPrint(-1, "RT+", 124, 51, GreyoutColor, BackgroundColor, FONT16);
hasrtplusold = radio.rds.hasRDSplus; hasrtplusold = radio.rds.hasRDSplus;
} }
if (millis() - rtplusticker >= 100) { //350 if (eonstring.length() < 20) {
if (xPos3 == 6) { if (rtplusstringold != rtplusstring) {
xPos4 = 0;
sprite2.fillSprite(BackgroundColor);
sprite2.loadFont(FONT16);
sprite2.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
sprite2.drawString(rtplusstring, xPos4, 0);
sprite2.pushSprite(35, 150);
}
} else {
if (millis() - rtplusticker >= 50)
if (xPos4 == 0) {
if (millis() - rtplustickerhold >= 2000) { if (millis() - rtplustickerhold >= 2000) {
xPos4 -= 1;//charWidth; xPos4 --;
rtplustickerhold = millis(); rtplustickerhold = millis();
} }
} else { } else {
xPos4 -= 1;//charWidth; xPos4 --;
rtplustickerhold = millis(); rtplustickerhold = millis();
} }
if (xPos4 < -tft.textWidth(rtplusstring) + (charWidth * 21)) xPos4 = 6; if (xPos4 < -tft.textWidth(rtplusstring) + (charWidth * 16)) xPos4 = 0;
sprite2.setTextDatum(TL_DATUM);
sprite2.fillSprite(BackgroundColor); sprite2.fillSprite(BackgroundColor);
sprite2.loadFont(FONT16); sprite2.loadFont(FONT16);
sprite2.setTextColor(PrimaryColor, PrimaryColorSmooth, false); sprite2.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
@@ -3013,6 +3054,7 @@ void ShowAdvancedRDS() {
sprite2.pushSprite(35, 150); sprite2.pushSprite(35, 150);
rtplusticker = millis(); rtplusticker = millis();
} }
rtplusstringold = rtplusstring;
if (TPold != radio.rds.hasTP) { if (TPold != radio.rds.hasTP) {
if (radio.rds.hasTP == true) tftPrint(-1, "TP", 6, 51, SecondaryColor, SecondaryColorSmooth, FONT16); else tftPrint(-1, "TP", 6, 51, GreyoutColor, BackgroundColor, FONT16); if (radio.rds.hasTP == true) tftPrint(-1, "TP", 6, 51, SecondaryColor, SecondaryColorSmooth, FONT16); else tftPrint(-1, "TP", 6, 51, GreyoutColor, BackgroundColor, FONT16);
@@ -3067,9 +3109,9 @@ void ShowAdvancedRDS() {
if (radio.rds.hasTMC == true) tftPrint(-1, "TMC", 90, 51, SecondaryColor, SecondaryColorSmooth, FONT16); else tftPrint(-1, "TMC", 90, 51, GreyoutColor, BackgroundColor, FONT16); if (radio.rds.hasTMC == true) tftPrint(-1, "TMC", 90, 51, SecondaryColor, SecondaryColorSmooth, FONT16); else tftPrint(-1, "TMC", 90, 51, GreyoutColor, BackgroundColor, FONT16);
hastmcold = radio.rds.hasTMC; hastmcold = radio.rds.hasTMC;
} }
} }
void doAF() { void doAF() {
if (radio.af_counter != af_counterold && radio.rds.hasAF == true) { if (radio.af_counter != af_counterold && radio.rds.hasAF == true) {
if (wifi) { if (wifi) {
Udp.beginPacket(remoteip, 9030); Udp.beginPacket(remoteip, 9030);
@@ -3089,9 +3131,9 @@ void doAF() {
Udp.endPacket(); Udp.endPacket();
} }
} }
} }
void showECC() { void showECC() {
if (ECCold != radio.rds.ECC) { if (ECCold != radio.rds.ECC) {
String ECC; String ECC;
if (radio.rds.picode[0] == '1') { if (radio.rds.picode[0] == '1') {
@@ -3188,9 +3230,9 @@ void showECC() {
} }
ECCold = radio.rds.ECC; ECCold = radio.rds.ECC;
} }
} }
void showPI() { void showPI() {
if (strcmp(radio.rds.picode, radioIdPrevious)) { if (strcmp(radio.rds.picode, radioIdPrevious)) {
if (advancedRDS) { if (advancedRDS) {
tftReplace(-1, PIold, radio.rds.picode, 244, 76, PrimaryColor, PrimaryColorSmooth, FONT28); tftReplace(-1, PIold, radio.rds.picode, 244, 76, PrimaryColor, PrimaryColorSmooth, FONT28);
@@ -3207,9 +3249,9 @@ void showPI() {
} }
strcpy(radioIdPrevious, radio.rds.picode); strcpy(radioIdPrevious, radio.rds.picode);
} }
} }
void showPTY() { void showPTY() {
if (strcmp(radio.rds.stationType, programTypePrevious)) { if (strcmp(radio.rds.stationType, programTypePrevious)) {
if (advancedRDS) tftReplace(-1, PTYold, radio.rds.stationType, 38, 109, PrimaryColor, PrimaryColorSmooth, FONT16); else tftReplace(-1, PTYold, radio.rds.stationType, 38, 170, PrimaryColor, PrimaryColorSmooth, FONT16); if (advancedRDS) tftReplace(-1, PTYold, radio.rds.stationType, 38, 109, PrimaryColor, PrimaryColorSmooth, FONT16); else tftReplace(-1, PTYold, radio.rds.stationType, 38, 170, PrimaryColor, PrimaryColorSmooth, FONT16);
PTYold = radio.rds.stationType; PTYold = radio.rds.stationType;
@@ -3221,9 +3263,9 @@ void showPTY() {
} }
strcpy(programTypePrevious, radio.rds.stationType); strcpy(programTypePrevious, radio.rds.stationType);
} }
} }
void showPS() { void showPS() {
if (radio.rds.stationName != programServicePrevious) { if (radio.rds.stationName != programServicePrevious) {
if (advancedRDS) { if (advancedRDS) {
tftReplace(-1, PSold, radio.rds.stationName, 38, 76, PrimaryColor, PrimaryColorSmooth, FONT28); tftReplace(-1, PSold, radio.rds.stationName, 38, 76, PrimaryColor, PrimaryColorSmooth, FONT28);
@@ -3250,48 +3292,60 @@ void showPS() {
} }
programServicePrevious = radio.rds.stationName; programServicePrevious = radio.rds.stationName;
} }
} }
void showRadioText() { void showRadioText() {
if (radio.rds.hasRT && RDSstatus) { if (radio.rds.hasRT && RDSstatus) {
if (millis() - rtticker >= 100) { // 350 if (advancedRDS && radio.rds.stationText.length() < 20) {
if (xPos == 6) { xPos = 0;
if (millis() - rttickerhold >= 2000) {
xPos -= 1;//= charWidth;
rttickerhold = millis();
}
} else {
xPos -= 1;//= charWidth;
rttickerhold = millis();
}
if (advancedRDS) {
if (xPos < -tft.textWidth(radio.rds.stationText + " " + radio.rds.stationText32) + (charWidth * 21)) xPos = 6;
sprite2.fillSprite(BackgroundColor); sprite2.fillSprite(BackgroundColor);
sprite2.setTextDatum(TL_DATUM);
sprite2.loadFont(FONT16); sprite2.loadFont(FONT16);
sprite2.setTextColor(PrimaryColor, PrimaryColorSmooth, false); sprite2.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
sprite2.fillSprite(BackgroundColor);
sprite2.drawString(radio.rds.stationText + " " + radio.rds.stationText32, xPos, 0, 1); sprite2.drawString(radio.rds.stationText + " " + radio.rds.stationText32, xPos, 0, 1);
sprite2.pushSprite(35, 222); sprite2.pushSprite(35, 222);
} else { } else if (!advancedRDS && radio.rds.stationText.length() < 29) {
if (xPos < -tft.textWidth(radio.rds.stationText + " " + radio.rds.stationText32) + (charWidth * 24)) xPos = 6; if (RTold != radio.rds.stationText + " " + radio.rds.stationText32) {
sprite.fillSprite(BackgroundColor); xPos = 0;
sprite.setTextDatum(TL_DATUM);
sprite.fillSprite(BackgroundColor); sprite.fillSprite(BackgroundColor);
sprite.loadFont(FONT16); sprite.loadFont(FONT16);
sprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); sprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
sprite.drawString(radio.rds.stationText + " " + radio.rds.stationText32, xPos, 0, 1); sprite.drawString(radio.rds.stationText + " " + radio.rds.stationText32, xPos, 0, 1);
sprite.pushSprite(1, 222); sprite.pushSprite(38, 222);
}
} else {
if (millis() - rtticker >= 50) {
if (xPos == 0) {
if (millis() - rttickerhold >= 2000) {
xPos --;
rttickerhold = millis();
}
} else {
xPos --;
rttickerhold = millis();
}
if (advancedRDS) {
if (xPos < -tft.textWidth(radio.rds.stationText + " " + radio.rds.stationText32) + (charWidth * 16)) xPos = 0;
sprite2.fillSprite(BackgroundColor);
sprite2.loadFont(FONT16);
sprite2.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
sprite2.drawString(radio.rds.stationText + " " + radio.rds.stationText32, xPos, 0, 1);
sprite2.pushSprite(35, 222);
} else {
if (xPos < -tft.textWidth(radio.rds.stationText + " " + radio.rds.stationText32) + (charWidth * 26)) xPos = 0;
sprite.fillSprite(BackgroundColor);
sprite.loadFont(FONT16);
sprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
sprite.drawString(radio.rds.stationText + " " + radio.rds.stationText32, xPos, 0, 1);
sprite.pushSprite(38, 222);
} }
rtticker = millis(); rtticker = millis();
RTold = radio.rds.stationText + " " + radio.rds.stationText32;
cleanup = true; cleanup = true;
} }
}
} else if (cleanup == true) { } else if (cleanup == true) {
sprite.fillSprite(BackgroundColor); sprite.fillSprite(BackgroundColor);
sprite2.fillSprite(BackgroundColor); sprite2.fillSprite(BackgroundColor);
if (advancedRDS) sprite2.pushSprite(35, 222); else sprite.pushSprite(1, 222); if (advancedRDS) sprite2.pushSprite(35, 222); else sprite.pushSprite(38, 222);
cleanup = false; cleanup = false;
} }
@@ -3309,9 +3363,10 @@ void showRadioText() {
Udp.endPacket(); Udp.endPacket();
} }
tft.drawLine(0, 239, 320, 239, FrameColor); tft.drawLine(0, 239, 320, 239, FrameColor);
} RTold = radio.rds.stationText + " " + radio.rds.stationText32;
}
void BuildMenu() { void BuildMenu() {
advancedRDS = false; advancedRDS = false;
tft.fillScreen(BackgroundColor); tft.fillScreen(BackgroundColor);
tft.drawRect(0, 0, 320, 240, FrameColor); tft.drawRect(0, 0, 320, 240, FrameColor);
@@ -3362,7 +3417,7 @@ void BuildMenu() {
tftPrint(-1, myLanguage[language][45], 14, 116, ActiveColor, ActiveColorSmooth, FONT16); tftPrint(-1, myLanguage[language][45], 14, 116, ActiveColor, ActiveColorSmooth, FONT16);
tftPrint(-1, myLanguage[language][46], 14, 136, ActiveColor, ActiveColorSmooth, FONT16); tftPrint(-1, myLanguage[language][46], 14, 136, ActiveColor, ActiveColorSmooth, FONT16);
tftPrint(-1, myLanguage[language][49], 14, 156, ActiveColor, ActiveColorSmooth, FONT16); tftPrint(-1, myLanguage[language][49], 14, 156, ActiveColor, ActiveColorSmooth, FONT16);
tftPrint(-1, myLanguage[language][49], 14, 176, ActiveColor, ActiveColorSmooth, FONT16); tftPrint(-1, myLanguage[language][50], 14, 176, ActiveColor, ActiveColorSmooth, FONT16);
if (wifi) tftPrint(-1, String(myLanguage[language][51]) + " IP: " + String(WiFi.localIP().toString()), 14, 196, ActiveColor, ActiveColorSmooth, FONT16); else tftPrint(-1, myLanguage[language][51], 14, 196, ActiveColor, ActiveColorSmooth, FONT16); if (wifi) tftPrint(-1, String(myLanguage[language][51]) + " IP: " + String(WiFi.localIP().toString()), 14, 196, ActiveColor, ActiveColorSmooth, FONT16); else tftPrint(-1, myLanguage[language][51], 14, 196, ActiveColor, ActiveColorSmooth, FONT16);
tftPrint(-1, myLanguage[language][52], 14, 216, ActiveColor, ActiveColorSmooth, FONT16); tftPrint(-1, myLanguage[language][52], 14, 216, ActiveColor, ActiveColorSmooth, FONT16);
@@ -3376,7 +3431,7 @@ void BuildMenu() {
if (radio.rds.underscore) tftPrint(1, myLanguage[language][42], 305, 156, PrimaryColor, PrimaryColorSmooth, FONT16); else tftPrint(1, myLanguage[language][30], 305, 156, PrimaryColor, PrimaryColorSmooth, FONT16); if (radio.rds.underscore) tftPrint(1, myLanguage[language][42], 305, 156, PrimaryColor, PrimaryColorSmooth, FONT16); else tftPrint(1, myLanguage[language][30], 305, 156, PrimaryColor, PrimaryColorSmooth, FONT16);
if (USBmode) tftPrint(1, "RDS Spy", 305, 176, PrimaryColor, PrimaryColorSmooth, FONT16); else tftPrint(1, "XDRGTK", 305, 176, PrimaryColor, PrimaryColorSmooth, FONT16); if (USBmode) tftPrint(1, "RDS Spy", 305, 176, PrimaryColor, PrimaryColorSmooth, FONT16); else tftPrint(1, "XDRGTK", 305, 176, PrimaryColor, PrimaryColorSmooth, FONT16);
if (wifi) tftPrint(1, myLanguage[language][42], 305, 196, PrimaryColor, PrimaryColorSmooth, FONT16); else tftPrint(1, myLanguage[language][30], 305, 196, PrimaryColor, PrimaryColorSmooth, FONT16); if (wifi) tftPrint(1, myLanguage[language][42], 305, 196, PrimaryColor, PrimaryColorSmooth, FONT16); else tftPrint(1, myLanguage[language][30], 305, 196, PrimaryColor, PrimaryColorSmooth, FONT16);
tftPrint(1, "->", 305, 196, PrimaryColor, PrimaryColorSmooth, FONT16); tftPrint(1, ">", 305, 216, PrimaryColor, PrimaryColorSmooth, FONT16);
break; break;
case 3: case 3:
@@ -3436,9 +3491,9 @@ void BuildMenu() {
break; break;
} }
analogWrite(SMETERPIN, 0); analogWrite(SMETERPIN, 0);
} }
void MuteScreen(bool setting) { void MuteScreen(bool setting) {
if (!setting && screenmute) { if (!setting && screenmute) {
screenmute = false; screenmute = false;
setupmode = true; setupmode = true;
@@ -3452,9 +3507,9 @@ void MuteScreen(bool setting) {
analogWrite(CONTRASTPIN, 0); analogWrite(CONTRASTPIN, 0);
tft.writecommand(0x10); tft.writecommand(0x10);
} }
} }
void ShowAFEON() { void ShowAFEON() {
if (radio.rds.hasAF) { if (radio.rds.hasAF) {
if (hasafold == false) { if (hasafold == false) {
tftPrint(-1, myLanguage[language][87], 6, 54, BackgroundColor, BackgroundColor, FONT16); tftPrint(-1, myLanguage[language][87], 6, 54, BackgroundColor, BackgroundColor, FONT16);
@@ -3504,7 +3559,7 @@ void ShowAFEON() {
tftPrint(-1, String(eonpsold[i]), 218, 54 + (15 * i), BackgroundColor, BackgroundColor, FONT16); tftPrint(-1, String(eonpsold[i]), 218, 54 + (15 * i), BackgroundColor, BackgroundColor, FONT16);
eonpsold[i] = radio.eon[i].ps; eonpsold[i] = radio.eon[i].ps;
} }
tftPrint(-1, String(radio.eon[i].ps), 218, 54 + (15 * i), PrimaryColor, PrimaryColorSmooth, FONT16); tftPrint(-1, String(radio.eon[i].ps), 218, 54 + (15 * i), SecondaryColor, SecondaryColorSmooth, FONT16);
} }
if (radio.eon[i].mappedfreq > 0) { if (radio.eon[i].mappedfreq > 0) {
@@ -3518,9 +3573,9 @@ void ShowAFEON() {
if (i == 10) i = 254; if (i == 10) i = 254;
} }
} }
} }
void BuildAFScreen() { void BuildAFScreen() {
if (!afscreen && RDSstatus) { if (!afscreen && RDSstatus) {
tft.drawRoundRect(20, 30, 274, 170, 5, ActiveColor); tft.drawRoundRect(20, 30, 274, 170, 5, ActiveColor);
tft.fillRoundRect(22, 32, 270, 166, 5, BackgroundColor); tft.fillRoundRect(22, 32, 270, 166, 5, BackgroundColor);
@@ -3558,9 +3613,9 @@ void BuildAFScreen() {
programServicePrevious = "0"; programServicePrevious = "0";
for (byte i = 0; i < 11; i++) eonpsold[i] = ""; for (byte i = 0; i < 11; i++) eonpsold[i] = "";
} }
} }
void BuildAdvancedRDS() { void BuildAdvancedRDS() {
afscreen = false; afscreen = false;
afpage = false; afpage = false;
afpagenr = 0; afpagenr = 0;
@@ -3626,7 +3681,7 @@ void BuildAdvancedRDS() {
tft.drawCircle(81, 15, 9, GreyoutColor); tft.drawCircle(81, 15, 9, GreyoutColor);
tft.drawCircle(91, 15, 10, GreyoutColor); tft.drawCircle(91, 15, 10, GreyoutColor);
tft.drawCircle(91, 15, 9, GreyoutColor); tft.drawCircle(91, 15, 9, GreyoutColor);
tft.drawBitmap(110, 5, RDSLogo, 67, 22, GreyoutColor); tft.drawBitmap(139, 5, RDSLogo, 35, 22, GreyoutColor);
if (StereoToggle == false) { if (StereoToggle == false) {
tft.drawCircle(86, 15, 10, SecondaryColor); tft.drawCircle(86, 15, 10, SecondaryColor);
@@ -3678,9 +3733,9 @@ void BuildAdvancedRDS() {
BWreset = true; BWreset = true;
pinstringold = ""; pinstringold = "";
ShowMemoryPos(); ShowMemoryPos();
} }
void BuildDisplay() { void BuildDisplay() {
afscreen = false; afscreen = false;
advancedRDS = false; advancedRDS = false;
if (theme == 0) { if (theme == 0) {
@@ -3696,6 +3751,7 @@ void BuildDisplay() {
tft.drawLine(0, 187, 320, 187, FrameColor); tft.drawLine(0, 187, 320, 187, FrameColor);
tft.drawLine(0, 218, 320, 218, FrameColor); tft.drawLine(0, 218, 320, 218, FrameColor);
tft.drawLine(108, 30, 108, 0, FrameColor); tft.drawLine(108, 30, 108, 0, FrameColor);
tft.drawLine(137, 30, 137, 0, FrameColor);
tft.drawLine(174, 30, 174, 0, FrameColor); tft.drawLine(174, 30, 174, 0, FrameColor);
tft.drawLine(20, 120, 204, 120, TFT_DARKGREY); tft.drawLine(20, 120, 204, 120, TFT_DARKGREY);
if (!showmodulation) tft.drawLine(20, 150, 204, 150, GreyoutColor); else tft.drawLine(20, 150, 204, 150, TFT_DARKGREY); if (!showmodulation) tft.drawLine(20, 150, 204, 150, GreyoutColor); else tft.drawLine(20, 150, 204, 150, TFT_DARKGREY);
@@ -3718,6 +3774,7 @@ void BuildDisplay() {
if (region == 0) tftPrint(-1, "PI:", 216, 197, ActiveColor, ActiveColorSmooth, FONT16); if (region == 0) tftPrint(-1, "PI:", 216, 197, ActiveColor, ActiveColorSmooth, FONT16);
if (region == 1) tftPrint(-1, "ID:", 216, 197, ActiveColor, ActiveColorSmooth, FONT16); if (region == 1) tftPrint(-1, "ID:", 216, 197, ActiveColor, ActiveColorSmooth, FONT16);
tftPrint(-1, "PS:", 6, 197, ActiveColor, ActiveColorSmooth, FONT16); tftPrint(-1, "PS:", 6, 197, ActiveColor, ActiveColorSmooth, FONT16);
tftPrint(-1, "RT:", 6, 222, ActiveColor, ActiveColorSmooth, FONT16);
tftPrint(-1, "PTY:", 6, 170, ActiveColor, ActiveColorSmooth, FONT16); tftPrint(-1, "PTY:", 6, 170, ActiveColor, ActiveColorSmooth, FONT16);
tftPrint(0, "S", 7, 107, ActiveColor, ActiveColorSmooth, FONT16); tftPrint(0, "S", 7, 107, ActiveColor, ActiveColorSmooth, FONT16);
@@ -3756,7 +3813,7 @@ void BuildDisplay() {
tft.drawCircle(81, 15, 9, GreyoutColor); tft.drawCircle(81, 15, 9, GreyoutColor);
tft.drawCircle(91, 15, 10, GreyoutColor); tft.drawCircle(91, 15, 10, GreyoutColor);
tft.drawCircle(91, 15, 9, GreyoutColor); tft.drawCircle(91, 15, 9, GreyoutColor);
tft.drawBitmap(110, 5, RDSLogo, 67, 22, GreyoutColor); tft.drawBitmap(139, 5, RDSLogo, 35, 22, GreyoutColor);
if (StereoToggle == false) { if (StereoToggle == false) {
tft.drawCircle(86, 15, 10, SecondaryColor); tft.drawCircle(86, 15, 10, SecondaryColor);
tft.drawCircle(86, 15, 9, SecondaryColor); tft.drawCircle(86, 15, 9, SecondaryColor);
@@ -3789,9 +3846,9 @@ void BuildDisplay() {
strcpy(radioIdPrevious, "0"); strcpy(radioIdPrevious, "0");
programServicePrevious = "0"; programServicePrevious = "0";
BWreset = true; BWreset = true;
} }
void ShowFreq(int mode) { void ShowFreq(int mode) {
if (screenmute == false) { if (screenmute == false) {
if (setupmode == false) { if (setupmode == false) {
if (band == 1) { // Fix Me :take care of 9K/10K Step if (band == 1) { // Fix Me :take care of 9K/10K Step
@@ -3884,9 +3941,9 @@ void ShowFreq(int mode) {
Udp.endPacket(); Udp.endPacket();
} }
} }
} }
void ShowSignalLevel() { void ShowSignalLevel() {
if (screenmute == false) { if (screenmute == false) {
if (millis() >= snrupdatetimer + TIMER_SNR_TIMER) { if (millis() >= snrupdatetimer + TIMER_SNR_TIMER) {
snrupdatetimer = millis(); snrupdatetimer = millis();
@@ -3953,18 +4010,18 @@ void ShowSignalLevel() {
} }
} }
} }
} }
void ShowRDSLogo(bool RDSstatus) { void ShowRDSLogo(bool RDSstatus) {
if (screenmute == false) { if (screenmute == false) {
if (RDSstatus != RDSstatusold) { if (RDSstatus != RDSstatusold) {
if (RDSstatus) tft.drawBitmap(110, 5, RDSLogo, 67, 22, SecondaryColor); else tft.drawBitmap(110, 5, RDSLogo, 67, 22, GreyoutColor); if (RDSstatus) tft.drawBitmap(139, 5, RDSLogo, 35, 22, InsignificantColor); else tft.drawBitmap(139, 5, RDSLogo, 35, 22, GreyoutColor);
RDSstatusold = RDSstatus; RDSstatusold = RDSstatus;
} }
} }
} }
void ShowStereoStatus() { void ShowStereoStatus() {
if (StereoToggle == true) { if (StereoToggle == true) {
if (band == BAND_FM) Stereostatus = radio.getStereoStatus(); else Stereostatus = 0; if (band == BAND_FM) Stereostatus = radio.getStereoStatus(); else Stereostatus = 0;
if (Stereostatus != Stereostatusold) { if (Stereostatus != Stereostatusold) {
@@ -3984,9 +4041,9 @@ void ShowStereoStatus() {
Stereostatusold = Stereostatus; Stereostatusold = Stereostatus;
} }
} }
} }
void ShowOffset() { void ShowOffset() {
if (OStatus != OStatusold) { if (OStatus != OStatusold) {
if (millis() >= offsetupdatetimer + TIMER_OFFSET_TIMER) { if (millis() >= offsetupdatetimer + TIMER_OFFSET_TIMER) {
offsetupdatetimer = millis(); offsetupdatetimer = millis();
@@ -4085,9 +4142,9 @@ void ShowOffset() {
} }
OStatusold = OStatus; OStatusold = OStatus;
} }
} }
void ShowBW() { void ShowBW() {
if (millis() >= bwupdatetimer + TIMER_BW_TIMER) { if (millis() >= bwupdatetimer + TIMER_BW_TIMER) {
bwupdatetimer = millis(); bwupdatetimer = millis();
} else { } else {
@@ -4105,9 +4162,9 @@ void ShowBW() {
Udp.endPacket(); Udp.endPacket();
} }
} }
} }
void ShowModLevel() { void ShowModLevel() {
if (showmodulation) { if (showmodulation) {
int segments; int segments;
@@ -4135,9 +4192,9 @@ void ShowModLevel() {
peakholdmillis = millis(); peakholdmillis = millis();
} }
} }
} }
void doSquelch() { void doSquelch() {
if (XDRGTKUSB == false && XDRGTKTCP == false) { if (XDRGTKUSB == false && XDRGTKTCP == false) {
Squelch = analogRead(PIN_POT) / 4 - 100; Squelch = analogRead(PIN_POT) / 4 - 100;
if (Squelch > 920) Squelch = 920; if (Squelch > 920) Squelch = 920;
@@ -4166,17 +4223,21 @@ void doSquelch() {
if (Squelch != -1) { if (Squelch != -1) {
if (Squelch < SStatus || Squelch == -100 || Squelch == 0) { if (Squelch < SStatus || Squelch == -100 || Squelch == 0) {
radio.setUnMute(); radio.setUnMute();
if (screenmute == false) tft.drawBitmap(110, 5, Speaker, 26, 22, GreyoutColor);
SQ = false; SQ = false;
} else { } else {
radio.setMute(); radio.setMute();
if (screenmute == false) tft.drawBitmap(110, 5, Speaker, 26, 22, PrimaryColor);
SQ = true; SQ = true;
} }
} else { } else {
if (Stereostatus == true) { if (Stereostatus == true) {
radio.setUnMute(); radio.setUnMute();
if (screenmute == false) tft.drawBitmap(110, 5, Speaker, 26, 22, GreyoutColor);
SQ = false; SQ = false;
} else { } else {
radio.setMute(); radio.setMute();
if (screenmute == false) tft.drawBitmap(110, 5, Speaker, 26, 22, PrimaryColor);
SQ = true; SQ = true;
} }
} }
@@ -4204,24 +4265,28 @@ void doSquelch() {
if (seek == false && Squelch != 920) { if (seek == false && Squelch != 920) {
if (Squelch < SStatus || Squelch == -100 || Squelch == 0) { if (Squelch < SStatus || Squelch == -100 || Squelch == 0) {
radio.setUnMute(); radio.setUnMute();
if (screenmute == false) tft.drawBitmap(110, 5, Speaker, 26, 22, GreyoutColor);
SQ = false; SQ = false;
} else { } else {
radio.setMute(); radio.setMute();
if (screenmute == false) tft.drawBitmap(110, 5, Speaker, 26, 22, PrimaryColor);
SQ = true; SQ = true;
} }
} else { } else {
if (seek == false && Stereostatus == true) { if (seek == false && Stereostatus == true) {
radio.setUnMute(); radio.setUnMute();
if (screenmute == false) tft.drawBitmap(110, 5, Speaker, 26, 22, GreyoutColor);
SQ = false; SQ = false;
} else { } else {
radio.setMute(); radio.setMute();
if (screenmute == false) tft.drawBitmap(110, 5, Speaker, 26, 22, PrimaryColor);
SQ = true; SQ = true;
} }
} }
} }
} }
void updateBW() { void updateBW() {
if (BWset == 0) { if (BWset == 0) {
if (screenmute == false && advancedRDS == false && afscreen == false) { if (screenmute == false && advancedRDS == false && afscreen == false) {
tft.drawRoundRect(248, 35, 70, 20, 5, ActiveColor); tft.drawRoundRect(248, 35, 70, 20, 5, ActiveColor);
@@ -4234,9 +4299,9 @@ void updateBW() {
tftPrint(0, "AUTO BW", 282, 38, GreyoutColor, BackgroundColor, FONT16); tftPrint(0, "AUTO BW", 282, 38, GreyoutColor, BackgroundColor, FONT16);
} }
} }
} }
void updateiMS() { void updateiMS() {
if (band == BAND_FM) { if (band == BAND_FM) {
if (iMSset == 0) { if (iMSset == 0) {
if (screenmute == false) { if (screenmute == false) {
@@ -4252,9 +4317,9 @@ void updateiMS() {
radio.setiMS(0); radio.setiMS(0);
} }
} }
} }
void updateEQ() { void updateEQ() {
if (band == BAND_FM) { if (band == BAND_FM) {
if (EQset == 0) { if (EQset == 0) {
if (screenmute == false) { if (screenmute == false) {
@@ -4270,9 +4335,9 @@ void updateEQ() {
radio.setEQ(0); radio.setEQ(0);
} }
} }
} }
void updateSWMIBand() { void updateSWMIBand() {
switch (SWMIBandPos) { switch (SWMIBandPos) {
case SW_MI_BAND_11M: case SW_MI_BAND_11M:
case SW_MI_BAND_13M: case SW_MI_BAND_13M:
@@ -4296,9 +4361,9 @@ void updateSWMIBand() {
tftPrint(-1, SWMIBandstringold, 50, 51, BackgroundColor, BackgroundColor, FONT16); tftPrint(-1, SWMIBandstringold, 50, 51, BackgroundColor, BackgroundColor, FONT16);
break; break;
} }
} }
void doBW() { void doBW() {
if (band == BAND_FM) { if (band == BAND_FM) {
if (BWset > 16) BWset = 0; if (BWset > 16) BWset = 0;
@@ -4390,9 +4455,9 @@ void doBW() {
} }
updateBW(); updateBW();
BWreset = true; BWreset = true;
} }
void doTuneMode() { void doTuneMode() {
switch (tunemode) { switch (tunemode) {
case TUNE_MAN: case TUNE_MAN:
if (band == BAND_FM) { if (band == BAND_FM) {
@@ -4422,9 +4487,9 @@ void doTuneMode() {
ShowFreq(0); ShowFreq(0);
EEPROM.writeByte(EE_BYTE_TUNEMODE, tunemode); EEPROM.writeByte(EE_BYTE_TUNEMODE, tunemode);
EEPROM.commit(); EEPROM.commit();
} }
void ShowTuneMode() { void ShowTuneMode() {
switch (tunemode) { switch (tunemode) {
case TUNE_MAN: case TUNE_MAN:
if (band == BAND_SW) { if (band == BAND_SW) {
@@ -4486,9 +4551,9 @@ void ShowTuneMode() {
tftPrint(0, "MEM", 22, 82, GreyoutColor, BackgroundColor, FONT16); tftPrint(0, "MEM", 22, 82, GreyoutColor, BackgroundColor, FONT16);
break; break;
} }
} }
void ShowRSSI() { void ShowRSSI() {
if (wifi) rssi = WiFi.RSSI(); else rssi = 0; if (wifi) rssi = WiFi.RSSI(); else rssi = 0;
if (rssiold != rssi) { if (rssiold != rssi) {
rssiold = rssi; rssiold = rssi;
@@ -4507,9 +4572,9 @@ void ShowRSSI() {
tft.drawBitmap(272, 4, WiFi1, 25, 25, PrimaryColor); tft.drawBitmap(272, 4, WiFi1, 25, 25, PrimaryColor);
} }
} }
} }
void ShowBattery() { void ShowBattery() {
if (millis() >= batupdatetimer + TIMER_BAT_TIMER) { if (millis() >= batupdatetimer + TIMER_BAT_TIMER) {
batupdatetimer = millis(); batupdatetimer = millis();
} else { } else {
@@ -4537,9 +4602,9 @@ void ShowBattery() {
} }
batteryold = battery; batteryold = battery;
} }
} }
void Communication() { void Communication() {
if (menu == false) { if (menu == false) {
if (wifi) { if (wifi) {
int packetSize = Udp.parsePacket(); int packetSize = Udp.parsePacket();
@@ -4689,15 +4754,15 @@ void Communication() {
} }
if (XDRGTKUSB || XDRGTKTCP) XDRGTKRoutine(); if (XDRGTKUSB || XDRGTKTCP) XDRGTKRoutine();
} }
} }
void DataPrint(String string) { void DataPrint(String string) {
if (XDRGTKUSB) Serial.print(string); if (XDRGTKUSB) Serial.print(string);
if (XDRGTKTCP) RemoteClient.print(string); if (XDRGTKTCP) RemoteClient.print(string);
} }
void XDRGTKRoutine() { void XDRGTKRoutine() {
if (XDRGTKUSB) { if (XDRGTKUSB) {
if (Serial.available()) if (Serial.available())
{ {
@@ -4992,10 +5057,12 @@ void XDRGTKRoutine() {
VolSet = atoi(buff + 1); VolSet = atoi(buff + 1);
if (VolSet == 0) { if (VolSet == 0) {
radio.setMute(); radio.setMute();
if (screenmute == false) tft.drawBitmap(110, 5, Speaker, 26, 22, PrimaryColor);
XDRMute = true; XDRMute = true;
SQ = true; SQ = true;
} else { } else {
radio.setUnMute(); radio.setUnMute();
if (screenmute == false) tft.drawBitmap(110, 5, Speaker, 26, 22, GreyoutColor);
radio.setVolume((VolSet - 40) / 10); radio.setVolume((VolSet - 40) / 10);
XDRMute = false; XDRMute = false;
} }
@@ -5013,6 +5080,7 @@ void XDRGTKRoutine() {
store = true; store = true;
XDRMute = false; XDRMute = false;
radio.setUnMute(); radio.setUnMute();
if (screenmute == false) tft.drawBitmap(110, 5, Speaker, 26, 22, GreyoutColor);
VolSet = EEPROM.readInt(EE_BYTE_VOLSET); VolSet = EEPROM.readInt(EE_BYTE_VOLSET);
LowLevelSet = EEPROM.readInt(EE_BYTE_LOWLEVELSET); LowLevelSet = EEPROM.readInt(EE_BYTE_LOWLEVELSET);
softmuteam = EEPROM.readByte(EE_BYTE_SOFTMUTEAM); softmuteam = EEPROM.readByte(EE_BYTE_SOFTMUTEAM);
@@ -5071,9 +5139,9 @@ void XDRGTKRoutine() {
} }
} }
DataPrint(String(((SStatus * 100) + 10875) / 1000) + "." + String(((SStatus * 100) + 10875) / 100 % 10) + ", " + String(WAM / 10) + ", " + String(SNR) + "\n"); DataPrint(String(((SStatus * 100) + 10875) / 1000) + "." + String(((SStatus * 100) + 10875) / 100 % 10) + ", " + String(WAM / 10) + ", " + String(SNR) + "\n");
} }
void TuneUp() { void TuneUp() {
aftest = true; aftest = true;
aftimer = millis(); aftimer = millis();
unsigned int temp = 0; unsigned int temp = 0;
@@ -5152,9 +5220,9 @@ void TuneUp() {
radio.clearRDS(fullsearchrds); radio.clearRDS(fullsearchrds);
if (RDSSPYUSB == true) Serial.print("G:\r\nRESET-------\r\n\r\n"); if (RDSSPYUSB == true) Serial.print("G:\r\nRESET-------\r\n\r\n");
if (RDSSPYTCP == true) RemoteClient.print("G:\r\nRESET-------\r\n\r\n"); if (RDSSPYTCP == true) RemoteClient.print("G:\r\nRESET-------\r\n\r\n");
} }
void TuneDown() { void TuneDown() {
aftest = true; aftest = true;
aftimer = millis(); aftimer = millis();
unsigned int temp = 0; unsigned int temp = 0;
@@ -5233,17 +5301,24 @@ void TuneDown() {
radio.clearRDS(fullsearchrds); radio.clearRDS(fullsearchrds);
if (RDSSPYUSB == true) Serial.print("G:\r\nRESET-------\r\n\r\n"); if (RDSSPYUSB == true) Serial.print("G:\r\nRESET-------\r\n\r\n");
if (RDSSPYTCP == true) RemoteClient.print("G:\r\nRESET-------\r\n\r\n"); if (RDSSPYTCP == true) RemoteClient.print("G:\r\nRESET-------\r\n\r\n");
} }
void EdgeBeeper() { void EdgeBeeper() {
bool x = radio.mute; bool x = radio.mute;
radio.tone(50, -5, 2000); radio.tone(50, -5, 2000);
if (x) radio.setMute(); else radio.setUnMute(); if (x) {
} radio.setMute();
if (screenmute == false) tft.drawBitmap(110, 5, Speaker, 26, 22, PrimaryColor);
} else {
radio.setUnMute();
if (screenmute == false) tft.drawBitmap(110, 5, Speaker, 26, 22, GreyoutColor);
}
}
void Seek(bool mode) { void Seek(bool mode) {
if (band == BAND_FM) { if (band == BAND_FM) {
radio.setMute(); radio.setMute();
if (screenmute == false) tft.drawBitmap(110, 5, Speaker, 26, 22, PrimaryColor);
if (mode == false) TuneDown(); else TuneUp(); if (mode == false) TuneDown(); else TuneUp();
delay(50); delay(50);
ShowFreq(0); ShowFreq(0);
@@ -5255,6 +5330,7 @@ void Seek(bool mode) {
if ((USN < 200) && (WAM < 230) && (OStatus < 80 && OStatus > -80) && (Squelch < SStatus || Squelch == 920)) { if ((USN < 200) && (WAM < 230) && (OStatus < 80 && OStatus > -80) && (Squelch < SStatus || Squelch == 920)) {
seek = false; seek = false;
radio.setUnMute(); radio.setUnMute();
if (screenmute == false) tft.drawBitmap(110, 5, Speaker, 26, 22, GreyoutColor);
store = true; store = true;
} else { } else {
seek = true; seek = true;
@@ -5262,9 +5338,9 @@ void Seek(bool mode) {
if (RDSSPYTCP == true) RemoteClient.print("G:\r\nRESET-------\r\n\r\n"); if (RDSSPYTCP == true) RemoteClient.print("G:\r\nRESET-------\r\n\r\n");
} }
} }
} }
void SetTunerPatch() { void SetTunerPatch() {
if (TEF != 101 && TEF != 102 && TEF != 205) { if (TEF != 101 && TEF != 102 && TEF != 205) {
radio.init(102); radio.init(102);
uint16_t device; uint16_t device;
@@ -5275,16 +5351,16 @@ void SetTunerPatch() {
tft.fillScreen(BackgroundColor); tft.fillScreen(BackgroundColor);
analogWrite(CONTRASTPIN, ContrastSet * 2 + 27); analogWrite(CONTRASTPIN, ContrastSet * 2 + 27);
if (TEF == 0) tftPrint(0, myLanguage[language][35], 150, 78, ActiveColor, ActiveColorSmooth, FONT28); else tftPrint(0, myLanguage[language][36], 150, 78, ActiveColor, ActiveColorSmooth, FONT28); if (TEF == 0) tftPrint(0, myLanguage[language][35], 150, 78, ActiveColor, ActiveColorSmooth, FONT28); else tftPrint(0, myLanguage[language][36] + String(TEF), 150, 78, ActiveColor, ActiveColorSmooth, FONT28);
tftPrint(0, myLanguage[language][37], 150, 108, ActiveColor, ActiveColorSmooth, FONT28); tftPrint(0, myLanguage[language][37], 150, 108, ActiveColor, ActiveColorSmooth, FONT28);
EEPROM.writeByte(EE_BYTE_TEF, TEF); EEPROM.writeByte(EE_BYTE_TEF, TEF);
EEPROM.commit(); EEPROM.commit();
while (true); while (true);
for (;;); for (;;);
} }
} }
void doTheme() { // Use this to put your own colors in: http://www.barth-dev.de/online/rgb565-color-picker/ void doTheme() { // Use this to put your own colors in: http://www.barth-dev.de/online/rgb565-color-picker/
switch (CurrentTheme) { switch (CurrentTheme) {
case 0: // Default PE5PVB theme case 0: // Default PE5PVB theme
PrimaryColor = 0xFFE0; PrimaryColor = 0xFFE0;
@@ -5296,7 +5372,7 @@ void doTheme() { // Use this to put your own colors in: http://www.barth-dev.de
GreyoutColor = 0x38E7; GreyoutColor = 0x38E7;
BackgroundColor = TFT_BLACK; BackgroundColor = TFT_BLACK;
ActiveColor = 0xFFFF; ActiveColor = 0xFFFF;
ActiveColorSmooth = 0x4208; ActiveColorSmooth = 0x39E7;
SignificantColor = 0xF800; SignificantColor = 0xF800;
SignificantColorSmooth = 0x7C00; SignificantColorSmooth = 0x7C00;
InsignificantColor = 0x07E0; InsignificantColor = 0x07E0;
@@ -5423,9 +5499,9 @@ void doTheme() { // Use this to put your own colors in: http://www.barth-dev.de
CurrentThemeString = myLanguage[language][85]; CurrentThemeString = myLanguage[language][85];
break; break;
} }
} }
void read_encoder() { void read_encoder() {
static uint8_t old_AB = 3; static uint8_t old_AB = 3;
static int8_t encval = 0; static int8_t encval = 0;
static const int8_t enc_states[] = {0, -1, 1, 0, 1, 0, 0, -1, -1, 0, 0, 1, 0, 1, -1, 0}; static const int8_t enc_states[] = {0, -1, 1, 0, 1, 0, 0, -1, -1, 0, 0, 1, 0, 1, -1, 0};
@@ -5453,9 +5529,9 @@ void read_encoder() {
encval = 0; encval = 0;
} }
} }
} }
void tryWiFi() { void tryWiFi() {
if (!setupmode) { if (!setupmode) {
tft.drawRoundRect(1, 60, 319, 140, 5, ActiveColor); tft.drawRoundRect(1, 60, 319, 140, 5, ActiveColor);
tft.fillRoundRect(3, 62, 315, 136, 5, BackgroundColor); tft.fillRoundRect(3, 62, 315, 136, 5, BackgroundColor);
@@ -5468,16 +5544,14 @@ void tryWiFi() {
if (!setupmode) tftPrint(0, myLanguage[language][57], 155, 128, InsignificantColor, InsignificantColorSmooth, FONT28); if (!setupmode) tftPrint(0, myLanguage[language][57], 155, 128, InsignificantColor, InsignificantColorSmooth, FONT28);
wifi = true; wifi = true;
} else { } else {
Server.end();
Udp.stop();
if (!setupmode) tftPrint(0, myLanguage[language][56], 155, 128, SignificantColor, SignificantColorSmooth, FONT28); if (!setupmode) tftPrint(0, myLanguage[language][56], 155, 128, SignificantColor, SignificantColorSmooth, FONT28);
wifi = false; wifi = false;
XDRGTKTCP = false; XDRGTKTCP = false;
RDSSPYTCP = false; RDSSPYTCP = false;
} }
} }
void passwordcrypt() { void passwordcrypt() {
int generated = 0; int generated = 0;
while (generated < 16) while (generated < 16)
{ {
@@ -5489,9 +5563,9 @@ void passwordcrypt() {
} }
salt = saltkey + XDRGTK_key; salt = saltkey + XDRGTK_key;
cryptedpassword = String(sha1(salt)); cryptedpassword = String(sha1(salt));
} }
void DefaultSettings() { void DefaultSettings() {
EEPROM.writeByte(EE_BYTE_CHECKBYTE, EE_CHECKBYTE_VALUE); EEPROM.writeByte(EE_BYTE_CHECKBYTE, EE_CHECKBYTE_VALUE);
EEPROM.writeUInt(EE_UINT16_FREQUENCY_FM, 10000); EEPROM.writeUInt(EE_UINT16_FREQUENCY_FM, 10000);
EEPROM.writeInt(EE_BYTE_VOLSET, 0); EEPROM.writeInt(EE_BYTE_VOLSET, 0);
@@ -5552,9 +5626,9 @@ void DefaultSettings() {
EEPROM.writeByte(EE_BYTE_AF, 0); EEPROM.writeByte(EE_BYTE_AF, 0);
EEPROM.writeByte(EE_BYTE_STEREO, 1); EEPROM.writeByte(EE_BYTE_STEREO, 1);
EEPROM.commit(); EEPROM.commit();
} }
void tftPrint(int8_t offset, const String & text, int16_t x, int16_t y, int color, int smoothcolor, const uint8_t* font) { void tftPrint(int8_t offset, const String & text, int16_t x, int16_t y, int color, int smoothcolor, const uint8_t* font) {
tft.loadFont(font); tft.loadFont(font);
tft.setTextColor(color, smoothcolor, false); tft.setTextColor(color, smoothcolor, false);
switch (offset) { switch (offset) {
@@ -5564,9 +5638,9 @@ void tftPrint(int8_t offset, const String & text, int16_t x, int16_t y, int colo
} }
tft.drawString(text, x, y, 1); tft.drawString(text, x, y, 1);
tft.unloadFont(); tft.unloadFont();
} }
void tftReplace(int8_t offset, const String & textold, const String & text, int16_t x, int16_t y, int color, int smoothcolor, const uint8_t* font) { void tftReplace(int8_t offset, const String & textold, const String & text, int16_t x, int16_t y, int color, int smoothcolor, const uint8_t* font) {
tft.loadFont(font); tft.loadFont(font);
tft.setTextColor(BackgroundColor, BackgroundColor, false); tft.setTextColor(BackgroundColor, BackgroundColor, false);
switch (offset) { switch (offset) {
@@ -5583,4 +5657,4 @@ void tftReplace(int8_t offset, const String & textold, const String & text, int1
} }
tft.drawString(text, x, y); tft.drawString(text, x, y);
tft.unloadFont(); tft.unloadFont();
} }
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
View File
+5755 -6030
View File
File diff suppressed because it is too large Load Diff
+14094 -14704
View File
File diff suppressed because it is too large Load Diff
-2
View File
@@ -618,7 +618,6 @@ void TEF6686::readRDS(bool showrdserrors)
RDScharConverter(rt_buffer, RTtext, sizeof(RTtext) / sizeof(wchar_t), true); // Convert 8 bit ASCII to 16 bit ASCII RDScharConverter(rt_buffer, RTtext, sizeof(RTtext) / sizeof(wchar_t), true); // Convert 8 bit ASCII to 16 bit ASCII
rds.stationText = convertToUTF8(RTtext); // Convert RDS characterset to ASCII rds.stationText = convertToUTF8(RTtext); // Convert RDS characterset to ASCII
rds.stationText = extractUTF8Substring(rds.stationText, 0, 64, true); // Make sure RT does not exceed 64 characters rds.stationText = extractUTF8Substring(rds.stationText, 0, 64, true); // Make sure RT does not exceed 64 characters
rds.stationText += " "; // Add extra spaces
for (int i = 0; i < 64; i++) rt_buffer2[i] = rt_buffer[i]; for (int i = 0; i < 64; i++) rt_buffer2[i] = rt_buffer[i];
} }
@@ -646,7 +645,6 @@ void TEF6686::readRDS(bool showrdserrors)
RDScharConverter(rt_buffer32, RTtext, sizeof(RTtext) / sizeof(wchar_t), true); // Convert 8 bit ASCII to 16 bit ASCII RDScharConverter(rt_buffer32, RTtext, sizeof(RTtext) / sizeof(wchar_t), true); // Convert 8 bit ASCII to 16 bit ASCII
rds.stationText32 = convertToUTF8(RTtext); // Convert RDS characterset to ASCII rds.stationText32 = convertToUTF8(RTtext); // Convert RDS characterset to ASCII
rds.stationText32 = extractUTF8Substring(rds.stationText32, 0, 32, true); // Make sure RT does not exceed 32 characters rds.stationText32 = extractUTF8Substring(rds.stationText32, 0, 32, true); // Make sure RT does not exceed 32 characters
rds.stationText32 += " "; // Add extra spaces
} }
} break; } break;
+147 -122
View File
@@ -179,138 +179,163 @@ static const uint8_t TEFLogo[] PROGMEM = {
}; };
static const uint8_t RDSLogo[] PROGMEM = { static const uint8_t RDSLogo[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x01, 0xfe, 0x0f, 0xf0, 0x00,
0x07, 0xfc, 0x00, 0x1f, 0xe8, 0x00, 0x03, 0xf8, 0x00, 0x07, 0x03, 0xb8, 0x1c, 0x00,
0x07, 0xff, 0x00, 0x1f, 0xfc, 0x00, 0x0f, 0xfe, 0x00, 0x0c, 0xfc, 0xe7, 0xe6, 0x00,
0x0f, 0xff, 0x80, 0x3f, 0xff, 0x00, 0x1f, 0xfc, 0x00, 0x1b, 0x86, 0xdc, 0x3b, 0x00,
0x0f, 0xff, 0xc0, 0x1f, 0xff, 0x00, 0x3f, 0xf8, 0x00, 0x36, 0x79, 0xb3, 0xcd, 0x80,
0x0f, 0x8f, 0xc0, 0x3e, 0x3f, 0x80, 0x3e, 0x10, 0x00, 0x6d, 0xff, 0x6f, 0xf6, 0xc0,
0x0f, 0x0f, 0x80, 0x3e, 0x0f, 0xc0, 0x3e, 0x00, 0x00, 0x5b, 0xfe, 0xdf, 0xfb, 0x40,
0x1f, 0x0f, 0x80, 0x3c, 0x0f, 0x80, 0x7e, 0x00, 0x00, 0x57, 0xfe, 0xbf, 0xfd, 0x60,
0x1f, 0x0f, 0x9c, 0x7e, 0x0f, 0xce, 0x7f, 0x80, 0x00, 0xd7, 0xfd, 0xbf, 0xfd, 0x60,
0x1f, 0xbf, 0x1e, 0x7c, 0x07, 0xce, 0x3f, 0xf0, 0x00, 0xb7, 0xcd, 0x7e, 0x7d, 0xa0,
0x1f, 0xfe, 0x1c, 0x7c, 0x0f, 0x9e, 0x3f, 0xf8, 0x00, 0xff, 0x85, 0x7c, 0x3f, 0xe0,
0x1f, 0xfc, 0x1c, 0x7c, 0x0f, 0x9c, 0x1f, 0xf8, 0x00, 0xff, 0x85, 0x7c, 0x3f, 0xe0,
0x3f, 0xf0, 0x3c, 0x78, 0x0f, 0x9c, 0x03, 0xf8, 0x00, 0xfa, 0x4d, 0x7e, 0x4b, 0xe0,
0x3e, 0xf8, 0x10, 0xf8, 0x1f, 0x14, 0x00, 0xf8, 0x00, 0xf9, 0x3b, 0x7f, 0xd3, 0xe0,
0x3e, 0xf8, 0x00, 0xf8, 0x3f, 0x00, 0x00, 0xf8, 0x00, 0x7d, 0x86, 0xfc, 0x37, 0xc0,
0x3e, 0x7c, 0x00, 0xf8, 0xfe, 0x00, 0xe1, 0xf8, 0x00, 0x7e, 0x7d, 0xfb, 0xcf, 0xc0,
0x3c, 0x7e, 0x00, 0xff, 0xfc, 0x00, 0xf7, 0xf0, 0x00, 0x7f, 0x03, 0xf8, 0x1f, 0xc0,
0x7c, 0x7e, 0x01, 0xff, 0xf8, 0x01, 0xff, 0xe0, 0x00, 0x3f, 0xff, 0xff, 0xff, 0x80,
0x7c, 0x3f, 0x01, 0xff, 0xe0, 0x03, 0xff, 0xe0, 0x00, 0x1f, 0xff, 0xff, 0xff, 0x00,
0x7c, 0x3f, 0x01, 0xff, 0x80, 0x00, 0xff, 0x80, 0x00, 0x0f, 0xff, 0xff, 0xfe, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x07, 0xff, 0xbf, 0xfc, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 0x01, 0xfe, 0x0f, 0xf0, 0x00
};
static const uint8_t Speaker[] PROGMEM = {
0x00, 0x00, 0x00, 0x00,
0x00, 0x18, 0x00, 0x00,
0x00, 0x38, 0x00, 0x00,
0x00, 0xf8, 0x00, 0x00,
0x01, 0xf8, 0x00, 0x00,
0xff, 0xf8, 0x00, 0x00,
0xff, 0xf8, 0x40, 0x80,
0xff, 0xf8, 0xe1, 0xc0,
0xff, 0xf8, 0x73, 0x80,
0xff, 0xf8, 0x3f, 0x00,
0xff, 0xf8, 0x1e, 0x00,
0xff, 0xf8, 0x1e, 0x00,
0xff, 0xf8, 0x3f, 0x00,
0xff, 0xf8, 0x73, 0x80,
0xff, 0xf8, 0xe1, 0xc0,
0xff, 0xf8, 0x40, 0x80,
0xff, 0xf8, 0x00, 0x00,
0x01, 0xf8, 0x00, 0x00,
0x00, 0xf8, 0x00, 0x00,
0x00, 0x38, 0x00, 0x00,
0x00, 0x18, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00
}; };
static const uint8_t WiFi1[] PROGMEM = { static const uint8_t WiFi1[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00,
0x00, 0x3c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00,
0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00,
0x00, 0x18, 0x00, 0x00 0x00, 0x18, 0x00, 0x00
}; };
static const uint8_t WiFi2[] PROGMEM = { static const uint8_t WiFi2[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x01, 0xff, 0x80, 0x00, 0x01, 0xff, 0x80, 0x00,
0x03, 0xff, 0x80, 0x00, 0x03, 0xff, 0x80, 0x00,
0x03, 0xe7, 0x80, 0x00, 0x03, 0xe7, 0x80, 0x00,
0x01, 0x83, 0x80, 0x00, 0x01, 0x83, 0x80, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x18, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00,
0x00, 0x3c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00,
0x00, 0x3c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00,
0x00, 0x18, 0x00, 0x00 0x00, 0x18, 0x00, 0x00
}; };
static const uint8_t WiFi3[] PROGMEM = { static const uint8_t WiFi3[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x7f, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00,
0x01, 0x80, 0xc0, 0x00, 0x01, 0x80, 0xc0, 0x00,
0x02, 0x00, 0x20, 0x00, 0x02, 0x00, 0x20, 0x00,
0x04, 0x7e, 0x10, 0x00, 0x04, 0x7e, 0x10, 0x00,
0x09, 0x80, 0x88, 0x00, 0x09, 0x80, 0x88, 0x00,
0x03, 0x00, 0x48, 0x00, 0x03, 0x00, 0x48, 0x00,
0x0c, 0x00, 0x20, 0x00, 0x0c, 0x00, 0x20, 0x00,
0x04, 0x3e, 0x10, 0x00, 0x04, 0x3e, 0x10, 0x00,
0x00, 0xc1, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00,
0x01, 0x00, 0xc0, 0x00, 0x01, 0x00, 0xc0, 0x00,
0x01, 0x36, 0x40, 0x00, 0x01, 0x36, 0x40, 0x00,
0x01, 0x43, 0x80, 0x00, 0x01, 0x43, 0x80, 0x00,
0x00, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00,
0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00,
0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00,
0x00, 0x08, 0x00, 0x00 0x00, 0x08, 0x00, 0x00
}; };
static const uint8_t WiFi4[] PROGMEM = { static const uint8_t WiFi4[] PROGMEM = {
0x00, 0xff, 0x80, 0x00, 0x00, 0xff, 0x80, 0x00,
0x03, 0xff, 0xe0, 0x00, 0x03, 0xff, 0xe0, 0x00,
0x0f, 0xff, 0xf8, 0x00, 0x0f, 0xff, 0xf8, 0x00,
0x1f, 0xff, 0xfc, 0x00, 0x1f, 0xff, 0xfc, 0x00,
0x3f, 0xc1, 0xfe, 0x00, 0x3f, 0xc1, 0xfe, 0x00,
0x7e, 0x00, 0x3f, 0x80, 0x7e, 0x00, 0x3f, 0x80,
0xfc, 0x00, 0x0f, 0x80, 0xfc, 0x00, 0x0f, 0x80,
0xf0, 0x7f, 0x07, 0x80, 0xf0, 0x7f, 0x07, 0x80,
0x61, 0xff, 0xc3, 0x80, 0x61, 0xff, 0xc3, 0x80,
0x63, 0xff, 0xe1, 0x00, 0x63, 0xff, 0xe1, 0x00,
0x07, 0xff, 0xf0, 0x00, 0x07, 0xff, 0xf0, 0x00,
0x0f, 0xc0, 0xf8, 0x00, 0x0f, 0xc0, 0xf8, 0x00,
0x0f, 0x00, 0x7c, 0x00, 0x0f, 0x00, 0x7c, 0x00,
0x0e, 0x00, 0x38, 0x00, 0x0e, 0x00, 0x38, 0x00,
0x04, 0x3e, 0x08, 0x00, 0x04, 0x3e, 0x08, 0x00,
0x00, 0x7f, 0x80, 0x00, 0x00, 0x7f, 0x80, 0x00,
0x01, 0xff, 0xc0, 0x00, 0x01, 0xff, 0xc0, 0x00,
0x01, 0xff, 0xc0, 0x00, 0x01, 0xff, 0xc0, 0x00,
0x00, 0xe1, 0xc0, 0x00, 0x00, 0xe1, 0xc0, 0x00,
0x00, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00,
0x00, 0x1e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00,
0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00,
0x00, 0x08, 0x00, 0x00 0x00, 0x08, 0x00, 0x00
}; };