From f94be3db2f2bb6c1b359744cb915683095e4ee80 Mon Sep 17 00:00:00 2001 From: jacqueline Date: Wed, 26 Jul 2023 11:23:36 +1000 Subject: make event queue go faster --- src/events/event_queue.cpp | 40 ++++++++++++++++++++++++---------------- 1 file changed, 24 insertions(+), 16 deletions(-) (limited to 'src/events/event_queue.cpp') diff --git a/src/events/event_queue.cpp b/src/events/event_queue.cpp index 8d60218a..d3a62ef6 100644 --- a/src/events/event_queue.cpp +++ b/src/events/event_queue.cpp @@ -6,34 +6,42 @@ #include "event_queue.hpp" +#include "audio_fsm.hpp" #include "freertos/FreeRTOS.h" #include "freertos/portmacro.h" #include "freertos/queue.h" +#include "system_fsm.hpp" +#include "ui_fsm.hpp" namespace events { -static const std::size_t kMaxPendingEvents = 16; +namespace queues { +static Queue sSystemAndAudio; +static Queue sUi; -EventQueue::EventQueue() - : system_handle_(xQueueCreate(kMaxPendingEvents, sizeof(WorkItem*))), - ui_handle_(xQueueCreate(kMaxPendingEvents, sizeof(WorkItem*))) {} +auto SystemAndAudio() -> Queue* { + return &sSystemAndAudio; +} + +auto Ui() -> Queue* { + return &sUi; +} +} // namespace queues + +static Dispatcher sSystem{queues::SystemAndAudio()}; +static Dispatcher sAudio{queues::SystemAndAudio()}; +static Dispatcher sUi{queues::Ui()}; -auto ServiceQueue(QueueHandle_t queue, TickType_t max_wait_time) -> bool { - WorkItem* item; - if (xQueueReceive(queue, &item, max_wait_time)) { - (*item)(); - delete item; - return true; - } - return false; +auto System() -> Dispatcher& { + return sSystem; } -auto EventQueue::ServiceSystemAndAudio(TickType_t max_wait_time) -> bool { - return ServiceQueue(system_handle_, max_wait_time); +auto Audio() -> Dispatcher& { + return sAudio; } -auto EventQueue::ServiceUi(TickType_t max_wait_time) -> bool { - return ServiceQueue(ui_handle_, max_wait_time); +auto Ui() -> Dispatcher& { + return sUi; } } // namespace events -- cgit v1.2.3