4#include "pulse/codecs/Codec.h"
5#include "pulse/tools/RingBuffer.h"
6#include "pulse/SignalBase.h"
7#include "TransceiverConfig.h"
8#include "pulse/TxDriver.h"
9#include "pulse/tools/Logger.h"
10#include "pulse/tools/Vector.h"
23 void setTxPin(
uint8_t pin)
override {
29 void sendBit(
bool bit) {
49 uint16_t getFrequency()
const {
return _freq; }
57 void sendBit(
bool bit) {
69#if defined(HAS_SET_PMW_FREQUENCY1) || defined(HAS_SET_PMW_FREQUENCY2)
84#if defined(HAS_SET_PMW_FREQUENCY1)
87#if defined(HAS_SET_PMW_FREQUENCY2)
92 void sendBit(
bool bit)
override {
128 virtual void setFrameSize(
uint16_t size) = 0;
129 virtual void sendPreamble() = 0;
132 virtual bool isFrameClosed()
const = 0;
241 delayUs(
spec.pulseUs);
272 delayUs(
spec.pulseUs);
Abstract base class for IR protocol encoding and decoding.
virtual size_t encode(uint8_t byte, Vector< OutputEdge > &output)
Fill output vector with protocol-specific OutputSpec(s) for a byte.
virtual bool begin(uint32_t bitFrequencyHz)
initialization method for codecs that require setup before use (e.g., loading PIO programs,...
virtual int getEndOfFrameDelayUs()=0
Provide the end of frame delay in microseconds for this protocol, used by RX driver to.
virtual bool getIdleLevel() const
Provides the initial ldle state (low or hith)
Digital output signal implementation using digitalWrite.
static void debug(const char *format,...)
Log a debug message with formatting.
static void error(const char *format,...)
Log an error message with formatting.
PWM-modulated output signal implementation using analogWrite and analogWriteFrequency.
Abstract base class for signal output.
Tone-modulated output signal implementation using tone().
Generic implementation that is supported by all Arduino cores.
Codec * _codec
Pointer to the codec used for encoding data.
bool begin(uint32_t bitFrequencyHz, Codec *p_codec, uint8_t pin)
Initializes the protocol with the specified codec and transmission pin.
void sendPreamble()
Sends the preamble for the transmission.
TxProtocolGeneric(SignalBase *p_signal)
Constructs a TxProtocolGeneric instance with the specified signal implementation.
uint8_t check_sum
Checksum for data integrity.
bool is_frame_closed
Indicates whether the frame is closed.
void sendData(const uint8_t *data, uint8_t len)
Encodes and transmits the data.
SignalBase * p_signal
Pointer to the signal implementation.
bool isFrameClosed() const
Checks whether the transmission frame is closed.
void setFrameSize(uint16_t size)
Configures the size of the data to be transmitted.
Vector< OutputEdge > _output_buffer
Buffer for storing encoded signal edges.
void sendEnd(bool &_useChecksum, bool isDelayAfterFrame)
Sends the end signal for the transmission.
Abstract base class for defining transmission protocols.
Small, header-only vector replacement for non-STL environments.
void clear()
Remove all elements.
void reserve(size_t cap)
Reserve space for at least cap elements.