summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Schuetz2013-07-03 17:37:31 (EDT)
committer Thomas Schuetz2013-07-03 17:37:31 (EDT)
commit8b7ceb9c0c4437ff093c1ecd56a1507d3e64b59d (patch)
treedac54b3caab46684640dd590aa757e8ad1c09b68
parentfa61d452478070e0a1eaed6ac473f1e09592818d (diff)
downloadorg.eclipse.etrice-8b7ceb9c0c4437ff093c1ecd56a1507d3e64b59d.zip
org.eclipse.etrice-8b7ceb9c0c4437ff093c1ecd56a1507d3e64b59d.tar.gz
org.eclipse.etrice-8b7ceb9c0c4437ff093c1ecd56a1507d3e64b59d.tar.bz2
[generator.c, runtime.c] added first, incomplete version for generation
of async MSC logging Change-Id: I141a7ae5ae3f56cae0e0f150e711cf28e569b783
-rw-r--r--examples/org.eclipse.etrice.generator.c.reference/model/MSCgen/MSCgen.room30
-rw-r--r--examples/org.eclipse.etrice.generator.c.reference/model/MSCgen/diagrams/RoomModel1.Receiver.behavior241
-rw-r--r--examples/org.eclipse.etrice.generator.c.reference/model/MSCgen/diagrams/RoomModel1.Sender.behavior319
-rw-r--r--examples/org.eclipse.etrice.generator.c.reference/model/MSCgen/diagrams/RoomModel1.SubSysClass1.structure76
-rw-r--r--examples/org.eclipse.etrice.generator.c.reference/tmp/log/msc.seq42
-rw-r--r--examples/org.eclipse.etrice.generator.c.reference/tmp/msc.seq213
-rw-r--r--plugins/org.eclipse.etrice.generator.c/src/org/eclipse/etrice/generator/c/gen/ProtocolClassGen.xtend6
-rw-r--r--plugins/org.eclipse.etrice.generator.c/src/org/eclipse/etrice/generator/c/gen/StateMachineGen.xtend5
-rw-r--r--plugins/org.eclipse.etrice.generator.c/xtend-gen/org/eclipse/etrice/generator/c/gen/ProtocolClassGen.java61
-rw-r--r--plugins/org.eclipse.etrice.generator.c/xtend-gen/org/eclipse/etrice/generator/c/gen/StateMachineGen.java32
-rw-r--r--runtime/org.eclipse.etrice.runtime.c/src/common/debugging/etMSCLogger.h2
-rw-r--r--runtime/org.eclipse.etrice.runtime.c/src/config/etRuntimeConfig.h2
-rw-r--r--tests/org.eclipse.etrice.runtime.c.tests/.cproject20
13 files changed, 483 insertions, 566 deletions
diff --git a/examples/org.eclipse.etrice.generator.c.reference/model/MSCgen/MSCgen.room b/examples/org.eclipse.etrice.generator.c.reference/model/MSCgen/MSCgen.room
index 4efc13f..c615301 100644
--- a/examples/org.eclipse.etrice.generator.c.reference/model/MSCgen/MSCgen.room
+++ b/examples/org.eclipse.etrice.generator.c.reference/model/MSCgen/MSCgen.room
@@ -24,21 +24,34 @@ RoomModel RoomModel1 {
}
Structure {
external Port receiver
+ Attribute counter: int32
+
}
Behavior {
StateMachine {
- Transition init: initial -> SendingData { }
- Transition tr0: SendingData -> Received {
+ Transition init: initial -> SendingData {
+ action {
+ "counter=0;"
+ }
+ }
+ Transition tr0: SendingData -> cp cp0 {
triggers {
<receivedData: receiver>
}
- }
+ }
+ Transition tr1: cp cp0 -> Done
+ Transition tr2: cp cp0 -> SendingData {
+ cond {
+ "++counter<10"
+ }
+ }
+ ChoicePoint cp0
State SendingData {
entry {
"receiver.sendData(1234);"
}
}
- State Received
+ State Done
}
}
}
@@ -53,7 +66,7 @@ RoomModel RoomModel1 {
Behavior {
StateMachine {
Transition init: initial -> WaitingForData { }
- Transition tr0: WaitingForData -> Received {
+ Transition tr0: WaitingForData -> WaitingForData {
triggers {
<sendData: sender>
}
@@ -61,12 +74,7 @@ RoomModel RoomModel1 {
"sender.receivedData();"
}
}
- State WaitingForData
- State Received {
- entry {
- "printf(\"Receiver - Received\");"
- }
- }
+ State WaitingForData
}
}
}
diff --git a/examples/org.eclipse.etrice.generator.c.reference/model/MSCgen/diagrams/RoomModel1.Receiver.behavior b/examples/org.eclipse.etrice.generator.c.reference/model/MSCgen/diagrams/RoomModel1.Receiver.behavior
index e1b8681..ee2ae1d 100644
--- a/examples/org.eclipse.etrice.generator.c.reference/model/MSCgen/diagrams/RoomModel1.Receiver.behavior
+++ b/examples/org.eclipse.etrice.generator.c.reference/model/MSCgen/diagrams/RoomModel1.Receiver.behavior
@@ -1,135 +1,106 @@
-<?xml version="1.0" encoding="ASCII"?>
-<pi:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:al="http://eclipse.org/graphiti/mm/algorithms" xmlns:pi="http://eclipse.org/graphiti/mm/pictograms" visible="true" gridUnit="10" diagramTypeId="room.behavior" name="Behavior of Receiver" pictogramLinks="//@link //@children.0/@link //@children.0/@children.1/@link //@children.0/@children.2/@link //@connections.0/@link //@children.0/@children.3/@link //@connections.1/@link" verticalGridUnit="10" version="0.10.0">
- <graphicsAlgorithm xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.0" lineWidth="1" transparency="0.0" width="1000" height="1000"/>
- <link>
- <businessObjects href="../MSCgen.room#ActorClass:Receiver"/>
- </link>
- <children xsi:type="pi:ContainerShape" visible="true" active="true">
- <properties key="obj-type" value="sg"/>
- <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="880" height="580" x="40" y="40">
- <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" background="//@colors.1" foreground="//@colors.2" lineWidth="4" transparency="0.5" width="800" height="500" x="40" y="40" cornerHeight="20" cornerWidth="20"/>
- <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" foreground="//@colors.2" lineWidth="4" filled="false" transparency="0.0" width="800" height="500" x="40" y="40" cornerHeight="20" cornerWidth="20"/>
- </graphicsAlgorithm>
- <link>
- <businessObjects href="../MSCgen.room#StateGraph:Receiver$sg"/>
- </link>
- <children visible="true">
- <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="800" height="80" y="40" font="//@fonts.1" horizontalAlignment="ALIGNMENT_RIGHT" verticalAlignment="ALIGNMENT_TOP" value="/"/>
- </children>
- <children xsi:type="pi:ContainerShape" visible="true" active="true">
- <properties key="obj-type" value="trp"/>
- <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="40" height="40" x="95" y="77">
- <graphicsAlgorithmChildren xsi:type="al:Ellipse" background="//@colors.1" foreground="//@colors.2" lineWidth="2" transparency="0.0" width="20" height="20" x="10" y="10"/>
- </graphicsAlgorithm>
- <link>
- <businessObjects href="../MSCgen.room#StateGraph:Receiver$sg"/>
- </link>
- <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.0" referencedGraphicsAlgorithm="//@children.0/@children.1/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
- <children visible="true">
- <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="40" height="20" y="10" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="I"/>
- </children>
- </children>
- <children xsi:type="pi:ContainerShape" visible="true" active="true">
- <properties key="obj-type" value="state"/>
- <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="160" height="90" x="262" y="106">
- <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="100" height="30" x="30" y="30" cornerHeight="20" cornerWidth="20">
- <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="15" height="8" x="75" y="3" cornerHeight="5" cornerWidth="5"/>
- <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="50" y="24">
- <points x="-3" y="-3"/>
- <points x="-3" y="3"/>
- <points x="-11" y="3"/>
- </graphicsAlgorithmChildren>
- <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="50" y="24">
- <points x="3" y="-3"/>
- <points x="3" y="3"/>
- <points x="11" y="3"/>
- </graphicsAlgorithmChildren>
- <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="50" y="24">
- <points x="-2" y="-3"/>
- <points x="-2" y="3"/>
- <points x="2" y="3"/>
- <points x="2" y="-3"/>
- </graphicsAlgorithmChildren>
- </graphicsAlgorithmChildren>
- </graphicsAlgorithm>
- <link>
- <businessObjects href="../MSCgen.room#SimpleState:Receiver$WaitingForData"/>
- </link>
- <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.1" incomingConnections="//@connections.0" referencedGraphicsAlgorithm="//@children.0/@children.2/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
- <children visible="true">
- <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="100" height="30" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="WaitingForData"/>
- </children>
- </children>
- <children xsi:type="pi:ContainerShape" visible="true" active="true">
- <properties key="obj-type" value="state"/>
- <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="122" height="90" x="301" y="286">
- <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="62" height="30" x="30" y="30" cornerHeight="20" cornerWidth="20">
- <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="15" height="8" x="37" y="3" cornerHeight="5" cornerWidth="5"/>
- <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="31" y="24">
- <points x="-3" y="-3"/>
- <points x="-3" y="3"/>
- <points x="-11" y="3"/>
- </graphicsAlgorithmChildren>
- <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="31" y="24">
- <points x="3" y="-3"/>
- <points x="3" y="3"/>
- <points x="11" y="3"/>
- </graphicsAlgorithmChildren>
- <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="31" y="24">
- <points x="-2" y="-3"/>
- <points x="-2" y="3"/>
- <points x="2" y="3"/>
- <points x="2" y="-3"/>
- </graphicsAlgorithmChildren>
- </graphicsAlgorithmChildren>
- </graphicsAlgorithm>
- <link>
- <businessObjects href="../MSCgen.room#SimpleState:Receiver$Received"/>
- </link>
- <anchors xsi:type="pi:ChopboxAnchor" incomingConnections="//@connections.1"/>
- <children visible="true">
- <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="62" height="30" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="Received"/>
- </children>
- </children>
- </children>
- <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.1/@anchors.0" end="//@children.0/@children.2/@anchors.0">
- <properties key="obj-type" value="trans"/>
- <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
- <link>
- <businessObjects href="../MSCgen.room#InitialTransition:Receiver$initial"/>
- </link>
- <connectionDecorators visible="true" locationRelative="true" location="1.0">
- <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.1" foreground="//@colors.2" lineWidth="1" filled="true" transparency="0.0">
- <points x="-15" y="5"/>
- <points/>
- <points x="-15" y="-5"/>
- </graphicsAlgorithm>
- </connectionDecorators>
- <connectionDecorators visible="true" active="true" locationRelative="true" location="0.5">
- <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" font="//@fonts.0" value="init"/>
- </connectionDecorators>
- </connections>
- <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.2/@anchors.0" end="//@children.0/@children.3/@anchors.0">
- <properties key="obj-type" value="trans"/>
- <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
- <link>
- <businessObjects href="../MSCgen.room#TriggeredTransition:Receiver$tr0"/>
- </link>
- <connectionDecorators visible="true" locationRelative="true" location="1.0">
- <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="true" transparency="0.0">
- <points x="-15" y="5"/>
- <points/>
- <points x="-15" y="-5"/>
- </graphicsAlgorithm>
- </connectionDecorators>
- <connectionDecorators visible="true" active="true" locationRelative="true" location="0.5">
- <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" font="//@fonts.0" value="tr0: &lt;sendData:sende..."/>
- </connectionDecorators>
- </connections>
- <colors red="227" green="238" blue="249"/>
- <colors red="255" green="255" blue="255"/>
- <colors/>
- <colors red="200" green="200" blue="200"/>
- <fonts name="Arial" size="8"/>
- <fonts name="Arial" size="9" bold="true"/>
-</pi:Diagram>
+<?xml version="1.0" encoding="ASCII"?>
+<pi:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:al="http://eclipse.org/graphiti/mm/algorithms" xmlns:pi="http://eclipse.org/graphiti/mm/pictograms" visible="true" gridUnit="10" diagramTypeId="room.behavior" name="Behavior of Receiver" pictogramLinks="//@link //@children.0/@link //@children.0/@children.1/@link //@children.0/@children.2/@link //@connections.0/@link //@connections.1/@link" verticalGridUnit="10" version="0.10.0">
+ <graphicsAlgorithm xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.0" lineWidth="1" transparency="0.0" width="1000" height="1000"/>
+ <link>
+ <businessObjects href="../MSCgen.room#ActorClass:Receiver"/>
+ </link>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="sg"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="880" height="580" x="40" y="40">
+ <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" background="//@colors.1" foreground="//@colors.2" lineWidth="4" transparency="0.5" width="800" height="500" x="40" y="40" cornerHeight="20" cornerWidth="20"/>
+ <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" foreground="//@colors.2" lineWidth="4" filled="false" transparency="0.0" width="800" height="500" x="40" y="40" cornerHeight="20" cornerWidth="20"/>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../MSCgen.room#StateGraph:Receiver$sg"/>
+ </link>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="800" height="80" y="40" font="//@fonts.1" horizontalAlignment="ALIGNMENT_RIGHT" verticalAlignment="ALIGNMENT_TOP" value="/"/>
+ </children>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="trp"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="40" height="40" x="95" y="77">
+ <graphicsAlgorithmChildren xsi:type="al:Ellipse" background="//@colors.1" foreground="//@colors.2" lineWidth="2" transparency="0.0" width="20" height="20" x="10" y="10"/>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../MSCgen.room#StateGraph:Receiver$sg"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.0" referencedGraphicsAlgorithm="//@children.0/@children.1/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="40" height="20" y="10" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="I"/>
+ </children>
+ </children>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="state"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="160" height="90" x="262" y="106">
+ <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="100" height="30" x="30" y="30" cornerHeight="20" cornerWidth="20">
+ <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="15" height="8" x="75" y="3" cornerHeight="5" cornerWidth="5"/>
+ <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="50" y="24">
+ <points x="-3" y="-3"/>
+ <points x="-3" y="3"/>
+ <points x="-11" y="3"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="50" y="24">
+ <points x="3" y="-3"/>
+ <points x="3" y="3"/>
+ <points x="11" y="3"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="50" y="24">
+ <points x="-2" y="-3"/>
+ <points x="-2" y="3"/>
+ <points x="2" y="3"/>
+ <points x="2" y="-3"/>
+ </graphicsAlgorithmChildren>
+ </graphicsAlgorithmChildren>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../MSCgen.room#SimpleState:Receiver$WaitingForData"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.1" incomingConnections="//@connections.0 //@connections.1" referencedGraphicsAlgorithm="//@children.0/@children.2/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="100" height="30" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="WaitingForData"/>
+ </children>
+ </children>
+ </children>
+ <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.1/@anchors.0" end="//@children.0/@children.2/@anchors.0">
+ <properties key="obj-type" value="trans"/>
+ <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
+ <link>
+ <businessObjects href="../MSCgen.room#InitialTransition:Receiver$initial"/>
+ </link>
+ <connectionDecorators visible="true" locationRelative="true" location="1.0">
+ <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.1" foreground="//@colors.2" lineWidth="1" filled="true" transparency="0.0">
+ <points x="-15" y="5"/>
+ <points/>
+ <points x="-15" y="-5"/>
+ </graphicsAlgorithm>
+ </connectionDecorators>
+ <connectionDecorators visible="true" active="true" locationRelative="true" location="0.5">
+ <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" font="//@fonts.0" value="init"/>
+ </connectionDecorators>
+ </connections>
+ <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.2/@anchors.0" end="//@children.0/@children.2/@anchors.0">
+ <properties key="obj-type" value="trans"/>
+ <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
+ <link>
+ <businessObjects href="../MSCgen.room#TriggeredTransition:Receiver$tr0"/>
+ </link>
+ <connectionDecorators visible="true" locationRelative="true" location="1.0">
+ <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="true" transparency="0.0">
+ <points x="-15" y="5"/>
+ <points/>
+ <points x="-15" y="-5"/>
+ </graphicsAlgorithm>
+ </connectionDecorators>
+ <connectionDecorators visible="true" active="true" locationRelative="true" location="0.5">
+ <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" font="//@fonts.0" value="tr0: &lt;sendData:sende..."/>
+ </connectionDecorators>
+ <bendpoints x="556" y="228"/>
+ <bendpoints x="572" y="191"/>
+ </connections>
+ <colors red="227" green="238" blue="249"/>
+ <colors red="255" green="255" blue="255"/>
+ <colors/>
+ <colors red="200" green="200" blue="200"/>
+ <fonts name="Arial" size="8"/>
+ <fonts name="Arial" size="9" bold="true"/>
+</pi:Diagram>
diff --git a/examples/org.eclipse.etrice.generator.c.reference/model/MSCgen/diagrams/RoomModel1.Sender.behavior b/examples/org.eclipse.etrice.generator.c.reference/model/MSCgen/diagrams/RoomModel1.Sender.behavior
index d2dfa73..ea135b3 100644
--- a/examples/org.eclipse.etrice.generator.c.reference/model/MSCgen/diagrams/RoomModel1.Sender.behavior
+++ b/examples/org.eclipse.etrice.generator.c.reference/model/MSCgen/diagrams/RoomModel1.Sender.behavior
@@ -1,135 +1,184 @@
-<?xml version="1.0" encoding="ASCII"?>
-<pi:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:al="http://eclipse.org/graphiti/mm/algorithms" xmlns:pi="http://eclipse.org/graphiti/mm/pictograms" visible="true" gridUnit="10" diagramTypeId="room.behavior" name="Behavior of Sender" pictogramLinks="//@link //@children.0/@link //@children.0/@children.1/@link //@children.0/@children.2/@link //@connections.0/@link //@children.0/@children.3/@link //@connections.1/@link" verticalGridUnit="10" version="0.10.0">
- <graphicsAlgorithm xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.0" lineWidth="1" transparency="0.0" width="1000" height="1000"/>
- <link>
- <businessObjects href="../MSCgen.room#ActorClass:Sender"/>
- </link>
- <children xsi:type="pi:ContainerShape" visible="true" active="true">
- <properties key="obj-type" value="sg"/>
- <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="880" height="580" x="40" y="40">
- <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" background="//@colors.1" foreground="//@colors.2" lineWidth="4" transparency="0.5" width="800" height="500" x="40" y="40" cornerHeight="20" cornerWidth="20"/>
- <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" foreground="//@colors.2" lineWidth="4" filled="false" transparency="0.0" width="800" height="500" x="40" y="40" cornerHeight="20" cornerWidth="20"/>
- </graphicsAlgorithm>
- <link>
- <businessObjects href="../MSCgen.room#StateGraph:Sender$sg"/>
- </link>
- <children visible="true">
- <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="800" height="80" y="40" font="//@fonts.1" horizontalAlignment="ALIGNMENT_RIGHT" verticalAlignment="ALIGNMENT_TOP" value="/"/>
- </children>
- <children xsi:type="pi:ContainerShape" visible="true" active="true">
- <properties key="obj-type" value="trp"/>
- <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="40" height="40" x="109" y="77">
- <graphicsAlgorithmChildren xsi:type="al:Ellipse" background="//@colors.1" foreground="//@colors.2" lineWidth="2" transparency="0.0" width="20" height="20" x="10" y="10"/>
- </graphicsAlgorithm>
- <link>
- <businessObjects href="../MSCgen.room#StateGraph:Sender$sg"/>
- </link>
- <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.0" referencedGraphicsAlgorithm="//@children.0/@children.1/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
- <children visible="true">
- <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="40" height="20" y="10" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="I"/>
- </children>
- </children>
- <children xsi:type="pi:ContainerShape" visible="true" active="true">
- <properties key="obj-type" value="state"/>
- <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="144" height="90" x="319" y="114">
- <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="84" height="30" x="30" y="30" cornerHeight="20" cornerWidth="20">
- <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="15" height="8" x="59" y="3" cornerHeight="5" cornerWidth="5"/>
- <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="42" y="24">
- <points x="-3" y="-3"/>
- <points x="-3" y="3"/>
- <points x="-11" y="3"/>
- </graphicsAlgorithmChildren>
- <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="42" y="24">
- <points x="3" y="-3"/>
- <points x="3" y="3"/>
- <points x="11" y="3"/>
- </graphicsAlgorithmChildren>
- <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="42" y="24">
- <points x="-2" y="-3"/>
- <points x="-2" y="3"/>
- <points x="2" y="3"/>
- <points x="2" y="-3"/>
- </graphicsAlgorithmChildren>
- </graphicsAlgorithmChildren>
- </graphicsAlgorithm>
- <link>
- <businessObjects href="../MSCgen.room#SimpleState:Sender$SendingData"/>
- </link>
- <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.1" incomingConnections="//@connections.0"/>
- <children visible="true">
- <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="84" height="30" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="SendingData"/>
- </children>
- </children>
- <children xsi:type="pi:ContainerShape" visible="true" active="true">
- <properties key="obj-type" value="state"/>
- <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="122" height="90" x="349" y="261">
- <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="62" height="30" x="30" y="30" cornerHeight="20" cornerWidth="20">
- <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="15" height="8" x="37" y="3" cornerHeight="5" cornerWidth="5"/>
- <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="31" y="24">
- <points x="-3" y="-3"/>
- <points x="-3" y="3"/>
- <points x="-11" y="3"/>
- </graphicsAlgorithmChildren>
- <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="31" y="24">
- <points x="3" y="-3"/>
- <points x="3" y="3"/>
- <points x="11" y="3"/>
- </graphicsAlgorithmChildren>
- <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="31" y="24">
- <points x="-2" y="-3"/>
- <points x="-2" y="3"/>
- <points x="2" y="3"/>
- <points x="2" y="-3"/>
- </graphicsAlgorithmChildren>
- </graphicsAlgorithmChildren>
- </graphicsAlgorithm>
- <link>
- <businessObjects href="../MSCgen.room#SimpleState:Sender$Received"/>
- </link>
- <anchors xsi:type="pi:ChopboxAnchor" incomingConnections="//@connections.1" referencedGraphicsAlgorithm="//@children.0/@children.3/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
- <children visible="true">
- <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="62" height="30" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="Received"/>
- </children>
- </children>
- </children>
- <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.1/@anchors.0" end="//@children.0/@children.2/@anchors.0">
- <properties key="obj-type" value="trans"/>
- <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
- <link>
- <businessObjects href="../MSCgen.room#InitialTransition:Sender$initial"/>
- </link>
- <connectionDecorators visible="true" locationRelative="true" location="1.0">
- <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.1" foreground="//@colors.2" lineWidth="1" filled="true" transparency="0.0">
- <points x="-15" y="5"/>
- <points/>
- <points x="-15" y="-5"/>
- </graphicsAlgorithm>
- </connectionDecorators>
- <connectionDecorators visible="true" active="true" locationRelative="true" location="0.5">
- <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" font="//@fonts.0" value="init"/>
- </connectionDecorators>
- </connections>
- <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.2/@anchors.0" end="//@children.0/@children.3/@anchors.0">
- <properties key="obj-type" value="trans"/>
- <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
- <link>
- <businessObjects href="../MSCgen.room#TriggeredTransition:Sender$tr0"/>
- </link>
- <connectionDecorators visible="true" locationRelative="true" location="1.0">
- <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.1" foreground="//@colors.2" lineWidth="1" filled="true" transparency="0.0">
- <points x="-15" y="5"/>
- <points/>
- <points x="-15" y="-5"/>
- </graphicsAlgorithm>
- </connectionDecorators>
- <connectionDecorators visible="true" active="true" locationRelative="true" location="0.5">
- <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" font="//@fonts.0" value="tr0: &lt;receivedData:r..."/>
- </connectionDecorators>
- </connections>
- <colors red="227" green="238" blue="249"/>
- <colors red="255" green="255" blue="255"/>
- <colors/>
- <colors red="200" green="200" blue="200"/>
- <fonts name="Arial" size="8"/>
- <fonts name="Arial" size="9" bold="true"/>
-</pi:Diagram>
+<?xml version="1.0" encoding="ASCII"?>
+<pi:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:al="http://eclipse.org/graphiti/mm/algorithms" xmlns:pi="http://eclipse.org/graphiti/mm/pictograms" visible="true" gridUnit="10" diagramTypeId="room.behavior" name="Behavior of Sender" pictogramLinks="//@link //@children.0/@link //@children.0/@children.1/@link //@children.0/@children.2/@link //@connections.0/@link //@children.0/@children.3/@link //@connections.1/@link //@children.0/@children.4/@link //@connections.2/@link //@connections.3/@link" verticalGridUnit="10" version="0.10.0">
+ <graphicsAlgorithm xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.0" lineWidth="1" transparency="0.0" width="1000" height="1000"/>
+ <link>
+ <businessObjects href="../MSCgen.room#ActorClass:Sender"/>
+ </link>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="sg"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="880" height="580" x="40" y="40">
+ <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" background="//@colors.1" foreground="//@colors.2" lineWidth="4" transparency="0.5" width="800" height="500" x="40" y="40" cornerHeight="20" cornerWidth="20"/>
+ <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" foreground="//@colors.2" lineWidth="4" filled="false" transparency="0.0" width="800" height="500" x="40" y="40" cornerHeight="20" cornerWidth="20"/>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../MSCgen.room#StateGraph:Sender$sg"/>
+ </link>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="800" height="80" y="40" font="//@fonts.1" horizontalAlignment="ALIGNMENT_RIGHT" verticalAlignment="ALIGNMENT_TOP" value="/"/>
+ </children>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="trp"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="40" height="40" x="109" y="77">
+ <graphicsAlgorithmChildren xsi:type="al:Ellipse" background="//@colors.1" foreground="//@colors.2" lineWidth="2" transparency="0.0" width="20" height="20" x="10" y="10"/>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../MSCgen.room#StateGraph:Sender$sg"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.0" referencedGraphicsAlgorithm="//@children.0/@children.1/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="40" height="20" y="10" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="I"/>
+ </children>
+ </children>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="state"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="144" height="90" x="319" y="114">
+ <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="84" height="30" x="30" y="30" cornerHeight="20" cornerWidth="20">
+ <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="15" height="8" x="59" y="3" cornerHeight="5" cornerWidth="5"/>
+ <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="42" y="24">
+ <points x="-3" y="-3"/>
+ <points x="-3" y="3"/>
+ <points x="-11" y="3"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="42" y="24">
+ <points x="3" y="-3"/>
+ <points x="3" y="3"/>
+ <points x="11" y="3"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="42" y="24">
+ <points x="-2" y="-3"/>
+ <points x="-2" y="3"/>
+ <points x="2" y="3"/>
+ <points x="2" y="-3"/>
+ </graphicsAlgorithmChildren>
+ </graphicsAlgorithmChildren>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../MSCgen.room#SimpleState:Sender$SendingData"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.1" incomingConnections="//@connections.0 //@connections.3"/>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="84" height="30" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="SendingData"/>
+ </children>
+ </children>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="state"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="122" height="90" x="330" y="355">
+ <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="62" height="30" x="30" y="30" cornerHeight="20" cornerWidth="20">
+ <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="15" height="8" x="37" y="3" cornerHeight="5" cornerWidth="5"/>
+ <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="31" y="24">
+ <points x="-3" y="-3"/>
+ <points x="-3" y="3"/>
+ <points x="-11" y="3"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="31" y="24">
+ <points x="3" y="-3"/>
+ <points x="3" y="3"/>
+ <points x="11" y="3"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="31" y="24">
+ <points x="-2" y="-3"/>
+ <points x="-2" y="3"/>
+ <points x="2" y="3"/>
+ <points x="2" y="-3"/>
+ </graphicsAlgorithmChildren>
+ </graphicsAlgorithmChildren>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../MSCgen.room#SimpleState:Sender$Done"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" incomingConnections="//@connections.2"/>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="62" height="30" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="Done"/>
+ </children>
+ </children>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="trp"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="50" height="50" x="374" y="295">
+ <graphicsAlgorithmChildren xsi:type="al:Ellipse" background="//@colors.1" foreground="//@colors.2" lineWidth="2" transparency="0.0" width="25" height="25" x="12" y="12"/>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../MSCgen.room#ChoicePoint:Sender$cp0"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.2 //@connections.3" incomingConnections="//@connections.1"/>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="50" height="25" y="12" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="C"/>
+ </children>
+ </children>
+ </children>
+ <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.1/@anchors.0" end="//@children.0/@children.2/@anchors.0">
+ <properties key="obj-type" value="trans"/>
+ <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
+ <link>
+ <businessObjects href="../MSCgen.room#InitialTransition:Sender$initial"/>
+ </link>
+ <connectionDecorators visible="true" locationRelative="true" location="1.0">
+ <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="true" transparency="0.0">
+ <points x="-15" y="5"/>
+ <points/>
+ <points x="-15" y="-5"/>
+ </graphicsAlgorithm>
+ </connectionDecorators>
+ <connectionDecorators visible="true" active="true" locationRelative="true" location="0.5">
+ <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" font="//@fonts.0" value="init"/>
+ </connectionDecorators>
+ </connections>
+ <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.2/@anchors.0" end="//@children.0/@children.4/@anchors.0">
+ <properties key="obj-type" value="trans"/>
+ <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
+ <link>
+ <businessObjects href="../MSCgen.room#TriggeredTransition:Sender$tr0"/>
+ </link>
+ <connectionDecorators visible="true" locationRelative="true" location="1.0">
+ <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.1" foreground="//@colors.2" lineWidth="1" filled="true" transparency="0.0">
+ <points x="-15" y="5"/>
+ <points/>
+ <points x="-15" y="-5"/>
+ </graphicsAlgorithm>
+ </connectionDecorators>
+ <connectionDecorators visible="true" active="true" locationRelative="true" location="0.5">
+ <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="-48" y="-11" font="//@fonts.0" value="tr0: &lt;receivedData:r..."/>
+ </connectionDecorators>
+ <bendpoints x="381" y="291"/>
+ </connections>
+ <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.4/@anchors.0" end="//@children.0/@children.3/@anchors.0">
+ <properties key="obj-type" value="trans"/>
+ <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
+ <link>
+ <businessObjects href="../MSCgen.room#ContinuationTransition:Sender$tr1"/>
+ </link>
+ <connectionDecorators visible="true" locationRelative="true" location="1.0">
+ <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.1" foreground="//@colors.2" lineWidth="1" filled="true" transparency="0.0">
+ <points x="-15" y="5"/>
+ <points/>
+ <points x="-15" y="-5"/>
+ </graphicsAlgorithm>
+ </connectionDecorators>
+ <connectionDecorators visible="true" active="true" locationRelative="true" location="0.5">
+ <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="11" y="-4" font="//@fonts.0" value="tr1: [else]"/>
+ </connectionDecorators>
+ </connections>
+ <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.4/@anchors.0" end="//@children.0/@children.2/@anchors.0">
+ <properties key="obj-type" value="trans"/>
+ <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
+ <link>
+ <businessObjects href="../MSCgen.room#CPBranchTransition:Sender$tr2"/>
+ </link>
+ <connectionDecorators visible="true" locationRelative="true" location="1.0">
+ <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.1" foreground="//@colors.2" lineWidth="1" filled="true" transparency="0.0">
+ <points x="-15" y="5"/>
+ <points/>
+ <points x="-15" y="-5"/>
+ </graphicsAlgorithm>
+ </connectionDecorators>
+ <connectionDecorators visible="true" active="true" locationRelative="true" location="0.5">
+ <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" font="//@fonts.0" value="tr2: [++counter&lt;10]"/>
+ </connectionDecorators>
+ <bendpoints x="487" y="268"/>
+ </connections>
+ <colors red="227" green="238" blue="249"/>
+ <colors red="255" green="255" blue="255"/>
+ <colors/>
+ <colors red="200" green="200" blue="200"/>
+ <fonts name="Arial" size="8"/>
+ <fonts name="Arial" size="9" bold="true"/>
+</pi:Diagram>
diff --git a/examples/org.eclipse.etrice.generator.c.reference/model/MSCgen/diagrams/RoomModel1.SubSysClass1.structure b/examples/org.eclipse.etrice.generator.c.reference/model/MSCgen/diagrams/RoomModel1.SubSysClass1.structure
index f6c600f..faba47f 100644
--- a/examples/org.eclipse.etrice.generator.c.reference/model/MSCgen/diagrams/RoomModel1.SubSysClass1.structure
+++ b/examples/org.eclipse.etrice.generator.c.reference/model/MSCgen/diagrams/RoomModel1.SubSysClass1.structure
@@ -1,38 +1,38 @@
-<?xml version="1.0" encoding="ASCII"?>
-<pi:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:al="http://eclipse.org/graphiti/mm/algorithms" xmlns:pi="http://eclipse.org/graphiti/mm/pictograms" visible="true" gridUnit="10" diagramTypeId="room.structure" name="Structure of SubSysClass1" pictogramLinks="//@children.0/@link //@link //@children.0/@children.0/@link" verticalGridUnit="10" version="0.10.0">
- <graphicsAlgorithm xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.0" lineWidth="1" transparency="0.0" width="1000" height="1000"/>
- <link>
- <businessObjects href="../MSCgen.room#SubSystemClass:SubSysClass1"/>
- </link>
- <children xsi:type="pi:ContainerShape" visible="true" active="true">
- <properties key="obj-type" value="cls"/>
- <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="880" height="580" x="40" y="40">
- <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.2" lineWidth="4" transparency="0.5" width="800" height="500" x="40" y="40"/>
- <graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="4" filled="false" transparency="0.0" width="800" height="500" x="40" y="40"/>
- </graphicsAlgorithm>
- <link>
- <businessObjects href="../MSCgen.room#SubSystemClass:SubSysClass1"/>
- </link>
- <children xsi:type="pi:ContainerShape" visible="true" active="true">
- <properties key="obj-type" value="ref"/>
- <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="240" height="140" x="320" y="170">
- <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="180" height="80" x="30" y="30">
- <graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="20" height="10" x="150" y="50"/>
- <graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="20" height="10" x="145" y="65"/>
- </graphicsAlgorithmChildren>
- </graphicsAlgorithm>
- <link>
- <businessObjects href="../MSCgen.room#ActorRef:SubSysClass1$actorRef1"/>
- </link>
- <anchors xsi:type="pi:ChopboxAnchor" referencedGraphicsAlgorithm="//@children.0/@children.0/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
- <children visible="true">
- <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="180" height="80" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="actorRef1&#xA;(Toplevel)"/>
- </children>
- </children>
- </children>
- <colors red="227" green="238" blue="249"/>
- <colors red="255" green="255" blue="255"/>
- <colors/>
- <colors red="200" green="200" blue="200"/>
- <fonts name="Arial" size="8"/>
-</pi:Diagram>
+<?xml version="1.0" encoding="ASCII"?>
+<pi:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:al="http://eclipse.org/graphiti/mm/algorithms" xmlns:pi="http://eclipse.org/graphiti/mm/pictograms" visible="true" gridUnit="10" diagramTypeId="room.structure" name="Structure of SubSysClass1" pictogramLinks="//@children.0/@link //@link //@children.0/@children.0/@link" verticalGridUnit="10" version="0.10.0">
+ <graphicsAlgorithm xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.0" lineWidth="1" transparency="0.0" width="1000" height="1000"/>
+ <link>
+ <businessObjects href="../MSCgen.room#SubSystemClass:SubSysClass1"/>
+ </link>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="cls"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="880" height="580" x="40" y="40">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.2" lineWidth="4" transparency="0.5" width="800" height="500" x="40" y="40"/>
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="4" filled="false" transparency="0.0" width="800" height="500" x="40" y="40"/>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../MSCgen.room#SubSystemClass:SubSysClass1"/>
+ </link>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="ref"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="240" height="140" x="320" y="170">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="180" height="80" x="30" y="30">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="true" transparency="0.0" width="20" height="10" x="150" y="50"/>
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="true" transparency="0.0" width="20" height="10" x="145" y="65"/>
+ </graphicsAlgorithmChildren>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../MSCgen.room#ActorRef:SubSysClass1$actorRef1"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" referencedGraphicsAlgorithm="//@children.0/@children.0/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="180" height="80" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="actorRef1&#xA;(Toplevel)"/>
+ </children>
+ </children>
+ </children>
+ <colors red="227" green="238" blue="249"/>
+ <colors red="255" green="255" blue="255"/>
+ <colors/>
+ <colors red="200" green="200" blue="200"/>
+ <fonts name="Arial" size="8"/>
+</pi:Diagram>
diff --git a/examples/org.eclipse.etrice.generator.c.reference/tmp/log/msc.seq b/examples/org.eclipse.etrice.generator.c.reference/tmp/log/msc.seq
new file mode 100644
index 0000000..c269f81
--- /dev/null
+++ b/examples/org.eclipse.etrice.generator.c.reference/tmp/log/msc.seq
@@ -0,0 +1,42 @@
+Actor1 >-- Actor2 sendData
+Sender >>> SendingData
+Receiver >>> WaitingForData
+Actor1 >-- Actor2 receivedData
+Receiver >>> WaitingForData
+Actor1 >-- Actor2 sendData
+Sender >>> SendingData
+Actor1 >-- Actor2 receivedData
+Receiver >>> WaitingForData
+Actor1 >-- Actor2 sendData
+Sender >>> SendingData
+Actor1 >-- Actor2 receivedData
+Receiver >>> WaitingForData
+Actor1 >-- Actor2 sendData
+Sender >>> SendingData
+Actor1 >-- Actor2 receivedData
+Receiver >>> WaitingForData
+Actor1 >-- Actor2 sendData
+Sender >>> SendingData
+Actor1 >-- Actor2 receivedData
+Receiver >>> WaitingForData
+Actor1 >-- Actor2 sendData
+Sender >>> SendingData
+Actor1 >-- Actor2 receivedData
+Receiver >>> WaitingForData
+Actor1 >-- Actor2 sendData
+Sender >>> SendingData
+Actor1 >-- Actor2 receivedData
+Receiver >>> WaitingForData
+Actor1 >-- Actor2 sendData
+Sender >>> SendingData
+Actor1 >-- Actor2 receivedData
+Receiver >>> WaitingForData
+Actor1 >-- Actor2 sendData
+Sender >>> SendingData
+Actor1 >-- Actor2 receivedData
+Receiver >>> WaitingForData
+Actor1 >-- Actor2 sendData
+Sender >>> SendingData
+Actor1 >-- Actor2 receivedData
+Receiver >>> WaitingForData
+Sender >>> Done
diff --git a/examples/org.eclipse.etrice.generator.c.reference/tmp/msc.seq b/examples/org.eclipse.etrice.generator.c.reference/tmp/msc.seq
deleted file mode 100644
index 37a1d65..0000000
--- a/examples/org.eclipse.etrice.generator.c.reference/tmp/msc.seq
+++ /dev/null
@@ -1,213 +0,0 @@
-main ==> nodeRef1_subSysRef1 init(thread=6552)
-nodeRef1_subSysRef1 ==> nodeRef1_subSysRef1 constructActorInstances(thread=6552)
-nodeRef1_subSysRef1 <== nodeRef1_subSysRef1
-nodeRef1_subSysRef1 ==> nodeRef1_subSysRef1 initMessageServices(thread=6552)
-nodeRef1_subSysRef1 ==> etMessageService init(thread=6552)
-etMessageService ==> etMessageQueue init(thread=6552)
-etMessageService <== etMessageQueue
-etMessageService ==> etMessageQueue init(thread=6552)
-etMessageService <== etMessageQueue
-etMessageService ==> etMessageService initMessagePool(thread=6552)
-etMessageService ==> etMessageQueue push(thread=6552)
-etMessageService <== etMessageQueue
-etMessageService ==> etMessageQueue push(thread=6552)
-etMessageService <== etMessageQueue
-etMessageService ==> etMessageQueue push(thread=6552)
-etMessageService <== etMessageQueue
-etMessageService ==> etMessageQueue push(thread=6552)
-etMessageService <== etMessageQueue
-etMessageService ==> etMessageQueue push(thread=6552)
-etMessageService <== etMessageQueue
-etMessageService ==> etMessageQueue push(thread=6552)
-etMessageService <== etMessageQueue
-etMessageService ==> etMessageQueue push(thread=6552)
-etMessageService <== etMessageQueue
-etMessageService ==> etMessageQueue push(thread=6552)
-etMessageService <== etMessageQueue
-etMessageService ==> etMessageQueue push(thread=6552)
-etMessageService <== etMessageQueue
-etMessageService ==> etMessageQueue push(thread=6552)
-etMessageService <== etMessageQueue
-etMessageService ==> etMessageQueue resetLowWaterMark(thread=6552)
-etMessageService <== etMessageQueue
-etMessageService <== etMessageService
-etMessageService ==> etMutex construct(thread=6552)
-etMessageService <== etMutex
-etMessageService ==> etMutex construct(thread=6552)
-etMessageService <== etMutex
-etMessageService ==> etSema construct(thread=6552)
-etMessageService <== etSema
-etMessageService ==> etThread construct(thread=6552)
-etMessageService <== etThread
-nodeRef1_subSysRef1 <== etMessageService
-nodeRef1_subSysRef1 <== nodeRef1_subSysRef1
-nodeRef1_subSysRef1 ==> nodeRef1_subSysRef1 initActorInstances(thread=6552)
-nodeRef1_subSysRef1 ==> Toplevel init(thread=6552)
-nodeRef1_subSysRef1 <== Toplevel
-nodeRef1_subSysRef1 ==> Sender init(thread=6552)
-Sender ==> PSendDataConjPort sendData(thread=6552)
-PSendDataConjPort ==> etPort sendMessage(thread=6552)
-etPort ==> etMessageService getMessageBuffer(thread=6552)
-etMessageService ==> etMutex enter(thread=6552)
-etMessageService <== etMutex
-etMessageService ==> etMessageQueue pop(thread=6552)
-etMessageService <== etMessageQueue
-etMessageService ==> etMutex leave(thread=6552)
-etMessageService <== etMutex
-etPort <== etMessageService
-etPort ==> etMessageService pushMessage(thread=6552)
-etMessageService ==> etMutex enter(thread=6552)
-etMessageService <== etMutex
-etMessageService ==> etMessageQueue push(thread=6552)
-etMessageService <== etMessageQueue
-etMessageService ==> etSema wakeup(thread=6552)
-etMessageService <== etSema
-etMessageService ==> etMutex leave(thread=6552)
-etMessageService <== etMutex
-etPort <== etMessageService
-PSendDataConjPort <== etPort
-Sender <== PSendDataConjPort
-nodeRef1_subSysRef1 <== Sender
-nodeRef1_subSysRef1 ==> Receiver init(thread=6552)
-nodeRef1_subSysRef1 <== Receiver
-nodeRef1_subSysRef1 <== nodeRef1_subSysRef1
-main <== nodeRef1_subSysRef1
-main ==> nodeRef1_subSysRef1 start(thread=6552)
-nodeRef1_subSysRef1 ==> nodeRef1_subSysRef1 startMessageServices(thread=6552)
-nodeRef1_subSysRef1 ==> etMessageService start(thread=6552)
-etMessageService ==> etThread start(thread=6552)
-etMessageService <== etThread
-nodeRef1_subSysRef1 <== etMessageService
-nodeRef1_subSysRef1 <== nodeRef1_subSysRef1
-main <== nodeRef1_subSysRef1
-main ==> nodeRef1_subSysRef1 run(thread=6552)
-nodeRef1_subSysRef1 ==> etThread execute(thread=5940)
-etThread ==> etMessageService deliverAllMessages(thread=5940)
-etMessageService ==> etMessageQueue isNotEmpty(thread=5940)
-etMessageService <== etMessageQueue
-etMessageService ==> etMessageService popMessage(thread=5940)
-etMessageService ==> etMutex enter(thread=5940)
-etMessageService <== etMutex
-etMessageService ==> etMessageQueue pop(thread=5940)
-etMessageService <== etMessageQueue
-etMessageService ==> etMutex leave(thread=5940)
-etMessageService <== etMutex
-etMessageService <== etMessageService
-etMessageService ==> MsgDispatcher_PhysicalThread1 receiveMessage(thread=5940)
-MsgDispatcher_PhysicalThread1 ==> Receiver _receiveMessage(thread=5940)
-Receiver ==> PSendDataPort receivedData(thread=5940)
-PSendDataPort ==> etPort sendMessage(thread=5940)
-etPort ==> etMessageService getMessageBuffer(thread=5940)
-etMessageService ==> etMutex enter(thread=5940)
-etMessageService <== etMutex
-etMessageService ==> etMessageQueue pop(thread=5940)
-etMessageService <== etMessageQueue
-etMessageService ==> etMutex leave(thread=5940)
-etMessageService <== etMutex
-etPort <== etMessageService
-etPort ==> etMessageService pushMessage(thread=5940)
-etMessageService ==> etMutex enter(thread=5940)
-etMessageService <== etMutex
-etMessageService ==> etMessageQueue push(thread=5940)
-etMessageService <== etMessageQueue
-etMessageService ==> etSema wakeup(thread=5940)
-etMessageService <== etSema
-etMessageService ==> etMutex leave(thread=5940)
-etMessageService <== etMutex
-etPort <== etMessageService
-PSendDataPort <== etPort
-Receiver <== PSendDataPort
-MsgDispatcher_PhysicalThread1 <== Receiver
-etMessageService <== MsgDispatcher_PhysicalThread1
-etMessageService ==> etMessageService returnMessageBuffer(thread=5940)
-etMessageService ==> etMutex enter(thread=5940)
-etMessageService <== etMutex
-etMessageService ==> etMessageQueue push(thread=5940)
-etMessageService <== etMessageQueue
-etMessageService ==> etMutex leave(thread=5940)
-etMessageService <== etMutex
-etMessageService <== etMessageService
-etMessageService ==> etMessageQueue isNotEmpty(thread=5940)
-etMessageService <== etMessageQueue
-etMessageService ==> etMessageService popMessage(thread=5940)
-etMessageService ==> etMutex enter(thread=5940)
-etMessageService <== etMutex
-etMessageService ==> etMessageQueue pop(thread=5940)
-etMessageService <== etMessageQueue
-etMessageService ==> etMutex leave(thread=5940)
-etMessageService <== etMutex
-etMessageService <== etMessageService
-etMessageService ==> MsgDispatcher_PhysicalThread1 receiveMessage(thread=5940)
-MsgDispatcher_PhysicalThread1 ==> Sender _receiveMessage(thread=5940)
-MsgDispatcher_PhysicalThread1 <== Sender
-etMessageService <== MsgDispatcher_PhysicalThread1
-etMessageService ==> etMessageService returnMessageBuffer(thread=5940)
-etMessageService ==> etMutex enter(thread=5940)
-etMessageService <== etMutex
-etMessageService ==> etMessageQueue push(thread=5940)
-etMessageService <== etMessageQueue
-etMessageService ==> etMutex leave(thread=5940)
-etMessageService <== etMutex
-etMessageService <== etMessageService
-etMessageService ==> etMessageQueue isNotEmpty(thread=5940)
-etMessageService <== etMessageQueue
-etMessageService ==> etSema waitForWakeup(thread=5940)
-etMessageService <== etSema
-etMessageService ==> etMessageQueue isNotEmpty(thread=5940)
-etMessageService <== etMessageQueue
-etMessageService ==> etSema waitForWakeup(thread=5940)
-main <== nodeRef1_subSysRef1
-main ==> nodeRef1_subSysRef1 stop(thread=6552)
-nodeRef1_subSysRef1 ==> nodeRef1_subSysRef1 stopMessageServices(thread=6552)
-nodeRef1_subSysRef1 ==> etMessageService stop(thread=6552)
-etMessageService ==> etSystemProtocolConjPort terminate(thread=6552)
-etSystemProtocolConjPort ==> etPort sendMessage(thread=6552)
-etPort ==> etMessageService getMessageBuffer(thread=6552)
-etMessageService ==> etMutex enter(thread=6552)
-etMessageService <== etMutex
-etMessageService ==> etMessageQueue pop(thread=6552)
-etMessageService <== etMessageQueue
-etMessageService ==> etMutex leave(thread=6552)
-etMessageService <== etMutex
-etPort <== etMessageService
-etPort ==> etMessageService pushMessage(thread=6552)
-etMessageService ==> etMutex enter(thread=6552)
-etMessageService <== etMutex
-etMessageService ==> etMessageQueue push(thread=6552)
-etMessageService <== etMessageQueue
-etMessageService ==> etSema wakeup(thread=6552)
-etMessageService <== etSema
-etMessageService ==> etMutex leave(thread=6552)
-etMessageService <== etMutex
-etPort <== etMessageService
-etMessageService <== etSema
-etSystemProtocolConjPort <== etPort
-etMessageService ==> etMessageQueue isNotEmpty(thread=5940)
-etMessageService <== etSystemProtocolConjPort
-etMessageService <== etMessageQueue
-nodeRef1_subSysRef1 <== etMessageService
-etMessageService ==> etMessageService popMessage(thread=5940)
-nodeRef1_subSysRef1 <== nodeRef1_subSysRef1
-etMessageService ==> etMutex enter(thread=5940)
-main <== nodeRef1_subSysRef1
-etMessageService <== etMutex
-main ==> nodeRef1_subSysRef1 destroy(thread=6552)
-etMessageService ==> etMessageQueue pop(thread=5940)
-nodeRef1_subSysRef1 ==> nodeRef1_subSysRef1 destroyMessageServices(thread=6552)
-etMessageService <== etMessageQueue
-nodeRef1_subSysRef1 ==> etMessageService destroy(thread=6552)
-etMessageService ==> etMutex leave(thread=5940)
-etMessageService ==> etMutex destruct(thread=6552)
-etMessageService <== etMutex
-etMessageService <== etMutex
-etMessageService ==> etMutex destruct(thread=6552)
-etMessageService <== etMessageService
-etMessageService <== etMutex
-etMessageService ==> MsgDispatcher_PhysicalThread1 receiveMessage(thread=5940)
-etMessageService ==> etSema destruct(thread=6552)
-MsgDispatcher_PhysicalThread1 ==> etMessageService returnMessageBuffer(thread=5940)
-etMessageService <== etSema
-etMessageService ==> etMutex enter(thread=5940)
-nodeRef1_subSysRef1 <== etMessageService
-nodeRef1_subSysRef1 <== nodeRef1_subSysRef1
-main <== nodeRef1_subSysRef1
diff --git a/plugins/org.eclipse.etrice.generator.c/src/org/eclipse/etrice/generator/c/gen/ProtocolClassGen.xtend b/plugins/org.eclipse.etrice.generator.c/src/org/eclipse/etrice/generator/c/gen/ProtocolClassGen.xtend
index 7a6611a..fb57011 100644
--- a/plugins/org.eclipse.etrice.generator.c/src/org/eclipse/etrice/generator/c/gen/ProtocolClassGen.xtend
+++ b/plugins/org.eclipse.etrice.generator.c/src/org/eclipse/etrice/generator/c/gen/ProtocolClassGen.xtend
@@ -253,6 +253,7 @@ class ProtocolClassGen extends GenericProtocolClassGenerator {
«ELSE»
ET_MSC_LOGGER_SYNC_ENTRY("«portClassName»", "«message.name»")
«sendMessageCall(hasData, "self", memberInUse(pc.name, dir+message.name), typeName+refp, refa+"data")»
+ ET_MSC_LOGGER_ASYNC_OUT("Actor1", "«message.name»", "Actor2" )
ET_MSC_LOGGER_SYNC_EXIT
«ENDIF»
}
@@ -268,6 +269,7 @@ class ProtocolClassGen extends GenericProtocolClassGenerator {
ET_MSC_LOGGER_SYNC_ENTRY("«replPortClassName»", "«message.name»")
for (i=0; i<((etReplPort*)self)->size; ++i) {
«sendMessageCall(hasData, "((etPort*)&((etReplPort*)self)->ports[i])", memberInUse(pc.name, dir+message.name), typeName+refp, refa+"data")»
+ ET_MSC_LOGGER_ASYNC_OUT("Actor1", "«message.name»", "Actor2" )
}
ET_MSC_LOGGER_SYNC_EXIT
«ENDIF»
@@ -280,6 +282,7 @@ class ProtocolClassGen extends GenericProtocolClassGenerator {
ET_MSC_LOGGER_SYNC_ENTRY("«replPortClassName»", "«message.name»")
if (0<=idx && idx<((etReplPort*)self)->size) {
«sendMessageCall(hasData, "((etPort*)&((etReplPort*)self)->ports[idx])", memberInUse(pc.name, dir+message.name), typeName+refp, refa+"data")»
+ ET_MSC_LOGGER_ASYNC_OUT("Actor1", "«message.name»", "Actor2" )
}
ET_MSC_LOGGER_SYNC_EXIT
«ENDIF»
@@ -323,7 +326,8 @@ class ProtocolClassGen extends GenericProtocolClassGenerator {
def private messageGetterSignature(String className, String messageName, String type) {
type+" "+className+"_"+messageName+"_get(const "+className+"* const self)"
}
-
+
+// TODO: can this be deleted?
// def sendMessage(Message m, boolean conj) {'''
// «var dir = if (conj) "IN" else "OUT"»
// «var hdlr = m.getSendHandler(conj)»
diff --git a/plugins/org.eclipse.etrice.generator.c/src/org/eclipse/etrice/generator/c/gen/StateMachineGen.xtend b/plugins/org.eclipse.etrice.generator.c/src/org/eclipse/etrice/generator/c/gen/StateMachineGen.xtend
index 83e093d..7663548 100644
--- a/plugins/org.eclipse.etrice.generator.c/src/org/eclipse/etrice/generator/c/gen/StateMachineGen.xtend
+++ b/plugins/org.eclipse.etrice.generator.c/src/org/eclipse/etrice/generator/c/gen/StateMachineGen.xtend
@@ -17,6 +17,7 @@ import com.google.inject.Singleton
import org.eclipse.etrice.core.genmodel.etricegen.ExpandedActorClass
import org.eclipse.etrice.generator.generic.RoomExtensions
import org.eclipse.etrice.generator.generic.GenericStateMachineGenerator
+import static extension org.eclipse.etrice.generator.base.CodegenHelpers.*
import static extension org.eclipse.etrice.core.room.util.RoomHelpers.*
@Singleton
@@ -59,9 +60,13 @@ class StateMachineGen extends GenericStateMachineGenerator {
override protected genExtra(ExpandedActorClass xpac) {
val ac = xpac.actorClass
'''
+ /* state names */
+ static char* stateStrings[] = {"<no state>","<top>",«FOR state : ac.getAllBaseStatesLeavesLast() SEPARATOR ","»"«state.genStatePathName»"
+ «ENDFOR»};
«langExt.accessLevelPrivate»void setState(«ac.name»* self, «stateType» new_state) {
self->state = new_state;
+ ET_MSC_LOGGER_CHANGE_STATE("«ac.name»", stateStrings[new_state])
}
«langExt.accessLevelPrivate»«stateType» getState(«ac.name»* self) {
diff --git a/plugins/org.eclipse.etrice.generator.c/xtend-gen/org/eclipse/etrice/generator/c/gen/ProtocolClassGen.java b/plugins/org.eclipse.etrice.generator.c/xtend-gen/org/eclipse/etrice/generator/c/gen/ProtocolClassGen.java
index bf1d32d..7c4cf68 100644
--- a/plugins/org.eclipse.etrice.generator.c/xtend-gen/org/eclipse/etrice/generator/c/gen/ProtocolClassGen.java
+++ b/plugins/org.eclipse.etrice.generator.c/xtend-gen/org/eclipse/etrice/generator/c/gen/ProtocolClassGen.java
@@ -843,6 +843,13 @@ public class ProtocolClassGen extends GenericProtocolClassGenerator {
_builder.append(_sendMessageCall, " ");
_builder.newLineIfNotEmpty();
_builder.append("\t");
+ _builder.append("\t");
+ _builder.append("ET_MSC_LOGGER_ASYNC_OUT(\"Actor1\", \"");
+ String _name_4 = message.getName();
+ _builder.append(_name_4, " ");
+ _builder.append("\", \"Actor2\" )");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
_builder.append("ET_MSC_LOGGER_SYNC_EXIT");
_builder.newLine();
}
@@ -850,8 +857,8 @@ public class ProtocolClassGen extends GenericProtocolClassGenerator {
_builder.append("}");
_builder.newLine();
_builder.newLine();
- String _name_4 = message.getName();
- String _messageSignature_1 = this.messageSignature(replPortClassName, _name_4, "_broadcast", data);
+ String _name_5 = message.getName();
+ String _messageSignature_1 = this.messageSignature(replPortClassName, _name_5, "_broadcast", data);
_builder.append(_messageSignature_1, "");
_builder.append(" {");
_builder.newLineIfNotEmpty();
@@ -868,8 +875,8 @@ public class ProtocolClassGen extends GenericProtocolClassGenerator {
_builder.append("\t");
_builder.append(portClassName, " ");
_builder.append("_");
- String _name_5 = message.getName();
- _builder.append(_name_5, " ");
+ String _name_6 = message.getName();
+ _builder.append(_name_6, " ");
_builder.append("((etPort*)&((etReplPort*)self)->ports[i]");
_builder.append(dataCall, " ");
_builder.append(");");
@@ -885,8 +892,8 @@ public class ProtocolClassGen extends GenericProtocolClassGenerator {
_builder.append("ET_MSC_LOGGER_SYNC_ENTRY(\"");
_builder.append(replPortClassName, " ");
_builder.append("\", \"");
- String _name_6 = message.getName();
- _builder.append(_name_6, " ");
+ String _name_7 = message.getName();
+ _builder.append(_name_7, " ");
_builder.append("\")");
_builder.newLineIfNotEmpty();
_builder.append("\t");
@@ -894,16 +901,23 @@ public class ProtocolClassGen extends GenericProtocolClassGenerator {
_builder.newLine();
_builder.append("\t");
_builder.append("\t");
- String _name_7 = pc.getName();
- String _name_8 = message.getName();
- String _plus_6 = (dir + _name_8);
- String _memberInUse_1 = this._cExtensions.memberInUse(_name_7, _plus_6);
+ String _name_8 = pc.getName();
+ String _name_9 = message.getName();
+ String _plus_6 = (dir + _name_9);
+ String _memberInUse_1 = this._cExtensions.memberInUse(_name_8, _plus_6);
String _plus_7 = (typeName + refp);
String _plus_8 = (refa + "data");
String _sendMessageCall_1 = this.sendMessageCall(hasData, "((etPort*)&((etReplPort*)self)->ports[i])", _memberInUse_1, _plus_7, _plus_8);
_builder.append(_sendMessageCall_1, " ");
_builder.newLineIfNotEmpty();
_builder.append("\t");
+ _builder.append("\t");
+ _builder.append("ET_MSC_LOGGER_ASYNC_OUT(\"Actor1\", \"");
+ String _name_10 = message.getName();
+ _builder.append(_name_10, " ");
+ _builder.append("\", \"Actor2\" )");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
_builder.append("}");
_builder.newLine();
_builder.append("\t");
@@ -914,9 +928,9 @@ public class ProtocolClassGen extends GenericProtocolClassGenerator {
_builder.append("}");
_builder.newLine();
_builder.newLine();
- String _name_9 = message.getName();
+ String _name_11 = message.getName();
String _plus_9 = (", int idx" + data);
- String _messageSignature_2 = this.messageSignature(replPortClassName, _name_9, "", _plus_9);
+ String _messageSignature_2 = this.messageSignature(replPortClassName, _name_11, "", _plus_9);
_builder.append(_messageSignature_2, "");
_builder.append(" {");
_builder.newLineIfNotEmpty();
@@ -926,8 +940,8 @@ public class ProtocolClassGen extends GenericProtocolClassGenerator {
_builder.append("\t");
_builder.append(portClassName, " ");
_builder.append("_");
- String _name_10 = message.getName();
- _builder.append(_name_10, " ");
+ String _name_12 = message.getName();
+ _builder.append(_name_12, " ");
_builder.append("((etPort*)&((etReplPort*)self)->ports[idx]");
_builder.append(dataCall, " ");
_builder.append(");");
@@ -937,8 +951,8 @@ public class ProtocolClassGen extends GenericProtocolClassGenerator {
_builder.append("ET_MSC_LOGGER_SYNC_ENTRY(\"");
_builder.append(replPortClassName, " ");
_builder.append("\", \"");
- String _name_11 = message.getName();
- _builder.append(_name_11, " ");
+ String _name_13 = message.getName();
+ _builder.append(_name_13, " ");
_builder.append("\")");
_builder.newLineIfNotEmpty();
_builder.append("\t");
@@ -946,16 +960,23 @@ public class ProtocolClassGen extends GenericProtocolClassGenerator {
_builder.newLine();
_builder.append("\t");
_builder.append("\t");
- String _name_12 = pc.getName();
- String _name_13 = message.getName();
- String _plus_10 = (dir + _name_13);
- String _memberInUse_2 = this._cExtensions.memberInUse(_name_12, _plus_10);
+ String _name_14 = pc.getName();
+ String _name_15 = message.getName();
+ String _plus_10 = (dir + _name_15);
+ String _memberInUse_2 = this._cExtensions.memberInUse(_name_14, _plus_10);
String _plus_11 = (typeName + refp);
String _plus_12 = (refa + "data");
String _sendMessageCall_2 = this.sendMessageCall(hasData, "((etPort*)&((etReplPort*)self)->ports[idx])", _memberInUse_2, _plus_11, _plus_12);
_builder.append(_sendMessageCall_2, " ");
_builder.newLineIfNotEmpty();
_builder.append("\t");
+ _builder.append("\t");
+ _builder.append("ET_MSC_LOGGER_ASYNC_OUT(\"Actor1\", \"");
+ String _name_16 = message.getName();
+ _builder.append(_name_16, " ");
+ _builder.append("\", \"Actor2\" )");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
_builder.append("}");
_builder.newLine();
_builder.append("\t");
diff --git a/plugins/org.eclipse.etrice.generator.c/xtend-gen/org/eclipse/etrice/generator/c/gen/StateMachineGen.java b/plugins/org.eclipse.etrice.generator.c/xtend-gen/org/eclipse/etrice/generator/c/gen/StateMachineGen.java
index 88704ef..581b20f 100644
--- a/plugins/org.eclipse.etrice.generator.c/xtend-gen/org/eclipse/etrice/generator/c/gen/StateMachineGen.java
+++ b/plugins/org.eclipse.etrice.generator.c/xtend-gen/org/eclipse/etrice/generator/c/gen/StateMachineGen.java
@@ -17,6 +17,7 @@ import org.eclipse.etrice.core.genmodel.etricegen.ExpandedActorClass;
import org.eclipse.etrice.core.room.ActorClass;
import org.eclipse.etrice.core.room.State;
import org.eclipse.etrice.core.room.util.RoomHelpers;
+import org.eclipse.etrice.generator.base.CodegenHelpers;
import org.eclipse.etrice.generator.generic.GenericStateMachineGenerator;
import org.eclipse.etrice.generator.generic.RoomExtensions;
import org.eclipse.xtend2.lib.StringConcatenation;
@@ -113,6 +114,27 @@ public class StateMachineGen extends GenericStateMachineGenerator {
{
final ActorClass ac = xpac.getActorClass();
StringConcatenation _builder = new StringConcatenation();
+ _builder.append("/* state names */");
+ _builder.newLine();
+ _builder.append("static char* stateStrings[] = {\"<no state>\",\"<top>\",");
+ {
+ List<State> _allBaseStatesLeavesLast = this._roomExtensions.getAllBaseStatesLeavesLast(ac);
+ boolean _hasElements = false;
+ for(final State state : _allBaseStatesLeavesLast) {
+ if (!_hasElements) {
+ _hasElements = true;
+ } else {
+ _builder.appendImmediate(",", "");
+ }
+ _builder.append("\"");
+ String _genStatePathName = CodegenHelpers.getGenStatePathName(state);
+ _builder.append(_genStatePathName, "");
+ _builder.append("\"");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.append("};");
+ _builder.newLineIfNotEmpty();
_builder.newLine();
String _accessLevelPrivate = this.langExt.accessLevelPrivate();
_builder.append(_accessLevelPrivate, "");
@@ -127,6 +149,12 @@ public class StateMachineGen extends GenericStateMachineGenerator {
_builder.append("\t");
_builder.append("self->state = new_state;");
_builder.newLine();
+ _builder.append("\t");
+ _builder.append("ET_MSC_LOGGER_CHANGE_STATE(\"");
+ String _name_1 = ac.getName();
+ _builder.append(_name_1, " ");
+ _builder.append("\", stateStrings[new_state])");
+ _builder.newLineIfNotEmpty();
_builder.append("}");
_builder.newLine();
_builder.newLine();
@@ -135,8 +163,8 @@ public class StateMachineGen extends GenericStateMachineGenerator {
String _stateType_1 = this.stateType();
_builder.append(_stateType_1, "");
_builder.append(" getState(");
- String _name_1 = ac.getName();
- _builder.append(_name_1, "");
+ String _name_2 = ac.getName();
+ _builder.append(_name_2, "");
_builder.append("* self) {");
_builder.newLineIfNotEmpty();
_builder.append("\t");
diff --git a/runtime/org.eclipse.etrice.runtime.c/src/common/debugging/etMSCLogger.h b/runtime/org.eclipse.etrice.runtime.c/src/common/debugging/etMSCLogger.h
index 70f24d7..0087209 100644
--- a/runtime/org.eclipse.etrice.runtime.c/src/common/debugging/etMSCLogger.h
+++ b/runtime/org.eclipse.etrice.runtime.c/src/common/debugging/etMSCLogger.h
@@ -31,7 +31,7 @@ void etMSCLogger_setState(char* objectName, char* stateName);
#ifdef ET_MSC_LOGGER_ACTIVATE
#define ET_MSC_LOGGER_OPEN(object) \
- etMSCLogger_open("tmp", "msc"); \
+ etMSCLogger_open("tmp/log", "msc"); \
etMSCLogger_setObjectName(object);
#define ET_MSC_LOGGER_CLOSE etMSCLogger_close();
diff --git a/runtime/org.eclipse.etrice.runtime.c/src/config/etRuntimeConfig.h b/runtime/org.eclipse.etrice.runtime.c/src/config/etRuntimeConfig.h
index 05aaffa..f234caa 100644
--- a/runtime/org.eclipse.etrice.runtime.c/src/config/etRuntimeConfig.h
+++ b/runtime/org.eclipse.etrice.runtime.c/src/config/etRuntimeConfig.h
@@ -16,7 +16,7 @@
/* flags for debugging */
#define ET_MSC_LOGGER_ACTIVATE /* needs ET_LOGGER_ACTIVATE */
-#define ET_SYNC_MSC_LOGGER_ACTIVATE /* needs ET_MSC_LOGGER_ACTIVATE */
+//#define ET_SYNC_MSC_LOGGER_ACTIVATE /* needs ET_MSC_LOGGER_ACTIVATE */
#define ET_ASYNC_MSC_LOGGER_ACTIVATE /* needs ET_MSC_LOGGER_ACTIVATE */
#define ET_LOGGER_ACTIVATE
diff --git a/tests/org.eclipse.etrice.runtime.c.tests/.cproject b/tests/org.eclipse.etrice.runtime.c.tests/.cproject
index 08eb267..bf6c02d 100644
--- a/tests/org.eclipse.etrice.runtime.c.tests/.cproject
+++ b/tests/org.eclipse.etrice.runtime.c.tests/.cproject
@@ -1,5 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
+<?fileVersion 4.0.0?>
+
+<cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
<storageModule moduleId="org.eclipse.cdt.core.settings">
<cconfiguration id="cdt.managedbuild.config.gnu.mingw.exe.debug.1638834921">
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.config.gnu.mingw.exe.debug.1638834921" moduleId="org.eclipse.cdt.core.settings" name="DebugLinux">
@@ -41,8 +43,8 @@
<listOptionValue builtIn="false" value="rt"/>
</option>
<option id="gnu.c.link.option.paths.1505328291" name="Library search path (-L)" superClass="gnu.c.link.option.paths" valueType="libPaths">
- <listOptionValue builtIn="false" value="&quot;${workspace_loc:/org.eclipse.etrice.runtime.c/Debug}&quot;"/>
- <listOptionValue builtIn="false" value="&quot;${workspace_loc:/org.eclipse.etrice.runtime.c/PosixDebug}&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${workspace_loc:/org.eclipse.etrice.runtime.c/DebugMinGW}&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${workspace_loc:/org.eclipse.etrice.runtime.c/MinGWDebug}&quot;"/>
</option>
<inputType id="cdt.managedbuild.tool.gnu.c.linker.input.154971939" superClass="cdt.managedbuild.tool.gnu.c.linker.input">
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
@@ -64,8 +66,8 @@
<externalSettings containerId="org.eclipse.etrice.runtime.c;" factoryId="org.eclipse.cdt.core.cfg.export.settings.sipplier">
<externalSetting>
<entry flags="VALUE_WORKSPACE_PATH" kind="includePath" name="/org.eclipse.etrice.runtime.c"/>
- <entry flags="VALUE_WORKSPACE_PATH" kind="libraryPath" name="/org.eclipse.etrice.runtime.c/Debug"/>
- <entry flags="VALUE_WORKSPACE_PATH" kind="libraryPath" name="/org.eclipse.etrice.runtime.c/PosixDebug"/>
+ <entry flags="VALUE_WORKSPACE_PATH" kind="libraryPath" name="/org.eclipse.etrice.runtime.c/DebugMinGW"/>
+ <entry flags="VALUE_WORKSPACE_PATH" kind="libraryPath" name="/org.eclipse.etrice.runtime.c/MinGWDebug"/>
<entry flags="RESOLVED" kind="libraryFile" name="org.eclipse.etrice.runtime.c" srcPrefixMapping="" srcRootPath=""/>
</externalSetting>
</externalSettings>
@@ -156,8 +158,8 @@
<listOptionValue builtIn="false" srcPrefixMapping="" srcRootPath="" value="org.eclipse.etrice.runtime.c"/>
</option>
<option id="gnu.c.link.option.paths.714773418" name="Library search path (-L)" superClass="gnu.c.link.option.paths" valueType="libPaths">
- <listOptionValue builtIn="false" value="&quot;${workspace_loc:/org.eclipse.etrice.runtime.c/Debug}&quot;"/>
- <listOptionValue builtIn="false" value="&quot;${workspace_loc:/org.eclipse.etrice.runtime.c/PosixDebug}&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${workspace_loc:/org.eclipse.etrice.runtime.c/DebugMinGW}&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${workspace_loc:/org.eclipse.etrice.runtime.c/MinGWDebug}&quot;"/>
</option>
<inputType id="cdt.managedbuild.tool.gnu.c.linker.input.1024087368" superClass="cdt.managedbuild.tool.gnu.c.linker.input">
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
@@ -173,8 +175,8 @@
<externalSettings containerId="org.eclipse.etrice.runtime.c;" factoryId="org.eclipse.cdt.core.cfg.export.settings.sipplier">
<externalSetting>
<entry flags="VALUE_WORKSPACE_PATH" kind="includePath" name="/org.eclipse.etrice.runtime.c"/>
- <entry flags="VALUE_WORKSPACE_PATH" kind="libraryPath" name="/org.eclipse.etrice.runtime.c/Debug"/>
- <entry flags="VALUE_WORKSPACE_PATH" kind="libraryPath" name="/org.eclipse.etrice.runtime.c/PosixDebug"/>
+ <entry flags="VALUE_WORKSPACE_PATH" kind="libraryPath" name="/org.eclipse.etrice.runtime.c/DebugMinGW"/>
+ <entry flags="VALUE_WORKSPACE_PATH" kind="libraryPath" name="/org.eclipse.etrice.runtime.c/MinGWDebug"/>
<entry flags="RESOLVED" kind="libraryFile" name="org.eclipse.etrice.runtime.c" srcPrefixMapping="" srcRootPath=""/>
</externalSetting>
</externalSettings>