8#include "platforms/is_platform.h"
12template<
typename Condition>
14 const u32 startTime = timeoutMs > 0 ?
millis() : 0;
28 while ((
fl::micros() - spinStart) < spinBudget) {
32 if (timeoutMs > 0 && (
millis() - startTime) >= timeoutMs) {
33 FL_ERROR(
"Timeout occurred while waiting for condition");
40 while (!condition()) {
42 if (timeoutMs > 0 && (
millis() - startTime >= timeoutMs)) {
43 FL_ERROR(
"Timeout occurred while waiting for condition");
FastLED chrono implementation - duration types for time measurements.
bool waitForReadyOrDraining(u32 timeoutMs=1000) FL_NOEXCEPT
bool waitForCondition(Condition condition, u32 timeoutMs=1000) FL_NOEXCEPT
bool waitForReady(u32 timeoutMs=1000) FL_NOEXCEPT
Wait for driver to become READY.
virtual DriverState poll() FL_NOEXCEPT=0
Query driver state and perform maintenance.
static bool isAnyNetworkActive() FL_NOEXCEPT
Task executor — runs registered task runners and manages the run loop.
Centralized logging categories for FastLED hardware interfaces and subsystems.
fl::u32 getWaitSpinBudgetUs() FL_NOEXCEPT
Get the current tiered-wait spin budget (microseconds).
void run(fl::u32 microseconds, ExecFlags flags)
Run selected task subsystems.
fl::u32 millis()
Universal millisecond timer - returns milliseconds since system startup.
fl::u32 micros()
Universal microsecond timer - returns microseconds since system startup.
Base definition for an LED controller.
Cross-platform facade for runtime network activity detection.
@ READY
Hardware idle; ready to accept new transmissions.
@ DRAINING
All channels submitted; still transmitting.
Runtime-tunable microsecond spin budget for the channel-manager and driver wait loops (Phase 1 of #28...