Screensaver while playing option

This commit is contained in:
darkpoet78
2024-12-29 17:41:24 +09:00
parent c2c1908f96
commit c7eb9cc700
8 changed files with 52 additions and 6 deletions

Binary file not shown.

View File

@@ -83,7 +83,17 @@
</div> </div>
<div class="inputwrap"> <div class="inputwrap">
<span class="inputtitle">screensaver timeout (sec)</span> <span class="inputtitle">screensaver timeout (sec)</span>
<input type="number" id="screensavertimeout" class="textinput inputchange" name="screensavertimeout" value="" maxlength="3" min="0" max="65520" /> <input type="number" id="screensavertimeout" class="textinput inputchange" name="screensavertimeout" value="" maxlength="3" min="5" max="65520" />
</div>
</div>
<div class="flex-row group group_tft group_oled group_nextion hidden">
<div class="inputwrap">
<span class="inputtitle">screensaver while playing</span>
<div class="checkbox off nous" id="screensaverplayingenabled"></div>
</div>
<div class="inputwrap">
<span class="inputtitle">screensaver timeout (min)</span>
<input type="number" id="screensaverplayingtimeout" class="textinput inputchange" name="screensaverplayingtimeout" value="" maxlength="3" min="1" max="1080" />
</div> </div>
</div> </div>
</section> </section>

View File

@@ -34,6 +34,7 @@ void Config::init() {
EEPROM.begin(EEPROM_SIZE); EEPROM.begin(EEPROM_SIZE);
sdResumePos = 0; sdResumePos = 0;
screensaverTicks = 0; screensaverTicks = 0;
screensaverPlayingTicks = 0;
isScreensaver = false; isScreensaver = false;
bootInfo(); bootInfo();
#if RTCSUPPORTED #if RTCSUPPORTED
@@ -97,6 +98,10 @@ void Config::_setupVersion(){
saveValue(store.mdnsname, buf, MDNS_LENGTH); saveValue(store.mdnsname, buf, MDNS_LENGTH);
saveValue(&store.skipPlaylistUpDown, false); saveValue(&store.skipPlaylistUpDown, false);
break; break;
case 3:
saveValue(&store.screensaverPlayingEnabled, false);
saveValue(&store.screensaverPlayingTimeout, (uint16_t)5);
break;
default: default:
break; break;
} }
@@ -353,6 +358,8 @@ void Config::setDefaults() {
store.screensaverTimeout = 20; store.screensaverTimeout = 20;
snprintf(store.mdnsname, MDNS_LENGTH, "yoradio-%x", getChipId()); snprintf(store.mdnsname, MDNS_LENGTH, "yoradio-%x", getChipId());
store.skipPlaylistUpDown = false; store.skipPlaylistUpDown = false;
store.screensaverPlayingEnabled = false;
store.screensaverPlayingTimeout = 5;
eepromWrite(EEPROM_START, store); eepromWrite(EEPROM_START, store);
} }

View File

@@ -46,7 +46,7 @@
#if ESP_ARDUINO_VERSION >= ESP_ARDUINO_VERSION_VAL(3, 0, 0) #if ESP_ARDUINO_VERSION >= ESP_ARDUINO_VERSION_VAL(3, 0, 0)
#define ESP_ARDUINO_3 1 #define ESP_ARDUINO_3 1
#endif #endif
#define CONFIG_VERSION 3 #define CONFIG_VERSION 4
enum playMode_e : uint8_t { PM_WEB=0, PM_SDCARD=1 }; 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 }; enum BitrateFormat { BF_UNCNOWN, BF_MP3, BF_AAC, BF_FLAC, BF_OGG, BF_WAV };
@@ -136,6 +136,8 @@ struct config_t
bool rotate90; bool rotate90;
bool screensaverEnabled; bool screensaverEnabled;
uint16_t screensaverTimeout; uint16_t screensaverTimeout;
bool screensaverPlayingEnabled;
uint16_t screensaverPlayingTimeout;
char mdnsname[24]; char mdnsname[24];
bool skipPlaylistUpDown; bool skipPlaylistUpDown;
}; };
@@ -181,6 +183,7 @@ class Config {
bool emptyFS; bool emptyFS;
uint16_t vuThreshold; uint16_t vuThreshold;
uint16_t screensaverTicks; uint16_t screensaverTicks;
uint16_t screensaverPlayingTicks;
bool isScreensaver; bool isScreensaver;
public: public:
Config() {}; Config() {};

View File

@@ -289,6 +289,7 @@ void Display::_swichMode(displayMode_e newmode) {
_pager.setPage( pages[PG_SCREENSAVER]); _pager.setPage( pages[PG_SCREENSAVER]);
}else{ }else{
config.screensaverTicks=SCREENSAVERSTARTUPDELAY; config.screensaverTicks=SCREENSAVERSTARTUPDELAY;
config.screensaverPlayingTicks=SCREENSAVERSTARTUPDELAY;
config.isScreensaver = false; config.isScreensaver = false;
} }
if (newmode == VOL) { if (newmode == VOL) {
@@ -533,7 +534,7 @@ void Display::_time(bool redraw) {
} }
#endif #endif
if(config.isScreensaver && network.timeinfo.tm_sec % 60 == 0) 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<uint16_t>(random(TFT_FRAMEWDT+clockConf.textsize, (dsp.height()-dsp.plItemHeight-TFT_FRAMEWDT*2))), 0});
_clock.draw(); _clock.draw();
/*#ifdef USE_NEXTION /*#ifdef USE_NEXTION
nextion.printClock(network.timeinfo); nextion.printClock(network.timeinfo);

View File

@@ -298,7 +298,7 @@ void NetServer::processQueue(){
config.vuThreshold, config.vuThreshold,
config.store.mdnsname); config.store.mdnsname);
break; 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.flipscreen,
config.store.invertdisplay, config.store.invertdisplay,
config.store.numplaylist, config.store.numplaylist,
@@ -308,7 +308,9 @@ void NetServer::processQueue(){
config.store.brightness, config.store.brightness,
config.store.contrast, config.store.contrast,
config.store.screensaverEnabled, config.store.screensaverEnabled,
config.store.screensaverTimeout); config.store.screensaverTimeout,
config.store.screensaverPlayingEnabled,
config.store.screensaverPlayingTimeout);
break; break;
case GETTIMEZONE: sprintf (wsbuf, "{\"tzh\":%d,\"tzm\":%d,\"sntp1\":\"%s\",\"sntp2\":\"%s\"}", case GETTIMEZONE: sprintf (wsbuf, "{\"tzh\":%d,\"tzm\":%d,\"sntp1\":\"%s\",\"sntp2\":\"%s\"}",
config.store.tzHour, 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) { if (strcmp(cmd, "screensavertimeout") == 0) {
uint16_t valb = atoi(val); uint16_t valb = atoi(val);
valb = constrain(valb,0,65520); valb = constrain(valb,5,65520);
config.saveValue(&config.store.screensaverTimeout, valb); config.saveValue(&config.store.screensaverTimeout, valb);
#ifndef DSP_LCD #ifndef DSP_LCD
display.putRequest(NEWMODE, PLAYER); display.putRequest(NEWMODE, PLAYER);
#endif #endif
return; return;
} }
if (strcmp(cmd, "screensaverplayingenabled") == 0) {
bool valb = static_cast<bool>(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) { if (strcmp(cmd, "tzh") == 0) {
int8_t vali = atoi(val); int8_t vali = atoi(val);
config.saveValue(&config.store.tzHour, vali); 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.numplaylist, false);
config.saveValue(&config.store.screensaverEnabled, false); config.saveValue(&config.store.screensaverEnabled, false);
config.saveValue(&config.store.screensaverTimeout, (uint16_t)20); 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); display.putRequest(NEWMODE, CLEAR); display.putRequest(NEWMODE, PLAYER);
requestOnChange(GETSCREEN, clientId); requestOnChange(GETSCREEN, clientId);
return; return;

View File

@@ -53,6 +53,9 @@ void ticks() {
if(config.store.screensaverEnabled && display.mode()==PLAYER && !player.isRunning()){ if(config.store.screensaverEnabled && display.mode()==PLAYER && !player.isRunning()){
if(config.screensaverTicks++ > config.store.screensaverTimeout+SCREENSAVERSTARTUPDELAY) display.putRequest(NEWMODE, SCREENSAVER); 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 #endif
#if RTCSUPPORTED #if RTCSUPPORTED
if(config.isRTCFound()){ if(config.isRTCFound()){

View File

@@ -191,6 +191,7 @@ void Player::_play(uint16_t stationId) {
config.vuThreshold = 0; config.vuThreshold = 0;
//display.putRequest(PSTOP); //display.putRequest(PSTOP);
config.screensaverTicks=SCREENSAVERSTARTUPDELAY; config.screensaverTicks=SCREENSAVERSTARTUPDELAY;
config.screensaverPlayingTicks=SCREENSAVERSTARTUPDELAY;
if(config.getMode()!=PM_SDCARD) { if(config.getMode()!=PM_SDCARD) {
display.putRequest(PSTOP); display.putRequest(PSTOP);
} }