| 21 | // ============================================================================ |
| 22 | |
| 23 | FL_OPTIMIZE_FUNCTION FL_IRAM |
| 24 | void wave8Transpose_2(const u8 (&FL_RESTRICT_PARAM lanes)[2], |
| 25 | const Wave8BitExpansionLut &lut, |
| 26 | u8 (&FL_RESTRICT_PARAM output)[2 * sizeof(Wave8Byte)]) { |
| 27 | // Allocate waveform buffers on stack (16 Wave8Bit total: 8 packed bytes per lane × 2 lanes) |
| 28 | // Each Wave8Byte is 8 bytes (8 Wave8Bit × 1 byte each) |
| 29 | // Layout: [Lane0_bit7, Lane0_bit6, ..., Lane0_bit0, Lane1_bit7, Lane1_bit6, ..., Lane1_bit0] |
| 30 | Wave8Byte laneWaveformSymbols[2]; |
| 31 | |
| 32 | // Convert each lane byte to wave pulse symbols (8 packed bytes each) |
| 33 | detail::wave8_convert_byte_to_wave8byte(lanes[0], lut, &laneWaveformSymbols[0]); |
| 34 | detail::wave8_convert_byte_to_wave8byte(lanes[1], lut, &laneWaveformSymbols[1]); |
| 35 | |
| 36 | // Transpose waveforms to DMA format (interleave 8 packed bytes to 16 bytes) |
| 37 | detail::wave8_transpose_2(laneWaveformSymbols, output); |
| 38 | } |
| 39 | |
| 40 | FL_OPTIMIZE_FUNCTION FL_IRAM |
| 41 | void wave8Transpose_4(const u8 (&FL_RESTRICT_PARAM lanes)[4], |
no test coverage detected