diff --git a/wled00/ir.cpp b/wled00/ir.cpp index 321b72bc..0358fdfa 100644 --- a/wled00/ir.cpp +++ b/wled00/ir.cpp @@ -162,6 +162,7 @@ void decodeIR(uint32_t code) return; } lastValidCode = 0; irTimesRepeated = 0; + lastRepeatableAction = ACTION_NONE; if (decodeIRCustom(code)) return; if (irEnabled == 8) { // any remote configurable with ir.json file decodeIRJson(code); @@ -193,53 +194,31 @@ void decodeIR(uint32_t code) colorUpdated(CALL_MODE_BUTTON); //for notifier, IR is considered a button input } -void applyRepeatActions(){ - - if (lastRepeatableAction == ACTION_BRIGHT_UP) - { - incBrightness(); colorUpdated(CALL_MODE_BUTTON); - } - else if (lastRepeatableAction == ACTION_BRIGHT_DOWN ) - { - decBrightness(); colorUpdated(CALL_MODE_BUTTON); - } - - if (lastRepeatableAction == ACTION_SPEED_UP) - { - changeEffectSpeed(lastRepeatableValue); colorUpdated(CALL_MODE_BUTTON); - } - else if (lastRepeatableAction == ACTION_SPEED_DOWN ) - { - changeEffectSpeed(lastRepeatableValue); colorUpdated(CALL_MODE_BUTTON); - } - - if (lastRepeatableAction == ACTION_INTENSITY_UP) - { - changeEffectIntensity(lastRepeatableValue); colorUpdated(CALL_MODE_BUTTON); - } - else if (lastRepeatableAction == ACTION_INTENSITY_DOWN ) - { - changeEffectIntensity(lastRepeatableValue); colorUpdated(CALL_MODE_BUTTON); - } - - if (lastValidCode == IR40_WPLUS) - { - relativeChangeWhite(10); colorUpdated(CALL_MODE_BUTTON); - } - else if (lastValidCode == IR40_WMINUS) - { - relativeChangeWhite(-10, 5); colorUpdated(CALL_MODE_BUTTON); - } - else if ((lastValidCode == IR24_ON || lastValidCode == IR40_ON) && irTimesRepeated > 7 ) - { - nightlightActive = true; - nightlightStartTime = millis(); - colorUpdated(CALL_MODE_BUTTON); - } - else if (irEnabled == 8) - { - decodeIRJson(lastValidCode); - } +void applyRepeatActions() +{ + if (irEnabled == 8) { + decodeIRJson(lastValidCode); + return; + } else switch (lastRepeatableAction) { + case ACTION_BRIGHT_UP : incBrightness(); colorUpdated(CALL_MODE_BUTTON); return; + case ACTION_BRIGHT_DOWN : decBrightness(); colorUpdated(CALL_MODE_BUTTON); return; + case ACTION_SPEED_UP : changeEffectSpeed(lastRepeatableValue); colorUpdated(CALL_MODE_BUTTON); return; + case ACTION_SPEED_DOWN : changeEffectSpeed(lastRepeatableValue); colorUpdated(CALL_MODE_BUTTON); return; + case ACTION_INTENSITY_UP : changeEffectIntensity(lastRepeatableValue); colorUpdated(CALL_MODE_BUTTON); return; + case ACTION_INTENSITY_DOWN : changeEffectIntensity(lastRepeatableValue); colorUpdated(CALL_MODE_BUTTON); return; + default: break; + } + if (lastValidCode == IR40_WPLUS) { + relativeChangeWhite(10); + colorUpdated(CALL_MODE_BUTTON); + } else if (lastValidCode == IR40_WMINUS) { + relativeChangeWhite(-10, 5); + colorUpdated(CALL_MODE_BUTTON); + } else if ((lastValidCode == IR24_ON || lastValidCode == IR40_ON) && irTimesRepeated > 7 ) { + nightlightActive = true; + nightlightStartTime = millis(); + colorUpdated(CALL_MODE_BUTTON); + } } void decodeIR24(uint32_t code) diff --git a/wled00/set.cpp b/wled00/set.cpp index ff165214..7b32d090 100644 --- a/wled00/set.cpp +++ b/wled00/set.cpp @@ -720,11 +720,13 @@ bool handleSet(AsyncWebServerRequest *request, const String& req, bool apply) updateVal(&req, "&B=", &col[2]); updateVal(&req, "&W=", &col[3]); for (byte i=0; i<4; i++) if (prevCol[i]!=col[i]) col0Changed = colorChanged = true; + if (col0Changed) selseg.setColor(0, RGBW32(col[0], col[1], col[2], col[3]), selectedSeg); updateVal(&req, "R2=", &colSec[0]); updateVal(&req, "G2=", &colSec[1]); updateVal(&req, "B2=", &colSec[2]); updateVal(&req, "W2=", &colSec[3]); for (byte i=0; i<4; i++) if (prevColSec[i]!=colSec[i]) col1Changed = colorChanged = true; + if (col1Changed) selseg.setColor(1, RGBW32(colSec[0], colSec[1], colSec[2], colSec[3]), selectedSeg); #ifdef WLED_ENABLE_LOXONE //lox parser @@ -963,8 +965,8 @@ bool handleSet(AsyncWebServerRequest *request, const String& req, bool apply) if (effectSpeed != prevSpeed) seg.speed = effectSpeed; if (effectIntensity != prevIntensity) seg.intensity = effectIntensity; if (effectPalette != prevPalette) seg.palette = effectPalette; - if (col0Changed) seg.colors[0] = RGBW32(col[0], col[1], col[2], col[3]); - if (col1Changed) seg.colors[1] = RGBW32(colSec[0], colSec[1], colSec[2], colSec[3]); + if (col0Changed) seg.setColor(0, RGBW32(col[0], col[1], col[2], col[3]), i); // use transitions + if (col1Changed) seg.setColor(1, RGBW32(colSec[0], colSec[1], colSec[2], colSec[3]), i); // use transitions if (col2Changed) seg.colors[2] = RGBW32(tmpCol[0], tmpCol[1], tmpCol[2], tmpCol[3]); } }