#include "commandhandler.h" #include "player.h" #include "display.h" #include "netserver.h" #include "config.h" #include "controls.h" #include "options.h" CommandHandler cmd; bool CommandHandler::exec(const char *command, const char *value, uint8_t cid) { if (strEquals(command, "start")) { player.sendCommand({PR_PLAY, config.lastStation()}); return true; } if (strEquals(command, "stop")) { player.sendCommand({PR_STOP, 0}); return true; } if (strEquals(command, "toggle")) { player.toggle(); return true; } if (strEquals(command, "prev")) { player.prev(); return true; } if (strEquals(command, "next")) { player.next(); return true; } if (strEquals(command, "volm")) { player.stepVol(false); return true; } if (strEquals(command, "volp")) { player.stepVol(true); return true; } #ifdef USE_SD if (strEquals(command, "mode")) { config.changeMode(atoi(value)); return true; } #endif if (strEquals(command, "reset") && cid==0) { config.reset(); return true; } if (strEquals(command, "ballance")) { config.setBalance(atoi(value)); return true; } if (strEquals(command, "playstation") || strEquals(command, "play")){ int id = atoi(value); if (id < 1) id = 1; uint16_t cs = config.playlistLength(); if (id > cs) id = cs; player.sendCommand({PR_PLAY, id}); return true; } if (strEquals(command, "vol")){ int v = atoi(value); config.store.volume = v < 0 ? 0 : (v > 254 ? 254 : v); player.setVol(v); return true; } if (strEquals(command, "dspon")) { config.setDspOn(atoi(value)!=0); return true; } if (strEquals(command, "dim")) { int d=atoi(value); config.store.brightness = (uint8_t)(d < 0 ? 0 : (d > 100 ? 100 : d)); config.setBrightness(true); return true; } if (strEquals(command, "clearspiffs")){ config.spiffsCleanup(); config.saveValue(&config.store.play_mode, static_cast(PM_WEB)); return true; } /*********************************************/ /****************** WEBSOCKET ****************/ /*********************************************/ if (strEquals(command, "getindex")) { netserver.requestOnChange(GETINDEX, cid); return true; } if (strEquals(command, "getsystem")) { netserver.requestOnChange(GETSYSTEM, cid); return true; } if (strEquals(command, "getscreen")) { netserver.requestOnChange(GETSCREEN, cid); return true; } if (strEquals(command, "gettimezone")){ netserver.requestOnChange(GETTIMEZONE, cid); return true; } if (strEquals(command, "getcontrols")){ netserver.requestOnChange(GETCONTROLS, cid); return true; } if (strEquals(command, "getweather")) { netserver.requestOnChange(GETWEATHER, cid); return true; } if (strEquals(command, "getactive")) { netserver.requestOnChange(GETACTIVE, cid); return true; } if (strEquals(command, "newmode")) { config.newConfigMode = atoi(value); netserver.requestOnChange(CHANGEMODE, cid); return true; } if (strEquals(command, "invertdisplay")){ config.saveValue(&config.store.invertdisplay, static_cast(atoi(value))); display.invert(); return true; } if (strEquals(command, "numplaylist")) { config.saveValue(&config.store.numplaylist, static_cast(atoi(value))); display.putRequest(NEWMODE, CLEAR); display.putRequest(NEWMODE, PLAYER); return true; } if (strEquals(command, "fliptouch")) { config.saveValue(&config.store.fliptouch, static_cast(atoi(value))); flipTS(); return true; } if (strEquals(command, "dbgtouch")) { config.saveValue(&config.store.dbgtouch, static_cast(atoi(value))); return true; } if (strEquals(command, "flipscreen")) { config.saveValue(&config.store.flipscreen, static_cast(atoi(value))); display.flip(); display.putRequest(NEWMODE, CLEAR); display.putRequest(NEWMODE, PLAYER); return true; } if (strEquals(command, "brightness")) { if (!config.store.dspon) netserver.requestOnChange(DSPON, 0); config.store.brightness = static_cast(atoi(value)); config.setBrightness(true); return true; } if (strEquals(command, "screenon")) { config.setDspOn(static_cast(atoi(value))); return true; } if (strEquals(command, "contrast")) { config.saveValue(&config.store.contrast, static_cast(atoi(value))); display.setContrast(); return true; } if (strEquals(command, "screensaverenabled")){ config.enableScreensaver(static_cast(atoi(value))); return true; } if (strEquals(command, "screensavertimeout")){ config.setScreensaverTimeout(static_cast(atoi(value))); return true; } if (strEquals(command, "screensaverblank")) { config.setScreensaverBlank(static_cast(atoi(value))); return true; } if (strEquals(command, "screensaverplayingenabled")){ config.setScreensaverPlayingEnabled(static_cast(atoi(value))); return true; } if (strEquals(command, "screensaverplayingtimeout")){ config.setScreensaverPlayingTimeout(static_cast(atoi(value))); return true; } if (strEquals(command, "screensaverplayingblank")) { config.setScreensaverPlayingBlank(static_cast(atoi(value))); return true; } if (strEquals(command, "tzh")) { config.saveValue(&config.store.tzHour, static_cast(atoi(value))); return true; } if (strEquals(command, "tzm")) { config.saveValue(&config.store.tzMin, static_cast(atoi(value))); return true; } if (strEquals(command, "sntp2")) { config.saveValue(config.store.sntp2, value, 35, false); return true; } if (strEquals(command, "sntp1")) { config.setSntpOne(value); return true; } if (strEquals(command, "volsteps")) { config.saveValue(&config.store.volsteps, static_cast(atoi(value))); return true; } if (strEquals(command, "encacc")) { setEncAcceleration(static_cast(atoi(value))); return true; } if (strEquals(command, "irtlp")) { setIRTolerance(static_cast(atoi(value))); return true; } if (strEquals(command, "oneclickswitching")){ config.saveValue(&config.store.skipPlaylistUpDown, static_cast(atoi(value))); return true; } if (strEquals(command, "showweather")) { config.setShowweather(static_cast(atoi(value))); return true; } if (strEquals(command, "lat")) { config.saveValue(config.store.weatherlat, value, 10, false); return true; } if (strEquals(command, "lon")) { config.saveValue(config.store.weatherlon, value, 10, false); return true; } if (strEquals(command, "key")) { config.setWeatherKey(value); return true; } //<-----TODO if (strEquals(command, "volume")) { player.setVol(static_cast(atoi(value))); return true; } if (strEquals(command, "sdpos")) { config.setSDpos(static_cast(atoi(value))); return true; } if (strEquals(command, "snuffle")) { config.setSnuffle(strcmp(value, "true") == 0); return true; } if (strEquals(command, "balance")) { config.setBalance(static_cast(atoi(value))); return true; } if (strEquals(command, "reboot")) { ESP.restart(); return true; } if (strEquals(command, "format")) { SPIFFS.format(); ESP.restart(); return true; } if (strEquals(command, "submitplaylist")) { return true; } #if IR_PIN!=255 if (strEquals(command, "irbtn")) { config.setIrBtn(atoi(value)); return true; } if (strEquals(command, "chkid")) { config.irchck = static_cast(atoi(value)); return true; } if (strEquals(command, "irclr")) { config.ircodes.irVals[config.irindex][static_cast(atoi(value))] = 0; return true; } #endif if (strEquals(command, "reset")) { config.resetSystem(value, cid); return true; } if (strEquals(command, "smartstart")){ uint8_t ss = atoi(value) == 1 ? 1 : 2; if (!player.isRunning() && ss == 1) ss = 0; config.setSmartStart(ss); return true; } if (strEquals(command, "audioinfo")) { config.saveValue(&config.store.audioinfo, static_cast(atoi(value))); display.putRequest(AUDIOINFO); return true; } if (strEquals(command, "vumeter")) { config.saveValue(&config.store.vumeter, static_cast(atoi(value))); display.putRequest(SHOWVUMETER); return true; } if (strEquals(command, "softap")) { config.saveValue(&config.store.softapdelay, static_cast(atoi(value))); return true; } if (strEquals(command, "mdnsname")) { config.saveValue(config.store.mdnsname, value, MDNS_LENGTH); return true; } if (strEquals(command, "rebootmdns")){ char buf[MDNS_LENGTH*2]; if(strlen(config.store.mdnsname)>0) snprintf(buf, MDNS_LENGTH*2, "{\"redirect\": \"http://%s.local\"}", config.store.mdnsname); else snprintf(buf, MDNS_LENGTH*2, "{\"redirect\": \"http://%s/\"}", WiFi.localIP().toString().c_str()); websocket.text(cid, buf); delay(500); ESP.restart(); return true; } return false; }