From 6fd588e970470b15936187980829916d0dbe77bb Mon Sep 17 00:00:00 2001 From: jacqueline Date: Thu, 1 Jun 2023 15:28:32 +1000 Subject: Add touchwheel -> encoder adapter --- src/events/include/event_queue.hpp | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'src/events/include/event_queue.hpp') diff --git a/src/events/include/event_queue.hpp b/src/events/include/event_queue.hpp index 45d766fd..eb8dd0a0 100644 --- a/src/events/include/event_queue.hpp +++ b/src/events/include/event_queue.hpp @@ -9,6 +9,7 @@ #include #include +#include "audio_fsm.hpp" #include "freertos/FreeRTOS.h" #include "freertos/portmacro.h" #include "freertos/queue.h" @@ -20,6 +21,11 @@ namespace events { typedef std::function WorkItem; +/* + * Handles communication of events between the system's state machines. Each + * event will be dispatched separately to each FSM, on the correct task for + * that FSM. + */ class EventQueue { public: static EventQueue& GetInstance() { @@ -32,9 +38,11 @@ class EventQueue { WorkItem* item = new WorkItem( [=]() { tinyfsm::FsmList::template dispatch(ev); }); if (std::is_same()) { - xQueueSend(system_handle_, &item, portMAX_DELAY); - } else { xQueueSend(ui_handle_, &item, portMAX_DELAY); + } else if (std::is_same()) { + xQueueSend(audio_handle_, &item, portMAX_DELAY); + } else { + xQueueSend(system_handle_, &item, portMAX_DELAY); } Dispatch(ev); } @@ -44,6 +52,7 @@ class EventQueue { auto ServiceSystem(TickType_t max_wait_time) -> bool; auto ServiceUi(TickType_t max_wait_time) -> bool; + auto ServiceAudio(TickType_t max_wait_time) -> bool; EventQueue(EventQueue const&) = delete; void operator=(EventQueue const&) = delete; @@ -53,6 +62,7 @@ class EventQueue { QueueHandle_t system_handle_; QueueHandle_t ui_handle_; + QueueHandle_t audio_handle_; }; template -- cgit v1.2.3