Synthesis from diagrams (especially UML/SysML) is useful:
The stategraph general form is:
stategraph graph_name()
{
state statename0 (subgraph_name, subgraph_entry_state), ... :
entry: statement;
exit: statement;
body: statement;
statement;
... // implied 'body:' statements
statement;
c1 -> statename1: statement;
c2 -> statename2: statement;
c3 -> exit(good);
...
exit(good) -> statename3: statement;
exit(bad) -> statename4: statement;
...
endstate
state statename2:
...
...
endstate
state abort: // A special state that can be
// forced remotely (also called disable).
...
}