33#ifndef FL_SLIM_BRIDGE_DIRECT_SHOW
34#define FL_SLIM_BRIDGE_DIRECT_SHOW (!FL_PLATFORM_HAS_LARGE_MEMORY)
41template <
bool DIRECT_SHOW>
48 template <
typename DriverTraits>
61 template <
typename DriverTraits>
114 if (WAIT_TIME > 0 &&
static_cast<u32
>(WAIT_TIME) > timing.
reset_us) {
115 timing.
reset_us =
static_cast<u32
>(WAIT_TIME);
120 mData->setExtraZeroBitsPerByte(
static_cast<u8>(XTRA0));
124 Policy::template attach<DriverTraits>();
140 if (!Policy::enabled(driver)) {
148 if (
mData->isInUse()) {
150 FL_WARN_ONCE(
"SlimBridgeController: driver '" << driver.
getName().
c_str() <<
"' did not become ready in time - dropping frame");
163 }
else if (this->
getRgbw().active()) {
171 mData->getData().clear();
176 Policy::afterEnqueue(driver);
Per-driver traits keyed on fl::Bus.
CPixelLEDController(RegistrationMode mode)
Protected constructor with registration mode.
Rgbww getRgbww() const FL_NO_EXCEPT
Rgbw getRgbw() const FL_NO_EXCEPT
static ChannelDataPtr create(const ChipsetVariant &chipset, fl::vector_psram< u8 > &&encodedData=fl::vector_psram< u8 >(), ChannelPixelFormat pixelFormat=ChannelPixelFormat::RGB) FL_NO_EXCEPT
Create channel transmission data (modern variant-based API)
static ChannelManager & registry() FL_NO_EXCEPT
Get the singleton WITHOUT registering platform default drivers.
bool isDriverEnabled(const char *name) const FL_NO_EXCEPT
Check if a driver is enabled by name.
virtual fl::string getName() const FL_NO_EXCEPT
Get the driver name for affinity binding.
virtual void enqueue(ChannelDataPtr channelData) FL_NO_EXCEPT=0
Enqueue channel data for transmission.
bool waitForReady(u32 timeoutMs=1000) FL_NO_EXCEPT
Wait for driver to become READY.
Minimal interface for LED channel transmission drivers.
const ChannelDataPtr & channelData() const FL_NO_EXCEPT
Expose the underlying ChannelDataPtr for conformance tests.
virtual void onBeforeEncode(PixelController< RGB_ORDER > &pixels) FL_NO_EXCEPT
Called once per accepted frame, after the enabled/ready gates pass and BEFORE the frame is encoded an...
void showPixels(PixelController< RGB_ORDER > &pixels) FL_NO_EXCEPT override
SlimBridgeController() FL_NO_EXCEPT
SlimBridgeShowPolicy< DIRECT_SHOW > Policy
void init() FL_NO_EXCEPT override
Initialize the LED controller.
const char * c_str() const FL_NO_EXCEPT
defines the templated version of the CLEDController class
Channel transmission data - lightweight DTO for driver transmission.
Non-templated low level pixel data writing class.
#define FL_WARN_ONCE(...)
Centralized logging categories for FastLED hardware interfaces and subsystems.
Unified manager for channel drivers with priority-based fallback.
constexpr ChipsetTimingConfig makeTimingConfig() FL_NO_EXCEPT
Convert compile-time CHIPSET type to runtime timing config.
InputGamut g FL_NO_EXCEPT
Base definition for an LED controller.
How a SlimBridgeController reaches its driver.
#define FL_SLIM_BRIDGE_DIRECT_SHOW
Small-memory tier: the bridge drives its driver directly instead of through ChannelManager,...
#define FL_STATIC_ASSERT(...)
Portable compile-time assertion wrapper.
u32 reset_us
Reset/latch time (microseconds)
Runtime bit-period timing for a clockless chipset.
static void afterEnqueue(IChannelDriver &) FL_NO_EXCEPT
static void attach() FL_NO_EXCEPT
static bool enabled(IChannelDriver &driver) FL_NO_EXCEPT
static void afterEnqueue(IChannelDriver &driver) FL_NO_EXCEPT
static bool enabled(IChannelDriver &) FL_NO_EXCEPT
static void attach() FL_NO_EXCEPT