diff --git a/yoRadio/data/www/script.js.gz b/yoRadio/data/www/script.js.gz index e2cd7ab..09a7f6b 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 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); }