260 {
262
263 for (int symbol_idx = 0; symbol_idx < 3; symbol_idx++) {
264 u8 lane_bytes[16] = {0};
265
266 for (int pulse_idx = 0; pulse_idx < 8; pulse_idx++) {
267 int pulse_bit = 7 - pulse_idx;
268 int input_offset = symbol_idx * 16 + pulse_idx * 2;
269 u16 input_word = (u16)transposed[input_offset] |
270 ((u16)transposed[input_offset + 1] << 8);
271
272 for (int lane = 0; lane < 16; lane++) {
273 u8 pulse = (input_word >> lane) & 1;
274 lane_bytes[lane] |= (pulse << pulse_bit);
275 }
276 }
277
278 for (int lane = 0; lane < 16; lane++) {
279 lane_waves[lane].
data[symbol_idx] = lane_bytes[lane];
280 }
281 }
282
283 for (int lane = 0; lane < 16; lane++) {
285 }
286}
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)