7static const char *
const TAG =
"remote.haier";
9constexpr uint32_t HEADER_LOW_US = 3100;
10constexpr uint32_t HEADER_HIGH_US = 4400;
12constexpr uint32_t BIT_ONE_SPACE_US = 1650;
13constexpr uint32_t BIT_ZERO_SPACE_US = 580;
19 for (uint8_t mask = 1 << 7; mask != 0; mask >>= 1) {
21 dst->
space(BIT_ONE_SPACE_US);
23 dst->
space(BIT_ZERO_SPACE_US);
25 dst->
mark(BIT_MARK_US);
31 dst->
reserve(5 + ((data.data.size() + 1) * 2));
32 dst->
mark(HEADER_LOW_US);
33 dst->
space(HEADER_LOW_US);
34 dst->
mark(HEADER_LOW_US);
35 dst->
space(HEADER_HIGH_US);
36 dst->
mark(BIT_MARK_US);
38 for (uint8_t item : data.data) {
60 for (uint8_t mask = 0x80; mask != 0; mask >>= 1) {
73 out.
data.push_back(data);
83 ESP_LOGI(TAG,
"Received Haier: %s",
format_hex_pretty_to(hex_buf, data.data.data(), data.data.size()));
void encode_byte_(RemoteTransmitData *dst, uint8_t item)
void encode(RemoteTransmitData *dst, const HaierData &data) override
void dump(const HaierData &data) override
optional< HaierData > decode(RemoteReceiveData src) override
uint32_t get_index() const
bool expect_item(uint32_t mark, uint32_t space)
bool expect_space(uint32_t length)
bool expect_mark(uint32_t length)
void space(uint32_t length)
void set_carrier_frequency(uint32_t carrier_frequency)
void mark(uint32_t length)
void reserve(uint32_t len)
constexpr unsigned int HAIER_IR_PACKET_BIT_SIZE
constexpr size_t HAIER_MAX_DATA_BYTES
char * format_hex_pretty_to(char *buffer, size_t buffer_size, const uint8_t *data, size_t length, char separator)
Format byte array as uppercase hex to buffer (base implementation).
constexpr size_t format_hex_pretty_size(size_t byte_count)
Calculate buffer size needed for format_hex_pretty_to with separator: "XX:XX:...:XX\0".
std::vector< uint8_t > data