@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
| 80 | /// @param lut Wave8 expansion lookup table |
| 81 | /// @return Number of bytes written to output (lane0.size() * 16) |
| 82 | inline 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 | /// |
no test coverage detected