19 ps.pins.set(
static_cast<fl::u32
>(pin));
34 return pins.test(
static_cast<fl::u32
>(pin));
39 return request.none();
46 if (request.test(i) && !
pins.test(i)) {
66 flags.synchronized_start = 0;
67 flags.requires_dma_memory = 0;
68 flags.open_drain_capable = 0;
69 flags.mixed_protocols_ok = 0;
77 Protocol p, fl::i16 data, fl::i16 clock,
83 r.
data_pins.set(
static_cast<fl::u32
>(data));
Declarative driver capabilities + channel-request types for the Channel Manager's predicate / depende...
fl::bitset_fixed< kPinSetCapacity > PinBitset
InputGamut g FL_NO_EXCEPT
static constexpr fl::u32 kPinSetCapacity
Maximum pin number representable in a PinSet's bitset.
Base definition for an LED controller.
ChipsetClocklessTiming timing
unspecified/any for Spi requests
ChannelRequest() FL_NO_EXCEPT
PinBitset data_pins
bit N set = pin N included
fl::i16 clock_pin
-1 for Clockless; single shared clock for Spi
fl::optional< fl::u32 > frequency_hz
mostly SPI override
static ChannelRequest singlePin(Protocol p, fl::i16 data, fl::i16 clock, const ChipsetClocklessTiming &t=ChipsetClocklessTiming::unspecified(), fl::optional< fl::u32 > freq=fl::optional< fl::u32 >()) FL_NO_EXCEPT
Convenience factory for the common single-pin case.
fl::u8 priority
higher = preferred
fl::u8 max_total_channels
aggregate cap; 0 = unbounded
FreqRange clockless_frequency
Aggregate frequency ranges.
fl::string_view name
diagnostics, e.g. "RMT5"
DriverCapabilities() FL_NO_EXCEPT
Definition in capabilities.cpp.hpp.
struct fl::DriverCapabilities::Flags flags
ClocklessTimingCapability clockless_timing
Clock-tree model — the ONLY chipset-support gate.
constexpr PinSet() FL_NO_EXCEPT
bool accepts(fl::i16 pin) const FL_NO_EXCEPT
True iff this set accepts the given single pin.
bool acceptsAll(const PinBitset &request) const FL_NO_EXCEPT
True iff every set bit in request is also accepted here.
static PinSet fixed(fl::i16 pin) FL_NO_EXCEPT
Factory: allowlist with a single pin (the "fixed pin" idiom).
PinBitset pins
only meaningful when kind == Allowlist