ESPDMX robustness improvements
* clamp channel to dmxMaxChannel (write) * ensure that all data get sent, including start byte
This commit is contained in:
@@ -73,6 +73,7 @@ void DMXESPSerial::write(int Channel, uint8_t value) {
|
|||||||
|
|
||||||
if (Channel < 1) Channel = 1;
|
if (Channel < 1) Channel = 1;
|
||||||
if (Channel > channelSize) Channel = channelSize;
|
if (Channel > channelSize) Channel = channelSize;
|
||||||
|
if (Channel > dmxMaxChannel) Channel = dmxMaxChannel; // WLEDMM protect against array bounds violation
|
||||||
if (value < 0) value = 0;
|
if (value < 0) value = 0;
|
||||||
if (value > 255) value = 255;
|
if (value > 255) value = 255;
|
||||||
|
|
||||||
@@ -99,7 +100,7 @@ void DMXESPSerial::update() {
|
|||||||
//send data
|
//send data
|
||||||
Serial1.begin(DMXSPEED, DMXFORMAT);
|
Serial1.begin(DMXSPEED, DMXFORMAT);
|
||||||
digitalWrite(sendPin, LOW);
|
digitalWrite(sendPin, LOW);
|
||||||
Serial1.write(dmxDataStore, channelSize);
|
Serial1.write(dmxDataStore, min(dmxMaxChannel+1, channelSize+1));
|
||||||
Serial1.flush();
|
Serial1.flush();
|
||||||
delay(1);
|
delay(1);
|
||||||
Serial1.end();
|
Serial1.end();
|
||||||
|
|||||||
Reference in New Issue
Block a user