From 82a8ca19f8b7a004279cef8d7722e78fcec57a36 Mon Sep 17 00:00:00 2001 From: Michael Miller Date: Sat, 22 Sep 2018 13:58:51 -0700 Subject: [PATCH] Initial new methods (#230) --- keywords.txt | 29 ++++++-- src/internal/NeoArmMethod.h | 101 ++++++++++++++++++++-------- src/internal/NeoAvrMethod.h | 22 ++++-- src/internal/NeoEsp32I2sMethod.h | 26 +++++-- src/internal/NeoEsp8266DmaMethod.h | 31 ++++++--- src/internal/NeoEsp8266UartMethod.h | 36 +++++++--- src/internal/NeoEspBitBangMethod.h | 28 ++++++-- 7 files changed, 207 insertions(+), 66 deletions(-) diff --git a/keywords.txt b/keywords.txt index 4afc0e1..e53ce39 100644 --- a/keywords.txt +++ b/keywords.txt @@ -20,27 +20,46 @@ NeoBrgFeature KEYWORD1 NeoRbgFeature KEYWORD1 DotStarBgrFeature KEYWORD1 DotStarLbgrFeature KEYWORD1 -NeoWs2813Method KEYWORD1 Neo800KbpsMethod KEYWORD1 Neo400KbpsMethod KEYWORD1 -NeoAvrWs2813Method KEYWORD1 -NeoAvr800KbpsMethod KEYWORD1 -NeoAvr400KbpsMethod KEYWORD1 -NeoEsp8266DmaWs2813Method KEYWORD1 +NeoWs2813Method KEYWORD1 +NeoWs2812xMethod KEYWORD1 +NeoWs2812Method KEYWORD1 +NeoSk6812Method KEYWORD1 +NeoLc8812Method KEYWORD1 +NeoEsp8266DmaWs2812xMethod KEYWORD1 +NeoEsp8266DmaSk6812Method KEYWORD1 NeoEsp8266Dma800KbpsMethod KEYWORD1 NeoEsp8266Dma400KbpsMethod KEYWORD1 NeoEsp8266UartWs2813Method KEYWORD1 +NeoEsp8266UartWs2812xMethod KEYWORD1 +NeoEsp8266UartWs2812Method KEYWORD1 +NeoEsp8266UartSk6812Method KEYWORD1 +NeoEsp8266UartLc8812Method KEYWORD1 NeoEsp8266Uart800KbpsMethod KEYWORD1 NeoEsp8266Uart400KbpsMethod KEYWORD1 NeoEsp8266AsyncUartWs2813Method KEYWORD1 +NeoEsp8266AsyncUartWs2812xMethod KEYWORD1 +NeoEsp8266AsyncUartWs2812Method KEYWORD1 +NeoEsp8266AsyncUartSk6812Method KEYWORD1 +NeoEsp8266AsyncUartLc8812Method KEYWORD1 NeoEsp8266AsyncUart800KbpsMethod KEYWORD1 NeoEsp8266AsyncUart400KbpsMethod KEYWORD1 NeoEsp8266BitBangWs2813Method KEYWORD1 +NeoEsp8266BitBangWs2812xMethod KEYWORD1 +NeoEsp8266BitBangWs2812Method KEYWORD1 +NeoEsp8266BitBangSk6812Method KEYWORD1 +NeoEsp8266BitBangLc8812Method KEYWORD1 NeoEsp8266BitBang800KbpsMethod KEYWORD1 NeoEsp8266BitBang400KbpsMethod KEYWORD1 NeoEsp32BitBangWs2813Method KEYWORD1 +NeoEsp32BitBangWs2812xMethod KEYWORD1 +NeoEsp32BitBangWs2812Method KEYWORD1 +NeoEsp32BitBangSk6812Method KEYWORD1 +NeoEsp32BitBangLc8812Method KEYWORD1 NeoEsp32BitBang800KbpsMethod KEYWORD1 NeoEsp32BitBang400KbpsMethod KEYWORD1 + DotStarMethod KEYWORD1 DotStarSpiMethod KEYWORD1 NeoPixelAnimator KEYWORD1 diff --git a/src/internal/NeoArmMethod.h b/src/internal/NeoArmMethod.h index 3ab66a7..7af07d3 100644 --- a/src/internal/NeoArmMethod.h +++ b/src/internal/NeoArmMethod.h @@ -109,21 +109,29 @@ private: #if defined(__MK20DX128__) || defined(__MK20DX256__) // Teensy 3.0 & 3.1 -class NeoArmMk20dxSpeedPropsWs2813 +class NeoArmMk20dxSpeedProps800KbpsBase { public: static const uint32_t CyclesT0h = (F_CPU / 4000000); static const uint32_t CyclesT1h = (F_CPU / 1250000); static const uint32_t Cycles = (F_CPU / 800000); - static const uint32_t ResetTimeUs = 250; }; -class NeoArmMk20dxSpeedProps800Kbps +class NeoArmMk20dxSpeedPropsWs2812x : public NeoArmMk20dxSpeedProps800KbpsBase +{ +public: + static const uint32_t ResetTimeUs = 300; +}; + +class NeoArmMk20dxSpeedPropsSk6812 : public NeoArmMk20dxSpeedProps800KbpsBase +{ +public: + static const uint32_t ResetTimeUs = 80; +}; + +class NeoArmMk20dxSpeedProps800Kbps : public NeoArmMk20dxSpeedProps800KbpsBase { public: - static const uint32_t CyclesT0h = (F_CPU / 4000000); - static const uint32_t CyclesT1h = (F_CPU / 1250000); - static const uint32_t Cycles = (F_CPU / 800000); static const uint32_t ResetTimeUs = 50; }; @@ -180,7 +188,8 @@ public: } }; -typedef NeoArmMethodBase> NeoArmWs2813Method; +typedef NeoArmMethodBase> NeoArmWs2812xMethod; +typedef NeoArmMethodBase> NeoArmSk6812Method; typedef NeoArmMethodBase> NeoArm800KbpsMethod; typedef NeoArmMethodBase> NeoArm400KbpsMethod; @@ -280,10 +289,16 @@ public: } }; -class NeoArmMk26z64SpeedWs2813 : public NeoArmMk26z64Speed800KbpsBase +class NeoArmMk26z64SpeedWs2812x : public NeoArmMk26z64Speed800KbpsBase { public: - const static uint32_t ResetTimeUs = 250; + const static uint32_t ResetTimeUs = 300; +}; + +class NeoArmMk26z64SpeedSk6812 : public NeoArmMk26z64Speed800KbpsBase +{ +public: + const static uint32_t ResetTimeUs = 80; }; class NeoArmMk26z64Speed800Kbps : public NeoArmMk26z64Speed800KbpsBase @@ -292,7 +307,8 @@ public: const static uint32_t ResetTimeUs = 50; }; -typedef NeoArmMethodBase NeoArmWs2813Method; +typedef NeoArmMethodBase NeoArmWs2812xMethod; +typedef NeoArmMethodBase NeoArmSk6812Method; typedef NeoArmMethodBase NeoArm800KbpsMethod; #else @@ -327,10 +343,16 @@ public: } }; -class NeoArmSamd21g18aSpeedPropsWs2813 : public NeoArmSamd21g18aSpeedProps800KbpsBase +class NeoArmSamd21g18aSpeedPropsWs2812x : public NeoArmSamd21g18aSpeedProps800KbpsBase { public: - static const uint32_t ResetTimeUs = 250; + static const uint32_t ResetTimeUs = 300; +}; + +class NeoArmSamd21g18aSpeedPropsSk6812 : public NeoArmSamd21g18aSpeedProps800KbpsBase +{ +public: + static const uint32_t ResetTimeUs = 80; }; class NeoArmSamd21g18aSpeedProps800Kbps : public NeoArmSamd21g18aSpeedProps800KbpsBase @@ -419,7 +441,8 @@ public: } }; -typedef NeoArmMethodBase> NeoArmWs2813Method; +typedef NeoArmMethodBase> NeoArmWs2812xMethod; +typedef NeoArmMethodBase> NeoArmSk6812Method; typedef NeoArmMethodBase> NeoArm800KbpsMethod; typedef NeoArmMethodBase> NeoArm400KbpsMethod; @@ -477,18 +500,24 @@ public: } }; +class NeoArmStm32SpeedPropsWs2812x : public NeoArmStm32SpeedProps800KbpsBase +{ +public: + static const uint32_t ResetTimeUs = 300; +}; + +class NeoArmStm32SpeedPropsSk6812 : public NeoArmStm32SpeedProps800KbpsBase +{ +public: + static const uint32_t ResetTimeUs = 80; +}; + class NeoArmStm32SpeedProps800Kbps : public NeoArmStm32SpeedProps800KbpsBase { public: static const uint32_t ResetTimeUs = 50; }; -class NeoArmStm32SpeedPropsWs2813 : public NeoArmStm32SpeedProps800KbpsBase -{ -public: - static const uint32_t ResetTimeUs = 250; -}; - /* TODO - not found in Adafruit library class NeoArmStm32SpeedProps400Kbps { @@ -567,7 +596,8 @@ public: } }; -typedef NeoArmMethodBase> NeoArmWs2813Method; +typedef NeoArmMethodBase> NeoArmWs2812xMethod; +typedef NeoArmMethodBase> NeoArmSk6812Method; typedef NeoArmMethodBase> NeoArm800KbpsMethod; #else // Other ARM architecture -- Presumed Arduino Due @@ -576,21 +606,29 @@ typedef NeoArmMethodBase> Neo #define ARM_OTHER_SCALE VARIANT_MCK / 2UL / 1000000UL #define ARM_OTHER_INST (2UL * F_CPU / VARIANT_MCK) -class NeoArmOtherSpeedPropsWs2813 +class NeoArmOtherSpeedProps800KbpsBase { public: static const uint32_t CyclesT0h = ((uint32_t)(0.40 * ARM_OTHER_SCALE + 0.5) - (5 * ARM_OTHER_INST)); static const uint32_t CyclesT1h = ((uint32_t)(0.80 * ARM_OTHER_SCALE + 0.5) - (5 * ARM_OTHER_INST)); static const uint32_t Cycles = ((uint32_t)(1.25 * ARM_OTHER_SCALE + 0.5) - (5 * ARM_OTHER_INST)); - static const uint32_t ResetTimeUs = 250; }; -class NeoArmOtherSpeedProps800Kbps +class NeoArmOtherSpeedPropsWs2812x : public NeoArmOtherSpeedProps800KbpsBase +{ +public: + static const uint32_t ResetTimeUs = 300; +}; + +class NeoArmOtherSpeedPropsSk6812 : public NeoArmOtherSpeedProps800KbpsBase +{ +public: + static const uint32_t ResetTimeUs = 80; +}; + +class NeoArmOtherSpeedProps800Kbps : public NeoArmOtherSpeedProps800KbpsBase { public: - static const uint32_t CyclesT0h = ((uint32_t)(0.40 * ARM_OTHER_SCALE + 0.5) - (5 * ARM_OTHER_INST)); - static const uint32_t CyclesT1h = ((uint32_t)(0.80 * ARM_OTHER_SCALE + 0.5) - (5 * ARM_OTHER_INST)); - static const uint32_t Cycles = ((uint32_t)(1.25 * ARM_OTHER_SCALE + 0.5) - (5 * ARM_OTHER_INST)); static const uint32_t ResetTimeUs = 50; }; @@ -679,7 +717,8 @@ public: } }; -typedef NeoArmMethodBase> NeoArmWs2813Method; +typedef NeoArmMethodBase> NeoArmWs2812xMethod; +typedef NeoArmMethodBase> NeoArmSk6812Method; typedef NeoArmMethodBase> NeoArm800KbpsMethod; typedef NeoArmMethodBase> NeoArm400KbpsMethod; @@ -687,8 +726,12 @@ typedef NeoArmMethodBase> Neo // Arm doesn't have alternatives methods yet, so only one to make the default -typedef NeoArmWs2813Method NeoWs2813Method; -typedef NeoArm800KbpsMethod Neo800KbpsMethod; +typedef NeoArmWs2812xMethod NeoWs2813Method; +typedef NeoArmWs2812xMethod NeoWs2812xMethod; +typedef NeoArmSk6812Method NeoSk6812Method; +typedef NeoArmSk6812Method NeoLc8812Method; +typedef NeoArm800KbpsMethod NeoWs2812Method; +typedef NeoArmWs2812xMethod Neo800KbpsMethod; #ifdef NeoArm400KbpsMethod // this is needed due to missing 400Kbps for some platforms typedef NeoArm400KbpsMethod Neo400KbpsMethod; #endif diff --git a/src/internal/NeoAvrMethod.h b/src/internal/NeoAvrMethod.h index 9843816..f8dc7db 100644 --- a/src/internal/NeoAvrMethod.h +++ b/src/internal/NeoAvrMethod.h @@ -71,10 +71,16 @@ public: }; -class NeoAvrSpeedWs2813 : public NeoAvrSpeed800KbpsBase +class NeoAvrSpeedWs2812x : public NeoAvrSpeed800KbpsBase { public: - static const uint32_t ResetTimeUs = 250; + static const uint32_t ResetTimeUs = 300; +}; + +class NeoAvrSpeedSk6812 : public NeoAvrSpeed800KbpsBase +{ +public: + static const uint32_t ResetTimeUs = 80; }; class NeoAvrSpeed800Kbps: public NeoAvrSpeed800KbpsBase @@ -187,13 +193,19 @@ private: uint8_t _pinMask; // Output PORT bitmask }; -typedef NeoAvrMethodBase NeoAvrWs2813Method; + +typedef NeoAvrMethodBase NeoAvrWs2812xMethod; +typedef NeoAvrMethodBase NeoAvrSk6812Method; typedef NeoAvrMethodBase NeoAvr800KbpsMethod; typedef NeoAvrMethodBase NeoAvr400KbpsMethod; // AVR doesn't have alternatives yet, so there is just the default -typedef NeoAvrWs2813Method NeoWs2813Method; -typedef NeoAvr800KbpsMethod Neo800KbpsMethod; +typedef NeoAvrWs2812xMethod NeoWs2813Method; +typedef NeoAvrWs2812xMethod NeoWs2812xMethod; +typedef NeoAvr800KbpsMethod NeoWs2812Method; +typedef NeoAvrSk6812Method NeoSk6812Method; +typedef NeoAvrSk6812Method NeoLc8812Method; +typedef NeoAvrWs2812xMethod Neo800KbpsMethod; typedef NeoAvr400KbpsMethod Neo400KbpsMethod; #endif diff --git a/src/internal/NeoEsp32I2sMethod.h b/src/internal/NeoEsp32I2sMethod.h index 549f671..2918de7 100644 --- a/src/internal/NeoEsp32I2sMethod.h +++ b/src/internal/NeoEsp32I2sMethod.h @@ -38,11 +38,18 @@ const uint16_t c_dmaBytesPerPixelBytes = 4; const uint16_t c_dmaBytesPer50us = 20; const uint32_t c_dmaI2sSampleRate = 100000; -class NeoEsp32I2sSpeedWs2813 +class NeoEsp32I2sSpeedWs2812x { public: const static uint16_t I2sSampleRateDiv = 1; - const static uint16_t ResetTimeUs = 250; + const static uint16_t ResetTimeUs = 300; +}; + +class NeoEsp32I2sSpeedSk6812 +{ +public: + const static uint16_t I2sSampleRateDiv = 1; + const static uint16_t ResetTimeUs = 80; }; class NeoEsp32I2sSpeed800Kbps @@ -173,17 +180,24 @@ private: } }; -typedef NeoEsp32I2sMethodBase NeoEsp32I2s0Ws2813Method; +typedef NeoEsp32I2sMethodBase NeoEsp32I2s0Ws2812xMethod; +typedef NeoEsp32I2sMethodBase NeoEsp32I2s0Sk6812Method; typedef NeoEsp32I2sMethodBase NeoEsp32I2s0800KbpsMethod; typedef NeoEsp32I2sMethodBase NeoEsp32I2s0400KbpsMethod; -typedef NeoEsp32I2sMethodBase NeoEsp32I2s1Ws2813Method; +typedef NeoEsp32I2sMethodBase NeoEsp32I2s1Ws2812xMethod; +typedef NeoEsp32I2sMethodBase NeoEsp32I2s1Sk6812Method; typedef NeoEsp32I2sMethodBase NeoEsp32I2s1800KbpsMethod; typedef NeoEsp32I2sMethodBase NeoEsp32I2s1400KbpsMethod; // I2s Bus 1 method is the default method for Esp32 -typedef NeoEsp32I2s1Ws2813Method NeoWs2813Method; -typedef NeoEsp32I2s1800KbpsMethod Neo800KbpsMethod; +typedef NeoEsp32I2s1Ws2812xMethod NeoWs2813Method; +typedef NeoEsp32I2s1Ws2812xMethod NeoWs2812xMethod; +typedef NeoEsp32I2s1800KbpsMethod NeoWs2812Method; +typedef NeoEsp32I2s1Sk6812Method NeoSk6812Method; +typedef NeoEsp32I2s1Sk6812Method NeoLc8812Method; + +typedef NeoEsp32I2s1Ws2812xMethod Neo800KbpsMethod; typedef NeoEsp32I2s1400KbpsMethod Neo400KbpsMethod; #endif \ No newline at end of file diff --git a/src/internal/NeoEsp8266DmaMethod.h b/src/internal/NeoEsp8266DmaMethod.h index af11e1a..f466bfd 100644 --- a/src/internal/NeoEsp8266DmaMethod.h +++ b/src/internal/NeoEsp8266DmaMethod.h @@ -63,19 +63,28 @@ struct slc_queue_item uint32 next_link_ptr; }; -class NeoEsp8266DmaSpeedWs2813 +class NeoEsp8266DmaSpeed800KbpsBase { public: const static uint32_t I2sClockDivisor = 3; const static uint32_t I2sBaseClockDivisor = 16; - const static uint32_t ResetTimeUs = 250; }; -class NeoEsp8266DmaSpeed800Kbps +class NeoEsp8266DmaSpeedWs2812x : public NeoEsp8266DmaSpeed800KbpsBase +{ +public: + const static uint32_t ResetTimeUs = 300; +}; + +class NeoEsp8266DmaSpeedSk6812 : public NeoEsp8266DmaSpeed800KbpsBase +{ +public: + const static uint32_t ResetTimeUs = 80; +}; + +class NeoEsp8266DmaSpeed800Kbps : public NeoEsp8266DmaSpeed800KbpsBase { public: - const static uint32_t I2sClockDivisor = 3; - const static uint32_t I2sBaseClockDivisor = 16; const static uint32_t ResetTimeUs = 50; }; @@ -370,13 +379,19 @@ private: template NeoEsp8266DmaMethodBase* NeoEsp8266DmaMethodBase::s_this; -typedef NeoEsp8266DmaMethodBase NeoEsp8266DmaWs2813Method; +typedef NeoEsp8266DmaMethodBase NeoEsp8266DmaWs2812xMethod; +typedef NeoEsp8266DmaMethodBase NeoEsp8266DmaSk6812Method; typedef NeoEsp8266DmaMethodBase NeoEsp8266Dma800KbpsMethod; typedef NeoEsp8266DmaMethodBase NeoEsp8266Dma400KbpsMethod; // Dma method is the default method for Esp8266 -typedef NeoEsp8266DmaWs2813Method NeoWs2813Method; -typedef NeoEsp8266Dma800KbpsMethod Neo800KbpsMethod; +typedef NeoEsp8266DmaWs2812xMethod NeoWs2813Method; +typedef NeoEsp8266DmaWs2812xMethod NeoWs2812xMethod; +typedef NeoEsp8266Dma800KbpsMethod NeoWs2812Method; +typedef NeoEsp8266DmaSk6812Method NeoSk6812Method; +typedef NeoEsp8266DmaSk6812Method NeoLc8812Method; + +typedef NeoEsp8266DmaWs2812xMethod Neo800KbpsMethod; typedef NeoEsp8266Dma400KbpsMethod Neo400KbpsMethod; #endif \ No newline at end of file diff --git a/src/internal/NeoEsp8266UartMethod.h b/src/internal/NeoEsp8266UartMethod.h index a92d566..337617a 100644 --- a/src/internal/NeoEsp8266UartMethod.h +++ b/src/internal/NeoEsp8266UartMethod.h @@ -75,25 +75,34 @@ private: uint8_t* _asyncPixels; // Holds a copy of LED color values taken when UpdateUart began }; -// NeoEsp8266UartSpeedWs2813 contains the timing constants used to get NeoPixelBus running with the Ws2813 -class NeoEsp8266UartSpeedWs2813 +class NeoEsp8266UartSpeed800KbpsBase { public: static const uint32_t ByteSendTimeUs = 10; // us it takes to send a single pixel element at 800khz speed static const uint32_t UartBaud = 3200000; // 800mhz, 4 serial bytes per NeoByte - static const uint32_t ResetTimeUs = 250; // us between data send bursts to reset for next update +}; + +// NeoEsp8266UartSpeedWs2813 contains the timing constants used to get NeoPixelBus running with the Ws2813 +class NeoEsp8266UartSpeedWs2812x : public NeoEsp8266UartSpeed800KbpsBase +{ +public: + static const uint32_t ResetTimeUs = 300; // us between data send bursts to reset for next update +}; + +class NeoEsp8266UartSpeedSk6812 : public NeoEsp8266UartSpeed800KbpsBase +{ +public: + static const uint32_t ResetTimeUs = 80; // us between data send bursts to reset for next update }; // NeoEsp8266UartSpeed800Kbps contains the timing constant used to get NeoPixelBus running at 800Khz -class NeoEsp8266UartSpeed800Kbps +class NeoEsp8266UartSpeed800Kbps : public NeoEsp8266UartSpeed800KbpsBase { public: - static const uint32_t ByteSendTimeUs = 10; // us it takes to send a single pixel element at 800khz speed - static const uint32_t UartBaud = 3200000; // 800mhz, 4 serial bytes per NeoByte static const uint32_t ResetTimeUs = 50; // us between data send bursts to reset for next update }; -// NeoEsp8266UartSpeed800Kbps contains the timing constant used to get NeoPixelBus running at 400Khz +// NeoEsp8266UartSpeed400Kbps contains the timing constant used to get NeoPixelBus running at 400Khz class NeoEsp8266UartSpeed400Kbps { public: @@ -166,13 +175,22 @@ private: }; }; -typedef NeoEsp8266UartMethodBase NeoEsp8266UartWs2813Method; +typedef NeoEsp8266UartMethodBase NeoEsp8266UartWs2812xMethod; +typedef NeoEsp8266UartMethodBase NeoEsp8266UartSk6812Method; typedef NeoEsp8266UartMethodBase NeoEsp8266Uart800KbpsMethod; typedef NeoEsp8266UartMethodBase NeoEsp8266Uart400KbpsMethod; -typedef NeoEsp8266UartMethodBase NeoEsp8266AsyncUartWs2813Method; +typedef NeoEsp8266UartWs2812xMethod NeoEsp8266UartWs2813Method; +typedef NeoEsp8266Uart800KbpsMethod NeoEsp8266UartWs2812Method; +typedef NeoEsp8266UartSk6812Method NeoEsp8266UartLc8812Method; + +typedef NeoEsp8266UartMethodBase NeoEsp8266AsyncUartWs2812xMethod; +typedef NeoEsp8266UartMethodBase NeoEsp8266AsyncUartSk6812Method; typedef NeoEsp8266UartMethodBase NeoEsp8266AsyncUart800KbpsMethod; typedef NeoEsp8266UartMethodBase NeoEsp8266AsyncUart400KbpsMethod; +typedef NeoEsp8266AsyncUartWs2812xMethod NeoEsp8266AsyncUartWs2813Method; +typedef NeoEsp8266AsyncUart800KbpsMethod NeoEsp8266AsyncUartWs2812Method; +typedef NeoEsp8266AsyncUartSk6812Method NeoEsp8266AsyncUartLc8812Method; #endif diff --git a/src/internal/NeoEspBitBangMethod.h b/src/internal/NeoEspBitBangMethod.h index de5e3a1..df8ab80 100644 --- a/src/internal/NeoEspBitBangMethod.h +++ b/src/internal/NeoEspBitBangMethod.h @@ -39,14 +39,24 @@ License along with NeoPixel. If not, see extern "C" void ICACHE_RAM_ATTR bitbang_send_pixels_800(uint8_t* pixels, uint8_t* end, uint8_t pin); extern "C" void ICACHE_RAM_ATTR bitbang_send_pixels_400(uint8_t* pixels, uint8_t* end, uint8_t pin); -class NeoEspBitBangSpeedWs2813 +class NeoEspBitBangSpeedWs2812x { public: static void send_pixels(uint8_t* pixels, uint8_t* end, uint8_t pin) { bitbang_send_pixels_800(pixels, end, pin); } - static const uint32_t ResetTimeUs = 250; + static const uint32_t ResetTimeUs = 300; +}; + +class NeoEspBitBangSpeedSk6812 +{ +public: + static void send_pixels(uint8_t* pixels, uint8_t* end, uint8_t pin) + { + bitbang_send_pixels_800(pixels, end, pin); + } + static const uint32_t ResetTimeUs = 80; }; class NeoEspBitBangSpeed800Kbps @@ -158,16 +168,26 @@ private: #if defined(ARDUINO_ARCH_ESP32) -typedef NeoEspBitBangMethodBase NeoEsp32BitBangWs2813Method; +typedef NeoEspBitBangMethodBase NeoEsp32BitBangWs2812xMethod; +typedef NeoEspBitBangMethodBase NeoEsp32BitBangSk6812Method; typedef NeoEspBitBangMethodBase NeoEsp32BitBang800KbpsMethod; typedef NeoEspBitBangMethodBase NeoEsp32BitBang400KbpsMethod; +typedef NeoEsp32BitBangWs2812xMethod NeoEsp32BitBangWs2813Method; +typedef NeoEsp32BitBang800KbpsMethod NeoEsp32BitBangWs2812Method; +typedef NeoEsp32BitBangSk6812Method NeoEsp32BitBangLc8812Method; + #else -typedef NeoEspBitBangMethodBase NeoEsp8266BitBangWs2813Method; +typedef NeoEspBitBangMethodBase NeoEsp8266BitBangWs2812xMethod; +typedef NeoEspBitBangMethodBase NeoEsp8266BitBangSk6812Method; typedef NeoEspBitBangMethodBase NeoEsp8266BitBang800KbpsMethod; typedef NeoEspBitBangMethodBase NeoEsp8266BitBang400KbpsMethod; +typedef NeoEsp8266BitBangWs2812xMethod NeoEsp32BitBangWs2813Method; +typedef NeoEsp8266BitBang800KbpsMethod NeoEsp32BitBangWs2812Method; +typedef NeoEsp8266BitBangSk6812Method NeoEsp32BitBangLc8812Method; #endif +// ESP bitbang doesn't have defaults and should avoided except for testing #endif \ No newline at end of file