48#ifndef FL_UCS7604_BRIGHTNESS
49#define FL_UCS7604_BRIGHTNESS 0x0F
87 typename CHIPSET_TIMING,
88 template<
int,
typename, EOrder>
class CLOCKLESS_CONTROLLER
99 DelegateControllerBase::showPixels(pixels);
134 if (pixels.
size() == 0) {
144 u8 rgb_currents[3] = {current.
r, current.
g, current.
b};
150 u8 pos0 = (
static_cast<int>(
RGB_ORDER) >> 6) & 0x3;
151 u8 pos1 = (
static_cast<int>(
RGB_ORDER) >> 3) & 0x3;
152 u8 pos2 = (
static_cast<int>(
RGB_ORDER) >> 0) & 0x3;
155 u8 r_current = rgb_currents[pos0];
156 u8 g_current = rgb_currents[pos1];
157 u8 b_current = rgb_currents[pos2];
158 u8 w_current = current.
w;
187template <
int DATA_PIN, EOrder RGB_ORDER,
template<
int,
typename, EOrder>
class CLOCKLESS_CONTROLLER>
190template <
int DATA_PIN, EOrder RGB_ORDER,
template<
int,
typename, EOrder>
class CLOCKLESS_CONTROLLER>
193template <
int DATA_PIN, EOrder RGB_ORDER,
template<
int,
typename, EOrder>
class CLOCKLESS_CONTROLLER>
CPixelLEDController(RegistrationMode mode)
Protected constructor with registration mode.
CLEDController & setRgbw(const Rgbw &arg=RgbwDefault::value()) FL_NOEXCEPT
ChannelOptions mSettings
Optional channel settings (correction, temperature, dither, rgbw, affinity)
static fl::shared_ptr< const Gamma8 > getOrCreate(float gamma) FL_NOEXCEPT
Rgbw get_rgbw() const FL_NOEXCEPT
void callShowPixels(PixelController< RGB > &pixels)
CLOCKLESS_CONTROLLER< DATA_PIN, CHIPSET_TIMING, RGB > DelegateControllerBase
virtual void showPixels(PixelController< RGB_ORDER > &pixels) override
UCS7604ControllerT() FL_NOEXCEPT
fl::span< const u8 > bytes() const
virtual void init() override
Initialize the LED controller.
const DelegateController & getDelegate() const
DelegateController & getDelegate()
fl::vector_psram< u8 > mByteBuffer
DelegateController mDelegate
UCS7604 controller extending CPixelLEDController.
T * get() const FL_NOEXCEPT
defines the templated version of the CLEDController class
#define DISABLE_DITHER
Disable dithering.
UCS7604 LED chipset encoder implementation.
Non-templated low level pixel data writing class.
Centralized LED chipset timing definitions with nanosecond precision.
CurrentControl brightness()
Get current global UCS7604 brightness value.
void set_brightness(CurrentControl current)
Set global UCS7604 brightness via current control (EXPERIMENTAL)
UCS7604CurrentControl CurrentControl
Type alias for current control (defined in ucs7604_encoder.h)
back_insert_iterator< Container > back_inserter(Container &c) FL_NOEXCEPT
Helper function to create a back_insert_iterator.
UCS7604ControllerT< DATA_PIN, RGB_ORDER, fl::UCS7604Mode::UCS7604_MODE_16BIT_800KHZ, fl::TIMING_UCS7604_800KHZ, CLOCKLESS_CONTROLLER > UCS7604Controller16bitT
UCS7604Mode
UCS7604 protocol configuration modes.
constexpr u32 gamma(float g) FL_NOEXCEPT
UCS7604ControllerT< DATA_PIN, RGB_ORDER, fl::UCS7604Mode::UCS7604_MODE_8BIT_800KHZ, fl::TIMING_UCS7604_800KHZ, CLOCKLESS_CONTROLLER > UCS7604Controller8bitT
To bit_cast(const From &from) FL_NOEXCEPT
UCS7604ControllerT< DATA_PIN, RGB_ORDER, fl::UCS7604Mode::UCS7604_MODE_16BIT_1600KHZ, fl::TIMING_UCS7604_1600KHZ, CLOCKLESS_CONTROLLER > UCS7604Controller16bit1600T
void encodeUCS7604(PixelIterator &pixel_iter, size_t num_leds, OutputIterator out, UCS7604Mode mode, const UCS7604CurrentControl ¤t, bool is_rgbw, const Gamma8 *gamma=nullptr)
Encode complete UCS7604 frame (preamble + padding + pixel data)
Base definition for an LED controller.
Low level pixel data writing class.
static ColorAdjustment noAdjustment()
the per-channel scale values premixed with brightness.
FASTLED_FORCE_INLINE int size() const
Get the length of the LED strip.
FASTLED_FORCE_INLINE fl::PixelIterator as_iterator(const Rgbw &rgbw)
Representation of an 8-bit RGB pixel (Red, Green, Blue)
FASTLED_FORCE_INLINE bool active() const FL_NOEXCEPT
static Rgbw value() FL_NOEXCEPT
u8 g
Green channel current (0x0-0xF)
u8 b
Blue channel current (0x0-0xF)
u8 w
White channel current (0x0-0xF)
u8 r
Red channel current (0x0-0xF)
UCS7604 current control structure with 4-bit fields for each channel.