Skip to content

Version 1.3

Compare
Choose a tag to compare
@finger563 finger563 released this 20 Jul 15:32

Software Generator Changes:

  • allows using _root-> when accessing non-static member of the root class (in the Definitions / Declarations)
  • Updates the scoping to be StateMachine::{{{HFSM name}}}::Event
  • Updates all states to have the _root pointer mentioned above
  • Removes static & global allocation of all state objects - instead no state objects are allocated for you - you must allocate an object of type StateMachine::{{{HFSM name}}}::Root which itself allocates the needed state objects and configures them.
  • Moves the eventFactory into the StateMachine::{{{HFSM name}}}::Root class
  • Added Declarations to the generation of all states - for local custom data; should only be used in the state's functions, not within transition actions.

Consistency Checks

  • Local transitions must have events
  • Internal transitions must have events
  • Initial states must have exactly one transition
  • Initial state transitions cannot have guards or events
  • No two sibling states can have the same name
  • States cannot have more than one initial state
  • States must have an initial sub state selected
  • States should not have any transitions without an Event unless
    they contain an End State
  • Any substate containing an End State must have an End Transition
    (no event) leaving the state
  • States cannot have more than one End Transition
  • End Transitions cannot have guard conditions
  • Choice pseudostate transitions (out of the choice) cannot have
    events
  • Cannot have multiple events with similar names
    (e.g. capitalization difference)
  • Choice pseudostates must have a default (unguarded) transition
  • No two transitions out of a state should have the same Event /
    Guard combination
  • All complete states containing children must have an initial
    state configured and properly wired up to transition to one of their
    children
  • All leaf states must have a valid non-zero timer period (note:
    timer periods for non-leaf states are unused)
  • No substates (e.g. any state other than the root) should have
    Includes set.

Simulator Changes:

  • fix context menu / selection so that you can properly re-parent / arrange / remove objects using the context menu
  • better handling / checking of initial states in simulator - with the checks either becoming alerts (popups) or warnings in the log panel
  • better handling of choice psuedostates - pressing None is equivalent to selecting the default transition for the choice psuedostate
  • better warning of choice pseudostates - they must have default transitions out of them, so the user is now warned (in the log panel) if a choice psuedostate does not have a default transition
  • Ability to handle an end state connected (even through choice pseudostates) to an initial state.