- Notifications
You must be signed in to change notification settings - Fork19
Open
Description
Implementation using HsmEventDispatcherSTD:
#include<chrono>#include<thread>#include<hsmcpp/hsm.hpp>#include<hsmcpp/HsmEventDispatcherSTD.hpp>enumclassStates{ OFF, ON};enumclassEvents{ SWITCH};intmain(constint argc,constchar**argv){ std::shared_ptr<hsmcpp::HsmEventDispatcherSTD> dispatcher =hsmcpp::HsmEventDispatcherSTD::create(); hsmcpp::HierarchicalStateMachine<States, Events>hsm(States::OFF); hsm.initialize(dispatcher); hsm.registerState(States::OFF, [&hsm](const VariantList_t& args) {printf("Off\n");std::this_thread::sleep_for(std::chrono::milliseconds(1000)); hsm.transition(Events::SWITCH); }); hsm.registerState(States::ON, [&hsm](const VariantList_t& args) {printf("On\n");std::this_thread::sleep_for(std::chrono::milliseconds(1000)); hsm.transition(Events::SWITCH); }); hsm.registerTransition(States::OFF, States::ON, Events::SWITCH); hsm.registerTransition(States::ON, States::OFF, Events::SWITCH); hsm.transition(Events::SWITCH); dispatcher->join();return0;}
The classhsmcpp::HierarchicalStateMachine is not a template, so this example cannot be built.
Metadata
Metadata
Assignees
Labels
No labels