11#include <condition_variable>
25 mutable std::mutex _m;
26 mutable std::condition_variable _cv;
27 mutable std::vector<ManualEvent *> _anyEvents;
51 template <std::same_as<ManualEvent>... Events>
54 return WaitForAllSignals(timeoutMs, minTimeoutMs, std::array<
ManualEvent const *,
sizeof...(Events)>{(&events)...});
66 static bool WaitForAllSignals(
int timeoutMs,
int minTimeoutMs, std::span<ManualEvent const* const> events);
74 template <std::same_as<ManualEvent>... Events>
77 return WaitForAnySignal(timeoutMs, std::array<
ManualEvent const *,
sizeof...(Events)>{(&events)...});
86 static bool WaitForAnySignal(
int timeoutMs, std::span<ManualEvent const* const> events);
Manual Event object, useful for signaling other threads about an event.
Definition ManualEvent.hpp:22
static bool WaitForAllSignals(int timeoutMs, int minTimeoutMs, Events const &... events)
Waits for all events to be signaled, or for timeout.
Definition ManualEvent.hpp:52
void Reset()
Reset the event signal to false and force any threads waiting on WaitForSignal() to time out.
void Clear()
Clear the event signal without signaling other threads.
void Signal()
Signal the event.
static bool WaitForAnySignal(int timeoutMs, Events const &... events)
Waits for any event to be signaled, or for timeout.
Definition ManualEvent.hpp:75
ManualEvent(bool initialSignal=false)
static bool WaitForAllSignals(int timeoutMs, int minTimeoutMs, std::span< ManualEvent const *const > events)
Waits for all events to be signaled, or for timeout.
static bool WaitForAnySignal(int timeoutMs, std::span< ManualEvent const *const > events)
Waits for any event to be signaled, or for timeout.
bool WaitForSignal(int timeoutMs) const
Wait for event to be signaled, or for timeout.
#define CTREXPORT
Definition export.h:14
Definition motor_constants.h:14