diff --git a/wled00/button.cpp b/wled00/button.cpp index aef18c77e..96cdfed5a 100644 --- a/wled00/button.cpp +++ b/wled00/button.cpp @@ -20,7 +20,7 @@ void shortPressAction(uint8_t b) default: ++effectCurrent %= strip.getModeCount(); colorUpdated(CALL_MODE_BUTTON); break; } } else { - applyPreset(macroButton[b], CALL_MODE_BUTTON); + applyPreset(macroButton[b], CALL_MODE_BUTTON_PRESET); } // publish MQTT message @@ -39,7 +39,7 @@ void longPressAction(uint8_t b) default: bri += 8; colorUpdated(CALL_MODE_BUTTON); buttonPressedTime[b] = millis(); break; // repeatable action } } else { - applyPreset(macroLongPress[b], CALL_MODE_BUTTON); + applyPreset(macroLongPress[b], CALL_MODE_BUTTON_PRESET); } // publish MQTT message @@ -58,7 +58,7 @@ void doublePressAction(uint8_t b) default: ++effectPalette %= strip.getPaletteCount(); colorUpdated(CALL_MODE_BUTTON); break; } } else { - applyPreset(macroDoublePress[b], CALL_MODE_BUTTON); + applyPreset(macroDoublePress[b], CALL_MODE_BUTTON_PRESET); } // publish MQTT message @@ -105,12 +105,12 @@ void handleSwitch(uint8_t b) if (millis() - buttonPressedTime[b] > WLED_DEBOUNCE_THRESHOLD) { //fire edge event only after 50ms without change (debounce) if (!buttonPressedBefore[b]) { // on -> off - if (macroButton[b]) applyPreset(macroButton[b], CALL_MODE_BUTTON); + if (macroButton[b]) applyPreset(macroButton[b], CALL_MODE_BUTTON_PRESET); else { //turn on if (!bri) {toggleOnOff(); colorUpdated(CALL_MODE_BUTTON);} } } else { // off -> on - if (macroLongPress[b]) applyPreset(macroLongPress[b], CALL_MODE_BUTTON); + if (macroLongPress[b]) applyPreset(macroLongPress[b], CALL_MODE_BUTTON_PRESET); else { //turn off if (bri) {toggleOnOff(); colorUpdated(CALL_MODE_BUTTON);} } diff --git a/wled00/const.h b/wled00/const.h index fe9ae1518..67fce864b 100644 --- a/wled00/const.h +++ b/wled00/const.h @@ -74,7 +74,7 @@ //Notifier callMode #define CALL_MODE_INIT 0 //no updates on init, can be used to disable updates #define CALL_MODE_DIRECT_CHANGE 1 -#define CALL_MODE_BUTTON 2 +#define CALL_MODE_BUTTON 2 //default button actions applied to selected segments #define CALL_MODE_NOTIFICATION 3 #define CALL_MODE_NIGHTLIGHT 4 #define CALL_MODE_NO_NOTIFY 5 @@ -84,6 +84,7 @@ #define CALL_MODE_BLYNK 9 #define CALL_MODE_ALEXA 10 #define CALL_MODE_WS_SEND 11 //special call mode, not for notifier, updates websocket only +#define CALL_MODE_BUTTON_PRESET 12 //button/IR JSON preset/macro //RGB to RGBW conversion mode #define RGBW_MODE_MANUAL_ONLY 0 //No automatic white channel calculation. Manual white channel slider diff --git a/wled00/ir.cpp b/wled00/ir.cpp index ec950db24..77d1266db 100644 --- a/wled00/ir.cpp +++ b/wled00/ir.cpp @@ -72,7 +72,7 @@ void decBrightness() void presetFallback(uint8_t presetID, uint8_t effectID, uint8_t paletteID) { byte prevError = errorFlag; - if (!applyPreset(presetID, CALL_MODE_BUTTON)) { + if (!applyPreset(presetID, CALL_MODE_BUTTON_PRESET)) { effectCurrent = effectID; effectPalette = paletteID; errorFlag = prevError; //clear error 12 from non-existent preset @@ -87,7 +87,7 @@ bool decodeIRCustom(uint32_t code) { //just examples, feel free to modify or remove case IRCUSTOM_ONOFF : toggleOnOff(); break; - case IRCUSTOM_MACRO1 : applyPreset(1, CALL_MODE_BUTTON); break; + case IRCUSTOM_MACRO1 : applyPreset(1, CALL_MODE_BUTTON_PRESET); break; default: return false; } @@ -631,7 +631,7 @@ void decodeIRJson(uint32_t code) colorUpdated(CALL_MODE_BUTTON); } else if (!jsonCmdObj.isNull()) { // command is JSON object - deserializeState(jsonCmdObj, CALL_MODE_BUTTON); + deserializeState(jsonCmdObj, CALL_MODE_BUTTON_PRESET); } releaseJSONBufferLock(); } diff --git a/wled00/led.cpp b/wled00/led.cpp index 2c02d01ac..77089ee70 100644 --- a/wled00/led.cpp +++ b/wled00/led.cpp @@ -76,10 +76,11 @@ bool colorChanged() void colorUpdated(int callMode) { //call for notifier -> 0: init 1: direct change 2: button 3: notification 4: nightlight 5: other (No notification) - // 6: fx changed 7: hue 8: preset cycle 9: blynk 10: alexa + // 6: fx changed 7: hue 8: preset cycle 9: blynk 10: alexa 11: ws send only 12: button preset if (callMode != CALL_MODE_INIT && callMode != CALL_MODE_DIRECT_CHANGE && - callMode != CALL_MODE_NO_NOTIFY) strip.applyToAllSelected = true; //if not from JSON api, which directly sets segments + callMode != CALL_MODE_NO_NOTIFY && + callMode != CALL_MODE_BUTTON_PRESET) strip.applyToAllSelected = true; //if not from JSON api, which directly sets segments bool someSel = false; diff --git a/wled00/udp.cpp b/wled00/udp.cpp index 90d163029..b6e564c3c 100644 --- a/wled00/udp.cpp +++ b/wled00/udp.cpp @@ -17,6 +17,7 @@ void notify(byte callMode, bool followUp) case CALL_MODE_INIT: return; case CALL_MODE_DIRECT_CHANGE: if (!notifyDirect) return; break; case CALL_MODE_BUTTON: if (!notifyButton) return; break; + case CALL_MODE_BUTTON_PRESET: if (!notifyButton) return; break; case CALL_MODE_NIGHTLIGHT: if (!notifyDirect) return; break; case CALL_MODE_HUE: if (!notifyHue) return; break; case CALL_MODE_PRESET_CYCLE: if (!notifyDirect) return; break;