You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
731 B
48 lines
731 B
#include <fmt/core.h>
|
|
#include "../fsm.hpp"
|
|
|
|
using namespace fmt;
|
|
|
|
enum MyState {
|
|
START, RUNNING, END
|
|
};
|
|
|
|
enum MyEvent {
|
|
STARTED, PUSH, QUIT
|
|
};
|
|
|
|
class MyFSM : DeadSimpleFSM<MyState, MyEvent> {
|
|
public:
|
|
void event(MyEvent ev) override {
|
|
switch(_state) {
|
|
FSM_STATE(START, start, ev);
|
|
FSM_STATE(RUNNING, push, ev);
|
|
FSM_STATE(END, quit, ev);
|
|
}
|
|
}
|
|
|
|
void start(MyEvent ev) {
|
|
println("<<< START");
|
|
state(RUNNING);
|
|
}
|
|
|
|
void push(MyEvent ev) {
|
|
println("<<< RUN");
|
|
state(RUNNING);
|
|
}
|
|
|
|
void quit(MyEvent ev) {
|
|
println("<<< STOP");
|
|
state(END);
|
|
}
|
|
};
|
|
|
|
int main() {
|
|
MyFSM fsm;
|
|
|
|
fsm.event(STARTED);
|
|
fsm.event(PUSH);
|
|
fsm.event(PUSH);
|
|
fsm.event(PUSH);
|
|
fsm.event(QUIT);
|
|
}
|
|
|