diff options
| author | jacqueline <me@jacqueline.id.au> | 2023-05-19 21:21:27 +1000 |
|---|---|---|
| committer | jacqueline <me@jacqueline.id.au> | 2023-05-19 21:21:27 +1000 |
| commit | a6ab1504058304012791281f9eb42c262745888f (patch) | |
| tree | f82379cd1e66a8ae2f1afbae5cf083a8ab7acc53 /src/system_fsm/system_fsm.cpp | |
| parent | b320a6a863cf1c10dc79254af41f573730935564 (diff) | |
| download | tangara-fw-a6ab1504058304012791281f9eb42c262745888f.tar.gz | |
Add tinyfsm, start converting core functions to an FSM-based event loop
Diffstat (limited to 'src/system_fsm/system_fsm.cpp')
| -rw-r--r-- | src/system_fsm/system_fsm.cpp | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/system_fsm/system_fsm.cpp b/src/system_fsm/system_fsm.cpp new file mode 100644 index 00000000..c529df5e --- /dev/null +++ b/src/system_fsm/system_fsm.cpp @@ -0,0 +1,24 @@ +#include "system_fsm.hpp" +#include "system_events.hpp" + +namespace system_fsm { + +std::shared_ptr<drivers::GpioExpander> SystemState::sGpioExpander; +std::shared_ptr<drivers::Samd> SystemState::sSamd; + +std::shared_ptr<drivers::TouchWheel> SystemState::sTouch; +std::shared_ptr<drivers::Battery> SystemState::sBattery; +std::shared_ptr<drivers::SdStorage> SystemState::sStorage; +std::shared_ptr<drivers::Display> SystemState::sDisplay; +std::shared_ptr<drivers::AudioDac> SystemState::sDac; +std::shared_ptr<database::Database> SystemState::sDatabase; + +void SystemState::react(const FatalError& err) { + if (!is_in_state<states::Error>()) { + transit<states::Error>(); + } +} + +} // namespace system_fsm + +FSM_INITIAL_STATE(system_fsm::SystemState, system_fsm::states::Booting) |
