From 7a73ffc7b43a26dc4404ce1a8878526489db215d Mon Sep 17 00:00:00 2001 From: Michael Miller Date: Wed, 10 Feb 2021 20:25:47 -0800 Subject: [PATCH] Clear Buffer (#426) --- src/NeoPixelBus.h | 4 ++-- src/internal/DotStarGenericMethod.h | 2 +- src/internal/Lpd6803ColorFeatures.h | 6 +++--- src/internal/Lpd6803GenericMethod.h | 12 +----------- src/internal/Lpd8806GenericMethod.h | 2 +- src/internal/NeoArmMethod.h | 2 +- src/internal/NeoAvrMethod.h | 2 +- src/internal/NeoEsp32I2sMethod.h | 4 ++-- src/internal/NeoEsp32RmtMethod.h | 2 +- src/internal/NeoEsp8266DmaMethod.h | 4 ++-- src/internal/NeoEsp8266UartMethod.h | 2 +- src/internal/NeoEspBitBangMethod.h | 2 +- src/internal/NeoNrf52xMethod.h | 2 +- src/internal/P9813GenericMethod.h | 2 +- src/internal/Ws2801GenericMethod.h | 2 +- 15 files changed, 20 insertions(+), 30 deletions(-) diff --git a/src/NeoPixelBus.h b/src/NeoPixelBus.h index 5380428..597c288 100644 --- a/src/NeoPixelBus.h +++ b/src/NeoPixelBus.h @@ -169,14 +169,14 @@ public: void Begin() { _method.Initialize(); - Dirty(); + ClearTo(0); } // used by DotStartSpiMethod if pins can be configured void Begin(int8_t sck, int8_t miso, int8_t mosi, int8_t ss) { _method.Initialize(sck, miso, mosi, ss); - Dirty(); + ClearTo(0); } void Show(bool maintainBufferConsistency = true) diff --git a/src/internal/DotStarGenericMethod.h b/src/internal/DotStarGenericMethod.h index 95ca239..1804c32 100644 --- a/src/internal/DotStarGenericMethod.h +++ b/src/internal/DotStarGenericMethod.h @@ -43,7 +43,7 @@ public: _wire(pinClock, pinData) { _data = static_cast(malloc(_sizeData)); - memset(_data, 0, _sizeData); + // data cleared later in Begin() } #if !defined(__AVR_ATtiny85__) && !defined(ARDUINO_attiny) diff --git a/src/internal/Lpd6803ColorFeatures.h b/src/internal/Lpd6803ColorFeatures.h index 9a4d751..7099350 100644 --- a/src/internal/Lpd6803ColorFeatures.h +++ b/src/internal/Lpd6803ColorFeatures.h @@ -103,6 +103,9 @@ public: } } + typedef RgbColor ColorObject; + +protected: static void encodePixel(uint8_t c1, uint8_t c2, uint8_t c3, uint16_t* color555) { *color555 = (0x8000 | @@ -117,9 +120,6 @@ public: *c2 = (color555 >> 2) & 0xf8; *c3 = (color555 << 3) & 0xf8; } - - - typedef RgbColor ColorObject; }; class Lpd6803BrgFeature : public Lpd68033Elements diff --git a/src/internal/Lpd6803GenericMethod.h b/src/internal/Lpd6803GenericMethod.h index 75640eb..8db4d33 100644 --- a/src/internal/Lpd6803GenericMethod.h +++ b/src/internal/Lpd6803GenericMethod.h @@ -43,17 +43,7 @@ public: _wire(pinClock, pinData) { _data = static_cast(malloc(_sizeData)); - - // requires specific memory init - memset(_data, 0, _sizeData); // is not good enough - uint16_t* pPixel = reinterpret_cast(_data + settingsSize); - uint16_t* pPixelEnd = pPixel + (_sizeData / elementSize); - - while (pPixel < pPixelEnd) - { - Lpd68033Elements::encodePixel(0, 0, 0, pPixel); - pPixel++; - } + // data cleared later in Begin() } #if !defined(__AVR_ATtiny85__) && !defined(ARDUINO_attiny) diff --git a/src/internal/Lpd8806GenericMethod.h b/src/internal/Lpd8806GenericMethod.h index 1ac0392..a3b07cc 100644 --- a/src/internal/Lpd8806GenericMethod.h +++ b/src/internal/Lpd8806GenericMethod.h @@ -43,7 +43,7 @@ public: _wire(pinClock, pinData) { _data = static_cast(malloc(_sizeData)); - memset(_data, 0, _sizeData); + // data cleared later in Begin() } #if !defined(__AVR_ATtiny85__) && !defined(ARDUINO_attiny) diff --git a/src/internal/NeoArmMethod.h b/src/internal/NeoArmMethod.h index 7921ef6..048d5ee 100644 --- a/src/internal/NeoArmMethod.h +++ b/src/internal/NeoArmMethod.h @@ -42,7 +42,7 @@ public: pinMode(pin, OUTPUT); _data = static_cast(malloc(_sizeData)); - memset(_data, 0, _sizeData); + // data cleared later in Begin() } ~NeoArmMethodBase() diff --git a/src/internal/NeoAvrMethod.h b/src/internal/NeoAvrMethod.h index b638d7b..aa5b0a8 100644 --- a/src/internal/NeoAvrMethod.h +++ b/src/internal/NeoAvrMethod.h @@ -127,7 +127,7 @@ public: pinMode(pin, OUTPUT); _data = static_cast(malloc(_sizeData)); - memset(_data, 0, _sizeData); + // data cleared later in Begin() _port = portOutputRegister(digitalPinToPort(pin)); _pinMask = digitalPinToBitMask(pin); diff --git a/src/internal/NeoEsp32I2sMethod.h b/src/internal/NeoEsp32I2sMethod.h index b3b8ee1..2c474d6 100644 --- a/src/internal/NeoEsp32I2sMethod.h +++ b/src/internal/NeoEsp32I2sMethod.h @@ -129,10 +129,10 @@ public: } _data = static_cast(malloc(_sizeData)); - memset(_data, 0x00, _sizeData); + // data cleared later in Begin() _i2sBuffer = static_cast(malloc(_i2sBufferSize)); - memset(_i2sBuffer, 0x00, _i2sBufferSize); + // no need to initialize it, it gets overwritten on every send } ~NeoEsp32I2sMethodBase() diff --git a/src/internal/NeoEsp32RmtMethod.h b/src/internal/NeoEsp32RmtMethod.h index d626e99..34bdb69 100644 --- a/src/internal/NeoEsp32RmtMethod.h +++ b/src/internal/NeoEsp32RmtMethod.h @@ -505,7 +505,7 @@ private: void construct() { _dataEditing = static_cast(malloc(_sizeData)); - memset(_dataEditing, 0x00, _sizeData); + // data cleared later in Begin() _dataSending = static_cast(malloc(_sizeData)); // no need to initialize it, it gets overwritten on every send diff --git a/src/internal/NeoEsp8266DmaMethod.h b/src/internal/NeoEsp8266DmaMethod.h index be36eb3..4a25f61 100644 --- a/src/internal/NeoEsp8266DmaMethod.h +++ b/src/internal/NeoEsp8266DmaMethod.h @@ -226,10 +226,10 @@ public: _i2sBufferSize = pixelCount * dmaPixelSize + dmaSettingsSize; _data = static_cast(malloc(_sizeData)); - memset(_data, 0x00, _sizeData); + // data cleared later in Begin() _i2sBuffer = static_cast(malloc(_i2sBufferSize)); - memset(_i2sBuffer, T_SPEED::Level, _i2sBufferSize); + // no need to initialize it, it gets overwritten on every send // _i2sBuffer[0] = 0b11101000; // debug, 1 bit then 0 bit diff --git a/src/internal/NeoEsp8266UartMethod.h b/src/internal/NeoEsp8266UartMethod.h index 3be17ba..c7d45b2 100644 --- a/src/internal/NeoEsp8266UartMethod.h +++ b/src/internal/NeoEsp8266UartMethod.h @@ -150,7 +150,7 @@ protected: _sizeData(pixelCount * elementSize + settingsSize) { _data = static_cast(malloc(_sizeData)); - memset(_data, 0x00, _sizeData); + // data cleared later in Begin() } ~NeoEsp8266UartBase() diff --git a/src/internal/NeoEspBitBangMethod.h b/src/internal/NeoEspBitBangMethod.h index cf43120..b0b9753 100644 --- a/src/internal/NeoEspBitBangMethod.h +++ b/src/internal/NeoEspBitBangMethod.h @@ -285,7 +285,7 @@ public: pinMode(pin, OUTPUT); _data = static_cast(malloc(_sizeData)); - memset(_data, 0, _sizeData); + // data cleared later in Begin() } ~NeoEspBitBangMethodBase() diff --git a/src/internal/NeoNrf52xMethod.h b/src/internal/NeoNrf52xMethod.h index bf98808..975bc10 100644 --- a/src/internal/NeoNrf52xMethod.h +++ b/src/internal/NeoNrf52xMethod.h @@ -348,7 +348,7 @@ private: pinMode(_pin, OUTPUT); _data = static_cast(malloc(_sizeData)); - memset(_data, 0, _sizeData); + // data cleared later in Begin() _dmaBufferSize = c_dmaBytesPerDataByte * _sizeData + sizeof(nrf_pwm_values_common_t); _dmaBuffer = static_cast(malloc(_dmaBufferSize)); diff --git a/src/internal/P9813GenericMethod.h b/src/internal/P9813GenericMethod.h index bfaf9ae..f72c317 100644 --- a/src/internal/P9813GenericMethod.h +++ b/src/internal/P9813GenericMethod.h @@ -43,7 +43,7 @@ public: _wire(pinClock, pinData) { _data = static_cast(malloc(_sizeData)); - memset(_data, 0, _sizeData); + // data cleared later in Begin() } #if !defined(__AVR_ATtiny85__) && !defined(ARDUINO_attiny) diff --git a/src/internal/Ws2801GenericMethod.h b/src/internal/Ws2801GenericMethod.h index 0a62631..b3b3ea1 100644 --- a/src/internal/Ws2801GenericMethod.h +++ b/src/internal/Ws2801GenericMethod.h @@ -42,7 +42,7 @@ public: _wire(pinClock, pinData) { _data = static_cast(malloc(_sizeData)); - memset(_data, 0, _sizeData); + // data cleared later in Begin() } #if !defined(__AVR_ATtiny85__) && !defined(ARDUINO_attiny)