M5Unit-INFRARED 0.2.0 git rev:76ad9e1
Loading...
Searching...
No Matches
m5::unit::ir::RawCodec Class Reference

Raw mark/space pass-through codec. More...

#include <raw_codec.hpp>

Inheritance diagram for m5::unit::ir::RawCodec:
m5::unit::ir::IRCodec

Public Member Functions

 RawCodec (uint32_t carrier_hz=38000)
 Constructor.
 
item_container_type encode (uint16_t, uint16_t, bool) override
 encode() is not meaningful for Raw; returns empty
 
bool decode (const gpio::m5_rmt_item_t *items, uint32_t num, DecodeResult &result) override
 decode() stores raw item count in bits and tags protocol as Raw
 
uint32_t carrierFrequencyHz () const override
 Carrier frequency configured at construction.
 
item_container_type encodeRaw (const uint16_t *mark_space_us, uint32_t count)
 Encode raw mark/space pairs into RMT items.
 
- Public Member Functions inherited from m5::unit::ir::IRCodec
 IRCodec (CodecType t)
 
CodecType type () const
 Get codec type for safe downcasting.
 
virtual float carrierDuty () const
 Carrier duty cycle (0.0 - 1.0)
 
virtual uint8_t minFrames () const
 Number of frames that should be transmitted per keypress for this protocol.
 
virtual uint16_t frameGapUs () const
 Inter-frame gap (microseconds) when transmitting multiple frames in one burst.
 
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.
 

Detailed Description

Raw mark/space pass-through codec.

Encodes/decodes raw mark/space timing pairs without protocol interpretation. Use for unknown protocols or direct RMT item manipulation.

Constructor & Destructor Documentation

◆ RawCodec()

m5::unit::ir::RawCodec::RawCodec ( uint32_t carrier_hz = 38000)
inlineexplicit

Constructor.

Parameters
carrier_hzCarrier frequency in Hz for transmission (default 38 kHz)

Member Function Documentation

◆ carrierFrequencyHz()

uint32_t m5::unit::ir::RawCodec::carrierFrequencyHz ( ) const
inlineoverridevirtual

Carrier frequency configured at construction.

Returns
Frequency in Hz

Implements m5::unit::ir::IRCodec.

◆ decode()

bool m5::unit::ir::RawCodec::decode ( const gpio::m5_rmt_item_t * items,
uint32_t num,
DecodeResult & result )
inlineoverride

decode() stores raw item count in bits and tags protocol as Raw

Parameters
itemsRMT items from receiver
numNumber of items
[out]resultPopulated with CodecType::Raw and bits = min(num, 255) on success
Returns
True when items is non-null and num > 0; false otherwise

◆ encode()

item_container_type m5::unit::ir::RawCodec::encode ( uint16_t ,
uint16_t ,
bool  )
inlineoverridevirtual

encode() is not meaningful for Raw; returns empty

Implements m5::unit::ir::IRCodec.

◆ encodeRaw()

item_container_type m5::unit::ir::RawCodec::encodeRaw ( const uint16_t * mark_space_us,
uint32_t count )
inline

Encode raw mark/space pairs into RMT items.

Parameters
mark_space_usArray of alternating mark/space durations (microseconds)
countNumber of entries. Pairs (count/2) become full (mark, space) items; an odd trailing entry is emitted as a terminator (mark, 0).
Returns
Packed RMT items