12constexpr uint32_t HEADER_MARK_US = 8360;
13constexpr uint32_t HEADER_SPACE_US = 4248;
15constexpr uint32_t BIT_ONE_SPACE_US = 1592;
16constexpr uint32_t BIT_ZERO_SPACE_US = 545;
31 dst->
mark(HEADER_MARK_US);
32 dst->
space(HEADER_SPACE_US);
33 dst->
mark(BIT_MARK_US);
35 for (
size_t i = 0; i <
len; i++) {
38 checksum += (item >> 4) + (item & 0xF);
44 for (uint8_t b = 0; b < 8; b++) {
45 if (item & (1UL << b)) {
46 dst->
space(BIT_ONE_SPACE_US);
48 dst->
space(BIT_ZERO_SPACE_US);
50 dst->
mark(BIT_MARK_US);
55 if (!
src.expect_item(HEADER_MARK_US, HEADER_SPACE_US)) {
58 if (!
src.expect_mark(BIT_MARK_US)) {
61 size_t size =
src.size() -
src.get_index() - 1;
69 for (uint8_t b = 0; b < 8; b++) {
70 if (
src.expect_space(BIT_ONE_SPACE_US)) {
72 }
else if (!
src.expect_space(BIT_ZERO_SPACE_US)) {
75 if (!
src.expect_mark(BIT_MARK_US)) {
81 checksum += (data >> 4) + (data & 0xF);
82 out.data.push_back(data);
92 ESP_LOGI(TAG,
"Received Mirage: %s",
format_hex_pretty_to(hex_buf, data.data.data(), data.data.size()));
optional< MirageData > decode(RemoteReceiveData src)
void encode_byte_(RemoteTransmitData *dst, uint8_t item)
void dump(const MirageData &data)
void encode(RemoteTransmitData *dst, const MirageData &data)
void space(uint32_t length)
void set_carrier_frequency(uint32_t carrier_frequency)
void mark(uint32_t length)
void reserve(uint32_t len)
std::vector< uint8_t > & out
constexpr unsigned int MIRAGE_IR_PACKET_BIT_SIZE
ESPHOME_LOG_TAG(TAG, "remote.abbwelcome")
constexpr size_t MIRAGE_MAX_DATA_BYTES
void progmem_memcpy(void *dst, const void *src, size_t len)
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".
uint8_t progmem_read_byte(const uint8_t *addr)