FastLED 3.10.8
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 304 of file manager.cpp.hpp.

304 {
305 if (name.empty()) {
306 FL_ERROR("ChannelManager::setDriverPriority() - Empty driver name provided");
307 return false;
308 }
309
310 // Find driver and update priority
311 bool found = false;
312 for (auto& entry : mDrivers) {
313 if (entry.name == name) {
314 entry.priority = priority;
315 found = true;
316 FL_DBG("ChannelManager: Driver '" << name << "' priority changed to " << priority);
317 break;
318 }
319 }
320
321 if (!found) {
322 FL_ERROR("ChannelManager::setDriverPriority() - Driver '" << name << "' not found in registry");
323 return false;
324 }
325
326 // Re-sort drivers by priority (descending: higher values first).
327 // 1-4 drivers expected here too — sort_small avoids the quicksort body.
328 fl::sort_small(mDrivers.begin(), mDrivers.end());
329
330 FL_DBG("ChannelManager: Engine list re-sorted after priority change");
331 return true;
332}
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: