From 270d21fe973743e619f467cafdffb0434942273a Mon Sep 17 00:00:00 2001 From: Shawn Silverman Date: Wed, 29 Dec 2021 08:35:02 -0800 Subject: Split non-timing-related changes from 8d49dd7f49a011a3b2b771522d055e90f1e3fcde That commit is for timing changes; separating out original Teensy 4 OctoWS2811 fix and crediting the original author. --- src/platforms/arm/mxrt1062/fastled_arm_mxrt1062.h | 2 +- src/platforms/arm/mxrt1062/octows2811_controller.h | 64 ---------------------- 2 files changed, 1 insertion(+), 65 deletions(-) delete mode 100644 src/platforms/arm/mxrt1062/octows2811_controller.h diff --git a/src/platforms/arm/mxrt1062/fastled_arm_mxrt1062.h b/src/platforms/arm/mxrt1062/fastled_arm_mxrt1062.h index 0cd53602..5098af33 100644 --- a/src/platforms/arm/mxrt1062/fastled_arm_mxrt1062.h +++ b/src/platforms/arm/mxrt1062/fastled_arm_mxrt1062.h @@ -3,7 +3,7 @@ #include "fastpin_arm_mxrt1062.h" #include "fastspi_arm_mxrt1062.h" -#include "octows2811_controller.h" +#include "../k20/octows2811_controller.h" #include "../k20/ws2812serial_controller.h" #include "../k20/smartmatrix_t3.h" #include "clockless_arm_mxrt1062.h" diff --git a/src/platforms/arm/mxrt1062/octows2811_controller.h b/src/platforms/arm/mxrt1062/octows2811_controller.h deleted file mode 100644 index d0000a40..00000000 --- a/src/platforms/arm/mxrt1062/octows2811_controller.h +++ /dev/null @@ -1,64 +0,0 @@ -#ifndef __INC_OCTOWS2811_CONTROLLER_H -#define __INC_OCTOWS2811_CONTROLLER_H - -#ifdef USE_OCTOWS2811 - -// #include "OctoWS2811.h" - -FASTLED_NAMESPACE_BEGIN - -template -class COctoWS2811Controller : public CPixelLEDController { - OctoWS2811 *pocto; - uint8_t *drawbuffer,*framebuffer; - - void _init(int nLeds) { - if(pocto == NULL) { - drawbuffer = (uint8_t*)malloc(nLeds * 8 * 3); - framebuffer = (uint8_t*)malloc(nLeds * 8 * 3); - - // byte ordering is handled in show by the pixel controller - int config = WS2811_RGB; - config |= CHIP; - - pocto = new OctoWS2811(nLeds, framebuffer, drawbuffer, config); - - pocto->begin(); - } - } -public: - COctoWS2811Controller() { pocto = NULL; } - virtual int size() { return CLEDController::size() * 8; } - - virtual void init() { /* do nothing yet */ } - - virtual void showPixels(PixelController &pixels) { - uint32_t size = pixels.size(); - uint32_t sizeTimes8 = 8U * size; - _init(size); - - uint32_t index = 0; - while (pixels.has(1)) { - for (uint32_t i = 0; i < 8; i++) { - uint8_t r = pixels.loadAndScale0(i); - uint8_t g = pixels.loadAndScale1(i); - uint8_t b = pixels.loadAndScale2(i); - pocto->setPixel(index, r, g, b); - index += size; - } - index -= sizeTimes8; - index++; - pixels.stepDithering(); - pixels.advanceData(); - } - - pocto->show(); - } - -}; - -FASTLED_NAMESPACE_END - -#endif - -#endif -- cgit v1.2.3 From d00d561a6bcbf9dcb679236687da1bdc72ffcf86 Mon Sep 17 00:00:00 2001 From: Shawn Silverman Date: Sat, 16 Oct 2021 02:42:36 -0700 Subject: Fix OctoWS2811 controller for Teensy 4 The pixel layout is different. --- src/platforms/arm/mxrt1062/fastled_arm_mxrt1062.h | 2 +- src/platforms/arm/mxrt1062/octows2811_controller.h | 64 ++++++++++++++++++++++ 2 files changed, 65 insertions(+), 1 deletion(-) create mode 100644 src/platforms/arm/mxrt1062/octows2811_controller.h diff --git a/src/platforms/arm/mxrt1062/fastled_arm_mxrt1062.h b/src/platforms/arm/mxrt1062/fastled_arm_mxrt1062.h index 5098af33..0cd53602 100644 --- a/src/platforms/arm/mxrt1062/fastled_arm_mxrt1062.h +++ b/src/platforms/arm/mxrt1062/fastled_arm_mxrt1062.h @@ -3,7 +3,7 @@ #include "fastpin_arm_mxrt1062.h" #include "fastspi_arm_mxrt1062.h" -#include "../k20/octows2811_controller.h" +#include "octows2811_controller.h" #include "../k20/ws2812serial_controller.h" #include "../k20/smartmatrix_t3.h" #include "clockless_arm_mxrt1062.h" diff --git a/src/platforms/arm/mxrt1062/octows2811_controller.h b/src/platforms/arm/mxrt1062/octows2811_controller.h new file mode 100644 index 00000000..a7c2f3e4 --- /dev/null +++ b/src/platforms/arm/mxrt1062/octows2811_controller.h @@ -0,0 +1,64 @@ +#ifndef __INC_OCTOWS2811_CONTROLLER_H +#define __INC_OCTOWS2811_CONTROLLER_H + +#ifdef USE_OCTOWS2811 + +// #include "OctoWS2811.h" + +FASTLED_NAMESPACE_BEGIN + +template +class COctoWS2811Controller : public CPixelLEDController { + OctoWS2811 *pocto; + uint8_t *drawbuffer,*framebuffer; + + void _init(int nLeds) { + if(pocto == NULL) { + drawbuffer = (uint8_t*)malloc(nLeds * 8 * 3); + framebuffer = (uint8_t*)malloc(nLeds * 8 * 3); + + // byte ordering is handled in show by the pixel controller + int config = WS2811_RGB; + config |= CHIP; + + pocto = new OctoWS2811(nLeds, framebuffer, drawbuffer, config); + + pocto->begin(); + } + } +public: + COctoWS2811Controller() { pocto = NULL; } + virtual int size() { return CLEDController::size() * 8; } + + virtual void init() { /* do nothing yet */ } + + virtual void showPixels(PixelController &pixels) { + uint32_t size = pixels.size(); + uint32_t sizeTimes8 = 8U * size; + _init(size); + + uint32_t index = 0; + while (pixels.has(1)) { + for (int lane = 0; lane < 8; lane++) { + uint8_t r = pixels.loadAndScale0(lane); + uint8_t g = pixels.loadAndScale1(lane); + uint8_t b = pixels.loadAndScale2(lane); + pocto->setPixel(index, r, g, b); + index += size; + } + index -= sizeTimes8; + index++; + pixels.stepDithering(); + pixels.advanceData(); + } + + pocto->show(); + } + +}; + +FASTLED_NAMESPACE_END + +#endif + +#endif -- cgit v1.2.3