diff --git a/wled00/bus_manager.h b/wled00/bus_manager.h index e086ead24..8edc46ae5 100644 --- a/wled00/bus_manager.h +++ b/wled00/bus_manager.h @@ -43,7 +43,7 @@ struct BusConfig { type = busType & 0x7F; // bit 7 may be/is hacked to include RGBW info (1=RGBW, 0=RGB) count = len; start = pstart; colorOrder = pcolorOrder; reversed = rev; skipAmount = skip; uint8_t nPins = 1; - if (type >= 10 || type <= 15) nPins = 4; + if (type >= 10 && type <= 15) nPins = 4; // IP address stored in pins else if (type > 47) nPins = 2; else if (type > 40 && type < 46) nPins = NUM_PWM_PINS(type); for (uint8_t i = 0; i < nPins; i++) pins[i] = ppins[i]; @@ -401,7 +401,6 @@ class BusNetwork : public Bus { _client = IPAddress(bc.pins[0],bc.pins[1],bc.pins[2],bc.pins[3]); _broadcastLock = false; _valid = true; - _data2 = (byte *)malloc(_len * _UDPchannels); }; void setPixelColor(uint16_t pix, uint32_t c) { @@ -416,32 +415,18 @@ class BusNetwork : public Bus { uint32_t getPixelColor(uint16_t pix) { if (!_valid || pix >= _len) return 0; uint16_t offset = pix * _UDPchannels; - // behave as NeoPixelBus return ( - (_rgbw ? (scale8(_data[offset+3], _bri) << 24) : 0) - | (scale8(_data[offset] , _bri) << 16) - | (scale8(_data[offset+1], _bri) << 8) - | (scale8(_data[offset+2], _bri) ) + (_rgbw ? (_data[offset+3] << 24) : 0) + | (_data[offset] << 16) + | (_data[offset+1] << 8) + | (_data[offset+2] ) ); } void show() { if (!_valid || !canShow()) return; _broadcastLock = true; - // apply brightness to second buffer - if (_data2 == nullptr) { - // but display original buffer if memory allocation failed - realtimeBroadcast(_UDPtype, _client, _len, _data, _rgbw); - } else { - for (uint16_t pix=0; pix<_len; pix++) { - uint16_t offset = pix * _UDPchannels; - _data2[offset ] = scale8(_data[offset ], _bri); - _data2[offset+1] = scale8(_data[offset+1], _bri); - _data2[offset+2] = scale8(_data[offset+2], _bri); - if (_rgbw) _data2[offset+3] = scale8(_data[offset+3], _bri); - } - realtimeBroadcast(_UDPtype, _client, _len, _data2, _rgbw); - } + realtimeBroadcast(_UDPtype, _client, _len, _data, _bri, _rgbw); _broadcastLock = false; } @@ -474,8 +459,6 @@ class BusNetwork : public Bus { _valid = false; if (_data != nullptr) free(_data); _data = nullptr; - if (_data2 != nullptr) free(_data2); - _data2 = nullptr; } ~BusNetwork() { @@ -491,7 +474,7 @@ class BusNetwork : public Bus { uint8_t _UDPchannels; bool _rgbw; bool _broadcastLock; - byte *_data, *_data2; + byte *_data; }; diff --git a/wled00/data/settings_leds.htm b/wled00/data/settings_leds.htm index 5eea21367..29fa57fd0 100644 --- a/wled00/data/settings_leds.htm +++ b/wled00/data/settings_leds.htm @@ -104,7 +104,6 @@ } //returns mem usage function getMem(t, len, p0) { - if (t >= 10 && t <= 12) return len*6; // double buffer for network UDP bus if (t > 15 && t < 32) { if (maxM < 10000 && p0==3) { //8266 DMA uses 5x the mem if (t > 29) return len*20; //RGBW diff --git a/wled00/fcn_declare.h b/wled00/fcn_declare.h index 2a065b1f5..f77c975bf 100644 --- a/wled00/fcn_declare.h +++ b/wled00/fcn_declare.h @@ -197,7 +197,7 @@ bool updateVal(const String* req, const char* key, byte* val, byte minv=0, byte //udp.cpp void notify(byte callMode, bool followUp=false); -uint8_t realtimeBroadcast(uint8_t type, IPAddress client, uint16_t length, byte *buffer, bool isRGBW=false); +uint8_t realtimeBroadcast(uint8_t type, IPAddress client, uint16_t length, byte *buffer, uint8_t bri=255, bool isRGBW=false); void realtimeLock(uint32_t timeoutMs, byte md = REALTIME_MODE_GENERIC); void handleNotifications(); void setRealtimePixel(uint16_t i, byte r, byte g, byte b, byte w); diff --git a/wled00/html_settings.h b/wled00/html_settings.h index de0086cee..427c39a28 100644 --- a/wled00/html_settings.h +++ b/wled00/html_settings.h @@ -77,7 +77,7 @@ onclick="B()">Back // Autogenerated from wled00/data/settings_leds.htm, do not edit!! const char PAGE_settings_leds[] PROGMEM = R"=====(LED Settings