Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenrik Rentz-Reichert2019-10-25 12:50:30 +0000
committerHenrik Rentz-Reichert2019-10-25 15:15:59 +0000
commitdd5d8f2570399e7f2c7012ee16e130936ea3ee45 (patch)
treec65db585baa1fe40106cd1aace7c7cef37f0d227
parent4125ab19d6fbe82d60f55c7a4304f6ffe6e72a72 (diff)
downloadorg.eclipse.etrice-dd5d8f2570399e7f2c7012ee16e130936ea3ee45.tar.gz
org.eclipse.etrice-dd5d8f2570399e7f2c7012ee16e130936ea3ee45.tar.xz
org.eclipse.etrice-dd5d8f2570399e7f2c7012ee16e130936ea3ee45.zip
Bug 552375 - [doc] Document semantics of transition point
Added a section in room-concepts.md explaining transition traversal and the search for matching triggers. Change-Id: Id956bcba90d663e281d5f3efc2247557ea576376
-rw-r--r--plugins/org.eclipse.etrice.doc/online-doc/content/feature-reference.md26
-rw-r--r--plugins/org.eclipse.etrice.doc/online-doc/content/room-concepts.md26
-rw-r--r--plugins/org.eclipse.etrice.doc/targets/contextHelp.xml198
-rw-r--r--plugins/org.eclipse.etrice.doc/targets/eclipse-help/room-concepts.html25
4 files changed, 163 insertions, 112 deletions
diff --git a/plugins/org.eclipse.etrice.doc/online-doc/content/feature-reference.md b/plugins/org.eclipse.etrice.doc/online-doc/content/feature-reference.md
index dc51f905b..ae0d21566 100644
--- a/plugins/org.eclipse.etrice.doc/online-doc/content/feature-reference.md
+++ b/plugins/org.eclipse.etrice.doc/online-doc/content/feature-reference.md
@@ -3614,6 +3614,19 @@ The MSCLogging is activated by default, but can be set manually in the [Generati
+[TextualROOMEditor]: #textualroomeditor
+[OutlineView]: #outlineview
+[GraphicalBehaviorEditor]: #graphicalbehavioreditor
+[GraphicalStructureEditor]: #graphicalstructureeditor
+[StructureEditorPalette]: #structureeditorpalette
+[ActorRefPropertyDialog]: #actorrefpropertydialog
+[PortPropertyDialog]: #portpropertydialog
+[SPPPropertyDialog]: #spppropertydialog
+[CCodeGenerator]: #ccodegenerator
+[JavaCodeGenerator]: #javacodegenerator
+[CPPCodeGenerator]: #cppcodegenerator
+[GenerationOptions]: #generationoptions
+[MSCLogging]: #msclogging
[AnnotationType]: #annotationtype
[Annotation]: #annotation
[Inheritance]: #inheritance
@@ -3662,16 +3675,3 @@ The MSCLogging is activated by default, but can be set manually in the [Generati
[SAP]: #sap
[ServiceImplementation]: #serviceimplementation
[SPP]: #spp
-[TextualROOMEditor]: #textualroomeditor
-[OutlineView]: #outlineview
-[GraphicalBehaviorEditor]: #graphicalbehavioreditor
-[GraphicalStructureEditor]: #graphicalstructureeditor
-[StructureEditorPalette]: #structureeditorpalette
-[ActorRefPropertyDialog]: #actorrefpropertydialog
-[PortPropertyDialog]: #portpropertydialog
-[SPPPropertyDialog]: #spppropertydialog
-[CCodeGenerator]: #ccodegenerator
-[JavaCodeGenerator]: #javacodegenerator
-[CPPCodeGenerator]: #cppcodegenerator
-[GenerationOptions]: #generationoptions
-[MSCLogging]: #msclogging
diff --git a/plugins/org.eclipse.etrice.doc/online-doc/content/room-concepts.md b/plugins/org.eclipse.etrice.doc/online-doc/content/room-concepts.md
index 81ef0d486..02cf9c803 100644
--- a/plugins/org.eclipse.etrice.doc/online-doc/content/room-concepts.md
+++ b/plugins/org.eclipse.etrice.doc/online-doc/content/room-concepts.md
@@ -593,6 +593,32 @@ For event driven systems a finite state machine is ideal for processing the stre
We distinguish flat and hierarchical state machines.
+### Semantics
+
+State machine execution begins at the top level by traversal of the initial transition. During traversal of a transition its (optional) action code is executed.
+
+So called triggered transitions start at a state or a transition point. The simple most trigger is a pair of port (or SAP) and message.
+
+For the following we will discuss hierarchical finite state machines, which include flat state machines as a special case.
+
+Assume the state machine is in an arbitrary leaf state (states with no nested state machines). Then when an event occurs, a transition with a matching trigger is searched. This is done level by level from the state graph of the current state to the top level state graph. First all outgoing transitions are considered, then handler transitions. If no match was found this is repeated one level higher and so on to the top level. If no match is found at all, the event is discarded.
+
+Then the transition which was triggered is traversed.
+
+For any transition it can continue in several ways:
+
+* _If it starts_ from a state or is a continuation after an entry or exit point
+ * _and ends_ at a leaf state, the state machine will assume this state
+ * _and ends_ at a state with sub graph, it is called a transition to history and the last active state inside the target state is assumed
+ * _and ends_ at a choice point, the choice point branch conditions are evaluated (in arbitrary order). The first transition whose condition is met will be traversed or else the default branch is taken
+* _if it starts_ in a transition point, then in any case the current state is left, thereby executing all exit codes until the level of the transition point
+ * _and ends_ in the same transition point then the transition is traversed and the current state is activated again, thereby executing all entry codes
+ * _else_ the transition is traversed and processing continues
+ * _eTrice specific variant (not contained in ROOM)_: the transition point can be a handler. In this case no entry and exit codes of states are executed
+* if the transition ends in an entry or exit point the traversal is continued on the other side of this point, entering or leaving the subgraph resp.
+
+All this is looped until the new leaf state is reached.
+
### Notation
We distinguish flat finite state machines (with just one level of hierarchy) and hierarchical ones.
diff --git a/plugins/org.eclipse.etrice.doc/targets/contextHelp.xml b/plugins/org.eclipse.etrice.doc/targets/contextHelp.xml
index afe1526c8..585ceed92 100644
--- a/plugins/org.eclipse.etrice.doc/targets/contextHelp.xml
+++ b/plugins/org.eclipse.etrice.doc/targets/contextHelp.xml
@@ -1,6 +1,93 @@
<!-- generated by featurizer -->
<contexts>
+<context id="featureContextHelp_TextualROOMEditor" title="TextualROOMEditor">
+<description>Textual model editor</description>
+<topic href="targets/eclipse-help/feature-reference.html#textualroomeditor" label="TextualROOMEditor"/>
+<topic href="targets/eclipse-help/feature-reference.html#textualroomeditor" label="ROOMLanguage"/>
+</context>
+
+<context id="featureContextHelp_OutlineView" title="OutlineView">
+<description>Displays an overview of all elements in the textual editor.</description>
+<topic href="targets/eclipse-help/feature-reference.html#outlineview" label="OutlineView"/>
+<topic href="targets/eclipse-help/feature-reference.html#outlineview" label="TextualROOMEditor"/>
+</context>
+
+<context id="featureContextHelp_GraphicalBehaviorEditor" title="GraphicalBehaviorEditor">
+<description>The GraphicalBehaviorEditor allows to edit the ActorClass' StateMachine. It is possible to create (hierarchical) states and transitions to model complex behavior in a convenient way.</description>
+<topic href="targets/eclipse-help/feature-reference.html#graphicalbehavioreditor" label="GraphicalBehaviorEditor"/>
+<topic href="targets/eclipse-help/feature-reference.html#graphicalbehavioreditor" label="StateMachine"/>
+</context>
+
+<context id="featureContextHelp_GraphicalStructureEditor" title="GraphicalStructureEditor">
+<description>The Structure Editor allows to edit the ActorClass' Structure in a convenient way. It is possible to create and arrange actor references and ports and to create bindings and layer connections.</description>
+<topic href="targets/eclipse-help/feature-reference.html#graphicalstructureeditor" label="GraphicalStructureEditor"/>
+<topic href="targets/eclipse-help/feature-reference.html#graphicalstructureeditor" label="ActorClass"/>
+<topic href="targets/eclipse-help/feature-reference.html#graphicalstructureeditor" label="ActorRef"/>
+<topic href="targets/eclipse-help/feature-reference.html#graphicalstructureeditor" label="Port"/>
+<topic href="targets/eclipse-help/feature-reference.html#graphicalstructureeditor" label="SAP"/>
+<topic href="targets/eclipse-help/feature-reference.html#graphicalstructureeditor" label="Binding"/>
+<topic href="targets/eclipse-help/feature-reference.html#graphicalstructureeditor" label="LayerConnection"/>
+</context>
+
+<context id="featureContextHelp_StructureEditorPalette" title="StructureEditorPalette">
+<description>The palette creates central structural elements of an ActorClass.</description>
+<topic href="targets/eclipse-help/feature-reference.html#structureeditorpalette" label="StructureEditorPalette"/>
+<topic href="targets/eclipse-help/feature-reference.html#structureeditorpalette" label="GraphicalStructureEditor"/>
+</context>
+
+<context id="featureContextHelp_ActorRefPropertyDialog" title="ActorRefPropertyDialog">
+<description>A dialog to edit properties of an ActorRef.</description>
+<topic href="targets/eclipse-help/feature-reference.html#actorrefpropertydialog" label="ActorRefPropertyDialog"/>
+<topic href="targets/eclipse-help/feature-reference.html#actorrefpropertydialog" label="ActorRef"/>
+<topic href="targets/eclipse-help/feature-reference.html#actorrefpropertydialog" label="GraphicalStructureEditor"/>
+</context>
+
+<context id="featureContextHelp_PortPropertyDialog" title="PortPropertyDialog">
+<description>A dialog to edit properties of an Port.</description>
+<topic href="targets/eclipse-help/feature-reference.html#portpropertydialog" label="PortPropertyDialog"/>
+<topic href="targets/eclipse-help/feature-reference.html#portpropertydialog" label="Port"/>
+<topic href="targets/eclipse-help/feature-reference.html#portpropertydialog" label="GraphicalStructureEditor"/>
+</context>
+
+<context id="featureContextHelp_SPPPropertyDialog" title="SPPPropertyDialog">
+<description>A dialog to edit properties of a SPP.</description>
+<topic href="targets/eclipse-help/feature-reference.html#spppropertydialog" label="SPPPropertyDialog"/>
+<topic href="targets/eclipse-help/feature-reference.html#spppropertydialog" label="SPP"/>
+<topic href="targets/eclipse-help/feature-reference.html#spppropertydialog" label="GraphicalStructureEditor"/>
+</context>
+
+<context id="featureContextHelp_CCodeGenerator" title="CCodeGenerator">
+<description></description>
+<topic href="targets/eclipse-help/feature-reference.html#ccodegenerator" label="CCodeGenerator"/>
+</context>
+
+<context id="featureContextHelp_JavaCodeGenerator" title="JavaCodeGenerator">
+<description></description>
+<topic href="targets/eclipse-help/feature-reference.html#javacodegenerator" label="JavaCodeGenerator"/>
+</context>
+
+<context id="featureContextHelp_CPPCodeGenerator" title="CPPCodeGenerator">
+<description></description>
+<topic href="targets/eclipse-help/feature-reference.html#cppcodegenerator" label="CPPCodeGenerator"/>
+</context>
+
+<context id="featureContextHelp_GenerationOptions" title="GenerationOptions">
+<description>Mechanism to adjust the generation.</description>
+<topic href="targets/eclipse-help/feature-reference.html#generationoptions" label="GenerationOptions"/>
+<topic href="targets/eclipse-help/feature-reference.html#generationoptions" label="CCodeGenerator"/>
+<topic href="targets/eclipse-help/feature-reference.html#generationoptions" label="JavaCodeGenerator"/>
+<topic href="targets/eclipse-help/feature-reference.html#generationoptions" label="MSCLogging"/>
+</context>
+
+<context id="featureContextHelp_MSCLogging" title="MSCLogging">
+<description>Runtime logger for event-driven Messages, represented as a Message Sequence Chart.</description>
+<topic href="targets/eclipse-help/feature-reference.html#msclogging" label="MSCLogging"/>
+<topic href="targets/eclipse-help/feature-reference.html#msclogging" label="GenerationOptions"/>
+<topic href="targets/eclipse-help/feature-reference.html#msclogging" label="CCodeGenerator"/>
+<topic href="targets/eclipse-help/feature-reference.html#msclogging" label="JavaCodeGenerator"/>
+</context>
+
<context id="featureContextHelp_AnnotationType" title="AnnotationType">
<description>AnnotationTypes can be used to tag ROOM classes for further custom processing</description>
<topic href="targets/eclipse-help/feature-reference.html#annotationtype" label="AnnotationType"/>
@@ -69,9 +156,9 @@
<description>An actor is the basic structural building block for building systems with ROOM</description>
<topic href="targets/eclipse-help/feature-reference.html#actorclass" label="ActorClass"/>
<topic href="targets/eclipse-help/feature-reference.html#actorclass" label="Inheritance"/>
+<topic href="targets/eclipse-help/feature-reference.html#actorclass" label="GraphicalStructureEditor"/>
<topic href="targets/eclipse-help/feature-reference.html#actorclass" label="LogicalModel"/>
<topic href="targets/eclipse-help/feature-reference.html#actorclass" label="ActorRef"/>
-<topic href="targets/eclipse-help/feature-reference.html#actorclass" label="GraphicalStructureEditor"/>
</context>
<context id="featureContextHelp_SubSystemClass" title="SubSystemClass">
@@ -85,18 +172,18 @@
<description>A StateMachine describes the state based, event driven behavior of an ActorClass</description>
<topic href="targets/eclipse-help/feature-reference.html#statemachine" label="StateMachine"/>
<topic href="targets/eclipse-help/feature-reference.html#statemachine" label="Inheritance"/>
+<topic href="targets/eclipse-help/feature-reference.html#statemachine" label="GraphicalBehaviorEditor"/>
<topic href="targets/eclipse-help/feature-reference.html#statemachine" label="ActorClass"/>
<topic href="targets/eclipse-help/feature-reference.html#statemachine" label="State"/>
<topic href="targets/eclipse-help/feature-reference.html#statemachine" label="RefinedState"/>
-<topic href="targets/eclipse-help/feature-reference.html#statemachine" label="GraphicalBehaviorEditor"/>
</context>
<context id="featureContextHelp_State" title="State">
<description>A State is a node in the state graph representation of the state machine</description>
-<topic href="targets/eclipse-help/feature-reference.html#simplestate" label="State"/>
-<topic href="targets/eclipse-help/feature-reference.html#simplestate" label="Inheritance"/>
-<topic href="targets/eclipse-help/feature-reference.html#simplestate" label="StateMachine"/>
-<topic href="targets/eclipse-help/feature-reference.html#simplestate" label="State"/>
+<topic href="targets/eclipse-help/feature-reference.html#state" label="State"/>
+<topic href="targets/eclipse-help/feature-reference.html#state" label="Inheritance"/>
+<topic href="targets/eclipse-help/feature-reference.html#state" label="StateMachine"/>
+<topic href="targets/eclipse-help/feature-reference.html#state" label="State"/>
</context>
<context id="featureContextHelp_RefinedState" title="RefinedState">
@@ -186,10 +273,10 @@
<topic href="targets/eclipse-help/feature-reference.html#actorref" label="ActorRef"/>
<topic href="targets/eclipse-help/feature-reference.html#actorref" label="ActorClass"/>
<topic href="targets/eclipse-help/feature-reference.html#actorref" label="Replication"/>
-<topic href="targets/eclipse-help/feature-reference.html#actorref" label="ActorClass"/>
-<topic href="targets/eclipse-help/feature-reference.html#actorref" label="SubSystemClass"/>
<topic href="targets/eclipse-help/feature-reference.html#actorref" label="GraphicalStructureEditor"/>
<topic href="targets/eclipse-help/feature-reference.html#actorref" label="ActorRefPropertyDialog"/>
+<topic href="targets/eclipse-help/feature-reference.html#actorref" label="ActorClass"/>
+<topic href="targets/eclipse-help/feature-reference.html#actorref" label="SubSystemClass"/>
</context>
<context id="featureContextHelp_Binding" title="Binding">
@@ -197,9 +284,9 @@
<topic href="targets/eclipse-help/feature-reference.html#binding" label="Binding"/>
<topic href="targets/eclipse-help/feature-reference.html#binding" label="Port"/>
<topic href="targets/eclipse-help/feature-reference.html#binding" label="Port"/>
+<topic href="targets/eclipse-help/feature-reference.html#binding" label="GraphicalStructureEditor"/>
<topic href="targets/eclipse-help/feature-reference.html#binding" label="ActorClass"/>
<topic href="targets/eclipse-help/feature-reference.html#binding" label="SubSystemClass"/>
-<topic href="targets/eclipse-help/feature-reference.html#binding" label="GraphicalStructureEditor"/>
</context>
<context id="featureContextHelp_LayerConnection" title="LayerConnection">
@@ -207,9 +294,9 @@
<topic href="targets/eclipse-help/feature-reference.html#layerconnection" label="LayerConnection"/>
<topic href="targets/eclipse-help/feature-reference.html#layerconnection" label="SAP"/>
<topic href="targets/eclipse-help/feature-reference.html#layerconnection" label="SPP"/>
+<topic href="targets/eclipse-help/feature-reference.html#layerconnection" label="GraphicalStructureEditor"/>
<topic href="targets/eclipse-help/feature-reference.html#layerconnection" label="ActorClass"/>
<topic href="targets/eclipse-help/feature-reference.html#layerconnection" label="SubSystemClass"/>
-<topic href="targets/eclipse-help/feature-reference.html#layerconnection" label="GraphicalStructureEditor"/>
</context>
<context id="featureContextHelp_ExecutionType" title="ExecutionType">
@@ -302,9 +389,9 @@
<description>A Service Access Point is similar to a Port, but uses a LayerConnection for wiring</description>
<topic href="targets/eclipse-help/feature-reference.html#sap" label="SAP"/>
<topic href="targets/eclipse-help/feature-reference.html#sap" label="ProtocolClass"/>
+<topic href="targets/eclipse-help/feature-reference.html#sap" label="GraphicalStructureEditor"/>
<topic href="targets/eclipse-help/feature-reference.html#sap" label="ActorClass"/>
<topic href="targets/eclipse-help/feature-reference.html#sap" label="LayerConnection"/>
-<topic href="targets/eclipse-help/feature-reference.html#sap" label="GraphicalStructureEditor"/>
</context>
<context id="featureContextHelp_ServiceImplementation" title="ServiceImplementation">
@@ -318,96 +405,9 @@
<description>A Service Provision Point is the counterpart of a SAP</description>
<topic href="targets/eclipse-help/feature-reference.html#spp" label="SPP"/>
<topic href="targets/eclipse-help/feature-reference.html#spp" label="ProtocolClass"/>
+<topic href="targets/eclipse-help/feature-reference.html#spp" label="SPPPropertyDialog"/>
<topic href="targets/eclipse-help/feature-reference.html#spp" label="ActorClass"/>
<topic href="targets/eclipse-help/feature-reference.html#spp" label="LayerConnection"/>
<topic href="targets/eclipse-help/feature-reference.html#spp" label="ServiceImplementation"/>
-<topic href="targets/eclipse-help/feature-reference.html#spp" label="SPPPropertyDialog"/>
-</context>
-
-<context id="featureContextHelp_TextualROOMEditor" title="TextualROOMEditor">
-<description>Textual model editor</description>
-<topic href="targets/eclipse-help/feature-reference.html#textualroomeditor" label="TextualROOMEditor"/>
-<topic href="targets/eclipse-help/feature-reference.html#textualroomeditor" label="ROOMLanguage"/>
-</context>
-
-<context id="featureContextHelp_OutlineView" title="OutlineView">
-<description>Displays an overview of all elements in the textual editor.</description>
-<topic href="targets/eclipse-help/feature-reference.html#outlineview" label="OutlineView"/>
-<topic href="targets/eclipse-help/feature-reference.html#outlineview" label="TextualROOMEditor"/>
-</context>
-
-<context id="featureContextHelp_GraphicalBehaviorEditor" title="GraphicalBehaviorEditor">
-<description>The GraphicalBehaviorEditor allows to edit the ActorClass' StateMachine. It is possible to create (hierarchical) states and transitions to model complex behavior in a convenient way.</description>
-<topic href="targets/eclipse-help/feature-reference.html#graphicalbehavioreditor" label="GraphicalBehaviorEditor"/>
-<topic href="targets/eclipse-help/feature-reference.html#graphicalbehavioreditor" label="StateMachine"/>
-</context>
-
-<context id="featureContextHelp_GraphicalStructureEditor" title="GraphicalStructureEditor">
-<description>The Structure Editor allows to edit the ActorClass' Structure in a convenient way. It is possible to create and arrange actor references and ports and to create bindings and layer connections.</description>
-<topic href="targets/eclipse-help/feature-reference.html#graphicalstructureeditor" label="GraphicalStructureEditor"/>
-<topic href="targets/eclipse-help/feature-reference.html#graphicalstructureeditor" label="ActorClass"/>
-<topic href="targets/eclipse-help/feature-reference.html#graphicalstructureeditor" label="ActorRef"/>
-<topic href="targets/eclipse-help/feature-reference.html#graphicalstructureeditor" label="Port"/>
-<topic href="targets/eclipse-help/feature-reference.html#graphicalstructureeditor" label="SAP"/>
-<topic href="targets/eclipse-help/feature-reference.html#graphicalstructureeditor" label="Binding"/>
-<topic href="targets/eclipse-help/feature-reference.html#graphicalstructureeditor" label="LayerConnection"/>
-</context>
-
-<context id="featureContextHelp_StructureEditorPalette" title="StructureEditorPalette">
-<description>The palette creates central structural elements of an ActorClass.</description>
-<topic href="targets/eclipse-help/feature-reference.html#structureeditorpalette" label="StructureEditorPalette"/>
-<topic href="targets/eclipse-help/feature-reference.html#structureeditorpalette" label="GraphicalStructureEditor"/>
-</context>
-
-<context id="featureContextHelp_ActorRefPropertyDialog" title="ActorRefPropertyDialog">
-<description>A dialog to edit properties of an ActorRef.</description>
-<topic href="targets/eclipse-help/feature-reference.html#actorrefpropertydialog" label="ActorRefPropertyDialog"/>
-<topic href="targets/eclipse-help/feature-reference.html#actorrefpropertydialog" label="ActorRef"/>
-<topic href="targets/eclipse-help/feature-reference.html#actorrefpropertydialog" label="GraphicalStructureEditor"/>
-</context>
-
-<context id="featureContextHelp_PortPropertyDialog" title="PortPropertyDialog">
-<description>A dialog to edit properties of an Port.</description>
-<topic href="targets/eclipse-help/feature-reference.html#portpropertydialog" label="PortPropertyDialog"/>
-<topic href="targets/eclipse-help/feature-reference.html#portpropertydialog" label="Port"/>
-<topic href="targets/eclipse-help/feature-reference.html#portpropertydialog" label="GraphicalStructureEditor"/>
-</context>
-
-<context id="featureContextHelp_SPPPropertyDialog" title="SPPPropertyDialog">
-<description>A dialog to edit properties of a SPP.</description>
-<topic href="targets/eclipse-help/feature-reference.html#spppropertydialog" label="SPPPropertyDialog"/>
-<topic href="targets/eclipse-help/feature-reference.html#spppropertydialog" label="SPP"/>
-<topic href="targets/eclipse-help/feature-reference.html#spppropertydialog" label="GraphicalStructureEditor"/>
-</context>
-
-<context id="featureContextHelp_CCodeGenerator" title="CCodeGenerator">
-<description></description>
-<topic href="targets/eclipse-help/feature-reference.html#ccodegenerator" label="CCodeGenerator"/>
-</context>
-
-<context id="featureContextHelp_JavaCodeGenerator" title="JavaCodeGenerator">
-<description></description>
-<topic href="targets/eclipse-help/feature-reference.html#javacodegenerator" label="JavaCodeGenerator"/>
-</context>
-
-<context id="featureContextHelp_CPPCodeGenerator" title="CPPCodeGenerator">
-<description></description>
-<topic href="targets/eclipse-help/feature-reference.html#cppcodegenerator" label="CPPCodeGenerator"/>
-</context>
-
-<context id="featureContextHelp_GenerationOptions" title="GenerationOptions">
-<description>Mechanism to adjust the generation.</description>
-<topic href="targets/eclipse-help/feature-reference.html#generationoptions" label="GenerationOptions"/>
-<topic href="targets/eclipse-help/feature-reference.html#generationoptions" label="CCodeGenerator"/>
-<topic href="targets/eclipse-help/feature-reference.html#generationoptions" label="JavaCodeGenerator"/>
-<topic href="targets/eclipse-help/feature-reference.html#generationoptions" label="MSCLogging"/>
-</context>
-
-<context id="featureContextHelp_MSCLogging" title="MSCLogging">
-<description>Runtime logger for event-driven Messages, represented as a Message Sequence Chart.</description>
-<topic href="targets/eclipse-help/feature-reference.html#msclogging" label="MSCLogging"/>
-<topic href="targets/eclipse-help/feature-reference.html#msclogging" label="GenerationOptions"/>
-<topic href="targets/eclipse-help/feature-reference.html#msclogging" label="CCodeGenerator"/>
-<topic href="targets/eclipse-help/feature-reference.html#msclogging" label="JavaCodeGenerator"/>
</context>
</contexts>
diff --git a/plugins/org.eclipse.etrice.doc/targets/eclipse-help/room-concepts.html b/plugins/org.eclipse.etrice.doc/targets/eclipse-help/room-concepts.html
index e6ec50cc0..68b3ff1f9 100644
--- a/plugins/org.eclipse.etrice.doc/targets/eclipse-help/room-concepts.html
+++ b/plugins/org.eclipse.etrice.doc/targets/eclipse-help/room-concepts.html
@@ -502,6 +502,31 @@
<h3><a href="#motivation" name="motivation"></a>Motivation</h3>
<p>For event driven systems a finite state machine is ideal for processing the stream of events. Typically during processing new events are produced which are sent to peer actors.</p>
<p>We distinguish flat and hierarchical state machines.</p>
+<h3><a href="#semantics" name="semantics"></a>Semantics</h3>
+<p>State machine execution begins at the top level by traversal of the initial transition. During traversal of a transition its (optional) action code is executed.</p>
+<p>So called triggered transitions start at a state or a transition point. The simple most trigger is a pair of port (or <abbr title="Service Access Point">SAP</abbr>) and message.</p>
+<p>For the following we will discuss hierarchical finite state machines, which include flat state machines as a special case.</p>
+<p>Assume the state machine is in an arbitrary leaf state (states with no nested state machines). Then when an event occurs, a transition with a matching trigger is searched. This is done level by level from the state graph of the current state to the top level state graph. First all outgoing transitions are considered, then handler transitions. If no match was found this is repeated one level higher and so on to the top level. If no match is found at all, the event is discarded.</p>
+<p>Then the transition which was triggered is traversed.</p>
+<p>For any transition it can continue in several ways:</p>
+<ul>
+ <li><em>If it starts</em> from a state or is a continuation after an entry or exit point
+ <ul>
+ <li><em>and ends</em> at a leaf state, the state machine will assume this state</li>
+ <li><em>and ends</em> at a state with sub graph, it is called a transition to history and the last active state inside the target state is assumed</li>
+ <li><em>and ends</em> at a choice point, the choice point branch conditions are evaluated (in arbitrary order). The first transition whose condition is met will be traversed or else the default branch is taken</li>
+ </ul>
+ </li>
+ <li><em>if it starts</em> in a transition point, then in any case the current state is left, thereby executing all exit codes until the level of the transition point
+ <ul>
+ <li><em>and ends</em> in the same transition point then the transition is traversed and the current state is activated again, thereby executing all entry codes</li>
+ <li><em>else</em> the transition is traversed and processing continues</li>
+ <li><em>eTrice specific variant (not contained in ROOM)</em>: the transition point can be a handler. In this case no entry and exit codes of states are executed</li>
+ </ul>
+ </li>
+ <li>if the transition ends in an entry or exit point the traversal is continued on the other side of this point, entering or leaving the subgraph resp.</li>
+</ul>
+<p>All this is looped until the new leaf state is reached.</p>
<h3><a href="#notation" name="notation"></a>Notation</h3>
<p>We distinguish flat finite state machines (with just one level of hierarchy) and hierarchical ones.</p>
<h4><a href="#flat-finite-state-machine" name="flat-finite-state-machine"></a>Flat Finite State Machine</h4>

Back to the top