From f646e9bc59d57d7b6fc068363af62eee2ffcbc4d Mon Sep 17 00:00:00 2001 From: cschwinne Date: Sun, 9 Feb 2020 16:11:38 +0100 Subject: [PATCH] Swap order of API parsing to make it possible to override preset brightness --- wled00/wled03_set.ino | 76 +++++++++++++++++++++--------------------- wled00/wled19_json.ino | 6 ++-- 2 files changed, 41 insertions(+), 41 deletions(-) diff --git a/wled00/wled03_set.ino b/wled00/wled03_set.ino index a1ad3c6d..1840bd05 100644 --- a/wled00/wled03_set.ino +++ b/wled00/wled03_set.ino @@ -406,6 +406,44 @@ bool handleSet(AsyncWebServerRequest *request, const String& req) main = strip.getMainSegmentId(); + //set presets + pos = req.indexOf("P1="); //sets first preset for cycle + if (pos > 0) presetCycleMin = getNumVal(&req, pos); + + pos = req.indexOf("P2="); //sets last preset for cycle + if (pos > 0) presetCycleMax = getNumVal(&req, pos); + + //preset cycle + pos = req.indexOf("CY="); + if (pos > 0) + { + presetCyclingEnabled = (req.charAt(pos+3) != '0'); + presetCycCurr = presetCycleMin; + } + + pos = req.indexOf("PT="); //sets cycle time in ms + if (pos > 0) { + int v = getNumVal(&req, pos); + if (v > 49) presetCycleTime = v; + } + + pos = req.indexOf("PA="); //apply brightness from preset + if (pos > 0) presetApplyBri = (req.charAt(pos+3) != '0'); + + pos = req.indexOf("PC="); //apply color from preset + if (pos > 0) presetApplyCol = (req.charAt(pos+3) != '0'); + + pos = req.indexOf("PX="); //apply effects from preset + if (pos > 0) presetApplyFx = (req.charAt(pos+3) != '0'); + + pos = req.indexOf("PS="); //saves current in preset + if (pos > 0) savePreset(getNumVal(&req, pos)); + + //apply preset + if (updateVal(&req, "PL=", &presetCycCurr, presetCycleMin, presetCycleMax)) { + applyPreset(presetCycCurr, presetApplyBri, presetApplyCol, presetApplyFx); + } + //set brightness updateVal(&req, "&A=", &bri); @@ -570,44 +608,6 @@ bool handleSet(AsyncWebServerRequest *request, const String& req) if (countdownTime - now() > 0) countdownOverTriggered = false; } - //set presets - pos = req.indexOf("P1="); //sets first preset for cycle - if (pos > 0) presetCycleMin = getNumVal(&req, pos); - - pos = req.indexOf("P2="); //sets last preset for cycle - if (pos > 0) presetCycleMax = getNumVal(&req, pos); - - //preset cycle - pos = req.indexOf("CY="); - if (pos > 0) - { - presetCyclingEnabled = (req.charAt(pos+3) != '0'); - presetCycCurr = presetCycleMin; - } - - pos = req.indexOf("PT="); //sets cycle time in ms - if (pos > 0) { - int v = getNumVal(&req, pos); - if (v > 49) presetCycleTime = v; - } - - pos = req.indexOf("PA="); //apply brightness from preset - if (pos > 0) presetApplyBri = (req.charAt(pos+3) != '0'); - - pos = req.indexOf("PC="); //apply color from preset - if (pos > 0) presetApplyCol = (req.charAt(pos+3) != '0'); - - pos = req.indexOf("PX="); //apply effects from preset - if (pos > 0) presetApplyFx = (req.charAt(pos+3) != '0'); - - pos = req.indexOf("PS="); //saves current in preset - if (pos > 0) savePreset(getNumVal(&req, pos)); - - //apply preset - if (updateVal(&req, "PL=", &presetCycCurr, presetCycleMin, presetCycleMax)) { - applyPreset(presetCycCurr, presetApplyBri, presetApplyCol, presetApplyFx); - } - //cronixie #ifndef WLED_DISABLE_CRONIXIE //mode, 1 countdown diff --git a/wled00/wled19_json.ino b/wled00/wled19_json.ino index 5f36c58b..be80c3fe 100644 --- a/wled00/wled19_json.ino +++ b/wled00/wled19_json.ino @@ -66,6 +66,9 @@ bool deserializeState(JsonObject root) { strip.applyToAllSelected = false; bool stateResponse = root["v"] | false; + + int ps = root["ps"] | -1; + if (ps >= 0) applyPreset(ps); bri = root["bri"] | bri; @@ -86,9 +89,6 @@ bool deserializeState(JsonObject root) transitionDelayTemp *= 100; jsonTransitionOnce = true; } - - int ps = root["ps"] | -1; - if (ps >= 0) applyPreset(ps); int cy = root["pl"] | -2; if (cy > -2) presetCyclingEnabled = (cy >= 0);