197 {
199
200 for (int symbol_idx = 0; symbol_idx < 3; symbol_idx++) {
201 u8 lane_bytes[4] = {0, 0, 0, 0};
202
203 for (int byte_idx = 0; byte_idx < 4; byte_idx++) {
204 u8 input_byte = transposed[symbol_idx * 4 + byte_idx];
205
206 int pulse_bit_hi = 7 - (byte_idx * 2);
207 int pulse_bit_lo = pulse_bit_hi - 1;
208
209 for (int lane = 0; lane < 4; lane++) {
210 u8 pulse_hi = (input_byte >> (4 + lane)) & 1;
211 u8 pulse_lo = (input_byte >> lane) & 1;
212 lane_bytes[lane] |= (pulse_hi << pulse_bit_hi);
213 lane_bytes[lane] |= (pulse_lo << pulse_bit_lo);
214 }
215 }
216
217 for (int lane = 0; lane < 4; lane++) {
218 lane_waves[lane].
data[symbol_idx] = lane_bytes[lane];
219 }
220 }
221
222 for (int lane = 0; lane < 4; lane++) {
224 }
225}
FL_OPTIMIZE_FUNCTION FL_IRAM FASTLED_FORCE_INLINE void memcpy(void *FL_RESTRICT_PARAM dst, const void *FL_RESTRICT_PARAM src, size_t num_bytes)
ISR-optimized memcpy with alignment detection and switch dispatch.
Type-safe container for 3-byte wave pulse pattern (wave3 encoding)