8static const char *
const TAG =
"remote.mirage";
10constexpr uint32_t HEADER_MARK_US = 8360;
11constexpr uint32_t HEADER_SPACE_US = 4248;
13constexpr uint32_t BIT_ONE_SPACE_US = 1592;
14constexpr uint32_t BIT_ZERO_SPACE_US = 545;
25 dst->
mark(HEADER_MARK_US);
26 dst->
space(HEADER_SPACE_US);
27 dst->
mark(BIT_MARK_US);
29 for (uint8_t item : data.
data) {
31 checksum += (item >> 4) + (item & 0xF);
37 for (uint8_t b = 0; b < 8; b++) {
38 if (item & (1UL << b)) {
39 dst->
space(BIT_ONE_SPACE_US);
41 dst->
space(BIT_ZERO_SPACE_US);
43 dst->
mark(BIT_MARK_US);
48 if (!src.
expect_item(HEADER_MARK_US, HEADER_SPACE_US)) {
62 for (uint8_t b = 0; b < 8; b++) {
74 checksum += (data >> 4) + (data & 0xF);
75 out.
data.push_back(data);
void encode_byte_(RemoteTransmitData *dst, uint8_t item)
void dump(const MirageData &data) override
void encode(RemoteTransmitData *dst, const MirageData &data) override
optional< MirageData > 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 MIRAGE_IR_PACKET_BIT_SIZE
constexpr size_t MIRAGE_MAX_DATA_BYTES
Providing packet encoding functions for exchanging data with a remote host.
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