8static constexpr uint32_t HEADER_HIGH_US = 8000;
9static constexpr uint32_t HEADER_LOW_US = 4000;
10static constexpr uint32_t BIT_HIGH_US = 600;
11static constexpr uint32_t BIT_ONE_LOW_US = 1600;
12static constexpr uint32_t BIT_ZERO_LOW_US = 550;
16 dst->
reserve(2 + data.nbits * 2u);
18 dst->
item(HEADER_HIGH_US, HEADER_LOW_US);
20 for (
uint32_t mask = 1UL << (data.nbits - 1); mask != 0; mask >>= 1) {
21 if (data.data & mask) {
22 dst->
item(BIT_HIGH_US, BIT_ONE_LOW_US);
24 dst->
item(BIT_HIGH_US, BIT_ZERO_LOW_US);
28 dst->
mark(BIT_HIGH_US);
35 if (!
src.expect_item(HEADER_HIGH_US, HEADER_LOW_US))
38 for (
out.nbits = 0;
out.nbits < 32;
out.nbits++) {
39 if (
src.expect_item(BIT_HIGH_US, BIT_ONE_LOW_US)) {
40 out.data = (
out.data << 1) | 1;
41 }
else if (
src.expect_item(BIT_HIGH_US, BIT_ZERO_LOW_US)) {
42 out.data = (
out.data << 1) | 0;
43 }
else if (
out.nbits == 28) {
53 ESP_LOGI(TAG,
"Received LG: data=0x%08" PRIX32
", nbits=%d", data.data, data.nbits);
void encode(RemoteTransmitData *dst, const LGData &data)
optional< LGData > decode(RemoteReceiveData src)
void dump(const LGData &data)
void set_carrier_frequency(uint32_t carrier_frequency)
void mark(uint32_t length)
void item(uint32_t mark, uint32_t space)
void reserve(uint32_t len)
std::vector< uint8_t > & out
ESPHOME_LOG_TAG(TAG, "remote.abbwelcome")