FastLED 3.9.15
Loading...
Searching...
No Matches
fl::Channel Class Reference

Detailed Description

LED channel for parallel output, pretty much a CPixelLEDController but with timing and pin information.

Provides access to LED channel functionality for driving LED strips. RGB_ORDER is set to RGB - reordering is handled internally by the Channel.

Inherits IChannel so ChannelEvents callbacks (and other consumers that only need to identify a channel) can take a non-template reference even after Channel<Bus, Chipset> becomes templated in Phase 3b. See #2428.

Definition at line 48 of file channel.h.

#include <channel.h>

+ Inheritance diagram for fl::Channel:
+ Collaboration diagram for fl::Channel:

Public Member Functions

virtual ~Channel () FL_NOEXCEPT
 Destructor.
 
void addToDrawList ()
 Add this channel to the global controller draw list.
 
void applyConfig (const ChannelConfig &config)
 Apply reconfigurable settings from a ChannelConfig.
 
CLEDControllerasController ()
 Get pointer to base CLEDController for linked list traversal.
 
const CLEDControllerasController () const
 
const ChipsetVariantgetChipset () const
 Get the chipset configuration variant.
 
int getClockPin () const
 Get the clock pin for this channel (SPI only, -1 for clockless)
 
CRGB getCorrection ()
 Get the color correction.
 
u8 getDither ()
 Get the dither mode.
 
fl::string getEngineName () const
 Get the name of the currently bound driver (if any)
 
fl::optional< float > getGamma () const
 Get gamma correction value.
 
int getPin () const
 Get the pin number for this channel (data pin)
 
EOrder getRgbOrder () const
 Get the RGB channel ordering.
 
Rgbw getRgbw () const
 Get the RGBW conversion mode.
 
const fl::ScreenMapgetScreenMap () const
 Get the current screen map.
 
CRGB getTemperature ()
 Get the color temperature.
 
const ChipsetTimingConfiggetTiming () const
 Get the timing configuration for this channel (clockless only)
 
bool hasScreenMap () const
 Check if screen map is configured.
 
i32 id () const override
 Get the channel ID.
 
bool isClockless () const
 Check if this is a clockless chipset.
 
bool isInDrawList () const
 Check if this channel is in the controller draw list.
 
bool isSpi () const
 Check if this is an SPI chipset.
 
fl::span< CRGBleds ()
 Get the LED array as a span (non-const)
 
fl::span< const CRGBleds () const
 Get the LED array as a span (const)
 
const fl::stringname () const override
 Get the channel name.
 
void removeFromDrawList ()
 Remove this channel from the global controller draw list.
 
ChannelsetGamma (float gamma)
 Set gamma correction value.
 
ChannelsetScreenMap (const fl::ScreenMap &map)
 Set screen map for JS canvas visualization.
 
ChannelsetScreenMap (const fl::XMap &map)
 Set screen map for 1D strip remapping from XMap.
 
ChannelsetScreenMap (const fl::XYMap &map, float diameter=-1.f)
 Set screen map for JS canvas visualization from XYMap.
 
ChannelsetScreenMap (fl::u16 width, fl::u16 height, float diameter=-1.f)
 Set screen map for JS canvas visualization from dimensions.
 
void showLeds (u8 brightness=255) OVERRIDE_IF_NOT_AVR
 Show the LEDs with optional brightness scaling.
 
int size () const override
 Get the number of LEDs in this channel.
 
- Public Member Functions inherited from CPixelLEDController< RGB >
 CPixelLEDController ()
 
int lanes () override
 Get the number of lanes of the Controller.
 
virtual void showPixels (PixelController< RGB_ORDER, 1, 0xFFFFFFFF > &pixels)=0
 Send the LED data to the strip.
 
- Public Member Functions inherited from fl::CLEDController
 CLEDController () FL_NOEXCEPT
 Create an led controller object, add it to the chain of controllers.
 
VIRTUAL_IF_NOT_AVR ~CLEDController () FL_NOEXCEPT
 
void addToList () FL_NOEXCEPT
 Add this controller to the linked list.
 
virtual void * beginShowLeds (int size) FL_NOEXCEPT
 
void clearLedDataInternal (int nLeds=-1) FL_NOEXCEPT
 Zero out the LED data managed by this controller.
 
VIRTUAL_IF_NOT_AVR void clearLeds (int nLeds=-1) FL_NOEXCEPT
 Clear out/zero out the given number of LEDs.
 
CLEDControllerclearWhiteChannel () FL_NOEXCEPT
 Reset this channel to plain 3-channel RGB (clears any RGBW/RGBWW configuration).
 
virtual void endShowLeds (void *data) FL_NOEXCEPT
 
CRGB getAdjustment (fl::u8 scale) FL_NOEXCEPT
 Get the combined brightness/color adjustment for this controller.
 
ColorAdjustment getAdjustmentData (fl::u8 brightness) FL_NOEXCEPT
 
CRGB getCorrection () FL_NOEXCEPT
 Get the correction value used by this controller.
 
fl::u8 getDither () FL_NOEXCEPT
 Get the dithering option currently set for this controller.
 
bool getEnabled () FL_NOEXCEPT
 
virtual fl::u16 getMaxRefreshRate () const FL_NOEXCEPT
 Gets the maximum possible refresh rate of the strip.
 
Rgbw getRgbw () const FL_NOEXCEPT
 
Rgbww getRgbww () const FL_NOEXCEPT
 
CRGB getTemperature () FL_NOEXCEPT
 Get the color temperature, aka white point, for this controller.
 
bool isInList () const FL_NOEXCEPT
 Check if this controller is in the linked list.
 
const CRGBleds () const FL_NOEXCEPT
 Const pointer to the CRGB array for this controller.
 
CRGBleds () FL_NOEXCEPT
 Pointer to the CRGB array for this controller.
 
fl::span< CRGBledsSpan () FL_NOEXCEPT
 Span of LEDs managed by this controller.
 
const CLEDControllernext () const FL_NOEXCEPT
 Get the next controller in the linked list after this one (const version).
 
CLEDControllernext () FL_NOEXCEPT
 Get the next controller in the linked list after this one.
 
CRGBoperator[] (int x) FL_NOEXCEPT
 Reference to the n'th LED managed by the controller.
 
void removeFromDrawList () FL_NOEXCEPT
 Remove this controller from the draw list.
 
CLEDControllersetCorrection (CRGB correction) FL_NOEXCEPT
 The color corrction to use for this controller, expressed as a CRGB object.
 
CLEDControllersetCorrection (LEDColorCorrection correction) FL_NOEXCEPT
 The color corrction to use for this controller, expressed as a CRGB object.
 
CLEDControllersetDither (fl::u8 ditherMode=BINARY_DITHER) FL_NOEXCEPT
 Set the dithering mode for this controller to use.
 
void setEnabled (bool enabled) FL_NOEXCEPT
 
CLEDControllersetLeds (CRGB *data, int nLeds) FL_NOEXCEPT
 Set the default array of LEDs to be used by this controller.
 
CLEDControllersetLeds (fl::span< CRGB > leds) FL_NOEXCEPT
 Set the default array of LEDs to be used by this controller (span version)
 
CLEDControllersetRgbw (const Rgbw &arg=RgbwDefault::value()) FL_NOEXCEPT
 
CLEDControllersetRgbww (const Rgbww &arg=RgbwwDefault::value()) FL_NOEXCEPT
 Configure this channel for 5-channel RGBWW (RGB + warm-W + cool-W) output.
 
CLEDControllersetScreenMap (const fl::ScreenMap &map) FL_NOEXCEPT
 
CLEDControllersetScreenMap (const fl::XYMap &map, float diameter=-1.f) FL_NOEXCEPT
 
CLEDControllersetScreenMap (fl::u16 width, fl::u16 height, float diameter=-1.f) FL_NOEXCEPT
 
CLEDControllersetTemperature (ColorTemperature temperature) FL_NOEXCEPT
 Set the color temperature, aka white point, for this controller.
 
CLEDControllersetTemperature (CRGB temperature) FL_NOEXCEPT
 Set the color temperature, aka white point, for this controller.
 
void showColorInternal (const CRGB &data, fl::u8 brightness) FL_NOEXCEPT
 
void showColorInternal (const CRGB &data, int nLeds, fl::u8 brightness) FL_NOEXCEPT
 
void showInternal (const CRGB *data, int nLeds, fl::u8 brightness) FL_NOEXCEPT
 
VIRTUAL_IF_NOT_AVR void showLeds (fl::u8 brightness) FL_NOEXCEPT
 
void showLedsInternal (fl::u8 brightness) FL_NOEXCEPT
 Write the data to the LEDs managed by this controller.
 
- Public Member Functions inherited from fl::IChannel
virtual ~IChannel () FL_NOEXCEPT=default
 

Static Public Member Functions

static ChannelPtr create (const ChannelConfig &config)
 Create a new channel with optional mBus driver pinning.
 
- Static Public Member Functions inherited from fl::CLEDController
static CLEDControllerhead () FL_NOEXCEPT
 Get the first LED controller in the linked list of controllers.
 
static void removeFromList (CLEDController *controller) FL_NOEXCEPT
 Remove a controller from the linked list.
 
template<typename Visitor>
static void visitControllers (Visitor &&visitor) FL_NOEXCEPT
 Visit all controllers in the linked list with a visitor The visitor must be a callable that accepts (const CLEDController*, fl::span<const CRGB>)
 

Protected Member Functions

 Channel (const ChipsetVariant &chipset, EOrder rgbOrder, RegistrationMode mode)
 Protected constructor for template subclasses (e.g., ClocklessIdf5)
 
void init () override
 Initialize the LED controller.
 
void setDriver (fl::shared_ptr< IChannelDriver > driver) FL_NOEXCEPT
 Pre-bind a driver, bypassing ChannelManager::selectDriverForChannel() on every subsequent showPixels() call.
 
void showPixels (PixelController< RGB, 1, 0xFFFFFFFF > &pixels) override
 
- Protected Member Functions inherited from CPixelLEDController< RGB >
 CPixelLEDController (RegistrationMode mode)
 Protected constructor with registration mode.
 
virtual void show (const CRGB *data, int nLeds, fl::u8 brightness) override
 Write the passed in RGB data out to the LEDs managed by this controller.
 
virtual void showColor (const CRGB &data, int nLeds, fl::u8 brightness) override
 Set all the LEDs on the controller to a given color.
 
- Protected Member Functions inherited from fl::CLEDController
 CLEDController (RegistrationMode mode) FL_NOEXCEPT
 Protected constructor with registration mode.
 
- Protected Member Functions inherited from fl::IChannel
 IChannel () FL_NOEXCEPT=default
 
 IChannel (const IChannel &) FL_NOEXCEPT=delete
 
 IChannel (IChannel &&) FL_NOEXCEPT=delete
 
IChanneloperator= (const IChannel &) FL_NOEXCEPT=delete
 
IChanneloperator= (IChannel &&) FL_NOEXCEPT=delete
 

Private Member Functions

 Channel (Channel &&) FL_NOEXCEPT=delete
 
 Channel (const Channel &) FL_NOEXCEPT=delete
 
 Channel (const ChipsetVariant &chipset, fl::span< CRGB > leds, EOrder rgbOrder, const ChannelOptions &options)
 Private constructor (use create() factory method)
 
 Channel (int pin, const ChipsetTimingConfig &timing, fl::span< CRGB > leds, EOrder rgbOrder, const ChannelOptions &options)
 Backwards-compatible constructor (deprecated)
 
Channeloperator= (Channel &&) FL_NOEXCEPT=delete
 
Channeloperator= (const Channel &) FL_NOEXCEPT=delete
 
FL_NO_INLINE fl::shared_ptr< IChannelDriverresolveDynamicDriver ()
 Cold slow-path helper for showPixels() when the driver was NOT pre-bound via setDriver().
 

Static Private Member Functions

static fl::string makeName (i32 id, const fl::optional< fl::string > &configName=fl::optional< fl::string >())
 
static i32 nextId ()
 

Private Attributes

Bus mBus = Bus::AUTO
 
bool mBusWarned = false
 
ChannelDataPtr mChannelData
 
ChipsetVariant mChipset
 
bool mDisabledDriverWarned = false
 
fl::weak_ptr< IChannelDrivermDriver
 
bool mDriverPreBound = false
 
const i32 mId
 
fl::string mName
 
EOrder mRgbOrder
 
fl::ScreenMap mScreenMap
 
ChannelOptions mSettings
 

Friends

template<typename T, typename... Args>
fl::shared_ptr< T > fl::make_shared (Args &&... args) FL_NOEXCEPT
 Friend declaration for make_shared to access private constructor.
 

Additional Inherited Members

- Static Public Attributes inherited from CPixelLEDController< RGB >
static const int LANES_VALUE
 The number of lanes for this controller.
 
static const fl::u32 MASK_VALUE
 The mask for the lanes for this controller.
 
static const EOrder RGB_ORDER_VALUE
 The RGB ordering for this controller.
 
- Protected Types inherited from fl::CLEDController
enum class  RegistrationMode { AutoRegister , DeferRegister }
 Registration mode for constructor. More...
 
- Protected Attributes inherited from fl::CLEDController
bool mEnabled = true
 
fl::span< CRGBmLeds
 span of LED data used by this controller
 
CLEDControllermPNext = nullptr
 pointer to the next LED controller in the linked list
 
ChannelOptions mSettings
 Optional channel settings (correction, temperature, dither, rgbw, affinity)
 
- Static Protected Attributes inherited from fl::CLEDController
static CLEDControllermPHead = nullptr
 pointer to the first LED controller in the linked list
 
static CLEDControllermPTail = nullptr
 pointer to the last LED controller in the linked list
 

The documentation for this class was generated from the following files: