18 payload = data.rc_code_1 << 20;
19 payload |= data.rc_code_2 << 16;
20 payload |= data.command << 8;
21 payload |= ((payload & 0xFF0000) >> 16) ^ ((payload & 0x00FF00) >> 8);
25 dst->
item(PREAMBLE_HIGH_US, PREAMBLE_LOW_US);
27 for (
uint32_t mask = 1UL << 14; mask; mask >>= 1) {
28 if (TOTO_HEADER & mask) {
29 dst->
item(BIT_HIGH_US, BIT_ONE_LOW_US);
31 dst->
item(BIT_HIGH_US, BIT_ZERO_LOW_US);
35 for (
uint32_t mask = 1UL << 23; mask; mask >>= 1) {
37 dst->
item(BIT_HIGH_US, BIT_ONE_LOW_US);
39 dst->
item(BIT_HIGH_US, BIT_ZERO_LOW_US);
43 dst->
mark(BIT_HIGH_US);
55 if (!
src.expect_item(PREAMBLE_HIGH_US, PREAMBLE_LOW_US)) {
59 for (
uint32_t mask = 1UL << 14; mask; mask >>= 1) {
60 if (
src.expect_item(BIT_HIGH_US, BIT_ONE_LOW_US)) {
62 }
else if (
src.expect_item(BIT_HIGH_US, BIT_ZERO_LOW_US)) {
69 if (header != TOTO_HEADER) {
73 for (
uint32_t mask = 1UL << 23; mask; mask >>= 1) {
74 if (
src.expect_item(BIT_HIGH_US, BIT_ONE_LOW_US)) {
76 }
else if (
src.expect_item(BIT_HIGH_US, BIT_ZERO_LOW_US)) {
83 if ((((payload & 0xFF0000) >> 16) ^ ((payload & 0x00FF00) >> 8)) != (payload & 0x0000FF)) {
87 data.rc_code_1 = (payload & 0xF00000) >> 20;
88 data.rc_code_2 = (payload & 0x0F0000) >> 16;
89 data.command = (payload & 0x00FF00) >> 8;