|
FastLED 3.10.6
|
Out-of-line declarations for wave8 transposition internals.
Split from the former detail/wave8.hpp force-inline header. Callers now include this .h and link against detail/wave8.cpp.hpp. Constexpr LUTs and the FL_WAVE8_SPREAD_TO_16 macro stay in this .h because they need to be visible at compile time; every function definition moves to the .cpp.hpp for one-per-program-image emit rather than per-TU inlining.
Definition in file wave8.h.
Include dependency graph for wave8.h:
This graph shows which files directly or indirectly include this file:Go to the source code of this file.
Namespaces | |
| namespace | fl |
| Base definition for an LED controller. | |
| namespace | fl::detail |
Compile-time linker keep-alive hook for a single fl::Bus. | |
Macros | |
| #define | FL_WAVE8_SPREAD_TO_16(lane_u8_0, lane_u8_1, out_16) |
Functions | |
| FL_IRAM FL_OPTIMIZE_FUNCTION void | fl::wave8 (u8 lane, const Wave8BitExpansionLut &lut, u8(&FL_RESTRICT_PARAM output)[sizeof(Wave8Byte)]) FL_NO_EXCEPT |
| Public single-lane wave8 encoder. | |
| FL_IRAM FL_OPTIMIZE_FUNCTION void | fl::detail::wave8_convert_byte_to_wave8byte (u8 byte_value, const Wave8BitExpansionLut &lut, Wave8Byte *output) FL_NO_EXCEPT |
| FL_IRAM FL_OPTIMIZE_FUNCTION void | fl::detail::wave8_expand_byte (u8 byte_value, const Wave8ByteExpansionLut &lut, Wave8Byte *output) FL_NO_EXCEPT |
| FL_IRAM FL_OPTIMIZE_FUNCTION void | fl::detail::wave8_transpose_16 (const Wave8Byte lane_waves[16], u8 output[16 *sizeof(Wave8Byte)]) FL_NO_EXCEPT |
| FL_IRAM FL_OPTIMIZE_FUNCTION void | fl::detail::wave8_transpose_16_bf1 (const u8 lanes[16], u8 W0, u8 W1, u8 output[16 *sizeof(Wave8Byte)]) FL_NO_EXCEPT |
| FL_IRAM FL_OPTIMIZE_FUNCTION void | fl::detail::wave8_transpose_16x2_pipe2 (const Wave8Byte lane_waves_a[16], const Wave8Byte lane_waves_b[16], u8 output_a[16 *sizeof(Wave8Byte)], u8 output_b[16 *sizeof(Wave8Byte)]) FL_NO_EXCEPT |
| FL_IRAM FL_OPTIMIZE_FUNCTION void | fl::detail::wave8_transpose_16x4_bf1_pipe4 (const u8 lanes_a[16], const u8 lanes_b[16], const u8 lanes_c[16], const u8 lanes_d[16], u8 W0, u8 W1, u8 output_a[16 *sizeof(Wave8Byte)], u8 output_b[16 *sizeof(Wave8Byte)], u8 output_c[16 *sizeof(Wave8Byte)], u8 output_d[16 *sizeof(Wave8Byte)]) FL_NO_EXCEPT |
| FL_IRAM FL_OPTIMIZE_FUNCTION void | fl::detail::wave8_transpose_16x4_pipe4 (const Wave8Byte lane_waves_a[16], const Wave8Byte lane_waves_b[16], const Wave8Byte lane_waves_c[16], const Wave8Byte lane_waves_d[16], u8 output_a[16 *sizeof(Wave8Byte)], u8 output_b[16 *sizeof(Wave8Byte)], u8 output_c[16 *sizeof(Wave8Byte)], u8 output_d[16 *sizeof(Wave8Byte)]) FL_NO_EXCEPT |
| FL_IRAM FL_OPTIMIZE_FUNCTION void | fl::detail::wave8_transpose_2 (const Wave8Byte lane_waves[2], u8 output[2 *sizeof(Wave8Byte)]) FL_NO_EXCEPT |
| FL_IRAM FL_OPTIMIZE_FUNCTION void | fl::detail::wave8_transpose_2_bf1 (const u8 lanes[2], u8 W0, u8 W1, u8 output[2 *sizeof(Wave8Byte)]) FL_NO_EXCEPT |
| FL_IRAM FL_OPTIMIZE_FUNCTION void | fl::detail::wave8_transpose_4 (const Wave8Byte lane_waves[4], u8 output[4 *sizeof(Wave8Byte)]) FL_NO_EXCEPT |
| FL_IRAM FL_OPTIMIZE_FUNCTION void | fl::detail::wave8_transpose_4_bf1 (const u8 lanes[4], u8 W0, u8 W1, u8 output[4 *sizeof(Wave8Byte)]) FL_NO_EXCEPT |
| FL_IRAM FL_OPTIMIZE_FUNCTION void | fl::detail::wave8_transpose_8 (const Wave8Byte lane_waves[8], u8 output[8 *sizeof(Wave8Byte)]) FL_NO_EXCEPT |
| FL_IRAM FL_OPTIMIZE_FUNCTION void | fl::detail::wave8_transpose_8_bf1 (const u8 lanes[8], u8 W0, u8 W1, u8 output[8 *sizeof(Wave8Byte)]) FL_NO_EXCEPT |
Variables | |
| constexpr u8 | fl::detail::kTranspose2_4_LUT [4] |
| 4-lane LUT: Spreads 2 bits into 4-lane interleaved positions (2-bit → byte). | |
| constexpr u8 | fl::detail::kTranspose4_16_LUT [16] |
| 2-lane LUT: Spreads 4 bits into 2-lane interleaved positions (nibble → byte). | |