26 switch (config.backend) {
57 if (!config_name.empty()) {
65#if FASTLED_LOG_RUNTIME_ENABLED
95 if (!
mConfig.affinity.empty()) {
102 bool recreate_device = !
mDevice ||
105 if (recreate_device) {
108 if (!
config.name.empty()) {
116 return mDevice ?
mDevice->lastBeginError() :
"rx_device_unavailable";
120 if (!
config.name.empty()) {
139 return mDevice->decode(timing, out);
T fetch_add(T value) FL_NO_EXCEPT
fl::shared_ptr< RxDevice > mDevice
bool injectEdges(fl::span< const EdgeTime > edges) FL_NO_EXCEPT
size_t getRawEdgeTimes(fl::span< EdgeTime > out, size_t offset=0) FL_NO_EXCEPT
const char * lastBeginError() const FL_NO_EXCEPT
fl::result< u32, DecodeError > decode(const ChipsetTiming4Phase &timing, fl::span< u8 > out) FL_NO_EXCEPT
bool finished() const FL_NO_EXCEPT
static i32 nextId() FL_NO_EXCEPT
RxBackend backend() const FL_NO_EXCEPT
The capture backend this channel was created with.
fl::string getEngineName() const FL_NO_EXCEPT
virtual ~RxChannel() FL_NO_EXCEPT
static fl::string makeName(i32 id, const fl::string &config_name) FL_NO_EXCEPT
static RxChannelPtr create(const RxChannelConfig &config) FL_NO_EXCEPT
int getPin() const FL_NO_EXCEPT
void setConfig(const RxChannelConfig &config) FL_NO_EXCEPT
const RxChannelConfig & config() const FL_NO_EXCEPT
RxWaitResult wait(u32 timeout_ms) FL_NO_EXCEPT
RxChannel(const RxChannelConfig &config, fl::shared_ptr< RxDevice > device) FL_NO_EXCEPT
bool begin(const RxChannelConfig &config) FL_NO_EXCEPT
static fl::shared_ptr< RxDevice > create(int pin) FL_NO_EXCEPT
Template factory method to create RX device by type.
static expected failure(E err, const char *msg=nullptr) FL_NO_EXCEPT
Create error result.
fl::UISlider offset("Offset", 0.0f, 0.0f, 1.0f, 0.01f)
Centralized logging categories for FastLED hardware interfaces and subsystems.
constexpr remove_reference< T >::type && move(T &&t) FL_NO_EXCEPT
shared_ptr< T > make_shared(Args &&... args) FL_NO_EXCEPT
static fl::shared_ptr< RxDevice > createBackendDevice(const RxChannelConfig &config) FL_NO_EXCEPT
static RxConfig toRxConfig(const RxChannelConfig &config) FL_NO_EXCEPT
u8 u8 fract8 blur_amount FL_NO_EXCEPT
@ I2S_RX
Classic-ESP32 I2S 1-bit oversampling backend — DMA sampling at 16 MHz, capture length limited by RAM ...
@ LPC_SCT_CAPTURE
LPC8xx SCT input-capture + DMA edge backend (LPC845 et al). Capture path is a skeleton until follow-u...
@ FLEXPWM
Teensy 4.x-only FlexPWM capture backend.
@ PIO
RP2040/RP2350 PIO receive backend.
@ FLEXIO
Teensy 4.x-only FlexIO capture backend (FLEXIO1 — FLEXIO2 is owned by the WS2812 TX driver)....
@ PLATFORM_DEFAULT
Use the recommended backend for the active platform (RMT on ESP32; FlexPWM on Teensy 4....
@ RMT
ESP32-only RMT capture backend.
@ ISR
Platform-neutral interrupt-driven edge capture backend when available.
@ PARLIO_RX
PARLIO 1-bit oversampling backend (ESP32-C6 et al) — DMA sampling at 16 MHz with no per-edge interrup...
expected< T, E > result
Alias for expected (Rust-style naming)
string to_string(T value) FL_NO_EXCEPT
RxWaitResult
Result codes for RX wait() operations.
@ TIMEOUT
Operation timed out.
@ INVALID_ARGUMENT
Invalid input arguments.
Base definition for an LED controller.
4-phase RX timing thresholds for chipset detection
u32 skip_signals
Number of signals to skip before capturing (default: 0)
fl::optional< ChipsetTiming4Phase > stream_timing
u32 signal_range_min_ns
Minimum pulse width (glitch filter, default: 100ns)
size_t buffer_size
Buffer size in symbols/edges (default: 512)
bool start_low
Pin idle state: true=LOW (WS2812B), false=HIGH (inverted)
bool use_dma
Use DMA streaming for RX (RMT only, default: false)
u32 signal_range_max_ns
Maximum pulse width (idle threshold, default: 100μs)
fl::optional< u32 > hz
Optional clock frequency (RMT only, default: 40MHz)
bool io_loop_back
Enable internal RMT loopback (RMT only, default: false)
Configuration for RX device initialization.