HF-WS2812 Driver 0.1.0-dev
HF-WS2812 ESP32 RMT Driver
Loading...
Searching...
No Matches
ws2812::RmtTx Class Reference

#include <rmt_wrapper.hpp>

Public Member Functions

 RmtTx (gpio_num_t gpio, uint32_t resolution_hz=10 '000 '000, size_t mem_symbols=64, bool with_dma=false, uint32_t queue_depth=4, rmt_clock_source_t clk_src=RMT_CLK_SRC_DEFAULT, int channel_id=-1)
 Create a Transmit channel.
 
 RmtTx (const RmtTx &)=delete
 
RmtTxoperator= (const RmtTx &)=delete
 
 RmtTx (RmtTx &&other) noexcept
 
RmtTxoperator= (RmtTx &&other) noexcept
 
 ~RmtTx ()
 
esp_err_t Transmit (const rmt_symbol_word_t *symbols, size_t count, TickType_t timeout=portMAX_DELAY) const
 Transmit raw RMT symbols (blocking until done).
 
esp_err_t TransmitBytes (const uint8_t *data, size_t length, const rmt_symbol_word_t &bit0, const rmt_symbol_word_t &bit1, TickType_t timeout=portMAX_DELAY)
 Transmit an arbitrary byte stream with custom bit timing.
 
esp_err_t TransmitWs2812 (const uint8_t *grb, size_t length, TickType_t timeout=portMAX_DELAY)
 Helper dedicated to WS2812/NeoPixel @ 800 kHz. Uses 10 MHz or faster resolution to achieve accurate timings.
 
rmt_channel_handle_t Handle () const
 

Constructor & Destructor Documentation

◆ RmtTx() [1/3]

ws2812::RmtTx::RmtTx ( gpio_num_t gpio,
uint32_t resolution_hz = 10'000'000,
size_t mem_symbols = 64,
bool with_dma = false,
uint32_t queue_depth = 4,
rmt_clock_source_t clk_src = RMT_CLK_SRC_DEFAULT,
int channel_id = -1 )
inlineexplicit

Create a Transmit channel.

Parameters
gpioOutput GPIO number.
resolution_hzClock resolution in Hz (max 40 MHz on ESP32‑C6).
mem_symbolsSymbol memory per channel (in 32”bit words).
with_dmaEnable DMA mode for huge transfers.
queue_depthDepth of internal Transmit queue.
clk_srcClock source (default: RMT_CLK_SRC_DEFAULT).
channel_id[Optional] fixed channel (0‑3). Pass -1 for auto.

◆ RmtTx() [2/3]

ws2812::RmtTx::RmtTx ( const RmtTx & )
delete

◆ RmtTx() [3/3]

ws2812::RmtTx::RmtTx ( RmtTx && other)
inlinenoexcept

◆ ~RmtTx()

ws2812::RmtTx::~RmtTx ( )
inline

Member Function Documentation

◆ Handle()

rmt_channel_handle_t ws2812::RmtTx::Handle ( ) const
inline

◆ operator=() [1/2]

RmtTx & ws2812::RmtTx::operator= ( const RmtTx & )
delete

◆ operator=() [2/2]

RmtTx & ws2812::RmtTx::operator= ( RmtTx && other)
inlinenoexcept

◆ Transmit()

esp_err_t ws2812::RmtTx::Transmit ( const rmt_symbol_word_t * symbols,
size_t count,
TickType_t timeout = portMAX_DELAY ) const
inline

Transmit raw RMT symbols (blocking until done).

◆ TransmitBytes()

esp_err_t ws2812::RmtTx::TransmitBytes ( const uint8_t * data,
size_t length,
const rmt_symbol_word_t & bit0,
const rmt_symbol_word_t & bit1,
TickType_t timeout = portMAX_DELAY )
inline

Transmit an arbitrary byte stream with custom bit timing.

Parameters
bit0Symbol encoding logic‑0 (LSB first by default).
bit1Symbol encoding logic‑1.

◆ TransmitWs2812()

esp_err_t ws2812::RmtTx::TransmitWs2812 ( const uint8_t * grb,
size_t length,
TickType_t timeout = portMAX_DELAY )
inline

Helper dedicated to WS2812/NeoPixel @ 800 kHz. Uses 10 MHz or faster resolution to achieve accurate timings.


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