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