Unified channel manager with priority-based driver selection.
This manager acts as a registry for concrete driver implementations (RMT, SPI, PARLIO). Channels select drivers via selectDriverForChannel() and bind directly to them via weak_ptr.
Platform-specific code registers drivers during static initialization.
Definition at line 51 of file manager.h.
|
| | ChannelManager () FL_NO_EXCEPT |
| | Constructor.
|
| |
| | ~ChannelManager () FL_NO_EXCEPT override |
| | Destructor - cleanup shared drivers (automatic via shared_ptr)
|
| |
| void | addDriver (int priority, fl::shared_ptr< IChannelDriver > driver) FL_NO_EXCEPT |
| | Add a driver with priority (higher priority = preferred)
|
| |
| void | clearAllDrivers () FL_NO_EXCEPT |
| | Remove all drivers from the manager.
|
| |
| DriverStatus | driverStatus (const fl::string &name) const FL_NO_EXCEPT |
| | Look up a driver's registration status without logging on miss.
|
| |
| const fl::string & | exclusiveDriverName () const FL_NO_EXCEPT |
| | Get the currently-active exclusive-driver selection (if any).
|
| |
| fl::shared_ptr< IChannelDriver > | findDriverByName (const fl::string &name) const FL_NO_EXCEPT |
| | Silent counterpart to getDriverByName().
|
| |
| fl::shared_ptr< IChannelDriver > | getDriverByName (const fl::string &name) const FL_NO_EXCEPT |
| | Get driver by name for affinity binding.
|
| |
| fl::size | getDriverCount () const FL_NO_EXCEPT |
| | Get count of registered drivers (including unnamed ones)
|
| |
| fl::span< const DriverInfo > | getDriverInfos () const FL_NO_EXCEPT |
| | Get full state of all registered drivers.
|
| |
| bool | isDriverEnabled (const char *name) const FL_NO_EXCEPT |
| | Check if a driver is enabled by name.
|
| |
| bool | isDriverEnabled (const IChannelDriver &driver) const FL_NO_EXCEPT |
| | Enabled state of a driver instance, matched by pointer.
|
| |
| void | onBeginFrame () FL_NO_EXCEPT override |
| | Poll drivers before frame starts to clear previous frame state.
|
| |
| void | onEndFrame () FL_NO_EXCEPT override |
| | Trigger transmission of batched channel data.
|
| |
| IChannelDriver::DriverState | poll () FL_NO_EXCEPT |
| | Poll all registered drivers and return aggregate state.
|
| |
| bool | removeDriver (fl::shared_ptr< IChannelDriver > driver) FL_NO_EXCEPT |
| | Remove a driver from the manager.
|
| |
| void | reset () FL_NO_EXCEPT |
| | Reset bus manager state, clearing all enqueued and transmitting channels.
|
| |
| fl::shared_ptr< IChannelDriver > | selectDriverForChannel (const ChannelDataPtr &data, const fl::string &affinity) FL_NO_EXCEPT |
| | Select best driver for channel data (used by Channel::showPixels)
|
| |
| void | setDriverEnabled (const char *name, bool enabled) FL_NO_EXCEPT |
| | Enable or disable a driver by name at runtime.
|
| |
| bool | setDriverPriority (const fl::string &name, int priority) FL_NO_EXCEPT |
| | Change the priority of a registered driver.
|
| |
| template<fl::Bus B, fl::u8 Which = 0> |
| void | setExclusiveDriver () FL_NO_EXCEPT |
| | Register a single driver at a priority above the platform default and disable all others (compile-time TU-linking variant).
|
| |
| bool | setExclusiveDriver (Bus bus, fl::u8 which=0) FL_NO_EXCEPT |
| | Enable only one driver exclusively, by fl::Bus enum (runtime form).
|
| |
| bool | setExclusiveDriverByName (const char *name) FL_NO_EXCEPT |
| | Enable only one driver exclusively (disables all others) — by-name escape hatch.
|
| |
| bool | waitForReady (u32 timeoutMs=1000) FL_NO_EXCEPT |
| | Wait for all drivers to become READY.
|
| |
| bool | waitForReadyOrDraining (u32 timeoutMs=1000) FL_NO_EXCEPT |
| |
| | Listener () FL_NO_EXCEPT |
| |
| virtual | ~Listener () FL_NO_EXCEPT |
| |
| virtual void | onCanvasUiSet (CLEDController *strip, const ScreenMap &screenmap) FL_NO_EXCEPT |
| |
| virtual void | onEndShowLeds () FL_NO_EXCEPT |
| |
| virtual void | onExit () FL_NO_EXCEPT |
| |
| virtual void | onPlatformPreLoop () FL_NO_EXCEPT |
| |
| virtual void | onPlatformPreLoop2 () FL_NO_EXCEPT |
| |
| virtual void | onStripAdded (CLEDController *strip, fl::u32 num_leds) FL_NO_EXCEPT |
| |