FastLED 3.10.8
Loading...
Searching...
No Matches

◆ groupByClockPin()

fl::vector< SpiChannelEngineAdapter::ClockPinGroup > fl::SpiChannelEngineAdapter::groupByClockPin ( fl::span< const ChannelDataPtr > channels)
private

Group channels by clock pin for efficient transmission.

Parameters
channelsSpan of channel data to group
Returns
Vector of groups (clock pin + channels)
Note
Channels with same clock pin can share SPI bus configuration

Definition at line 295 of file spi_channel_adapter.cpp.hpp.

297 {
298 fl::vector<ClockPinGroup> groups;
299
300 for (const auto& channel : channels) {
301 if (!channel) {
302 continue;
303 }
304
305 // Extract clock pin from chipset configuration
306 const auto& chipset = channel->getChipset();
307 if (!chipset.is<SpiChipsetConfig>()) {
308 FL_WARN("SpiChannelEngineAdapter: Non-SPI chipset in groupByClockPin");
309 continue;
310 }
311
312 const SpiChipsetConfig& spiConfig = chipset.get<SpiChipsetConfig>();
313 int clockPin = spiConfig.clockPin;
314
315 // Find existing group for this clock pin
316 ClockPinGroup* existingGroup = nullptr;
317 for (ClockPinGroup& group : groups) {
318 if (group.clockPin == clockPin && group.requestedBus == spiConfig.spiBus) {
319 existingGroup = &group;
320 break;
321 }
322 }
323
324 // Add to existing group or create new group
325 if (existingGroup) {
326 existingGroup->channels.push_back(channel);
327 } else {
328 ClockPinGroup newGroup;
329 newGroup.clockPin = clockPin;
330 newGroup.requestedBus = spiConfig.spiBus;
331 newGroup.channels.push_back(channel);
332 groups.push_back(newGroup);
333 }
334 }
335
336 return groups;
337}
Group data structure for channels with same clock pin.
#define FL_WARN(...)
Definition log.h:437

References fl::SpiChannelEngineAdapter::ClockPinGroup::channels, fl::SpiChannelEngineAdapter::ClockPinGroup::clockPin, fl::SpiChipsetConfig::clockPin, fl::FL_NO_EXCEPT, FL_WARN, fl::vector< T >::push_back(), fl::SpiChannelEngineAdapter::ClockPinGroup::requestedBus, and fl::SpiChipsetConfig::spiBus.

Referenced by show().

+ Here is the call graph for this function:
+ Here is the caller graph for this function: