From c7eb9cc700aa8e238e0a5719f293f4f459b15d0c Mon Sep 17 00:00:00 2001 From: darkpoet78 Date: Sun, 29 Dec 2024 17:41:24 +0900 Subject: [PATCH 1/2] Screensaver while playing option --- yoRadio/data/www/script.js.gz | Bin 6023 -> 5940 bytes yoRadio/data/www/settings.html | 12 +++++++++++- yoRadio/src/core/config.cpp | 7 +++++++ yoRadio/src/core/config.h | 5 ++++- yoRadio/src/core/display.cpp | 3 ++- yoRadio/src/core/netserver.cpp | 27 ++++++++++++++++++++++++--- yoRadio/src/core/network.cpp | 3 +++ yoRadio/src/core/player.cpp | 1 + 8 files changed, 52 insertions(+), 6 deletions(-) diff --git a/yoRadio/data/www/script.js.gz b/yoRadio/data/www/script.js.gz index e2cd7ab2a7d3f630a8c0983aa6109db403858c05..09a7f6b222a1bc8038d334de1bdcb78a957ecdf0 100644 GIT binary patch literal 5940 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 WTKRx9Kx(PSpZ@?FJqv&&X8-`Qgpf=C literal 6023 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 BmuUb1 diff --git a/yoRadio/data/www/settings.html b/yoRadio/data/www/settings.html index c1d9dc9..ac0b77d 100644 --- a/yoRadio/data/www/settings.html +++ b/yoRadio/data/www/settings.html @@ -83,7 +83,17 @@
screensaver timeout (sec) - + +
+ + diff --git a/yoRadio/src/core/config.cpp b/yoRadio/src/core/config.cpp index 35c8444..693763f 100644 --- a/yoRadio/src/core/config.cpp +++ b/yoRadio/src/core/config.cpp @@ -34,6 +34,7 @@ void Config::init() { EEPROM.begin(EEPROM_SIZE); sdResumePos = 0; screensaverTicks = 0; + screensaverPlayingTicks = 0; isScreensaver = false; bootInfo(); #if RTCSUPPORTED @@ -97,6 +98,10 @@ void Config::_setupVersion(){ saveValue(store.mdnsname, buf, MDNS_LENGTH); saveValue(&store.skipPlaylistUpDown, false); break; + case 3: + saveValue(&store.screensaverPlayingEnabled, false); + saveValue(&store.screensaverPlayingTimeout, (uint16_t)5); + break; default: break; } @@ -353,6 +358,8 @@ void Config::setDefaults() { store.screensaverTimeout = 20; snprintf(store.mdnsname, MDNS_LENGTH, "yoradio-%x", getChipId()); store.skipPlaylistUpDown = false; + store.screensaverPlayingEnabled = false; + store.screensaverPlayingTimeout = 5; eepromWrite(EEPROM_START, store); } diff --git a/yoRadio/src/core/config.h b/yoRadio/src/core/config.h index 8cb9660..8cf9516 100644 --- a/yoRadio/src/core/config.h +++ b/yoRadio/src/core/config.h @@ -46,7 +46,7 @@ #if ESP_ARDUINO_VERSION >= ESP_ARDUINO_VERSION_VAL(3, 0, 0) #define ESP_ARDUINO_3 1 #endif -#define CONFIG_VERSION 3 +#define CONFIG_VERSION 4 enum playMode_e : uint8_t { PM_WEB=0, PM_SDCARD=1 }; enum BitrateFormat { BF_UNCNOWN, BF_MP3, BF_AAC, BF_FLAC, BF_OGG, BF_WAV }; @@ -136,6 +136,8 @@ struct config_t bool rotate90; bool screensaverEnabled; uint16_t screensaverTimeout; + bool screensaverPlayingEnabled; + uint16_t screensaverPlayingTimeout; char mdnsname[24]; bool skipPlaylistUpDown; }; @@ -181,6 +183,7 @@ class Config { bool emptyFS; uint16_t vuThreshold; uint16_t screensaverTicks; + uint16_t screensaverPlayingTicks; bool isScreensaver; public: Config() {}; diff --git a/yoRadio/src/core/display.cpp b/yoRadio/src/core/display.cpp index 0736b2f..5b3d911 100644 --- a/yoRadio/src/core/display.cpp +++ b/yoRadio/src/core/display.cpp @@ -289,6 +289,7 @@ void Display::_swichMode(displayMode_e newmode) { _pager.setPage( pages[PG_SCREENSAVER]); }else{ config.screensaverTicks=SCREENSAVERSTARTUPDELAY; + config.screensaverPlayingTicks=SCREENSAVERSTARTUPDELAY; config.isScreensaver = false; } if (newmode == VOL) { @@ -533,7 +534,7 @@ void Display::_time(bool redraw) { } #endif if(config.isScreensaver && network.timeinfo.tm_sec % 60 == 0) - _clock.moveTo({clockConf.left, random(TFT_FRAMEWDT+clockConf.textsize, (dsp.height()-TFT_FRAMEWDT*2)), 0}); + _clock.moveTo({clockConf.left, static_cast(random(TFT_FRAMEWDT+clockConf.textsize, (dsp.height()-dsp.plItemHeight-TFT_FRAMEWDT*2))), 0}); _clock.draw(); /*#ifdef USE_NEXTION nextion.printClock(network.timeinfo); diff --git a/yoRadio/src/core/netserver.cpp b/yoRadio/src/core/netserver.cpp index e020c72..a7bc469 100644 --- a/yoRadio/src/core/netserver.cpp +++ b/yoRadio/src/core/netserver.cpp @@ -298,7 +298,7 @@ void NetServer::processQueue(){ config.vuThreshold, config.store.mdnsname); break; - case GETSCREEN: sprintf (wsbuf, "{\"flip\":%d,\"inv\":%d,\"nump\":%d,\"tsf\":%d,\"tsd\":%d,\"dspon\":%d,\"br\":%d,\"con\":%d,\"scre\":%d,\"scrt\":%d}", + case GETSCREEN: sprintf (wsbuf, "{\"flip\":%d,\"inv\":%d,\"nump\":%d,\"tsf\":%d,\"tsd\":%d,\"dspon\":%d,\"br\":%d,\"con\":%d,\"scre\":%d,\"scrt\":%d,\"scrpe\":%d,\"scrpt\":%d}", config.store.flipscreen, config.store.invertdisplay, config.store.numplaylist, @@ -308,7 +308,9 @@ void NetServer::processQueue(){ config.store.brightness, config.store.contrast, config.store.screensaverEnabled, - config.store.screensaverTimeout); + config.store.screensaverTimeout, + config.store.screensaverPlayingEnabled, + config.store.screensaverPlayingTimeout); break; case GETTIMEZONE: sprintf (wsbuf, "{\"tzh\":%d,\"tzm\":%d,\"sntp1\":\"%s\",\"sntp2\":\"%s\"}", config.store.tzHour, @@ -507,13 +509,30 @@ void NetServer::onWsMessage(void *arg, uint8_t *data, size_t len, uint8_t client } if (strcmp(cmd, "screensavertimeout") == 0) { uint16_t valb = atoi(val); - valb = constrain(valb,0,65520); + valb = constrain(valb,5,65520); config.saveValue(&config.store.screensaverTimeout, valb); #ifndef DSP_LCD display.putRequest(NEWMODE, PLAYER); #endif return; } + if (strcmp(cmd, "screensaverplayingenabled") == 0) { + bool valb = static_cast(atoi(val)); + config.saveValue(&config.store.screensaverPlayingEnabled, valb); + #ifndef DSP_LCD + display.putRequest(NEWMODE, PLAYER); + #endif + return; + } + if (strcmp(cmd, "screensaverplayingtimeout") == 0) { + uint16_t valb = atoi(val); + valb = constrain(valb,1,1080); + config.saveValue(&config.store.screensaverPlayingTimeout, valb); + #ifndef DSP_LCD + display.putRequest(NEWMODE, PLAYER); + #endif + return; + } if (strcmp(cmd, "tzh") == 0) { int8_t vali = atoi(val); config.saveValue(&config.store.tzHour, vali); @@ -613,6 +632,8 @@ void NetServer::onWsMessage(void *arg, uint8_t *data, size_t len, uint8_t client config.saveValue(&config.store.numplaylist, false); config.saveValue(&config.store.screensaverEnabled, false); config.saveValue(&config.store.screensaverTimeout, (uint16_t)20); + config.saveValue(&config.store.screensaverPlayingEnabled, false); + config.saveValue(&config.store.screensaverPlayingTimeout, (uint16_t)5); display.putRequest(NEWMODE, CLEAR); display.putRequest(NEWMODE, PLAYER); requestOnChange(GETSCREEN, clientId); return; diff --git a/yoRadio/src/core/network.cpp b/yoRadio/src/core/network.cpp index 38a0d51..50a102c 100644 --- a/yoRadio/src/core/network.cpp +++ b/yoRadio/src/core/network.cpp @@ -53,6 +53,9 @@ void ticks() { if(config.store.screensaverEnabled && display.mode()==PLAYER && !player.isRunning()){ if(config.screensaverTicks++ > config.store.screensaverTimeout+SCREENSAVERSTARTUPDELAY) display.putRequest(NEWMODE, SCREENSAVER); } + if(config.store.screensaverPlayingEnabled && display.mode()==PLAYER && player.isRunning()){ + if(config.screensaverPlayingTicks++ > config.store.screensaverPlayingTimeout*60+SCREENSAVERSTARTUPDELAY) display.putRequest(NEWMODE, SCREENSAVER); + } #endif #if RTCSUPPORTED if(config.isRTCFound()){ diff --git a/yoRadio/src/core/player.cpp b/yoRadio/src/core/player.cpp index 819a2e5..2a52361 100644 --- a/yoRadio/src/core/player.cpp +++ b/yoRadio/src/core/player.cpp @@ -191,6 +191,7 @@ void Player::_play(uint16_t stationId) { config.vuThreshold = 0; //display.putRequest(PSTOP); config.screensaverTicks=SCREENSAVERSTARTUPDELAY; + config.screensaverPlayingTicks=SCREENSAVERSTARTUPDELAY; if(config.getMode()!=PM_SDCARD) { display.putRequest(PSTOP); } From e339e820fc1e9c0abb66e5b267997e0fba1fe69a Mon Sep 17 00:00:00 2001 From: darkpoet78 Date: Mon, 30 Dec 2024 19:22:24 +0900 Subject: [PATCH 2/2] options to blank the screen added --- yoRadio/data/www/script.js.gz | Bin 5940 -> 5965 bytes yoRadio/data/www/settings.html | 16 ++++++++++++---- yoRadio/src/core/common.h | 2 +- yoRadio/src/core/config.cpp | 2 ++ yoRadio/src/core/config.h | 2 ++ yoRadio/src/core/display.cpp | 3 ++- yoRadio/src/core/netserver.cpp | 24 ++++++++++++++++++++++-- yoRadio/src/core/network.cpp | 18 ++++++++++++++++-- 8 files changed, 57 insertions(+), 10 deletions(-) diff --git a/yoRadio/data/www/script.js.gz b/yoRadio/data/www/script.js.gz index 09a7f6b222a1bc8038d334de1bdcb78a957ecdf0..7b1037315a8f1b3a42c90bb60710a30a17a96e48 100644 GIT binary patch literal 5965 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 literal 5940 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 WTKRx9Kx(PSpZ@?FJqv&&X8-`Qgpf=C diff --git a/yoRadio/data/www/settings.html b/yoRadio/data/www/settings.html index ac0b77d..edd2560 100644 --- a/yoRadio/data/www/settings.html +++ b/yoRadio/data/www/settings.html @@ -78,21 +78,29 @@
screensaver
diff --git a/yoRadio/src/core/common.h b/yoRadio/src/core/common.h index 2c20da4..30a7fbf 100644 --- a/yoRadio/src/core/common.h +++ b/yoRadio/src/core/common.h @@ -1,7 +1,7 @@ #ifndef COMMON_H #define COMMON_H -enum displayMode_e { PLAYER, VOL, STATIONS, NUMBERS, LOST, UPDATING, INFO, SETTINGS, TIMEZONE, WIFI, CLEAR, SLEEPING, SDCHANGE, SCREENSAVER }; +enum displayMode_e { PLAYER, VOL, STATIONS, NUMBERS, LOST, UPDATING, INFO, SETTINGS, TIMEZONE, WIFI, CLEAR, SLEEPING, SDCHANGE, SCREENSAVER, SCREENBLANK }; enum pages_e : uint8_t { PG_PLAYER=0, PG_DIALOG=1, PG_PLAYLIST=2, PG_SCREENSAVER=3 }; enum displayRequestType_e { BOOTSTRING, NEWMODE, CLOCK, NEWTITLE, NEWSTATION, NEXTSTATION, DRAWPLAYLIST, DRAWVOL, DBITRATE, AUDIOINFO, SHOWVUMETER, DSPRSSI, SHOWWEATHER, NEWWEATHER, PSTOP, PSTART, DSP_START, WAITFORSD, SDFILEINDEX, NEWIP, NOPE }; diff --git a/yoRadio/src/core/config.cpp b/yoRadio/src/core/config.cpp index 693763f..1a5862e 100644 --- a/yoRadio/src/core/config.cpp +++ b/yoRadio/src/core/config.cpp @@ -99,8 +99,10 @@ void Config::_setupVersion(){ saveValue(&store.skipPlaylistUpDown, false); break; case 3: + saveValue(&store.screensaverBlank, false); saveValue(&store.screensaverPlayingEnabled, false); saveValue(&store.screensaverPlayingTimeout, (uint16_t)5); + saveValue(&store.screensaverPlayingBlank, false); break; default: break; diff --git a/yoRadio/src/core/config.h b/yoRadio/src/core/config.h index 8cf9516..d9e1787 100644 --- a/yoRadio/src/core/config.h +++ b/yoRadio/src/core/config.h @@ -136,8 +136,10 @@ struct config_t bool rotate90; bool screensaverEnabled; uint16_t screensaverTimeout; + bool screensaverBlank; bool screensaverPlayingEnabled; uint16_t screensaverPlayingTimeout; + bool screensaverPlayingBlank; char mdnsname[24]; bool skipPlaylistUpDown; }; diff --git a/yoRadio/src/core/display.cpp b/yoRadio/src/core/display.cpp index 5b3d911..ce058c1 100644 --- a/yoRadio/src/core/display.cpp +++ b/yoRadio/src/core/display.cpp @@ -284,9 +284,10 @@ void Display::_swichMode(displayMode_e newmode) { _pager.setPage( pages[PG_PLAYER]); pm.on_display_player(); } - if (newmode == SCREENSAVER) { + if (newmode == SCREENSAVER || newmode == SCREENBLANK) { config.isScreensaver = true; _pager.setPage( pages[PG_SCREENSAVER]); + if (newmode == SCREENBLANK) dsp.clearClock(); }else{ config.screensaverTicks=SCREENSAVERSTARTUPDELAY; config.screensaverPlayingTicks=SCREENSAVERSTARTUPDELAY; diff --git a/yoRadio/src/core/netserver.cpp b/yoRadio/src/core/netserver.cpp index a7bc469..0ec3c36 100644 --- a/yoRadio/src/core/netserver.cpp +++ b/yoRadio/src/core/netserver.cpp @@ -298,7 +298,7 @@ void NetServer::processQueue(){ config.vuThreshold, config.store.mdnsname); break; - case GETSCREEN: sprintf (wsbuf, "{\"flip\":%d,\"inv\":%d,\"nump\":%d,\"tsf\":%d,\"tsd\":%d,\"dspon\":%d,\"br\":%d,\"con\":%d,\"scre\":%d,\"scrt\":%d,\"scrpe\":%d,\"scrpt\":%d}", + case GETSCREEN: sprintf (wsbuf, "{\"flip\":%d,\"inv\":%d,\"nump\":%d,\"tsf\":%d,\"tsd\":%d,\"dspon\":%d,\"br\":%d,\"con\":%d,\"scre\":%d,\"scrt\":%d,\"scrb\":%d,\"scrpe\":%d,\"scrpt\":%d,\"scrpb\":%d}", config.store.flipscreen, config.store.invertdisplay, config.store.numplaylist, @@ -309,8 +309,10 @@ void NetServer::processQueue(){ config.store.contrast, config.store.screensaverEnabled, config.store.screensaverTimeout, + config.store.screensaverBlank, config.store.screensaverPlayingEnabled, - config.store.screensaverPlayingTimeout); + config.store.screensaverPlayingTimeout, + config.store.screensaverPlayingBlank); break; case GETTIMEZONE: sprintf (wsbuf, "{\"tzh\":%d,\"tzm\":%d,\"sntp1\":\"%s\",\"sntp2\":\"%s\"}", config.store.tzHour, @@ -516,6 +518,14 @@ void NetServer::onWsMessage(void *arg, uint8_t *data, size_t len, uint8_t client #endif return; } + if (strcmp(cmd, "screensaverblank") == 0) { + bool valb = static_cast(atoi(val)); + config.saveValue(&config.store.screensaverBlank, valb); + #ifndef DSP_LCD + display.putRequest(NEWMODE, PLAYER); + #endif + return; + } if (strcmp(cmd, "screensaverplayingenabled") == 0) { bool valb = static_cast(atoi(val)); config.saveValue(&config.store.screensaverPlayingEnabled, valb); @@ -533,6 +543,14 @@ void NetServer::onWsMessage(void *arg, uint8_t *data, size_t len, uint8_t client #endif return; } + if (strcmp(cmd, "screensaverplayingblank") == 0) { + bool valb = static_cast(atoi(val)); + config.saveValue(&config.store.screensaverPlayingBlank, valb); + #ifndef DSP_LCD + display.putRequest(NEWMODE, PLAYER); + #endif + return; + } if (strcmp(cmd, "tzh") == 0) { int8_t vali = atoi(val); config.saveValue(&config.store.tzHour, vali); @@ -632,8 +650,10 @@ void NetServer::onWsMessage(void *arg, uint8_t *data, size_t len, uint8_t client config.saveValue(&config.store.numplaylist, false); config.saveValue(&config.store.screensaverEnabled, false); config.saveValue(&config.store.screensaverTimeout, (uint16_t)20); + config.saveValue(&config.store.screensaverBlank, false); config.saveValue(&config.store.screensaverPlayingEnabled, false); config.saveValue(&config.store.screensaverPlayingTimeout, (uint16_t)5); + config.saveValue(&config.store.screensaverPlayingBlank, false); display.putRequest(NEWMODE, CLEAR); display.putRequest(NEWMODE, PLAYER); requestOnChange(GETSCREEN, clientId); return; diff --git a/yoRadio/src/core/network.cpp b/yoRadio/src/core/network.cpp index 50a102c..20d4b56 100644 --- a/yoRadio/src/core/network.cpp +++ b/yoRadio/src/core/network.cpp @@ -51,10 +51,24 @@ void ticks() { } #ifndef DSP_LCD if(config.store.screensaverEnabled && display.mode()==PLAYER && !player.isRunning()){ - if(config.screensaverTicks++ > config.store.screensaverTimeout+SCREENSAVERSTARTUPDELAY) display.putRequest(NEWMODE, SCREENSAVER); + config.screensaverTicks++; + if(config.screensaverTicks > config.store.screensaverTimeout+SCREENSAVERSTARTUPDELAY){ + if(config.store.screensaverBlank){ + display.putRequest(NEWMODE, SCREENBLANK); + }else{ + display.putRequest(NEWMODE, SCREENSAVER); + } + } } if(config.store.screensaverPlayingEnabled && display.mode()==PLAYER && player.isRunning()){ - if(config.screensaverPlayingTicks++ > config.store.screensaverPlayingTimeout*60+SCREENSAVERSTARTUPDELAY) display.putRequest(NEWMODE, SCREENSAVER); + config.screensaverPlayingTicks++; + if(config.screensaverPlayingTicks > config.store.screensaverPlayingTimeout*60+SCREENSAVERSTARTUPDELAY){ + if(config.store.screensaverPlayingBlank){ + display.putRequest(NEWMODE, SCREENBLANK); + }else{ + display.putRequest(NEWMODE, SCREENSAVER); + } + } } #endif #if RTCSUPPORTED