43 :
ns(ns_duration),
high(high_level ? 1 : 0) {}
281 template <RxDeviceType TYPE>
virtual int getPin() const FL_NOEXCEPT=0
Get GPIO pin number.
virtual RxWaitResult wait(u32 timeout_ms) FL_NOEXCEPT=0
Wait for data with timeout.
virtual size_t getRawEdgeTimes(fl::span< EdgeTime > out, size_t offset=0) FL_NOEXCEPT=0
Get raw edge timings in universal format (for debugging)
virtual const char * name() const FL_NOEXCEPT=0
Get device type name.
virtual bool begin(const RxConfig &config) FL_NOEXCEPT=0
Initialize (or re-arm) RX channel with configuration.
static fl::shared_ptr< RxDevice > createDummy() FL_NOEXCEPT
Create dummy RxDevice instance (default fallback)
static fl::shared_ptr< RxDevice > create(int pin) FL_NOEXCEPT
Template factory method to create RX device by type.
virtual fl::result< u32, DecodeError > decode(const ChipsetTiming4Phase &timing, fl::span< u8 > out) FL_NOEXCEPT=0
Decode captured data to bytes into a span.
virtual bool injectEdges(fl::span< const EdgeTime > edges) FL_NOEXCEPT=0
Manually inject edge timings for testing (Phase 1 - PARLIO gap simulation)
virtual bool finished() const FL_NOEXCEPT=0
Check if receive operation is complete.
RxDevice() FL_NOEXCEPT=default
fl::UISlider offset("Offset", 0.0f, 0.0f, 1.0f, 0.01f)
@ RMT
ESP32 RMT peripheral (all ESP32 variants).
expected< T, E > result
Alias for expected (Rust-style naming)
ChipsetTiming4Phase make4PhaseTiming(const ChipsetTiming &timing_3phase, u32 tolerance_ns) FL_NOEXCEPT
Create 4-phase RX timing from 3-phase chipset timing with tolerance.
constexpr nullopt_t nullopt
RxWaitResult
Result codes for RX wait() operations.
@ TIMEOUT
Operation timed out.
@ SUCCESS
Operation completed successfully.
DecodeError
Error codes for RX decoder operations.
@ HIGH_ERROR_RATE
Symbol decode error rate too high (>10%)
@ BUFFER_OVERFLOW
Output buffer overflow.
@ OK
No error (not typically used)
@ INVALID_ARGUMENT
Invalid input arguments.
RxDeviceType
RX device type enumeration.
@ LPC_SCT_CAPTURE
SCT input-capture + DMA receiver (LPC8xx). Skeleton + decoder land in #3015; bench-verified register-...
@ FLEXPWM
FlexPWM input-capture receiver (Teensy 4.x)
@ FLEXIO
FlexIO shifter-based receiver (Teensy 4.x, FLEXIO1; see FastLED#2764)
@ PLATFORM_DEFAULT
Platform default (RMT on ESP32, FLEXPWM on Teensy 4.x; FLEXIO available as opt-in on Teensy 4 — see F...
@ RMT
RMT-based receiver (ESP32)
@ ISR
GPIO ISR-based receiver (ESP32)
const char * toString(RxDeviceType type) FL_NOEXCEPT
Convert RxDeviceType to human-readable string.
Base definition for an LED controller.
u32 t1h_min_ns
Bit 1 high time minimum (e.g., 650ns)
u32 reset_min_us
Reset pulse minimum duration (e.g., 50us)
u32 gap_tolerance_ns
Maximum gap duration to tolerate (0 = no gap tolerance, treat as error)
u32 t0l_min_ns
Bit 0 low time minimum (e.g., 700ns)
u32 t1l_min_ns
Bit 1 low time minimum (e.g., 300ns)
u32 t1h_max_ns
Bit 1 high time maximum (e.g., 950ns)
u32 t0h_min_ns
Bit 0 high time minimum (e.g., 250ns)
u32 t0h_max_ns
Bit 0 high time maximum (e.g., 550ns)
u32 t1l_max_ns
Bit 1 low time maximum (e.g., 600ns)
u32 t0l_max_ns
Bit 0 low time maximum (e.g., 1000ns)
4-phase RX timing thresholds for chipset detection
Generic chipset timing entry Provides T1, T2, T3 timing parameters in nanoseconds for any LED protoco...
result<T, E> type alias for fl::expected (Rust-style naming)
size_t offset
Starting edge index.
constexpr EdgeRange(size_t offsetParam, size_t countParam) FL_NOEXCEPT
Constructor.
size_t count
Number of edges to extract.
u32 ns
Duration in nanoseconds (31 bits, max ~2.1s)
constexpr EdgeTime(bool high_level, u32 ns_duration) FL_NOEXCEPT
Construct from high/low state and duration.
u32 high
High/low level (1 bit: 1=high, 0=low)
constexpr EdgeTime() FL_NOEXCEPT
Default constructor (low, 0ns)
Universal edge timing representation (platform-agnostic)
u32 skip_signals
Number of signals to skip before capturing (default: 0)
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)
constexpr RxConfig() FL_NOEXCEPT=default
Default constructor with common WS2812B defaults.
Configuration for RX device initialization.