FastLED 3.9.15
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 276 of file manager.cpp.hpp.

276 {
277 if (name.empty()) {
278 FL_ERROR("ChannelManager::setDriverPriority() - Empty driver name provided");
279 return false;
280 }
281
282 // Find driver and update priority
283 bool found = false;
284 for (auto& entry : mDrivers) {
285 if (entry.name == name) {
286 entry.priority = priority;
287 found = true;
288 FL_DBG("ChannelManager: Driver '" << name << "' priority changed to " << priority);
289 break;
290 }
291 }
292
293 if (!found) {
294 FL_ERROR("ChannelManager::setDriverPriority() - Driver '" << name << "' not found in registry");
295 return false;
296 }
297
298 // Re-sort drivers by priority (descending: higher values first).
299 // 1-4 drivers expected here too — sort_small avoids the quicksort body.
300 fl::sort_small(mDrivers.begin(), mDrivers.end());
301
302 FL_DBG("ChannelManager: Engine list re-sorted after priority change");
303 return true;
304}
fl::vector< EngineEntry > mDrivers
Shared drivers sorted by priority descending (higher values first)
Definition manager.h:287
bool empty() const FL_NOEXCEPT
#define FL_ERROR(X)
Definition log.h:219
#define FL_DBG
Definition log.h:388
void sort_small(Iterator first, Iterator last, Compare comp) FL_NOEXCEPT
Definition algorithm.h:612

References fl::basic_string::empty(), FL_DBG, FL_ERROR, mDrivers, and fl::sort_small().

+ Here is the call graph for this function: