interface ISensor { in void enable(); in void disable(); out void triggered(); out void disabled(); behaviour b { enum States { Disabled, Enabled, Disabling, Triggered }; States state = States.Disabled; [state.Disabled] { on enable: { state = States.Enabled; } on disable: illegal; } [state.Enabled] { on enable: illegal; on disable: { state = States.Disabling; } on optional: { triggered; state = States.Triggered; } } [state.Disabling] { on enable, disable: illegal; on inevitable: { disabled; state = States.Disabled; } } [state.Triggered] { on enable: illegal; on disable: { state = States.Disabling; } } } }