summaryrefslogtreecommitdiff
path: root/src/events
diff options
context:
space:
mode:
Diffstat (limited to 'src/events')
-rw-r--r--src/events/include/event_queue.hpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/events/include/event_queue.hpp b/src/events/include/event_queue.hpp
index eb8dd0a0..01f37896 100644
--- a/src/events/include/event_queue.hpp
+++ b/src/events/include/event_queue.hpp
@@ -13,6 +13,7 @@
#include "freertos/FreeRTOS.h"
#include "freertos/portmacro.h"
#include "freertos/queue.h"
+#include "system_fsm.hpp"
#include "tinyfsm.hpp"
#include "ui_fsm.hpp"
@@ -33,6 +34,16 @@ class EventQueue {
return instance;
}
+ template <typename Event>
+ auto DispatchFromISR(const Event& ev) -> bool {
+ WorkItem* item = new WorkItem([=]() {
+ tinyfsm::FsmList<system_fsm::SystemState>::template dispatch<Event>(ev);
+ });
+ BaseType_t ret;
+ xQueueSendFromISR(system_handle_, &item, &ret);
+ return ret;
+ }
+
template <typename Event, typename Machine, typename... Machines>
auto Dispatch(const Event& ev) -> void {
WorkItem* item = new WorkItem(