Non-effect preset should not unload playlist.
This commit is contained in:
parent
d31271fee3
commit
09bcf34050
@ -195,7 +195,7 @@ void handlePlaylist();
|
|||||||
|
|
||||||
//presets.cpp
|
//presets.cpp
|
||||||
void handlePresets();
|
void handlePresets();
|
||||||
bool applyPreset(byte index, byte callMode = CALL_MODE_DIRECT_CHANGE);
|
bool applyPreset(byte index, byte callMode = CALL_MODE_DIRECT_CHANGE, bool fromJson = false);
|
||||||
inline bool applyTemporaryPreset() {return applyPreset(255);};
|
inline bool applyTemporaryPreset() {return applyPreset(255);};
|
||||||
void savePreset(byte index, bool persist = true, const char* pname = nullptr, JsonObject saveobj = JsonObject());
|
void savePreset(byte index, bool persist = true, const char* pname = nullptr, JsonObject saveobj = JsonObject());
|
||||||
inline void saveTemporaryPreset() {savePreset(255, false);};
|
inline void saveTemporaryPreset() {savePreset(255, false);};
|
||||||
|
@ -163,7 +163,7 @@ void deserializeSegment(JsonObject elem, byte it, byte presetId)
|
|||||||
if (getVal(elem["fx"], &fx, 1, strip.getModeCount())) { //load effect ('r' random, '~' inc/dec, 1-255 exact value)
|
if (getVal(elem["fx"], &fx, 1, strip.getModeCount())) { //load effect ('r' random, '~' inc/dec, 1-255 exact value)
|
||||||
if (!presetId && currentPlaylist>=0) unloadPlaylist();
|
if (!presetId && currentPlaylist>=0) unloadPlaylist();
|
||||||
strip.setMode(id, fx);
|
strip.setMode(id, fx);
|
||||||
if (!presetId && seg.mode != fxPrev) effectChanged = true; //send UDP
|
if (!presetId && fx != fxPrev) effectChanged = true; //send UDP
|
||||||
}
|
}
|
||||||
byte prevSpd = seg.speed;
|
byte prevSpd = seg.speed;
|
||||||
byte prevInt = seg.intensity;
|
byte prevInt = seg.intensity;
|
||||||
@ -357,9 +357,8 @@ bool deserializeState(JsonObject root, byte callMode, byte presetId)
|
|||||||
|
|
||||||
ps = presetCycCurr;
|
ps = presetCycCurr;
|
||||||
if (getVal(root["ps"], &ps, presetCycMin, presetCycMax)) { //load preset (clears state request!)
|
if (getVal(root["ps"], &ps, presetCycMin, presetCycMax)) { //load preset (clears state request!)
|
||||||
if (!presetId) unloadPlaylist(); //stop playlist if preset changed manually
|
|
||||||
if (ps >= presetCycMin && ps <= presetCycMax) presetCycCurr = ps;
|
if (ps >= presetCycMin && ps <= presetCycMax) presetCycCurr = ps;
|
||||||
applyPreset(ps, callMode);
|
applyPreset(ps, callMode, true);
|
||||||
return stateResponse;
|
return stateResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -10,11 +10,13 @@ static char *tmpRAMbuffer = nullptr;
|
|||||||
|
|
||||||
static volatile byte presetToApply = 0;
|
static volatile byte presetToApply = 0;
|
||||||
static volatile byte callModeToApply = 0;
|
static volatile byte callModeToApply = 0;
|
||||||
|
static volatile bool checkPlaylist = false;
|
||||||
|
|
||||||
bool applyPreset(byte index, byte callMode)
|
bool applyPreset(byte index, byte callMode, bool fromJson)
|
||||||
{
|
{
|
||||||
presetToApply = index;
|
presetToApply = index;
|
||||||
callModeToApply = callMode;
|
callModeToApply = callMode;
|
||||||
|
checkPlaylist = fromJson;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -23,7 +25,7 @@ void handlePresets()
|
|||||||
if (presetToApply == 0 || fileDoc) return; //JSON buffer allocated (apply preset in next cycle) or no preset waiting
|
if (presetToApply == 0 || fileDoc) return; //JSON buffer allocated (apply preset in next cycle) or no preset waiting
|
||||||
|
|
||||||
JsonObject fdo;
|
JsonObject fdo;
|
||||||
const char *filename = presetToApply < 255 ? "/presets.json" : "/tmp.json";
|
const char *filename = presetToApply < 255 ? PSTR("/presets.json") : PSTR("/tmp.json");
|
||||||
|
|
||||||
// allocate buffer
|
// allocate buffer
|
||||||
DEBUG_PRINTLN(F("Apply preset JSON buffer requested."));
|
DEBUG_PRINTLN(F("Apply preset JSON buffer requested."));
|
||||||
@ -48,6 +50,8 @@ void handlePresets()
|
|||||||
handleSet(nullptr, apireq, false);
|
handleSet(nullptr, apireq, false);
|
||||||
} else {
|
} else {
|
||||||
fdo.remove("ps"); //remove load request for presets to prevent recursive crash
|
fdo.remove("ps"); //remove load request for presets to prevent recursive crash
|
||||||
|
// if we applyPreset from JSON and preset contains "seg" we must unload playlist
|
||||||
|
if (checkPlaylist && !fdo["seg"].isNull()) unloadPlaylist();
|
||||||
deserializeState(fdo, CALL_MODE_NO_NOTIFY, presetToApply);
|
deserializeState(fdo, CALL_MODE_NO_NOTIFY, presetToApply);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -68,6 +72,7 @@ void handlePresets()
|
|||||||
|
|
||||||
presetToApply = 0; //clear request for preset
|
presetToApply = 0; //clear request for preset
|
||||||
callModeToApply = 0;
|
callModeToApply = 0;
|
||||||
|
checkPlaylist = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
//called from handleSet(PS=) [network callback (fileDoc==nullptr), IR (irrational), deserializeState, UDP] and deserializeState() [network callback (filedoc!=nullptr)]
|
//called from handleSet(PS=) [network callback (fileDoc==nullptr), IR (irrational), deserializeState, UDP] and deserializeState() [network callback (filedoc!=nullptr)]
|
||||||
@ -78,7 +83,7 @@ void savePreset(byte index, bool persist, const char* pname, JsonObject saveobj)
|
|||||||
JsonObject sObj = saveobj;
|
JsonObject sObj = saveobj;
|
||||||
bool bufferAllocated = false;
|
bool bufferAllocated = false;
|
||||||
|
|
||||||
const char *filename = persist ? "/presets.json" : "/tmp.json";
|
const char *filename = persist ? PSTR("/presets.json") : PSTR("/tmp.json");
|
||||||
|
|
||||||
if (!fileDoc) {
|
if (!fileDoc) {
|
||||||
// called from handleSet() HTTP API
|
// called from handleSet() HTTP API
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
// version code in format yymmddb (b = daily build)
|
// version code in format yymmddb (b = daily build)
|
||||||
#define VERSION 2201311
|
#define VERSION 2202021
|
||||||
|
|
||||||
//uncomment this if you have a "my_config.h" file you'd like to use
|
//uncomment this if you have a "my_config.h" file you'd like to use
|
||||||
//#define WLED_USE_MY_CONFIG
|
//#define WLED_USE_MY_CONFIG
|
||||||
|
Loading…
Reference in New Issue
Block a user