10#ifndef M5_UNIT_INFRARED_UNIT_IR_HPP
11#define M5_UNIT_INFRARED_UNIT_IR_HPP
13#include <M5UnitComponent.hpp>
81class UnitIR :
public Component {
82 M5_UNIT_COMPONENT_HPP_BUILDER(
UnitIR, 0x00);
139 bool begin()
override;
144 void update(
const bool force =
false)
override;
168 _codec = &_default_codec;
176 return _default_codec;
195 bool send(uint16_t address, uint16_t command, uint8_t frames = 0);
204 bool sendRaw(
const gpio::m5_rmt_item_t* items, uint32_t num);
215 return _rx_available ? 1 : 0;
223 return !_rx_available;
231 return _latest_result;
249 return _raw_item_count;
275 bool apply_carrier();
278 ir::IRCodec* _codec{&_default_codec};
280 ir::DecodeResult _latest_result{};
281 const gpio::m5_rmt_item_t* _raw_items{};
282 uint32_t _raw_item_count{};
283 bool _rx_available{};
289 void operator()(uint8_t* p)
const
294 std::unique_ptr<uint8_t[], FreeDeleter> _rx_buffer{};
295 size_t _rx_buffer_size{};
Auto-detecting multi-protocol IR codec.
uint32_t rawItemCount() const
Number of raw RMT items from last reception.
Definition unit_IR.hpp:247
void update(const bool force=false) override
Poll the RX ringbuffer and decode incoming frames.
Definition unit_IR.cpp:133
ir::IRCodec & codec()
Get current codec.
Definition unit_IR.hpp:152
void resetCodec()
Reset to built-in AutoDetectCodec.
Definition unit_IR.hpp:166
bool begin() override
Initialize the RMT channels (TX and/or RX) based on the adapter pins.
Definition unit_IR.cpp:34
bool hasTX() const
True if TX pin is configured and RMT TX channel initialized.
Definition unit_IR.hpp:259
void flush()
Clear received data (both DecodeResult and raw items)
Definition unit_IR.cpp:209
const ir::DecodeResult & latest() const
Get latest decoded result.
Definition unit_IR.hpp:229
void config(const config_t &cfg)
Set the config values.
Definition unit_IR.hpp:128
size_t available() const
Number of decoded messages available since last update.
Definition unit_IR.hpp:213
bool sendRaw(const gpio::m5_rmt_item_t *items, uint32_t num)
Send raw RMT items directly.
Definition unit_IR.cpp:191
bool hasRX() const
True if RX pin is configured and RMT RX channel initialized.
Definition unit_IR.hpp:267
config_t config() const
Gets the config values.
Definition unit_IR.hpp:120
UnitIR()
Constructor.
Definition unit_IR.hpp:112
ir::AutoDetectCodec & defaultCodec()
Get built-in AutoDetectCodec (for accessing individual protocol codecs)
Definition unit_IR.hpp:174
bool send(uint16_t address, uint16_t command, uint8_t frames=0)
Send IR command using current codec.
Definition unit_IR.cpp:151
const gpio::m5_rmt_item_t * rawItems() const
Get raw RMT items from last reception.
Definition unit_IR.hpp:239
void setCodec(ir::IRCodec &codec)
Set protocol codec.
Definition unit_IR.hpp:161
bool empty() const
True if no decoded messages.
Definition unit_IR.hpp:221
Auto-detecting multi-protocol IR decoder.
Definition auto_detect_codec.hpp:40
Abstract base class for IR protocol encoding/decoding.
Definition ir_codec.hpp:62
Top level namespace of M5Stack.
Settings for begin.
Definition unit_IR.hpp:89
uint16_t rx_filter_threshold
Definition unit_IR.hpp:100
uint32_t tick_ns
RMT tick resolution in nanoseconds (default: 1000 = 1us)
Definition unit_IR.hpp:91
uint16_t rx_idle_threshold
Definition unit_IR.hpp:97
uint16_t rx_ring_buffer_size
RX ring buffer size in bytes.
Definition unit_IR.hpp:93
uint8_t rx_min_item_count
Definition unit_IR.hpp:104
bool rx_invert_level
Definition unit_IR.hpp:108
Result of decoding a received IR frame.
Definition ir_codec.hpp:44