30 ESP_LOGD(TAG,
"Sending Symphony: data=0x%0*" PRIX32
" nbits=%" PRIu8
" repeats=%" PRIu8, (data.nbits + 3) / 4,
31 (
uint32_t) data.data, data.nbits, data.repeats);
34 dst->
reserve(data.nbits * 2u * data.repeats);
36 for (uint8_t repeats = 0; repeats < data.repeats; repeats++) {
38 for (
uint32_t mask = 1UL << (data.nbits - 1); mask != 0; mask >>= 1) {
39 const bool is_last_bit = (mask == 1);
40 const bool is_last_frame = (repeats == (data.repeats - 1));
43 if (data.data & mask) {
44 dst->
mark(BIT_ONE_HIGH_US);
46 dst->
mark(BIT_ZERO_HIGH_US);
48 dst->
space(is_last_frame ? FOOTER_GAP_US : INTER_FRAME_GAP_US);
50 if (data.data & mask) {
51 dst->
item(BIT_ONE_HIGH_US, BIT_ONE_LOW_US);
53 dst->
item(BIT_ZERO_HIGH_US, BIT_ZERO_LOW_US);