diff --git a/wled00/bus_manager.h b/wled00/bus_manager.h index 74497cae2..da5467b53 100644 --- a/wled00/bus_manager.h +++ b/wled00/bus_manager.h @@ -85,6 +85,12 @@ struct ColorOrderMap { if (_count >= WLED_MAX_COLOR_ORDER_MAPPINGS) { return; } + if (len == 0) { + return; + } + if (colorOrder > COL_ORDER_MAX) { + return; + } _mappings[_count].start = start; _mappings[_count].len = len; _mappings[_count].colorOrder = colorOrder; diff --git a/wled00/const.h b/wled00/const.h index 209adcb18..a303f46ed 100644 --- a/wled00/const.h +++ b/wled00/const.h @@ -172,6 +172,7 @@ #define COL_ORDER_RBG 3 #define COL_ORDER_BGR 4 #define COL_ORDER_GBR 5 +#define COL_ORDER_MAX 5 //Button type diff --git a/wled00/data/settings_leds.htm b/wled00/data/settings_leds.htm index 8dd81e446..bbac7eeb9 100644 --- a/wled00/data/settings_leds.htm +++ b/wled00/data/settings_leds.htm @@ -347,6 +347,50 @@ ${i+1}: if (!init) UI(); } + + function addCOM(start=0,len=1,co=0) { + var i = d.getElementsByClassName("com_entry").length; + if (i >= 10) return; + + var b = `
+
+${i+1}: Start:   +Length: +
Color Order: + +

`; + gId("com_entries").insertAdjacentHTML("beforeend", b); + gId("xo"+i).value = co; + btnCOM(i+1); + } + + function remCOM() { + var entries = d.getElementsByClassName("com_entry"); + var i = entries.length; + if (i === 0) return; + entries[i-1].remove(); + btnCOM(i-1); + } + + function resetCOM() { + for (let e of d.getElementsByClassName("com_entry")) { + e.remove(); + } + btnCOM(0); + } + + function btnCOM(i) { + gId("com_add").style.display = (i<10) ? "inline":"none"; + gId("com_rem").style.display = (i>0) ? "inline":"none"; + } + function addBtn(i,p,t) { var c = gId("btns").innerHTML; var bt = "BT" + String.fromCharCode((i<10?48:55)+i);; @@ -431,6 +475,12 @@ ${i+1}: d.getElementsByName("CV"+i)[0].checked = v.rev; }); } + if(c.hw.com) { + resetCOM(); + c.hw.com.forEach(e => { + addCOM(e.start, e.len, e.order); + }); + } if (c.hw.btn) { var b = c.hw.btn; if (Array.isArray(b.ins)) gId("btns").innerHTML = ""; @@ -510,6 +560,14 @@ ${i+1}: Make a segment for each output:
Custom bus start indices:

+
+ Color Order Override: +
+
+ +
+
+
Touch threshold:
IR GPIO: