From 56cf1c818b2488c4468f04c5f5331c90c37a2a58 Mon Sep 17 00:00:00 2001 From: DerFetzer Date: Mon, 1 Mar 2021 22:44:28 +0100 Subject: [PATCH] Send notification for HTTP API calls with only effects parameters --- wled00/led.cpp | 3 ++- wled00/set.cpp | 20 ++++++++++++++++---- wled00/wled.h | 1 + 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/wled00/led.cpp b/wled00/led.cpp index 32e38f7d7..b00d9fd33 100644 --- a/wled00/led.cpp +++ b/wled00/led.cpp @@ -100,7 +100,7 @@ void colorUpdated(int callMode) //Notifier: apply received FX to selected segments only if actually receiving FX if (someSel) strip.applyToAllSelected = receiveNotificationEffects; - bool fxChanged = strip.setEffectConfig(effectCurrent, effectSpeed, effectIntensity, effectPalette); + bool fxChanged = strip.setEffectConfig(effectCurrent, effectSpeed, effectIntensity, effectPalette) || effectChanged; bool colChanged = colorChanged(); //Notifier: apply received color to selected segments only if actually receiving color @@ -108,6 +108,7 @@ void colorUpdated(int callMode) if (fxChanged || colChanged) { + effectChanged = false; if (realtimeTimeout == UINT32_MAX) realtimeTimeout = 0; if (isPreset) {isPreset = false;} else {currentPreset = -1;} diff --git a/wled00/set.cpp b/wled00/set.cpp index db54ab31f..38b085a82 100644 --- a/wled00/set.cpp +++ b/wled00/set.cpp @@ -740,10 +740,22 @@ bool handleSet(AsyncWebServerRequest *request, const String& req, bool apply) { WS2812FX::Segment& seg = strip.getSegment(i); if (!seg.isSelected()) continue; - if (effectCurrent != prevEffect) seg.mode = effectCurrent; - if (effectSpeed != prevSpeed) seg.speed = effectSpeed; - if (effectIntensity != prevIntensity) seg.intensity = effectIntensity; - if (effectPalette != prevPalette) seg.palette = effectPalette; + if (effectCurrent != prevEffect) { + seg.mode = effectCurrent; + effectChanged = true; + } + if (effectSpeed != prevSpeed) { + seg.speed = effectSpeed; + effectChanged = true; + } + if (effectIntensity != prevIntensity) { + seg.intensity = effectIntensity; + effectChanged = true; + } + if (effectPalette != prevPalette) { + seg.palette = effectPalette; + effectChanged = true; + } } if (col0Changed) { diff --git a/wled00/wled.h b/wled00/wled.h index 058d4946c..d262e815d 100644 --- a/wled00/wled.h +++ b/wled00/wled.h @@ -399,6 +399,7 @@ WLED_GLOBAL byte effectCurrent _INIT(0); WLED_GLOBAL byte effectSpeed _INIT(128); WLED_GLOBAL byte effectIntensity _INIT(128); WLED_GLOBAL byte effectPalette _INIT(0); +WLED_GLOBAL bool effectChanged _INIT(false); // network WLED_GLOBAL bool udpConnected _INIT(false), udp2Connected _INIT(false), udpRgbConnected _INIT(false);