89 const u32 period_ns = timing.total_period_ns();
91 return static_cast<u32
>(
99 const u32 period_ns = timing.total_period_ns();
100 if (period_ns == 0)
return 0;
101 return static_cast<u32
>(5000000000ULL / period_ns);
167 return lut.lut[two_bits & 0x03];
188 static constexpr u8 kWs2812Lut[4] = {0xEF, 0x8F, 0xEC, 0x8C};
189 return kWs2812Lut[two_bits & 0x03];
217 size_t output_capacity,
232 return input_size * 4;
240 return num_leds * 3 * 4;
Runtime chipset timing configuration for clockless LED drivers.
#define FL_OPTIMIZATION_LEVEL_O3_BEGIN
#define FASTLED_FORCE_INLINE
#define FL_OPTIMIZATION_LEVEL_O3_END
#define FL_OPTIMIZE_FUNCTION
ISR-safe memory operations (inline, header-only)
FASTLED_FORCE_INLINE FL_IRAM FL_OPTIMIZE_FUNCTION void encodeUartByte(u8 led_byte, u8 *output, const Wave10Lut &lut) FL_NO_EXCEPT
Encode 1 LED byte to 4 UART bytes using a Wave10 LUT.
FASTLED_FORCE_INLINE FL_IRAM FL_OPTIMIZE_FUNCTION u8 encodeUart2Bits(u8 two_bits, const Wave10Lut &lut) FL_NO_EXCEPT
Encode 2 LED bits to 1 UART byte using a Wave10 LUT.
bool canRepresentTiming(const ChipsetTimingConfig &timing) FL_NO_EXCEPT
Check if a chipset timing can be accurately represented by UART.
FL_IRAM FL_OPTIMIZE_FUNCTION size_t encodeLedsToUart(const u8 *input, size_t input_size, u8 *output, size_t output_capacity, const Wave10Lut &lut) FL_NO_EXCEPT
Encode LED pixel data to UART bytes using a Wave10 LUT.
constexpr u32 kMaxUartBaudRate
Maximum UART baud rate supported by ESP32 variants.
Wave10Lut buildWave10LutForMaxBaud(const ChipsetTimingConfig &timing, u32 max_baud_rate) FL_NO_EXCEPT
Build a UART waveform LUT with a backend-specific baud ceiling.
Wave10Lut buildWave10Lut(const ChipsetTimingConfig &timing) FL_NO_EXCEPT
Build a Wave10 LUT from chipset timing parameters.
FASTLED_FORCE_INLINE constexpr size_t calculateUartBufferSizeForLeds(size_t num_leds) FL_NO_EXCEPT
Calculate required output buffer size for RGB LED encoding.
InputGamut g FL_NO_EXCEPT
ChipsetTiming uartWireTiming(const ChipsetTimingConfig &timing, u32 max_baud_rate) FL_NO_EXCEPT
The wire timing the UART encoder actually produces for a chipset.
FASTLED_FORCE_INLINE constexpr size_t calculateUartBufferSize(size_t input_size) FL_NO_EXCEPT
Calculate required output buffer size for LED encoding.
bool canRepresentTimingForMaxBaud(const ChipsetTimingConfig &timing, u32 max_baud_rate) FL_NO_EXCEPT
Timing feasibility with a backend-specific baud ceiling.
Base definition for an LED controller.
Runtime bit-period timing for a clockless chipset.
u32 baudRate(const ChipsetTimingConfig &timing) const FL_NO_EXCEPT
Baud rate this LUT's geometry requires for the timing (baud = P / bit_period; one UART bit per pulse)...
static u32 computeBaudRate(const ChipsetTimingConfig &timing) FL_NO_EXCEPT
Legacy fixed-wave10 baud computation (P = 5)
u8 lut[4]
2-bit input -> UART data byte
u8 dataBits() const FL_NO_EXCEPT
UART word length for this geometry (2P - 2 data bits)
u8 pulses_per_bit
Frame geometry: 5 (wave10) or 4 (wave8-frame); 0 = infeasible.
Wave lookup table for UART LED encoding (waveN family)