FastLED 3.9.15
Loading...
Searching...
No Matches

◆ wave8()

void fl::wave8 ( u8 lane,
const Wave8BitExpansionLut & lut,
u8(&) output[sizeof(Wave8Byte)] )

Convert byte to 8 Wave8Bit structures using nibble LUT.

Note
Inline implementation for ISR performance (always_inline requires visible body)

Definition at line 514 of file wave8.hpp.

516 {
517 // Convert single lane byte to wave pulse symbols (8 bytes packed)
518 // Use properly aligned local variable to avoid alignment issues
519 Wave8Byte waveformSymbol;
520 detail::wave8_convert_byte_to_wave8byte(lane, lut, &waveformSymbol);
521
522 // ISR-optimized 32-bit copy: Copy 8 bytes as 2 x uint32_t words
523 // Wave8Byte is 8-byte aligned (FL_ALIGNAS(8)), guaranteeing 4-byte alignment
525 fl::bit_cast_ptr<const u32>(&waveformSymbol.symbols[0].data),
526 2); // 8 bytes = 2 x uint32_t
527}
FASTLED_FORCE_INLINE FL_IRAM FL_OPTIMIZE_FUNCTION void wave8_convert_byte_to_wave8byte(u8 byte_value, const Wave8BitExpansionLut &lut, Wave8Byte *output)
Helper: Convert byte to Wave8Byte using nibble LUT (internal use only)
Definition wave8.hpp:47
FL_OPTIMIZE_FUNCTION FL_IRAM FASTLED_FORCE_INLINE void memcpy_32(u32 *FL_RESTRICT_PARAM dst, const u32 *FL_RESTRICT_PARAM src, size_t count)
ISR-optimized 32-bit block copy for 4-byte aligned memory.
Definition memcpy.h:32
To * bit_cast_ptr(void *storage) FL_NOEXCEPT
Definition bit_cast.h:60

References bit_cast_ptr(), FL_RESTRICT_PARAM, fl::isr::memcpy_32(), and fl::detail::wave8_convert_byte_to_wave8byte().

+ Here is the call graph for this function: