stateDiagram INIT INIT : INIT INIT : enter / #123; HSM_INIT_enter()#59; #125; INIT : exit / #123; HSM_INIT_exit()#59; #125; WAIT WAIT : WAIT WAIT : enter / #123; HSM_WAIT_enter()#59; #125; WAIT : exit / #123; HSM_WAIT_exit()#59; #125; state PROC { PROC_OFF PROC_OFF : PROC_OFF PROC_OFF : enter / #123; HSM_PROC_OFF_enter()#59; #125; PROC_OFF : exit / #123; HSM_PROC_OFF_exit()#59; #125; state PROC_ON { state "$HC" as PROC_ON.(HistoryContinue) PROC_ON_WAIT PROC_ON_WAIT : PROC_ON_WAIT PROC_ON_WAIT : enter / #123; HSM_PROC_ON_WAIT_enter()#59; #125; PROC_ON_WAIT : exit / #123; HSM_PROC_ON_WAIT_exit()#59; #125; state PROC_ON_EXEC { state "$HC" as PROC_ON_EXEC.(HistoryContinue) PROC_ON_EXEC_SINGLE PROC_ON_EXEC_SINGLE : PROC_ON_EXEC_SINGLE PROC_ON_EXEC_SINGLE : enter / #123; HSM_PROC_ON_EXEC_SINGLE_enter()#59; #125; PROC_ON_EXEC_SINGLE : exit / #123; HSM_PROC_ON_EXEC_SINGLE_exit()#59; #125; PROC_ON_EXEC_MULTI PROC_ON_EXEC_MULTI : PROC_ON_EXEC_MULTI PROC_ON_EXEC_MULTI : enter / #123; HSM_PROC_ON_EXEC_MULTI_enter()#59; #125; PROC_ON_EXEC_MULTI : exit / #123; HSM_PROC_ON_EXEC_MULTI_exit()#59; #125; %% Initial state name as "." so that it fits in black circle shape. %% See https://github.com/StateSmith/StateSmith/issues/404 state "." as PROC_ON_EXEC.(InitialState) state "$H" as PROC_ON_EXEC.(History) } %% Initial state name as "." so that it fits in black circle shape. %% See https://github.com/StateSmith/StateSmith/issues/404 state "." as PROC_ON.(InitialState) } %% Initial state name as "." so that it fits in black circle shape. %% See https://github.com/StateSmith/StateSmith/issues/404 state "." as PROC.(InitialState) state "$H" as PROC.(History) } %% Initial state name as "." so that it fits in black circle shape. %% See https://github.com/StateSmith/StateSmith/issues/404 state "." as ROOT.(InitialState) INIT --> WAIT : GOTO_WAIT WAIT --> PROC : GOTO_PROC PROC --> WAIT : GOTO_WAIT PROC_OFF --> PROC_ON : PROC_ON PROC_ON --> PROC_OFF : PROC_OFF PROC_ON_WAIT --> PROC_ON_EXEC : PROC_EXEC PROC_ON_EXEC --> PROC_ON_WAIT : PROC_WAIT PROC_ON_EXEC_SINGLE --> PROC_ON_EXEC_MULTI : PROC_MULTI PROC_ON_EXEC_MULTI --> PROC_ON_EXEC_SINGLE : PROC_SINGLE PROC_ON_EXEC.(InitialState) --> PROC_ON_EXEC.(History) PROC_ON_EXEC.(History) --> PROC_ON_EXEC_SINGLE PROC_ON.(InitialState) --> PROC_ON_WAIT PROC.(InitialState) --> PROC.(History) PROC.(History) --> PROC_OFF ROOT.(InitialState) --> INIT