diff options
| author | jacqueline <me@jacqueline.id.au> | 2023-06-30 17:05:11 +1000 |
|---|---|---|
| committer | jacqueline <me@jacqueline.id.au> | 2023-06-30 17:05:11 +1000 |
| commit | 0347555d5b2314e1be58261ef29fa13a76c039e6 (patch) | |
| tree | e38879c0dc8bbf0a58057d22b26f28c0a9b86e93 /src/events | |
| parent | 9763cc955c4f3b2c2af54b61c2c5ad77afef9603 (diff) | |
| download | tangara-fw-0347555d5b2314e1be58261ef29fa13a76c039e6.tar.gz | |
Start on converting gpio expander interupts to fsm events
Diffstat (limited to 'src/events')
| -rw-r--r-- | src/events/include/event_queue.hpp | 11 |
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( |
