Arduino PulseWire Transceiver Library
Loading...
Searching...
No Matches
Public Member Functions | Protected Member Functions | Protected Attributes | Static Protected Attributes
pulsewire::TxProtocolRP2040 Class Referenceabstract

RP2040-specific TxProtocol implementation using PIO and DMA for precise timing. More...

#include <TxDriverRP2040.h>

Inheritance diagram for pulsewire::TxProtocolRP2040:
Inheritance graph
[legend]
Collaboration diagram for pulsewire::TxProtocolRP2040:
Collaboration graph
[legend]

Public Member Functions

void setFrameSize (uint16_t size) override
 
bool begin (Codec *p_codec, uint8_t pin) override
 
void sendPreamble () override
 
void sendData (const uint8_t *data, uint8_t len, uint32_t bitPeriod) override
 
void sendEnd (bool &useChecksum, bool isDelayAfterFrame, uint32_t bitPeriod) override
 
bool isFrameClosed () const override
 
virtual bool begin (uint16_t bitFrequencyHz, Codec *p_codec, uint8_t pin)=0
 
virtual void sendData (const uint8_t *data, uint8_t len)=0
 
virtual void sendEnd (bool &_useChecksum, bool isDelayAfterFrame)=0
 

Protected Member Functions

void sendEdgesPIO (const Vector< OutputEdge > &edges)
 

Protected Attributes

Codec_codec = nullptr
 
uint8_t _txPin
 
uint16_t _frameSize = 64
 
Vector< OutputEdgeoutput
 
uint8_t sum = 0
 
bool is_frame_closed = true
 
PIO pio = PIO(0)
 
uint8_t sm = 0
 
uint32_t offset = 0
 

Static Protected Attributes

static const charir_tx_pio_program
 

Detailed Description

RP2040-specific TxProtocol implementation using PIO and DMA for precise timing.

Definition at line 17 of file TxDriverRP2040.h.

Member Function Documentation

◆ begin() [1/2]

bool pulsewire::TxProtocolRP2040::begin ( Codec p_codec,
uint8_t  pin 
)
inlineoverride

Definition at line 26 of file TxDriverRP2040.h.

◆ begin() [2/2]

virtual bool pulsewire::TxProtocol::begin ( uint16_t  bitFrequencyHz,
Codec p_codec,
uint8_t  pin 
)
pure virtualinherited

◆ isFrameClosed()

bool pulsewire::TxProtocolRP2040::isFrameClosed ( ) const
inlineoverridevirtual

Implements pulsewire::TxProtocol.

Definition at line 98 of file TxDriverRP2040.h.

◆ sendData() [1/2]

virtual void pulsewire::TxProtocol::sendData ( const uint8_t data,
uint8_t  len 
)
pure virtualinherited

◆ sendData() [2/2]

void pulsewire::TxProtocolRP2040::sendData ( const uint8_t data,
uint8_t  len,
uint32_t  bitPeriod 
)
inlineoverride

Definition at line 66 of file TxDriverRP2040.h.

◆ sendEdgesPIO()

void pulsewire::TxProtocolRP2040::sendEdgesPIO ( const Vector< OutputEdge > &  edges)
inlineprotected

Definition at line 112 of file TxDriverRP2040.h.

◆ sendEnd() [1/2]

virtual void pulsewire::TxProtocol::sendEnd ( bool _useChecksum,
bool  isDelayAfterFrame 
)
pure virtualinherited

◆ sendEnd() [2/2]

void pulsewire::TxProtocolRP2040::sendEnd ( bool useChecksum,
bool  isDelayAfterFrame,
uint32_t  bitPeriod 
)
inlineoverride

Definition at line 80 of file TxDriverRP2040.h.

◆ sendPreamble()

void pulsewire::TxProtocolRP2040::sendPreamble ( )
inlineoverridevirtual

Implements pulsewire::TxProtocol.

Definition at line 57 of file TxDriverRP2040.h.

◆ setFrameSize()

void pulsewire::TxProtocolRP2040::setFrameSize ( uint16_t  size)
inlineoverridevirtual

Implements pulsewire::TxProtocol.

Definition at line 21 of file TxDriverRP2040.h.

Field Documentation

◆ _codec

Codec* pulsewire::TxProtocolRP2040::_codec = nullptr
protected

Definition at line 101 of file TxDriverRP2040.h.

◆ _frameSize

uint16_t pulsewire::TxProtocolRP2040::_frameSize = 64
protected

Definition at line 103 of file TxDriverRP2040.h.

◆ _txPin

uint8_t pulsewire::TxProtocolRP2040::_txPin
protected

Definition at line 102 of file TxDriverRP2040.h.

◆ ir_tx_pio_program

const char * pulsewire::TxProtocolRP2040::ir_tx_pio_program
staticprotected
Initial value:
= R"(
.program ir_tx
pull block
mov x, osr
pull block
mov y, osr
jmp y mark
space:
set pins, 0
nop [31]
jmp x-- space
set pins, 0
jmp ir_tx
mark:
set pins, 1
nop [carrier_half_period]
set pins, 0
nop [carrier_half_period]
jmp x-- mark
set pins, 0
jmp ir_tx
)"

Definition at line 140 of file TxDriverRP2040.h.

◆ is_frame_closed

bool pulsewire::TxProtocolRP2040::is_frame_closed = true
protected

Definition at line 106 of file TxDriverRP2040.h.

◆ offset

uint32_t pulsewire::TxProtocolRP2040::offset = 0
protected

Definition at line 110 of file TxDriverRP2040.h.

◆ output

Vector<OutputEdge> pulsewire::TxProtocolRP2040::output
protected

Definition at line 104 of file TxDriverRP2040.h.

◆ pio

PIO pulsewire::TxProtocolRP2040::pio = PIO(0)
protected

Definition at line 108 of file TxDriverRP2040.h.

◆ sm

uint8_t pulsewire::TxProtocolRP2040::sm = 0
protected

Definition at line 109 of file TxDriverRP2040.h.

◆ sum

uint8_t pulsewire::TxProtocolRP2040::sum = 0
protected

Definition at line 105 of file TxDriverRP2040.h.


The documentation for this class was generated from the following file: