Skip to content

Commit 7b87c27

Browse files
blazonceksofthack007
authored andcommitted
Merge pull request wled#3616 from demophoon/dmx-segment-options-expanded
Add additional segment options when controlling over e1.31
1 parent bc24937 commit 7b87c27

File tree

1 file changed

+10
-5
lines changed

1 file changed

+10
-5
lines changed

wled00/e131.cpp

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -231,11 +231,16 @@ void handleDMXData(uint16_t uni, uint16_t dmxChannels, uint8_t* e131_data, uint8
231231
if (e131_data[dataOffset+3] != seg.intensity) seg.intensity = e131_data[dataOffset+3];
232232
if (e131_data[dataOffset+4] != seg.palette) seg.setPalette(e131_data[dataOffset+4]);
233233

234-
uint8_t segOption = (uint8_t)floor(e131_data[dataOffset+5]/64.0);
235-
if (segOption == 0 && (seg.mirror || seg.reverse )) {seg.setOption(SEG_OPTION_MIRROR, false); seg.setOption(SEG_OPTION_REVERSED, false);}
236-
if (segOption == 1 && (seg.mirror || !seg.reverse)) {seg.setOption(SEG_OPTION_MIRROR, false); seg.setOption(SEG_OPTION_REVERSED, true);}
237-
if (segOption == 2 && (!seg.mirror || seg.reverse )) {seg.setOption(SEG_OPTION_MIRROR, true); seg.setOption(SEG_OPTION_REVERSED, false);}
238-
if (segOption == 3 && (!seg.mirror || !seg.reverse)) {seg.setOption(SEG_OPTION_MIRROR, true); seg.setOption(SEG_OPTION_REVERSED, true);}
234+
if ((e131_data[dataOffset+5] & 0b00000010) != seg.reverse_y) { seg.setOption(SEG_OPTION_REVERSED_Y, e131_data[dataOffset+5] & 0b00000010); }
235+
if ((e131_data[dataOffset+5] & 0b00000100) != seg.mirror_y) { seg.setOption(SEG_OPTION_MIRROR_Y, e131_data[dataOffset+5] & 0b00000100); }
236+
if ((e131_data[dataOffset+5] & 0b00001000) != seg.transpose) { seg.setOption(SEG_OPTION_TRANSPOSED, e131_data[dataOffset+5] & 0b00001000); }
237+
if ((e131_data[dataOffset+5] & 0b00110000) / 8 != seg.map1D2D) {
238+
seg.map1D2D = (e131_data[dataOffset+5] & 0b00110000) / 8;
239+
}
240+
// To maintain backwards compatibility with prior e1.31 values, reverse is fixed to mask 0x01000000
241+
if ((e131_data[dataOffset+5] & 0b01000000) != seg.reverse) { seg.setOption(SEG_OPTION_REVERSED, e131_data[dataOffset+5] & 0b01000000); }
242+
// To maintain backwards compatibility with prior e1.31 values, mirror is fixed to mask 0x10000000
243+
if ((e131_data[dataOffset+5] & 0b10000000) != seg.mirror) { seg.setOption(SEG_OPTION_MIRROR, e131_data[dataOffset+5] & 0b10000000); }
239244

240245
uint32_t colors[3];
241246
byte whites[3] = {0,0,0};

0 commit comments

Comments
 (0)