13 {
14 const u32 startTime = timeoutMs > 0 ?
millis() : 0;
15
16
17 if (condition()) {
18 return true;
19 }
20
21
22
23
24 {
26 if (spinBudget > 0) {
28 while ((
fl::micros() - spinStart) < spinBudget) {
29 if (condition()) {
30 return true;
31 }
32 if (timeoutMs > 0 && (
millis() - startTime) >= timeoutMs) {
33 FL_ERROR(
"Timeout occurred while waiting for condition");
34 return false;
35 }
36 }
37 }
38 }
39
40 while (!condition()) {
41
42 if (timeoutMs > 0 && (
millis() - startTime >= timeoutMs)) {
43 FL_ERROR(
"Timeout occurred while waiting for condition");
44 return false;
45 }
46
47
48
49
50
52
54 } else {
55
57 }
58 }
59
60 return true;
61}
static bool isAnyNetworkActive() FL_NO_EXCEPT
fl::u32 getWaitSpinBudgetUs() FL_NO_EXCEPT
Get the current tiered-wait spin budget (microseconds).
void yield_system(fl::u32 microseconds) FL_NO_EXCEPT
OS-level yield only: same behavior as run(us, ExecFlags::SYSTEM).
fl::u32 millis() FL_NO_EXCEPT
Universal millisecond timer - returns milliseconds since system startup.
fl::u32 micros() FL_NO_EXCEPT
Universal microsecond timer - returns microseconds since system startup.