|
Arduino PulseWire Transceiver Library
|
Pulse-distance encoding/decoding utility class for IR communication. More...
#include <PulseDistanceCodec.h>


Public Member Functions | |
| PulseDistanceCodec (Preamble &detector, uint32_t toleranceUs=0, uint32_t shortPulseUs=0, uint32_t longPulseUs=0) | |
| void | init (Preamble &detector, uint32_t shortPulseUs=0, uint32_t longPulseUs=0, uint32_t toleranceUs=0) |
| bool | begin (uint16_t bitFrequencyHz) override |
| initialization method for codecs that require setup before use (e.g., loading PIO programs, configuring state machines). | |
| size_t | encodeBit (bool bit, Vector< OutputEdge > &output) override |
| Fill output vector with PulseDistance OutputSpec(s) for a bit. | |
| size_t | getEdgeCount () const override |
| Get the number of protocol symbols (bits, pulses, etc.) per encoded byte. | |
| int | getEndOfFrameDelayUs () override |
| Provide the end of frame delay in microseconds for this protocol, used by RX driver to. | |
| CodecEnum | getCodecType () const override |
| instance. | |
| bool | getIdleLevel () |
| virtual void | reset () |
| Preamble & | getPreamble () |
| Get the preamble detector associated with this codec. | |
| void | setPreamble (Preamble &preamble) |
| Set the Preamble Detector object. | |
| virtual bool | decodeEdge (uint32_t durationUs, bool level, uint8_t &result) |
| Edge-based decoding for protocol-agnostic RX drivers. | |
| size_t | encodePreamble (Vector< OutputEdge > &output) |
| virtual size_t | encode (uint8_t byte, Vector< OutputEdge > &output) |
| Fill output vector with protocol-specific OutputSpec(s) for a byte. | |
| void | setFrameSize (uint16_t size) |
| virtual void | encodeByte (uint8_t byte, std::vector< bool > &bits) const |
| Encode a byte to protocol bitstream. Default implementation encodes to raw bits (MSB first), but can be overridden by protocols that require different bit formatting (e.g., Manchester). The output bits are stored in. | |
| virtual bool | getIdleLevel () const |
| Provides the initial ldle state (low or hith) | |
| const char * | name () const |
| Get the name of the codec type as a string (e.g., "PulseDistance", "Manchester"). | |
Protected Member Functions | |
| bool | decodeByte (Vector< OutputEdge > &edges, uint8_t &result) override |
| Decode edges into a byte. | |
| bool | bitMatch (uint32_t duration, bool bit) const |
Protected Attributes | |
| uint32_t | _shortPulseUs = 0 |
| uint32_t | _longPulseUs = 0 |
| uint32_t | _toleranceUs = 0 |
| CustomPreambleUs | _defaultPreamble |
| Preamble * | _preamble = &_defaultPreamble |
| uint16_t | _bitFrequencyHz = 0 |
| uint32_t | _bitPeriodUs = 0 |
| Vector< OutputEdge > | _decodeEdgeStream |
| volatile bool | _inFrame = false |
Pulse-distance encoding/decoding utility class for IR communication.
Encodes bytes using pulse-distance modulation (e.g., NEC, RC5, custom protocols). Decodes pulse-distance bitstreams to bytes, with frame and checksum support.
Definition at line 22 of file PulseDistanceCodec.h.
|
inline |
Definition at line 26 of file PulseDistanceCodec.h.
initialization method for codecs that require setup before use (e.g., loading PIO programs, configuring state machines).
Reimplemented from pulsewire::Codec.
Definition at line 42 of file PulseDistanceCodec.h.
Definition at line 110 of file PulseDistanceCodec.h.
|
inlineoverrideprotectedvirtual |
Decode edges into a byte.
Implements pulsewire::Codec.
Definition at line 85 of file PulseDistanceCodec.h.
|
inlinevirtualinherited |
Edge-based decoding for protocol-agnostic RX drivers.
Called on each signal edge (duration since last edge, new level, minUs, maxUs). The codec maintains its own state and assembles frames internally.
| durationUs | Time in microseconds since last edge. |
| level | New logic level after the edge (true = HIGH, false = LOW). |
| frameBuffer | Output buffer for decoded frame (if available). |
| frameBufferSize | Size of frameBuffer (bytes). |
| frameLen | Set to decoded frame length if a frame is available. |
Reimplemented in pulsewire::ManchesterCodec, pulsewire::NRZCodec, and pulsewire::RecorderCodec.
|
inlinevirtualinherited |
Fill output vector with protocol-specific OutputSpec(s) for a byte.
Encodes the byte to protocol bits and appends OutputSpec(s) for each bit.
| byte | The byte to encode. |
| output | Vector to append OutputSpec(s). |
Reimplemented in pulsewire::NRZCodec.
|
inlineoverridevirtual |
Fill output vector with PulseDistance OutputSpec(s) for a bit.
| bit | The bit to encode (true/false). |
| output | Vector to append OutputSpec(s). |
Reimplemented from pulsewire::Codec.
Definition at line 60 of file PulseDistanceCodec.h.
|
inlinevirtualinherited |
Encode a byte to protocol bitstream. Default implementation encodes to raw bits (MSB first), but can be overridden by protocols that require different bit formatting (e.g., Manchester). The output bits are stored in.
| byte | The input byte to encode. |
| bits | Output buffer for encoded bits (protocol-specific format). |
Reimplemented in pulsewire::RecorderCodec.
|
inlineinherited |
|
inlineoverridevirtual |
instance.
Get the codec type (e.g., PulseDistance, Manchester) for this Codec
Implements pulsewire::Codec.
Definition at line 76 of file PulseDistanceCodec.h.
|
inlineoverridevirtual |
Get the number of protocol symbols (bits, pulses, etc.) per encoded byte.
Implements pulsewire::Codec.
Definition at line 72 of file PulseDistanceCodec.h.
|
inlineoverridevirtual |
Provide the end of frame delay in microseconds for this protocol, used by RX driver to.
Implements pulsewire::Codec.
Definition at line 74 of file PulseDistanceCodec.h.
|
inline |
Definition at line 78 of file PulseDistanceCodec.h.
Provides the initial ldle state (low or hith)
Reimplemented in pulsewire::DifferentialManchesterCodec.
|
inlineinherited |
|
inlinevirtual |
Used by IRTransceiver to initialize codec with protocol-specific parameters
Reimplemented from pulsewire::Codec.
Definition at line 34 of file PulseDistanceCodec.h.
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protected |
Definition at line 82 of file PulseDistanceCodec.h.
|
protectedinherited |
|
protected |
Definition at line 81 of file PulseDistanceCodec.h.
|
protected |
Definition at line 83 of file PulseDistanceCodec.h.