From 65833649f4779754e90760c1f0fc81ed220c84d0 Mon Sep 17 00:00:00 2001 From: jacqueline Date: Wed, 24 May 2023 13:30:05 +1000 Subject: Add some placeholder splash and menu screens Includes a bunch of misc display fixes. Most significantly, our lvgl tickers was busted. --- src/events/include/event_queue.hpp | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 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 f57af08e..45d766fd 100644 --- a/src/events/include/event_queue.hpp +++ b/src/events/include/event_queue.hpp @@ -7,12 +7,15 @@ #pragma once #include +#include #include "freertos/FreeRTOS.h" #include "freertos/portmacro.h" #include "freertos/queue.h" #include "tinyfsm.hpp" +#include "ui_fsm.hpp" + namespace events { typedef std::function WorkItem; @@ -24,14 +27,23 @@ class EventQueue { return instance; } - template + template auto Dispatch(const Event& ev) -> void { WorkItem* item = new WorkItem( - [=]() { tinyfsm::FsmList::template dispatch(ev); }); - xQueueSend(handle_, &item, portMAX_DELAY); + [=]() { tinyfsm::FsmList::template dispatch(ev); }); + if (std::is_same()) { + xQueueSend(system_handle_, &item, portMAX_DELAY); + } else { + xQueueSend(ui_handle_, &item, portMAX_DELAY); + } + Dispatch(ev); } - auto Service(TickType_t max_wait_time) -> bool; + template + auto Dispatch(const Event& ev) -> void {} + + auto ServiceSystem(TickType_t max_wait_time) -> bool; + auto ServiceUi(TickType_t max_wait_time) -> bool; EventQueue(EventQueue const&) = delete; void operator=(EventQueue const&) = delete; @@ -39,7 +51,8 @@ class EventQueue { private: EventQueue(); - QueueHandle_t handle_; + QueueHandle_t system_handle_; + QueueHandle_t ui_handle_; }; template -- cgit v1.2.3