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

Bi-directional IR transceiver class with Stream interface and driver abstraction. More...

#include <Transceiver.h>

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

Public Member Functions

 Transceiver ()=default
 Default constructor.
 
 Transceiver (RxDriver &rx, TxDriver &tx)
 Constructor with RX and TX drivers.
 
 Transceiver (RxDriver &rx)
 Constructor with RX driver.
 
 Transceiver (TxDriver &tx)
 Constructor with TX driver.
 
 Transceiver (RxDriver &rx, TxDriver &tx, FramingMode mode, size_t frameSize)
 Constructor with RX and TX drivers.
 
 Transceiver (RxDriver &rx, FramingMode mode, size_t frameSize)
 Constructor with RX driver.
 
 Transceiver (TxDriver &tx, FramingMode mode, size_t frameSize)
 Constructor with TX driver.
 
void setRxDriver (RxDriver *driver)
 Set the RX driver.
 
void setTxDriver (TxDriver *driver)
 Set the TX driver.
 
void setFrameSize (uint16_t size)
 Set the expected maximum frame size for RX/TX drivers and single-char buffer.
 
bool setFramingMode (FramingMode mode)
 
bool begin (uint16_t bitFrequencyHz=DEFAULT_BIT_FREQ_HZ)
 Initialize the transceiver and drivers.
 
void end ()
 End/stop the RX driver.
 
size_t write (uint8_t byte) override
 Write a single byte to the TX driver.
 
size_t write (const uint8_t *buffer, size_t size) override
 Write a buffer to the TX driver.
 
void flush () override
 Not implemented.
 
int availableForWrite () override
 Return the number of bytes available for writing (always 1024)
 
int available () override
 Return the number of bytes available to read.
 
int read () override
 Read a single byte from the buffer.
 
virtual size_t readBytes (uint8_t *buffer, size_t length)
 Read bytes into the provided buffer, up to the specified length.
 
int peek () override
 Peek at the next byte in the buffer without removing it.
 

Protected Member Functions

void refillSingleCharBuffer ()
 

Protected Attributes

RxDriver_rxDriver = nullptr
 
TxDriver_txDriver = nullptr
 
RingBuffer< uint8_t_singleCharRxBuffer {64}
 
int _frameSize = 0
 

Detailed Description

Bi-directional IR transceiver class with Stream interface and driver abstraction.

This class provides a flexible, buffered interface for IR communication. It supports pluggable RX and TX drivers, frame size management, and integrates with the Arduino Stream API.

Definition at line 23 of file Transceiver.h.

Constructor & Destructor Documentation

◆ Transceiver() [1/6]

pulsewire::Transceiver::Transceiver ( RxDriver rx,
TxDriver tx 
)
inline

Constructor with RX and TX drivers.

Definition at line 33 of file Transceiver.h.

◆ Transceiver() [2/6]

pulsewire::Transceiver::Transceiver ( RxDriver rx)
inline

Constructor with RX driver.

Definition at line 38 of file Transceiver.h.

◆ Transceiver() [3/6]

pulsewire::Transceiver::Transceiver ( TxDriver tx)
inline

Constructor with TX driver.

Definition at line 43 of file Transceiver.h.

◆ Transceiver() [4/6]

pulsewire::Transceiver::Transceiver ( RxDriver rx,
TxDriver tx,
FramingMode  mode,
size_t  frameSize 
)
inline

Constructor with RX and TX drivers.

Definition at line 48 of file Transceiver.h.

◆ Transceiver() [5/6]

pulsewire::Transceiver::Transceiver ( RxDriver rx,
FramingMode  mode,
size_t  frameSize 
)
inline

Constructor with RX driver.

Definition at line 57 of file Transceiver.h.

◆ Transceiver() [6/6]

pulsewire::Transceiver::Transceiver ( TxDriver tx,
FramingMode  mode,
size_t  frameSize 
)
inline

Constructor with TX driver.

Definition at line 66 of file Transceiver.h.

Member Function Documentation

◆ available()

int pulsewire::Transceiver::available ( )
inlineoverride

Return the number of bytes available to read.

Definition at line 170 of file Transceiver.h.

◆ availableForWrite()

int pulsewire::Transceiver::availableForWrite ( )
inlineoverride

Return the number of bytes available for writing (always 1024)

Definition at line 165 of file Transceiver.h.

◆ begin()

bool pulsewire::Transceiver::begin ( uint16_t  bitFrequencyHz = DEFAULT_BIT_FREQ_HZ)
inline

Initialize the transceiver and drivers.

Definition at line 109 of file Transceiver.h.

◆ end()

void pulsewire::Transceiver::end ( )
inline

End/stop the RX driver.

Definition at line 134 of file Transceiver.h.

◆ flush()

void pulsewire::Transceiver::flush ( )
inlineoverride

Not implemented.

Definition at line 156 of file Transceiver.h.

◆ peek()

int pulsewire::Transceiver::peek ( )
inlineoverride

Peek at the next byte in the buffer without removing it.

Definition at line 204 of file Transceiver.h.

◆ read()

int pulsewire::Transceiver::read ( )
inlineoverride

Read a single byte from the buffer.

Definition at line 177 of file Transceiver.h.

◆ readBytes()

virtual size_t pulsewire::Transceiver::readBytes ( uint8_t buffer,
size_t  length 
)
inlinevirtual

Read bytes into the provided buffer, up to the specified length.

Parameters
buffer
length
Returns
size_t

Definition at line 191 of file Transceiver.h.

◆ refillSingleCharBuffer()

void pulsewire::Transceiver::refillSingleCharBuffer ( )
inlineprotected

Definition at line 215 of file Transceiver.h.

◆ setFrameSize()

void pulsewire::Transceiver::setFrameSize ( uint16_t  size)
inline

Set the expected maximum frame size for RX/TX drivers and single-char buffer.

Definition at line 86 of file Transceiver.h.

◆ setFramingMode()

bool pulsewire::Transceiver::setFramingMode ( FramingMode  mode)
inline

Definition at line 98 of file Transceiver.h.

◆ setRxDriver()

void pulsewire::Transceiver::setRxDriver ( RxDriver driver)
inline

Set the RX driver.

Definition at line 75 of file Transceiver.h.

◆ setTxDriver()

void pulsewire::Transceiver::setTxDriver ( TxDriver driver)
inline

Set the TX driver.

Definition at line 80 of file Transceiver.h.

◆ write() [1/2]

size_t pulsewire::Transceiver::write ( const uint8_t buffer,
size_t  size 
)
inlineoverride

Write a buffer to the TX driver.

Definition at line 147 of file Transceiver.h.

◆ write() [2/2]

size_t pulsewire::Transceiver::write ( uint8_t  byte)
inlineoverride

Write a single byte to the TX driver.

Definition at line 142 of file Transceiver.h.

Field Documentation

◆ _frameSize

int pulsewire::Transceiver::_frameSize = 0
protected

Definition at line 213 of file Transceiver.h.

◆ _rxDriver

RxDriver* pulsewire::Transceiver::_rxDriver = nullptr
protected

Definition at line 210 of file Transceiver.h.

◆ _singleCharRxBuffer

RingBuffer<uint8_t> pulsewire::Transceiver::_singleCharRxBuffer {64}
protected

Definition at line 212 of file Transceiver.h.

◆ _txDriver

TxDriver* pulsewire::Transceiver::_txDriver = nullptr
protected

Definition at line 211 of file Transceiver.h.


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