diff options
Diffstat (limited to 'src/events/event_queue.cpp')
| -rw-r--r-- | src/events/event_queue.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/events/event_queue.cpp b/src/events/event_queue.cpp new file mode 100644 index 00000000..b0bae857 --- /dev/null +++ b/src/events/event_queue.cpp @@ -0,0 +1,23 @@ +#include "event_queue.hpp" + +#include "freertos/FreeRTOS.h" +#include "freertos/queue.h" + +namespace events { + +static const std::size_t kMaxPendingEvents = 16; + +EventQueue::EventQueue() + : handle_(xQueueCreate(kMaxPendingEvents, sizeof(WorkItem*))) {} + +auto EventQueue::Service(TickType_t max_wait_time) -> bool { + WorkItem* item; + if (xQueueReceive(handle_, &item, max_wait_time)) { + (*item)(); + delete item; + return true; + } + return false; +} + +} // namespace events |
