5#include "platforms/is_platform.h"
8#include "platforms/shared/rx_device_dummy.h"
15#include "platforms/esp/32/drivers/i2s_rx/i2s_rx_sampler.h"
16#include "platforms/esp/32/drivers/parlio_rx/parlio_rx_sampler.h"
17#include "platforms/esp/32/drivers/rmt_rx/rmt_rx_channel.h"
18#include "platforms/esp/32/drivers/gpio_isr_rx/gpio_isr_rx.h"
19#include "platforms/esp/32/feature_flags/enabled.h"
25#include "platforms/arm/teensy/teensy4_common/rx_flexio_channel.h"
26#include "platforms/arm/teensy/teensy4_common/rx_flexpwm_channel.h"
32#include "platforms/shared/rx_device_native.h"
39#include "platforms/arm/lpc/rx_sct_capture.h"
45#include "platforms/arm/rp/rpcommon/rx_pio_channel.h"
54 return RpPioRxDevice::create(pin);
55#elif defined(FL_IS_STUB)
56 return NativeRxDevice::create(pin);
66 "RX devices not supported on this platform"
78 u32 t0h = timing_3phase.T1;
79 u32 t0l = timing_3phase.T2 + timing_3phase.T3;
80 u32 t1h = timing_3phase.T1 + timing_3phase.T2;
81 u32 t1l = timing_3phase.T3;
86 result.t0h_min_ns = (t0h > tolerance_ns) ? (t0h - tolerance_ns) : 0;
87 result.t0h_max_ns = t0h + tolerance_ns;
88 result.t0l_min_ns = (t0l > tolerance_ns) ? (t0l - tolerance_ns) : 0;
89 result.t0l_max_ns = t0l + tolerance_ns;
92 result.t1h_min_ns = (t1h > tolerance_ns) ? (t1h - tolerance_ns) : 0;
93 result.t1h_max_ns = t1h + tolerance_ns;
94 result.t1l_min_ns = (t1l > tolerance_ns) ? (t1l - tolerance_ns) : 0;
95 result.t1l_max_ns = t1l + tolerance_ns;
98 result.reset_min_us = timing_3phase.RESET;
128#if (FASTLED_ESP32_HAS_RMT && !FASTLED_ESP32_RMT5_ONLY_PLATFORM && !FASTLED_RMT5) || FASTLED_RMT5
129 auto device = RmtRxChannel::create(pin);
143 auto device = GpioIsrRx::create(pin);
168#if FASTLED_ESP32_HAS_I2S
169 auto device = createI2sRxSampler(pin);
181 auto device = createParlioRxSampler(pin);
200#elif defined(FL_IS_TEENSY_4X)
205 auto device = FlexPwmRxChannel::create(pin);
217 auto device = FlexIoRxChannel::create(pin);
264#elif defined(FL_IS_ARM_LPC)
281 auto device = LpcSctRxChannel::create(pin);
322#elif defined(FL_IS_STUB)
327 return NativeRxDevice::create(pin);
333 return NativeRxDevice::create(pin);
339 return NativeRxDevice::create(pin);
347 return NativeRxDevice::create(pin);
367 return NativeRxDevice::create(pin);
static fl::shared_ptr< RxDevice > create(int pin) FL_NO_EXCEPT
Template factory method to create RX device by type.
static fl::shared_ptr< RxDevice > createDummy() FL_NO_EXCEPT
Create dummy RxDevice instance (default fallback)
Centralized LED chipset timing definitions with nanosecond precision.
shared_ptr< T > make_shared(Args &&... args) FL_NO_EXCEPT
u8 u8 fract8 blur_amount FL_NO_EXCEPT
ChipsetTiming4Phase make4PhaseTiming(const ChipsetTiming &timing_3phase, u32 tolerance_ns) FL_NO_EXCEPT
Create 4-phase RX timing from 3-phase chipset timing with tolerance.
expected< T, E > result
Alias for expected (Rust-style naming)
Base definition for an LED controller.
4-phase RX timing thresholds for chipset detection
Generic chipset timing entry Provides T1, T2, T3 timing parameters in nanoseconds for any LED protoco...
Common RX interfaces and shared types.