FastLED 3.9.15
Loading...
Searching...
No Matches
bus_traits.h File Reference

Detailed Description

Per-driver traits keyed on fl::Bus.

Each concrete driver provides a specialization of BusTraits<Bus::X> (typically in a bus_traits.h adjacent to the driver header). The specialization carries:

  • using Driver = ...; the concrete driver class.
  • static Driver& instance(); Meyers singleton accessor.
  • One or more BusSupports<Bus::X, Chipset> true_type specializations declaring which chipset families the driver can handle.

Naming BusTraits<Bus::X>::instance() anywhere in the program is what causes the linker to keep the driver's translation unit. If no template instantiation references it, the driver TU is dead-stripped. See #2428.

Definition in file bus_traits.h.

#include "fl/channels/bus.h"
#include "fl/stl/noexcept.h"
#include "fl/stl/type_traits.h"
+ Include dependency graph for bus_traits.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  fl::BusSupports< B, Chipset >
 Capability check: does bus B accept chipset family Chipset? More...
 
struct  fl::detail::BusKeepAliveImpl< B >
 
struct  fl::detail::BusKeepAliveImpl< fl::Bus::AUTO >
 

Namespaces

namespace  fl
 Base definition for an LED controller.
 
namespace  fl::detail
 Compile-time linker keep-alive hook for a single fl::Bus.
 

Functions

template<Bus B>
int fl::detail::bus_register_one () FL_NOEXCEPT
 Helper used by enableDrivers<Bus...>() to expand the parameter pack.
 
template<fl::Bus B>
void fl::busKeepAlive () FL_NOEXCEPT
 
template<Bus... Buses>
void fl::enableDrivers () FL_NOEXCEPT
 Register the named drivers with ChannelManager for runtime selection.