10#ifndef M5_UNIT_INFRARED_IR_CODEC_HPP
11#define M5_UNIT_INFRARED_IR_CODEC_HPP
13#include <M5UnitComponent.hpp>
134 virtual bool decode(
const m5::unit::gpio::m5_rmt_item_t* items, uint32_t num,
DecodeResult& result) = 0;
Abstract base class for IR protocol encoding/decoding.
Definition ir_codec.hpp:62
virtual float carrierDuty() const
Carrier duty cycle (0.0 - 1.0)
Definition ir_codec.hpp:99
virtual uint8_t minFrames() const
Number of frames that should be transmitted per keypress for this protocol.
Definition ir_codec.hpp:109
virtual item_container_type encode(uint16_t address, uint16_t command, bool repeat=false)=0
Encode IR command into RMT items.
virtual bool decode(const m5::unit::gpio::m5_rmt_item_t *items, uint32_t num, DecodeResult &result)=0
Try to decode RMT items into an IR command.
virtual uint32_t carrierFrequencyHz() const =0
Carrier frequency for this protocol in Hz.
virtual uint16_t frameGapUs() const
Inter-frame gap (microseconds) when transmitting multiple frames in one burst.
Definition ir_codec.hpp:119
CodecType type() const
Get codec type for safe downcasting.
Definition ir_codec.hpp:73
std::vector< m5::unit::gpio::m5_rmt_item_t > item_container_type
RMT item container.
Definition ir_codec.hpp:54
CodecType
Identifies the IR protocol codec implementation.
Definition ir_codec.hpp:27
@ SIRC
Sony SIRC (12/15/20-bit)
@ Mitsubishi
Mitsubishi (16-bit, no leader, sent twice)
@ Panasonic
Panasonic / Kaseikyo (48-bit, customer code + data)
@ Raw
Raw mark/space (no protocol)
@ Unknown
Unknown protocol.
@ Custom
User-defined custom protocol.
Top level namespace of M5Stack.
Result of decoding a received IR frame.
Definition ir_codec.hpp:44
uint64_t raw
Raw encoded value (protocol-specific, up to 64 bits)
Definition ir_codec.hpp:48
uint8_t bits
Total bit count (NEC=32, SIRC=12/15/20, RC5=14, RC6=21)
Definition ir_codec.hpp:49
uint16_t command
Command code.
Definition ir_codec.hpp:47
uint16_t address
Device address.
Definition ir_codec.hpp:46
CodecType protocol
Detected protocol.
Definition ir_codec.hpp:45
bool toggle
Toggle bit (RC5/RC6 only)
Definition ir_codec.hpp:51
bool repeat
True if repeat frame (NEC repeat code / re-sent frame)
Definition ir_codec.hpp:50