From a6ab1504058304012791281f9eb42c262745888f Mon Sep 17 00:00:00 2001 From: jacqueline Date: Fri, 19 May 2023 21:21:27 +1000 Subject: Add tinyfsm, start converting core functions to an FSM-based event loop --- src/events/event_queue.cpp | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 src/events/event_queue.cpp (limited to 'src/events/event_queue.cpp') 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 -- cgit v1.2.3