====== 04 Better Practises ====== Some **general** guidelines we found useful working with state machines: * Do not put "real code" inside the state machine, instead trigger a MHL-case * Public requests should always go through the MHL * Exception: When no data is needed for an action, public requests could directly request a transition from the EHL * Public requests should always go through the state machine * Exception: When they don't trigger some action, e.g. only ask the module for its status, read some values from the shift register etc. * All data needed is held in the shift register of the MHL === Transitions === * Place transitions where events occur - don’t go through MHL or EHL “just because” * Transitions should not be triggered from within the state machine itself * Transitions can be called via public requests if the SM module is designed that way * Use the variant input of ''SM Request Transition.vi'' only for error information