diff --git a/wled00/cfg.cpp b/wled00/cfg.cpp index b5a0574403..6f75f2ef8c 100644 --- a/wled00/cfg.cpp +++ b/wled00/cfg.cpp @@ -742,11 +742,15 @@ bool deserializeConfig(JsonObject doc, bool fromFS) { CJSON(DMXStartLED,dmx[F("start-led")]); JsonArray dmx_fixmap = dmx[F("fixmap")]; - for (int i = 0; i < dmx_fixmap.size(); i++) { - if (i > 14) break; + for (int i = 0; i < MIN(dmx_fixmap.size(), MAX_CHANNELS_PER_FIXTURE); i++) { CJSON(DMXFixtureMap[i],dmx_fixmap[i]); } + JsonArray dmx_chsval = dmx[F("chsval")]; + for (int i = 0; i < MIN(dmx_chsval.size(), MAX_CHANNELS_PER_FIXTURE); i++) { + CJSON(DMXChannelsValue[i],dmx_chsval[i]); + } + CJSON(e131ProxyUniverse, dmx[F("e131proxy")]); #endif @@ -1248,10 +1252,15 @@ void serializeConfig(JsonObject root) { dmx[F("start-led")] = DMXStartLED; JsonArray dmx_fixmap = dmx.createNestedArray(F("fixmap")); - for (unsigned i = 0; i < 15; i++) { + for (unsigned i = 0; i < MAX_CHANNELS_PER_FIXTURE; i++) { dmx_fixmap.add(DMXFixtureMap[i]); } + JsonArray dmx_chsval = dmx.createNestedArray(F("chsval")); + for (unsigned i = 0; i < MAX_CHANNELS_PER_FIXTURE; i++) { + dmx_chsval.add(DMXChannelsValue[i]); + } + dmx[F("e131proxy")] = e131ProxyUniverse; #endif diff --git a/wled00/const.h b/wled00/const.h index 8891dfcaee..1be29800ba 100644 --- a/wled00/const.h +++ b/wled00/const.h @@ -682,6 +682,9 @@ static_assert(WLED_MAX_BUSSES <= 32, "WLED_MAX_BUSSES exceeds hard limit"); #define IRAM_ATTR_YN IRAM_ATTR #endif +#ifdef WLED_ENABLE_DMX + #define MAX_CHANNELS_PER_FIXTURE 15 +#endif #define WLED_O2_ATTR __attribute__((optimize("O2"))) #endif diff --git a/wled00/data/settings_dmx.htm b/wled00/data/settings_dmx.htm index 7b7fa2bb88..adb4cfd32d 100644 --- a/wled00/data/settings_dmx.htm +++ b/wled00/data/settings_dmx.htm @@ -7,10 +7,20 @@