MCPcopy Create free account
hub / github.com/FastLED/FastLED / wave8EncodeDualLane

Function wave8EncodeDualLane

src/platforms/esp/32/drivers/spi/wave8_encoder_spi.h:82–116  ·  view source on GitHub ↗

@brief Encode dual-lane LED data using wave8 + 2-lane transposition For ESP32 dual-SPI mode (2 parallel data lines). Each pair of LED bytes expands to 16 bytes (2 Wave8Byte structures transposed). @param lane0 LED byte data for lane 0 @param lane1 LED byte data for lane 1 @param output Output buffer for transposed wave8 data @param lut Wave8 expansion lookup table @return Number of bytes written

Source from the content-addressed store, hash-verified

80/// @param lut Wave8 expansion lookup table
81/// @return Number of bytes written to output (lane0.size() * 16)
82inline size_t wave8EncodeDualLane(
83 fl::span<const u8> lane0,
84 fl::span<const u8> lane1,
85 fl::span<u8> output,
86 const Wave8BitExpansionLut& lut) FL_NOEXCEPT {
87
88 if (lane0.size() != lane1.size()) {
89 FL_WARN("wave8EncodeDualLane: Lane sizes mismatch (lane0="
90 << lane0.size() << " bytes, lane1=" << lane1.size() << " bytes)");
91 return 0;
92 }
93
94 const size_t required_size = lane0.size() * 16;
95 if (output.size() < required_size) {
96 FL_WARN("wave8EncodeDualLane: Output buffer too small (need "
97 << required_size << " bytes, have " << output.size() << " bytes)");
98 return 0;
99 }
100
101 size_t output_idx = 0;
102 for (size_t i = 0; i < lane0.size(); i++) {
103 Wave8Byte wave8_lane0, wave8_lane1;
104 detail::wave8_convert_byte_to_wave8byte(lane0[i], lut, &wave8_lane0);
105 detail::wave8_convert_byte_to_wave8byte(lane1[i], lut, &wave8_lane1);
106
107 Wave8Byte lane_array[2] = {wave8_lane0, wave8_lane1};
108 u8 transposed[2 * sizeof(Wave8Byte)];
109 detail::wave8_transpose_2(lane_array, transposed);
110
111 fl::memcpy(output.data() + output_idx, transposed, sizeof(transposed));
112 output_idx += sizeof(transposed);
113 }
114
115 return output_idx;
116}
117
118/// @brief Encode quad-lane LED data using wave8 + 4-lane transposition
119///

Callers 1

FL_TEST_FILEFunction · 0.85

Calls 5

wave8_transpose_2Function · 0.85
memcpyFunction · 0.50
sizeMethod · 0.45
dataMethod · 0.45

Tested by

no test coverage detected