|
Arduino PulseWire Transceiver Library
|
High-performance RP2040 IR RX driver using PIO for edge capture. More...
#include <RxDriverRP2040.h>


Public Member Functions | |
| RxDriverRP2040 (Codec &codec, uint8_t pin, uint32_t freqHz=1000, bool useChecksum=false, uint32_t timeoutUs=1000000) | |
| void | setFrameSize (uint8_t size) override |
| bool | begin (uint8_t frameSize) override |
| bool | begin () override |
| void | pollPIO () |
| void | checkTimeout () |
| size_t | readBytes (uint8_t *buffer, size_t length) override |
| int | available () override |
| Get the number of bytes available in the internal buffer. | |
| virtual void | setFrameSize (uint16_t size)=0 |
| Set the expected frame size for dynamic data reception. | |
| virtual bool | begin (uint16_t bitFrequencyHz)=0 |
| Start the receiver. | |
| virtual void | end ()=0 |
| Stop the receiver. | |
| virtual void | setRxBufferSize (size_t size)=0 |
| Set the size of the internal RX buffer. | |
Protected Member Functions | |
| bool | decodeFrame (uint8_t *buffer, size_t frameSize) |
Protected Attributes | |
| Codec & | _codec |
| uint8_t | _rxPin |
| uint32_t | _freqHz |
| uint16_t | _frameSize = 20 |
| Vector< uint8_t > | _frameBuffer |
| Vector< uint32_t > | _edgeDurations |
| Vector< bool > | _edgeLevels |
| uint32_t | dmaBuf [DMA_BUF_SIZE] |
| volatile size_t | dmaBufHead = 0 |
| int | dmaChannel = -1 |
| bool | _useChecksum = false |
| uint32_t | _timeoutUs = 1000000 |
| uint32_t | _lastEdgeTime = 0 |
Static Protected Attributes | |
| static constexpr size_t | DMA_BUF_SIZE = 128 |
| static const uint16_t | ir_rx_program [4] |
High-performance RP2040 IR RX driver using PIO for edge capture.
Uses a PIO state machine to capture IR signal edges and their timing. Buffers edge durations and levels for protocol-agnostic decoding. Compatible with modular Codec/Preamble architecture.
Definition at line 19 of file RxDriverRP2040.h.
|
inline |
| codec | IR codec |
| pin | RX pin |
| freqHz | Bit frequency |
| useChecksum | If true, validate checksum (default: false) |
| timeoutUs | Timeout in microseconds to flush frame if no edge received (default: 1000000) |
Definition at line 29 of file RxDriverRP2040.h.
|
inlineoverridevirtual |
Get the number of bytes available in the internal buffer.
Implements pulsewire::RxDriver.
Definition at line 134 of file RxDriverRP2040.h.
|
inlineoverride |
Definition at line 46 of file RxDriverRP2040.h.
Start the receiver.
Implemented in pulsewire::RxDriverArduino.
Definition at line 41 of file RxDriverRP2040.h.
|
inline |
Definition at line 90 of file RxDriverRP2040.h.
Definition at line 165 of file RxDriverRP2040.h.
Stop the receiver.
Implemented in pulsewire::RxDriverArduino, and pulsewire::RxDriverESP32.
|
inline |
Definition at line 76 of file RxDriverRP2040.h.
Read up to 'size' bytes from the internal buffer into 'data'. Returns number of bytes read.
Implements pulsewire::RxDriver.
Definition at line 118 of file RxDriverRP2040.h.
Set the expected frame size for dynamic data reception.
Implemented in pulsewire::RxDriverArduino.
Definition at line 39 of file RxDriverRP2040.h.
Set the size of the internal RX buffer.
Implemented in pulsewire::RxDriverArduino, and pulsewire::RxDriverESP32.
|
protected |
Definition at line 141 of file RxDriverRP2040.h.
Definition at line 146 of file RxDriverRP2040.h.
Definition at line 147 of file RxDriverRP2040.h.
Definition at line 145 of file RxDriverRP2040.h.
|
protected |
Definition at line 144 of file RxDriverRP2040.h.
|
protected |
Definition at line 143 of file RxDriverRP2040.h.
|
protected |
Definition at line 155 of file RxDriverRP2040.h.
|
protected |
Definition at line 142 of file RxDriverRP2040.h.
|
protected |
Definition at line 154 of file RxDriverRP2040.h.
Definition at line 153 of file RxDriverRP2040.h.
Definition at line 149 of file RxDriverRP2040.h.
|
protected |
Definition at line 150 of file RxDriverRP2040.h.
Definition at line 151 of file RxDriverRP2040.h.
|
protected |
Definition at line 152 of file RxDriverRP2040.h.
Definition at line 157 of file RxDriverRP2040.h.