168 {
170
171 for (int symbol_idx = 0; symbol_idx < 3; symbol_idx++) {
172 u16 interleaved = ((u16)transposed[symbol_idx * 2] << 8) |
173 transposed[symbol_idx * 2 + 1];
174
177
178 for (int bit = 0; bit < 8; bit++) {
179 if (interleaved & (1 << (bit * 2 + 1))) {
180 lane0_bits |= (1 << bit);
181 }
182 if (interleaved & (1 << (bit * 2))) {
183 lane1_bits |= (1 << bit);
184 }
185 }
186
187 lane_waves[0].
data[symbol_idx] = lane0_bits;
188 lane_waves[1].
data[symbol_idx] = lane1_bits;
189 }
190
193}
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)