FastLED 3.10.9
Loading...
Searching...
No Matches

◆ setDriverPriority()

bool fl::ChannelManager::setDriverPriority ( const fl::string & name,
int priority )

Change the priority of a registered driver.

Parameters
nameDriver name (case-sensitive, e.g., "RMT", "SPI", "PARLIO")
priorityNew priority value (higher = preferred, e.g., 9000 > 5000)
Returns
true if driver was found and priority updated, false if name not found
Note
Triggers automatic re-sort of driver list by priority (descending)
Changes take effect immediately on next enqueue()
Higher priority drivers are selected first during canHandle() iteration

Definition at line 311 of file manager.cpp.hpp.

311 {
312 if (name.empty()) {
313 FL_ERROR("ChannelManager::setDriverPriority() - Empty driver name provided");
314 return false;
315 }
316
317 // Find driver and update priority
318 bool found = false;
319 for (auto& entry : mDrivers) {
320 if (entry.name == name) {
321 entry.priority = priority;
322 found = true;
323 FL_DBG("ChannelManager: Driver '" << name << "' priority changed to " << priority);
324 break;
325 }
326 }
327
328 if (!found) {
329 FL_ERROR("ChannelManager::setDriverPriority() - Driver '" << name << "' not found in registry");
330 return false;
331 }
332
333 // Re-sort drivers by priority (descending: higher values first).
334 // 1-4 drivers expected here too — sort_small avoids the quicksort body.
335 fl::sort_small(mDrivers.begin(), mDrivers.end());
336
337 FL_DBG("ChannelManager: Engine list re-sorted after priority change");
338 return true;
339}
fl::vector< EngineEntry > mDrivers
Shared drivers sorted by priority descending (higher values first)
Definition manager.h:327
bool empty() const FL_NO_EXCEPT
#define FL_DBG
Definition log.h:553
#define FL_ERROR(...)
Definition log.h:373
void sort_small(Iterator first, Iterator last, Compare comp) FL_NO_EXCEPT
Definition algorithm.h:619

References FL_DBG, FL_ERROR, fl::FL_NO_EXCEPT, mDrivers, and fl::adl_barrier::sort_small().

+ Here is the call graph for this function: