FastLED 3.10.6
Loading...
Searching...
No Matches
capabilities.h File Reference

Detailed Description

Declarative driver capabilities + channel-request types for the Channel Manager's predicate / dependency-resolution system (#3186).

Drivers publish:

  • DriverCapabilities — small constant header (driver-wide facts)
  • fl::span<const PinGroup> — per-hardware-resource enumeration

The Channel Manager (and unit tests) consume these via the free fl::canMatch / fl::canMatchBulk functions (declared in can_match.h), which return a HandleResult describing whether a single-pin or bulk ChannelRequest can be served by the supplied capability data.

This header defines pure POD data types only. No driver instance is required to use any of these.

Definition in file capabilities.h.

#include "fl/stl/bitset.h"
#include "fl/stl/noexcept.h"
#include "fl/stl/optional.h"
#include "fl/stl/span.h"
#include "fl/stl/stdint.h"
#include "fl/stl/string_view.h"
+ Include dependency graph for capabilities.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  fl::ChannelRequest
 
struct  fl::ChipsetClocklessTiming
 
struct  fl::ClocklessTimingCapability
 
struct  fl::DriverCapabilities
 
struct  fl::DriverCapabilities::Flags
 Peripheral-flavor flags. Default zero = neutral / no claim. More...
 
struct  fl::FreqRange
 
struct  fl::NanosRange
 
struct  fl::PinGroup
 
struct  fl::PinSet
 

Namespaces

namespace  fl
 Base definition for an LED controller.
 

Typedefs

using fl::PinBitset = fl::bitset_fixed<kPinSetCapacity>
 

Enumerations

enum class  fl::HandleResult : fl::u8 {
  fl::Yes = 0 , fl::NoProtocol = 1 , fl::NoPin = 2 , fl::NoPinPair = 3 ,
  fl::NoFrequency = 4 , fl::NoTiming = 5 , fl::NoCapacity = 6
}
 
enum class  fl::PinSetKind : fl::u8 { fl::None = 0 , fl::AnyOutputPin = 1 , fl::Allowlist = 2 }
 
enum class  fl::Protocol : fl::u8 { fl::Clockless = 0 , fl::Spi = 1 }
 

Functions

constexpr bool fl::isYes (HandleResult r) FL_NO_EXCEPT
 Convenience: most call sites really want a bool.
 

Variables

static constexpr fl::u32 fl::kPinSetCapacity = 128u
 Maximum pin number representable in a PinSet's bitset.
 

Class Documentation

◆ fl::DriverCapabilities::Flags

struct fl::DriverCapabilities::Flags
Class Members
u8 mixed_protocols_ok: 1 CL+SPI on same instance OK.
u8 open_drain_capable: 1
u8 requires_dma_memory: 1 DMA can't reach PSRAM.
u8 reserved: 4
u8 synchronized_start: 1 all groups latch on same clock edge