From d07f7aa0abb053501203768b83e1df69e8dc7e09 Mon Sep 17 00:00:00 2001 From: Michael Miller Date: Wed, 10 Feb 2021 13:36:05 -0800 Subject: [PATCH] More Speeds and Color Order (#423) --- keywords.txt | 11 ++++++++ src/internal/DotStarGenericMethod.h | 3 +++ src/internal/Lpd6803ColorFeatures.h | 42 +++++++++++++++++++++++++++++ src/internal/Lpd6803GenericMethod.h | 2 ++ src/internal/Lpd8806GenericMethod.h | 2 ++ src/internal/P9813GenericMethod.h | 3 +++ src/internal/TwoWireSpiImple.h | 12 +++++++++ src/internal/Ws2801GenericMethod.h | 2 ++ 8 files changed, 77 insertions(+) diff --git a/keywords.txt b/keywords.txt index 6e3a9fa..7042087 100644 --- a/keywords.txt +++ b/keywords.txt @@ -27,6 +27,7 @@ NeoWrgbTm1814Feature KEYWORD1 DotStarBgrFeature KEYWORD1 DotStarLbgrFeature KEYWORD1 Lpd6803GrbFeature KEYWORD1 +Lpd6803GbrFeature KEYWORD1 Lpd6803BrgFeature KEYWORD1 Lpd8806GrbFeature KEYWORD1 Lpd8806BrgFeature KEYWORD1 @@ -399,26 +400,36 @@ DotStarSpiMethod KEYWORD1 DotStarSpi20MhzMethod KEYWORD1 DotStarSpi10MhzMethod KEYWORD1 DotStarSpi2MhzMethod KEYWORD1 +DotStarSpi1MhzMethod KEYWORD1 +DotStarSpi500KhzMethod KEYWORD1 NeoWs2801Method KEYWORD1 NeoWs2801SpiMethod KEYWORD1 NeoWs2801Spi20MhzMethod KEYWORD1 NeoWs2801Spi10MhzMethod KEYWORD1 NeoWs2801Spi2MhzMethod KEYWORD1 +NeoWs2801Spi1MhzMethod KEYWORD1 +NeoWs2801Spi500KhzMethod KEYWORD1 Lpd6803SpiMethod KEYWORD1 Lpd6803Method KEYWORD1 Lpd6803Spi20MhzMethod KEYWORD1 Lpd6803Spi10MhzMethod KEYWORD1 Lpd6803Spi2MhzMethod KEYWORD1 +Lpd6803Spi1MhzMethod KEYWORD1 +Lpd6803Spi500KhzMethod KEYWORD1 Lpd8806Method KEYWORD1 Lpd8806SpiMethod KEYWORD1 Lpd8806Spi20MhzMethod KEYWORD1 Lpd8806Spi10MhzMethod KEYWORD1 Lpd8806Spi2MhzMethod KEYWORD1 +Lpd8806Spi1MhzMethod KEYWORD1 +Lpd8806Spi500KhzMethod KEYWORD1 P9813Method KEYWORD1 P9813SpiMethod KEYWORD1 P9813Spi20MhzMethod KEYWORD1 P9813Spi10MhzMethod KEYWORD1 P9813Spi2MhzMethod KEYWORD1 +P9813Spi1MhzMethod KEYWORD1 +P9813Spi500KhzMethod KEYWORD1 NeoPixelAnimator KEYWORD1 AnimUpdateCallback KEYWORD1 AnimationParam KEYWORD1 diff --git a/src/internal/DotStarGenericMethod.h b/src/internal/DotStarGenericMethod.h index 64c8f9a..95ca239 100644 --- a/src/internal/DotStarGenericMethod.h +++ b/src/internal/DotStarGenericMethod.h @@ -128,6 +128,9 @@ typedef DotStarMethodBase> DotStarSpi40MhzMethod; typedef DotStarMethodBase> DotStarSpi20MhzMethod; typedef DotStarMethodBase> DotStarSpi10MhzMethod; typedef DotStarMethodBase> DotStarSpi2MhzMethod; +typedef DotStarMethodBase> DotStarSpi1MhzMethod; +typedef DotStarMethodBase> DotStarSpi500KhzMethod; + typedef DotStarSpi10MhzMethod DotStarSpiMethod; #endif diff --git a/src/internal/Lpd6803ColorFeatures.h b/src/internal/Lpd6803ColorFeatures.h index 1525c8a..bcd9a5c 100644 --- a/src/internal/Lpd6803ColorFeatures.h +++ b/src/internal/Lpd6803ColorFeatures.h @@ -211,5 +211,47 @@ public: } }; +class Lpd6803GbrFeature : public Lpd68033Elements +{ +public: + static void applyPixelColor(uint8_t* pPixels, uint16_t indexPixel, ColorObject color) + { + uint8_t* p = getPixelAddress(pPixels, indexPixel); + uint16_t color555; + encodePixel(color.G, color.B, color.R, &color555); + *p++ = color555 >> 8; + *p = color555 & 0xff; + } + + static ColorObject retrievePixelColor(const uint8_t* pPixels, uint16_t indexPixel) + { + ColorObject color; + const uint8_t* p = getPixelAddress(pPixels, indexPixel); + + uint16_t color555; + + color555 = ((*p++) << 8); + color555 |= (*p); + + decodePixel(color555, &color.G, &color.B, &color.R); + + return color; + } + + static ColorObject retrievePixelColor_P(PGM_VOID_P pPixels, uint16_t indexPixel) + { + ColorObject color; + const uint8_t* p = getPixelAddress((const uint8_t*)pPixels, indexPixel); + + uint16_t color555; + + color555 = (pgm_read_byte(p++) << 8); + color555 |= pgm_read_byte(p); + + decodePixel(color555, &color.G, &color.B, &color.R); + + return color; + } +}; diff --git a/src/internal/Lpd6803GenericMethod.h b/src/internal/Lpd6803GenericMethod.h index a98dffe..0914264 100644 --- a/src/internal/Lpd6803GenericMethod.h +++ b/src/internal/Lpd6803GenericMethod.h @@ -123,6 +123,8 @@ typedef Lpd6803MethodBase Lpd6803Method; typedef Lpd6803MethodBase> Lpd6803Spi20MhzMethod; typedef Lpd6803MethodBase> Lpd6803Spi10MhzMethod; typedef Lpd6803MethodBase> Lpd6803Spi2MhzMethod; +typedef Lpd6803MethodBase> Lpd6803Spi1MhzMethod; +typedef Lpd6803MethodBase> Lpd6803Spi500KhzMethod; typedef Lpd6803Spi10MhzMethod Lpd6803SpiMethod; #endif diff --git a/src/internal/Lpd8806GenericMethod.h b/src/internal/Lpd8806GenericMethod.h index 2a741f9..1ac0392 100644 --- a/src/internal/Lpd8806GenericMethod.h +++ b/src/internal/Lpd8806GenericMethod.h @@ -123,6 +123,8 @@ typedef Lpd8806MethodBase Lpd8806Method; typedef Lpd8806MethodBase> Lpd8806Spi20MhzMethod; typedef Lpd8806MethodBase> Lpd8806Spi10MhzMethod; typedef Lpd8806MethodBase> Lpd8806Spi2MhzMethod; +typedef Lpd8806MethodBase> Lpd8806Spi1MhzMethod; +typedef Lpd8806MethodBase> Lpd8806Spi500KhzMethod; typedef Lpd8806Spi10MhzMethod Lpd8806SpiMethod; #endif diff --git a/src/internal/P9813GenericMethod.h b/src/internal/P9813GenericMethod.h index 37a15f6..bfaf9ae 100644 --- a/src/internal/P9813GenericMethod.h +++ b/src/internal/P9813GenericMethod.h @@ -119,6 +119,9 @@ typedef P9813MethodBase P9813Method; typedef P9813MethodBase> P9813Spi20MhzMethod; typedef P9813MethodBase> P9813Spi10MhzMethod; typedef P9813MethodBase> P9813Spi2MhzMethod; +typedef P9813MethodBase> P9813Spi1MhzMethod; +typedef P9813MethodBase> P9813Spi500KhzMethod; + typedef P9813Spi10MhzMethod P9813SpiMethod; #endif diff --git a/src/internal/TwoWireSpiImple.h b/src/internal/TwoWireSpiImple.h index 9838f7b..ce07ee7 100644 --- a/src/internal/TwoWireSpiImple.h +++ b/src/internal/TwoWireSpiImple.h @@ -52,6 +52,18 @@ public: static const uint32_t Clock = 2000000L; }; +class SpiSpeed1Mhz +{ +public: + static const uint32_t Clock = 1000000L; +}; + +class SpiSpeed500Khz +{ +public: + static const uint32_t Clock = 500000L; +}; + template class TwoWireSpiImple { public: diff --git a/src/internal/Ws2801GenericMethod.h b/src/internal/Ws2801GenericMethod.h index e2293ae..0a62631 100644 --- a/src/internal/Ws2801GenericMethod.h +++ b/src/internal/Ws2801GenericMethod.h @@ -125,6 +125,8 @@ typedef Ws2801MethodBase NeoWs2801Method; typedef Ws2801MethodBase> NeoWs2801Spi20MhzMethod; typedef Ws2801MethodBase> NeoWs2801Spi10MhzMethod; typedef Ws2801MethodBase> NeoWs2801Spi2MhzMethod; +typedef Ws2801MethodBase> NeoWs2801Spi1MhzMethod; +typedef Ws2801MethodBase> NeoWs2801Spi500KhzMethod; typedef NeoWs2801Spi10MhzMethod NeoWs2801SpiMethod; #endif