44 static ChannelDataPtr
create(
54 static ChannelDataPtr
create(
125 template<
typename T,
typename... Args>
void setInUse(bool inUse) FL_NOEXCEPT
Mark channel data as in use by the driver.
bool isInUse() const FL_NOEXCEPT
Check if channel data is currently in use by the driver.
size_t getSize() const FL_NOEXCEPT
Get the data size in bytes.
void setPaddingGenerator(PaddingGenerator generator) FL_NOEXCEPT
Set the padding generator for this channel.
ChannelData & operator=(const ChannelData &) FL_NOEXCEPT=delete
~ChannelData()
Destructor with debug logging.
void writeWithPadding(fl::span< u8 > dst) FL_NOEXCEPT
Write encoded data with padding to destination buffer.
const ChipsetTimingConfig & getTiming() const FL_NOEXCEPT
Get the timing configuration (clockless chipsets only)
ChannelData(const ChipsetVariant &chipset, fl::vector_psram< u8 > &&encodedData) FL_NOEXCEPT
Private constructor - variant-based (modern API)
int getPin() const FL_NOEXCEPT
Get the GPIO pin number.
static ChannelDataPtr create(const ChipsetVariant &chipset, fl::vector_psram< u8 > &&encodedData=fl::vector_psram< u8 >()) FL_NOEXCEPT
Create channel transmission data (modern variant-based API)
ChipsetVariant mChipset
Chipset configuration (clockless or SPI)
ChannelData(const ChannelData &) FL_NOEXCEPT=delete
volatile bool mInUse
Engine is transmitting this data (prevents creator updates)
const fl::vector_psram< u8 > & getData() const FL_NOEXCEPT
Get the encoded transmission data.
bool isClockless() const FL_NOEXCEPT
Check if this is a clockless chipset.
fl::vector_psram< u8 > & getData() FL_NOEXCEPT
Get the encoded transmission data (mutable)
bool isSpi() const FL_NOEXCEPT
Check if this is an SPI chipset.
const ChipsetVariant & getChipset() const FL_NOEXCEPT
Get the chipset configuration variant.
fl::vector_psram< u8 > mEncodedData
Encoded transmission bytes (PSRAM)
size_t getMinimumSize() const FL_NOEXCEPT
Calculate the size needed for writeWithPadding() without allocating.
PaddingGenerator mPaddingGenerator
Optional padding generator for block-size alignment.
Transmission data for a single LED channel.
constexpr remove_reference< T >::type && move(T &&t) FL_NOEXCEPT
fl::function< void(fl::span< const u8 > src, fl::span< u8 > dst)> PaddingGenerator
Padding generator function type.
fl::variant< ClocklessChipset, SpiChipsetConfig > ChipsetVariant
shared_ptr< T > make_shared(Args &&... args) FL_NOEXCEPT
Base definition for an LED controller.
#define FASTLED_SHARED_PTR(type)
Runtime bit-period timing for a clockless chipset.
Clockless chipset configuration (single data pin)
SPI chipset configuration (data + clock pins)