From 5e55bff237027f346ed1f2a84ebdbe30f13736f6 Mon Sep 17 00:00:00 2001 From: Sjef Verhoeven PE5PVB Date: Wed, 8 Jan 2025 11:23:21 +0100 Subject: [PATCH] Added logging to GUI --- TEF6686_ESP32.ino | 91 ++++++++++++++++++++++++++------ data/logo.png | Bin 0 -> 9241 bytes src/comms.cpp | 2 + src/comms.h | 2 +- src/gui.cpp | 28 +++++++++- src/gui.h | 1 + src/language.h | 128 +++++++++++++++++++++++++++++++++++++++------- 7 files changed, 213 insertions(+), 39 deletions(-) create mode 100644 data/logo.png diff --git a/TEF6686_ESP32.ino b/TEF6686_ESP32.ino index dfc7e38..2b68827 100644 --- a/TEF6686_ESP32.ino +++ b/TEF6686_ESP32.ino @@ -184,7 +184,7 @@ byte amgain; byte freqoldcount; byte HighCutLevel; byte HighCutOffset; -byte items[10] = {10, static_cast(dynamicspi ? 10 : 9), 7, 10, 10, 10, 9, 6, 9, 9}; +byte items[10] = {10, static_cast(dynamicspi ? 10 : 9), 7, 10, 10, 10, 9, 6, 10, 9}; byte iMSEQ; byte iMSset; byte language; @@ -642,6 +642,7 @@ void setup() { webserver.on("/", handleRoot); webserver.on("/downloadCSV", HTTP_GET, handleDownloadCSV); + webserver.on("/logo.png", handleLogo); doTheme(); @@ -2732,7 +2733,12 @@ void ButtonPress() { } } } else { - toggleiMSEQ(); + if (band < BAND_GAP) { + if (addRowToCSV()) ShowFreq(2); else ShowFreq(3); + delay(200); + while (digitalRead(ROTARY_BUTTON) == LOW) delay(50); + ShowFreq(0); + } } } if (screensaverset) { @@ -3150,17 +3156,32 @@ void ShowFreq(int mode) { } FrequencySprite.setTextDatum(TR_DATUM); + switch (mode) { + case 0: + FrequencySprite.fillSprite(BackgroundColor); + FrequencySprite.setTextColor(FreqColor, FreqColorSmooth, false); + FrequencySprite.drawString(String(freq / 100) + "." + (freq % 100 < 10 ? "0" : "") + String(freq % 100) + " ", 218, -6); + FrequencySprite.pushSprite(46, 46); + freqold = freq; + break; - if (mode == 0) { - FrequencySprite.fillSprite(BackgroundColor); - FrequencySprite.setTextColor(FreqColor, FreqColorSmooth, false); - FrequencySprite.drawString(String(freq / 100) + "." + (freq % 100 < 10 ? "0" : "") + String(freq % 100) + " ", 218, -6); - FrequencySprite.pushSprite(46, 46); - freqold = freq; - } else if (mode == 1) { - FrequencySprite.fillSprite(BackgroundColor); - FrequencySprite.pushSprite(46, 46); - tftPrint(0, myLanguage[language][34], 146, 58, ActiveColor, ActiveColorSmooth, 28); + case 1: + FrequencySprite.fillSprite(BackgroundColor); + FrequencySprite.pushSprite(46, 46); + tftPrint(0, myLanguage[language][34], 146, 58, ActiveColor, ActiveColorSmooth, 28); + break; + + case 2: + FrequencySprite.fillSprite(BackgroundColor); + FrequencySprite.pushSprite(46, 46); + tftPrint(0, myLanguage[language][290], 146, 58, ActiveColor, ActiveColorSmooth, 28); + break; + + case 3: + FrequencySprite.fillSprite(BackgroundColor); + FrequencySprite.pushSprite(46, 46); + tftPrint(0, myLanguage[language][291], 146, 58, ActiveColor, ActiveColorSmooth, 28); + break; } FrequencySprite.unloadFont(); } @@ -5328,23 +5349,23 @@ void handleRoot() { // Add CSS styling for a modern, dark-themed look html += ""; html += ""; - // Add the logo image at the top of the page - html += "\"FMdx"; + // Add the logo image at the top of the page, served from SPIFFS + html += "\"FMdx"; // Add a header with a dynamic title from the language array (replace with actual language logic) html += "

" + String(myLanguage[language][286]) + "

"; @@ -5585,3 +5606,39 @@ String getCurrentDateTime() { return String(buf) + "," + timeEuropean; } } + +void handleLogo() { + fs::File file = SPIFFS.open("/logo.png", "r"); + if (!file) { + webserver.send(404, "text/plain", "Logo not found"); + return; + } + webserver.streamFile(file, "image/png"); + file.close(); +} + +void printLogbookCSV() { + // Attempt to open the CSV file stored in SPIFFS + fs::File file = SPIFFS.open("/logbook.csv", "r"); + + // Check if the file was successfully opened + if (!file) { + Serial.println("Failed to open logbook!"); + return; + } + + // Print a message indicating the start of the file content + Serial.println("===== Start of logbook.csv ====="); + + // Read and print the contents of the file line by line + while (file.available()) { + String line = file.readStringUntil('\n'); // Read one line at a time + Serial.println(line); // Print the line to the Serial Monitor + } + + // Close the file after reading + file.close(); + + // Print a message indicating the end of the file content + Serial.println("===== End of logbook.csv ====="); +} diff --git a/data/logo.png b/data/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..3c792b22d3a020a96d2594c52ae55408f85c2cad GIT binary patch literal 9241 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 VNmT~Wc>tr(}H`hMHXF1%}7j`ZC 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 literal 0 HcmV?d00001 diff --git a/src/comms.cpp b/src/comms.cpp index d0416fd..0def40a 100644 --- a/src/comms.cpp +++ b/src/comms.cpp @@ -307,6 +307,8 @@ void Communication() { } } } + } else if (data_str.startsWith("l") || data_str.startsWith("L")) { + printLogbookCSV(); } } diff --git a/src/comms.h b/src/comms.h index a61ccc6..e0ca88b 100644 --- a/src/comms.h +++ b/src/comms.h @@ -148,5 +148,5 @@ extern void showAutoSquelch(bool mode); extern void ShowStepSize(); extern void startFMDXScan(); extern void cancelDXScan(); - +extern void printLogbookCSV(); #endif \ No newline at end of file diff --git a/src/gui.cpp b/src/gui.cpp index dd32ab3..8b3e156 100644 --- a/src/gui.cpp +++ b/src/gui.cpp @@ -1555,6 +1555,12 @@ void ShowOneLine(byte position, byte item, bool selected) { FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); FullLineSprite.drawString(String(fmscansens), 298, 2); break; + + case DXMODE: + FullLineSprite.setTextDatum(TL_DATUM); + FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); + FullLineSprite.drawString(removeNewline(myLanguage[language][292]), 6, 2); + break; } break; } @@ -2608,6 +2614,12 @@ void ShowOneButton(byte position, byte item, bool selected) { PSSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); PSSprite.drawString(String(fmscansens), 75, 15); break; + + case DXMODE: + PSSprite.setTextDatum(TC_DATUM); + PSSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); + PSSprite.drawString(shortLine(removeNewline(myLanguage[language][292])), 75, 8); + break; } break; } @@ -4854,14 +4866,14 @@ void MenuDown() { } void showMenuOpenTouchButtons() { - if (hardwaremodel == PORTABLE_TOUCH_ILI9341 && !((menupage == CONNECTIVITY && menuoption == ITEM3) || (menupage == AUTOMEM && (menuoption == ITEM1 || menuoption == ITEM9)) || (menupage == MAINSETTINGS && menuoption == ITEM1))) { + if (hardwaremodel == PORTABLE_TOUCH_ILI9341 && !((menupage == CONNECTIVITY && menuoption == ITEM3) || (menupage == AUTOMEM && (menuoption == ITEM1 || menuoption == ITEM9)) || (menupage == MAINSETTINGS && menuoption == ITEM1) || (menupage == DXMODE && menuoption == ITEM10))) { tft.fillRoundRect(18, 154, 60, 40, 6, FrameColor); tft.drawRoundRect(18, 154, 60, 40, 6, ActiveColor); tft.fillRoundRect(240, 154, 60, 40, 6, FrameColor); tft.drawRoundRect(240, 154, 60, 40, 6, ActiveColor); tft.fillTriangle(52, 160, 52, 188, 38, 174, (CurrentTheme == 7 ? White : ActiveColor)); tft.fillTriangle(266, 160, 266, 188, 280, 174, (CurrentTheme == 7 ? White : ActiveColor)); - if (menuoption == ITEM9) { + if (!submenu && menuoption == ITEM9) { tft.fillRoundRect(240, 36, 60, 40, 6, FrameColor); tft.drawRoundRect(240, 36, 60, 40, 6, ActiveColor); tftPrint(0, "OK", 270, 44, (CurrentTheme == 7 ? White : ActiveColor), ActiveColorSmooth, 28); @@ -5799,6 +5811,18 @@ void DoMenu() { OneBigLineSprite.drawString((scanholdonsignal ? myLanguage[language][42] : myLanguage[language][30]), 135, 0); OneBigLineSprite.pushSprite(24, 118); break; + + case ITEM10: + Infoboxprint(myLanguage[language][292]); + if (handleCreateNewLogbook()) OneBigLineSprite.drawString(myLanguage[language][293], 135, 0); else OneBigLineSprite.drawString(myLanguage[language][294], 135, 0); + OneBigLineSprite.pushSprite(24, 118); + + if (hardwaremodel == PORTABLE_TOUCH_ILI9341) { + tft.fillRoundRect(130, 154, 60, 40, 6, FrameColor); + tft.drawRoundRect(130, 154, 60, 40, 6, ActiveColor); + tftPrint(0, "OK", 160, 162, (CurrentTheme == 7 ? White : ActiveColor), ActiveColorSmooth, 28); + } + break; } break; diff --git a/src/gui.h b/src/gui.h index 3549f35..eaa543e 100644 --- a/src/gui.h +++ b/src/gui.h @@ -246,4 +246,5 @@ extern void setAutoSpeedSPI(); extern void showAutoSquelch(bool mode); extern uint8_t doAutoMemory(uint16_t startfreq, uint16_t stopfreq, uint8_t startmem, uint8_t stopmem, bool rdsonly, uint8_t doublepi); extern void ClearMemoryRange(uint8_t start, uint8_t stop); +extern bool handleCreateNewLogbook(); #endif \ No newline at end of file diff --git a/src/language.h b/src/language.h index e92369e..b5bf445 100644 --- a/src/language.h +++ b/src/language.h @@ -5,7 +5,7 @@ // [number of languages][number of texts] -static const char* const myLanguage[18][290] PROGMEM = { +static const char* const myLanguage[18][295] PROGMEM = { { "English", // English "Rotary direction changed", // 1 "Please release button", // 2 @@ -295,7 +295,12 @@ static const char* const myLanguage[18][290] PROGMEM = { "Your logbook", // 286 "Download logbook", // 287 "Logbook is empty", // 288 - "Go to bottom" // 289 + "Go to bottom", // 289 + "Added to log", // 290 + "Update failed!", // 291 + "Clear logbook", // 292 + "Logbook cleared", // 293 + "Clear failed" // 294 }, { "Nederlands", // Dutch @@ -587,7 +592,12 @@ static const char* const myLanguage[18][290] PROGMEM = { "Jouw logboek", // 286 "Download logboek", // 287 "Logboek is leeg", // 288 - "Ga naar einde" // 289 + "Ga naar einde", // 289 + "Logboek update", // 290 + "Log mislukt!", // 291 + "Logboek legen", // 292 + "Logboek geleegd", // 293 + "Legen mislukt" // 294 }, { "Polski", // Polish @@ -879,7 +889,12 @@ static const char* const myLanguage[18][290] PROGMEM = { "Your logbook", // 286 "Download logbook", // 287 "Logbook is empty", // 288 - "Go to bottom" // 289 + "Go to bottom", // 289 + "Added to log", // 290 + "Update failed!", // 291 + "Clear logbook", // 292 + "Logbook cleared", // 293 + "Clear failed" // 294 }, { "Hrvatski", // Croatian @@ -1171,7 +1186,12 @@ static const char* const myLanguage[18][290] PROGMEM = { "Your logbook", // 286 "Download logbook", // 287 "Logbook is empty", // 288 - "Go to bottom" // 289 + "Go to bottom", // 289 + "Added to log", // 290 + "Update failed!", // 291 + "Clear logbook", // 292 + "Logbook cleared", // 293 + "Clear failed" // 294 }, { "Ελληνικά", // Greek @@ -1463,7 +1483,12 @@ static const char* const myLanguage[18][290] PROGMEM = { "Your logbook", // 286 "Download logbook", // 287 "Logbook is empty", // 288 - "Go to bottom" // 289 + "Go to bottom", // 289 + "Added to log", // 290 + "Update failed!", // 291 + "Clear logbook", // 292 + "Logbook cleared", // 293 + "Clear failed" // 294 }, { "Română", // Romanian @@ -1755,7 +1780,12 @@ static const char* const myLanguage[18][290] PROGMEM = { "Your logbook", // 286 "Download logbook", // 287 "Logbook is empty", // 288 - "Go to bottom" // 289 + "Go to bottom", // 289 + "Added to log", // 290 + "Update failed!", // 291 + "Clear logbook", // 292 + "Logbook cleared", // 293 + "Clear failed" // 294 }, { "Deutsch", // German @@ -2047,7 +2077,12 @@ static const char* const myLanguage[18][290] PROGMEM = { "Your logbook", // 286 "Download logbook", // 287 "Logbook is empty", // 288 - "Go to bottom" // 289 + "Go to bottom", // 289 + "Added to log", // 290 + "Update failed!", // 291 + "Clear logbook", // 292 + "Logbook cleared", // 293 + "Clear failed" // 294 }, { "Český", // Czech @@ -2339,7 +2374,12 @@ static const char* const myLanguage[18][290] PROGMEM = { "Your logbook", // 286 "Download logbook", // 287 "Logbook is empty", // 288 - "Go to bottom" // 289 + "Go to bottom", // 289 + "Added to log", // 290 + "Update failed!", // 291 + "Clear logbook", // 292 + "Logbook cleared", // 293 + "Clear failed" // 294 }, { "Magyar", // Hungarian @@ -2631,7 +2671,12 @@ static const char* const myLanguage[18][290] PROGMEM = { "Your logbook", // 286 "Download logbook", // 287 "Logbook is empty", // 288 - "Go to bottom" // 289 + "Go to bottom", // 289 + "Added to log", // 290 + "Update failed!", // 291 + "Clear logbook", // 292 + "Logbook cleared", // 293 + "Clear failed" // 294 }, { "Français", // French @@ -2923,7 +2968,12 @@ static const char* const myLanguage[18][290] PROGMEM = { "Your logbook", // 286 "Download logbook", // 287 "Logbook is empty", // 288 - "Go to bottom" // 289 + "Go to bottom", // 289 + "Added to log", // 290 + "Update failed!", // 291 + "Clear logbook", // 292 + "Logbook cleared", // 293 + "Clear failed" // 294 }, { "Български", // Bulgarian @@ -3215,7 +3265,12 @@ static const char* const myLanguage[18][290] PROGMEM = { "Your logbook", // 286 "Download logbook", // 287 "Logbook is empty", // 288 - "Go to bottom" // 289 + "Go to bottom", // 289 + "Added to log", // 290 + "Update failed!", // 291 + "Clear logbook", // 292 + "Logbook cleared", // 293 + "Clear failed" // 294 }, { "Русский", // Russian @@ -3507,7 +3562,12 @@ static const char* const myLanguage[18][290] PROGMEM = { "Your logbook", // 286 "Download logbook", // 287 "Logbook is empty", // 288 - "Go to bottom" // 289 + "Go to bottom", // 289 + "Added to log", // 290 + "Update failed!", // 291 + "Clear logbook", // 292 + "Logbook cleared", // 293 + "Clear failed" // 294 }, { "Українська", // Ukranian @@ -3799,7 +3859,12 @@ static const char* const myLanguage[18][290] PROGMEM = { "Your logbook", // 286 "Download logbook", // 287 "Logbook is empty", // 288 - "Go to bottom" // 289 + "Go to bottom", // 289 + "Added to log", // 290 + "Update failed!", // 291 + "Clear logbook", // 292 + "Logbook cleared", // 293 + "Clear failed" // 294 }, { "Italiano", // Italian @@ -4091,7 +4156,12 @@ static const char* const myLanguage[18][290] PROGMEM = { "Your logbook", // 286 "Download logbook", // 287 "Logbook is empty", // 288 - "Go to bottom" // 289 + "Go to bottom", // 289 + "Added to log", // 290 + "Update failed!", // 291 + "Clear logbook", // 292 + "Logbook cleared", // 293 + "Clear failed" // 294 }, { "Simplified Chinese", // Simplified Chinese @@ -4383,7 +4453,12 @@ static const char* const myLanguage[18][290] PROGMEM = { "Your logbook", // 286 "Download logbook", // 287 "Logbook is empty", // 288 - "Go to bottom" // 289 + "Go to bottom", // 289 + "Added to log", // 290 + "Update failed!", // 291 + "Clear logbook", // 292 + "Logbook cleared", // 293 + "Clear failed" // 294 }, { "Norsk", // Norwegian @@ -4675,7 +4750,12 @@ static const char* const myLanguage[18][290] PROGMEM = { "Your logbook", // 286 "Download logbook", // 287 "Logbook is empty", // 288 - "Go to bottom" // 289 + "Go to bottom", // 289 + "Added to log", // 290 + "Update failed!", // 291 + "Clear logbook", // 292 + "Logbook cleared", // 293 + "Clear failed" // 294 }, { "Español", // Spanish @@ -4967,7 +5047,12 @@ static const char* const myLanguage[18][290] PROGMEM = { "Your logbook", // 286 "Download logbook", // 287 "Logbook is empty", // 288 - "Go to bottom" // 289 + "Go to bottom", // 289 + "Added to log", // 290 + "Update failed!", // 291 + "Clear logbook", // 292 + "Logbook cleared", // 293 + "Clear failed" // 294 }, { "Português", // Portuguese @@ -5259,7 +5344,12 @@ static const char* const myLanguage[18][290] PROGMEM = { "Your logbook", // 286 "Download logbook", // 287 "Logbook is empty", // 288 - "Go to bottom" // 289 + "Go to bottom", // 289 + "Added to log", // 290 + "Update failed!", // 291 + "Clear logbook", // 292 + "Logbook cleared", // 293 + "Clear failed" // 294 } }; #endif \ No newline at end of file