diff --git a/yoRadio/data/www/script.js.gz b/yoRadio/data/www/script.js.gz index 09a7f6b..7b10373 100644 Binary files a/yoRadio/data/www/script.js.gz and b/yoRadio/data/www/script.js.gz differ 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