FastLED 3.9.15
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 297 of file spi_channel_adapter.cpp.hpp.

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

References fl::SpiChannelEngineAdapter::ClockPinGroup::channels, fl::SpiChannelEngineAdapter::ClockPinGroup::clockPin, fl::SpiChipsetConfig::clockPin, FL_WARN, fl::vector< T >::push_back(), and fl::vector_basic::size().

Referenced by show().

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