10#ifndef M5_UNIT_INFRARED_IR_RMT_ITEMS_HPP
11#define M5_UNIT_INFRARED_IR_RMT_ITEMS_HPP
25inline gpio::m5_rmt_item_t
makeItem(uint16_t mark_us, uint16_t space_us)
27 gpio::m5_rmt_item_t item{};
28 item.duration0 = mark_us;
30 item.duration1 = space_us;
52inline bool matchDuration(uint16_t actual, uint16_t expected, uint16_t tolerance)
54 return (actual >= expected - tolerance) && (actual <= expected + tolerance);
68void encodePulseDistance(item_container_type& items, uint32_t data, uint8_t bits, uint16_t bit_mark, uint16_t one_space,
69 uint16_t zero_space,
bool lsb_first =
true);
84uint32_t decodePulseDistance(
const gpio::m5_rmt_item_t* items, uint32_t num, uint32_t& data, uint8_t bits,
85 uint16_t bit_mark, uint16_t one_space, uint16_t zero_space, uint16_t tolerance,
86 bool lsb_first =
true);
99void encodePulseWidth(item_container_type& items, uint32_t data, uint8_t bits, uint16_t one_mark, uint16_t zero_mark,
100 uint16_t bit_space,
bool lsb_first =
true);
115uint32_t decodePulseWidth(
const gpio::m5_rmt_item_t* items, uint32_t num, uint32_t& data, uint8_t bits,
116 uint16_t one_mark, uint16_t zero_mark, uint16_t bit_space, uint16_t tolerance,
117 bool lsb_first =
true);
132void encodeManchester(item_container_type& items, uint32_t data, uint8_t bits, uint16_t half_bit,
133 bool rc5_polarity =
true,
bool msb_first =
true);
149uint32_t decodeManchester(
const gpio::m5_rmt_item_t* items, uint32_t num, uint32_t& data, uint8_t bits,
150 uint16_t half_bit, uint16_t tolerance,
bool rc5_polarity =
true,
bool msb_first =
true);
IR protocol codec base class and types.
gpio::m5_rmt_item_t makeItem(uint16_t mark_us, uint16_t space_us)
Create an RMT item representing a mark (carrier burst) followed by a space (silence)
Definition ir_rmt_items.hpp:25
bool matchDuration(uint16_t actual, uint16_t expected, uint16_t tolerance)
Check if a duration matches an expected value within tolerance.
Definition ir_rmt_items.hpp:52
gpio::m5_rmt_item_t makeTerminator(uint16_t mark_us)
Create a terminator RMT item (mark only, no space)
Definition ir_rmt_items.hpp:40
Top level namespace of M5Stack.