Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Hilden2020-05-28 09:01:28 +0000
committerHenrik Rentz-Reichert2020-05-29 06:37:28 +0000
commit7d2dca3eab00fd3d3ac4240e2b3f9bd6aeb71127 (patch)
tree7e39c9eae1d68900ad810a2bdc3b00dfcdd08f50 /plugins
parentf0b034a9a7d42babf68b04e0e4fa580e424eba7d (diff)
downloadorg.eclipse.etrice-7d2dca3eab00fd3d3ac4240e2b3f9bd6aeb71127.tar.gz
org.eclipse.etrice-7d2dca3eab00fd3d3ac4240e2b3f9bd6aeb71127.tar.xz
org.eclipse.etrice-7d2dca3eab00fd3d3ac4240e2b3f9bd6aeb71127.zip
Bug 563658 - [Documentation] Add documentation for PortClasses
Added PortClass to feature model. Change-Id: Id6c68936a7d8a162689585e668fcfb4bc0c89443
Diffstat (limited to 'plugins')
-rw-r--r--plugins/org.eclipse.etrice.doc/featuremodel/etrice.roomlanguage.featurizer86
-rw-r--r--plugins/org.eclipse.etrice.doc/online-doc/content/feature-reference.md108
-rw-r--r--plugins/org.eclipse.etrice.doc/targets/contextHelp.xml134
-rw-r--r--plugins/org.eclipse.etrice.doc/targets/eclipse-help/developers-reference.html2
-rw-r--r--plugins/org.eclipse.etrice.doc/targets/eclipse-help/etrice-doc.html9
-rw-r--r--plugins/org.eclipse.etrice.doc/targets/eclipse-help/feature-reference.html77
-rw-r--r--plugins/org.eclipse.etrice.doc/targets/eclipse-help/toc-topics.xml.html1
-rw-r--r--plugins/org.eclipse.etrice.doc/targets/keyword-hover/PortClass.html18
-rw-r--r--plugins/org.eclipse.etrice.generator.doc/src/org/eclipse/etrice/generator/doc/gen/InstanceDiagramGen.xtend2
9 files changed, 360 insertions, 77 deletions
diff --git a/plugins/org.eclipse.etrice.doc/featuremodel/etrice.roomlanguage.featurizer b/plugins/org.eclipse.etrice.doc/featuremodel/etrice.roomlanguage.featurizer
index f3a983d3c..ebb499f38 100644
--- a/plugins/org.eclipse.etrice.doc/featuremodel/etrice.roomlanguage.featurizer
+++ b/plugins/org.eclipse.etrice.doc/featuremodel/etrice.roomlanguage.featurizer
@@ -1098,11 +1098,97 @@ Feature ProtocolClass
contains Attribute
contains Operation
contains Annotation
+ contains PortClass
uses Inheritance
stable
;
+Feature PortClass
+ description '''A PortClass allows a specifc implementation of a port class of a protocol'''
+ text '''
+ *This is an advanced feature which is highly target language specific.*
+
+ A ProtocolClass may define a port class which can be used to intercept messages within a port either on the sending or on the receiving side. On the sending side the messages are intercepted before they are passed to the message service. On the receiving side they are intercepted before they are passed to the receiving actor.
+
+ A PortClass is always either *regular*, i.e. it "lives" within a regular port, or *conjugated*. A PortClass may define local attributes, operations and/or handlers for incoming or outgoing messages. The message direction of handlers in PortClasses always matches the message direction of the ProtocolClass. It is not switched for the *conjugated* PortClass. Whether a message is passed from the message service into the handler and has to be forwarded to the actor or vise versa depends on the type of the PortClass (*regular*, *conjugated*) and the message direction in the ProtocolClass.
+ '''
+ example |||
+ ```room
+ // This example uses the port class interface provided by the c code generator
+ ProtocolClass PingPong {
+ incoming {
+ Message ping(uint8)
+ }
+ outgoing {
+ Message pong(uint8)
+ }
+ regular PortClass {
+ handle incoming ping '''
+ uint8 msgDataOffset = MEM_CEIL(sizeof(etMessage));
+ uint8 transitionData = (uint8)((char*)msg + msgDataOffset);;
+
+ // do something here
+
+ /* hand over the message to the actor: */
+ (*receiveMessageFunc)(actor, self, msg);
+ '''
+ handle outgoing pong '''
+ uint8 transitionData = data__et;
+
+ // do something with the data here
+
+ // hand over data to message service
+ etPort_sendMessage(self, PingPong_OUT_pong, sizeof(uint8), &transitionData);
+ '''
+ }
+ conjugated PortClass {
+ handle incoming ping '''
+ // The ping message is outgoing in the conjugated portclass
+ uint8 transitionData = data__et;
+
+ // do something with the data here
+
+ // hand over data to message service
+ etPort_sendMessage(self, PingPong_IN_ping, sizeof(uint8), &transitionData);
+ '''
+ handle outgoing pong '''
+ // The pong message is incoming in the conjugated portclass
+ uint8 msgDataOffset = MEM_CEIL(sizeof(etMessage));
+ uint8 transitionData = (uint8)((char*)msg + msgDataOffset);;
+
+ // do something here
+
+ /* hand over the message to the actor: */
+ (*receiveMessageFunc)(actor, self, msg);
+ '''
+ }
+ }
+ ```
+ |||
+ help |||
+ ```room
+ // This example uses the port class interface provided by the c code generator
+ ProtocolClass PingPong {
+ incoming {
+ Message ping(uint8)
+ }
+ outgoing {
+ Message pong(uint8)
+ }
+ regular PortClass {
+ //...
+ }
+ conjugated PortClass {
+ // ...
+ }
+ }
+ ```
+ |||
+
+ stable
+;
+
abstract Feature DataType
description '''A DataType can take 4 forms and types data elements like an Attribute or Operation argument'''
stable
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 ae0d21566..ec088d78a 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
@@ -1925,6 +1925,90 @@ A connection of Ports is denoted by a Binding.
---
+### PortClass
+A PortClass allows a specifc implementation of a port class of a protocol
+
+*This is an advanced feature which is highly target language specific.*
+
+A ProtocolClass may define a port class which can be used to intercept messages within a port either on the sending or on the receiving side. On the sending side the messages are intercepted before they are passed to the message service. On the receiving side they are intercepted before they are passed to the receiving actor.
+
+A PortClass is always either *regular*, i.e. it "lives" within a regular port, or *conjugated*. A PortClass may define local attributes, operations and/or handlers for incoming or outgoing messages. The message direction of handlers in PortClasses always matches the message direction of the ProtocolClass. It is not switched for the *conjugated* PortClass. Whether a message is passed from the message service into the handler and has to be forwarded to the actor or vise versa depends on the type of the PortClass (*regular*, *conjugated*) and the message direction in the ProtocolClass.
+
+
+
+<table style="vertical-align: middle;" class="table">
+<thead>
+<tr>
+ <th colspan="3">Feature Usage</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+ <td rowspan="1" style="white-space: nowrap;">Is contained in:</td>
+ <td>[ProtocolClass](#protocolclass)
+ </td>
+ <td>A ProtocolClass defines messages and is the interface specification for a Port</td>
+</tr>
+</tbody>
+</table>
+
+**Example**:
+
+```room
+// This example uses the port class interface provided by the c code generator
+ProtocolClass PingPong {
+ incoming {
+ Message ping(uint8)
+ }
+ outgoing {
+ Message pong(uint8)
+ }
+ regular PortClass {
+ handle incoming ping '''
+ uint8 msgDataOffset = MEM_CEIL(sizeof(etMessage));
+ uint8 transitionData = (uint8)((char*)msg + msgDataOffset);;
+
+ // do something here
+
+ /* hand over the message to the actor: */
+ (*receiveMessageFunc)(actor, self, msg);
+ '''
+ handle outgoing pong '''
+ uint8 transitionData = data__et;
+
+ // do something with the data here
+
+ // hand over data to message service
+ etPort_sendMessage(self, PingPong_OUT_pong, sizeof(uint8), &transitionData);
+ '''
+ }
+ conjugated PortClass {
+ handle incoming ping '''
+ // The ping message is outgoing in the conjugated portclass
+ uint8 transitionData = data__et;
+
+ // do something with the data here
+
+ // hand over data to message service
+ etPort_sendMessage(self, PingPong_IN_ping, sizeof(uint8), &transitionData);
+ '''
+ handle outgoing pong '''
+ // The pong message is incoming in the conjugated portclass
+ uint8 msgDataOffset = MEM_CEIL(sizeof(etMessage));
+ uint8 transitionData = (uint8)((char*)msg + msgDataOffset);;
+
+ // do something here
+
+ /* hand over the message to the actor: */
+ (*receiveMessageFunc)(actor, self, msg);
+ '''
+ }
+}
+```
+
+---
+
+
### PrimitiveType
A PrimitiveType is an abstraction of a target language's basic type (e.g. integer or boolean)
@@ -2002,7 +2086,7 @@ ProtocolClass SimpleProtocolClass {
</thead>
<tbody>
<tr>
- <td rowspan="4" style="white-space: nowrap;">Contains:</td>
+ <td rowspan="5" style="white-space: nowrap;">Contains:</td>
<td>[CommunicationType](#communicationtype)
</td>
<td>The CommunicationType defines the communication semantics of a ProtocolClass</td>
@@ -2023,6 +2107,11 @@ ProtocolClass SimpleProtocolClass {
<td>An Annotation can be attached to a ROOM class to specify the properties of its AnnotationType</td>
</tr>
<tr>
+ <td>[PortClass](#portclass)
+ </td>
+ <td>A PortClass allows a specifc implementation of a port class of a protocol</td>
+</tr>
+<tr>
<td rowspan="1" style="white-space: nowrap;">Uses:</td>
<td>[Inheritance](#inheritance)
</td>
@@ -3614,14 +3703,6 @@ 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
@@ -3661,6 +3742,7 @@ The MSCLogging is activated by default, but can be set manually in the [Generati
[ExecutionType]: #executiontype
[CommunicationType]: #communicationtype
[ProtocolClass]: #protocolclass
+[PortClass]: #portclass
[DataType]: #datatype
[PrimitiveType]: #primitivetype
[Enumeration]: #enumeration
@@ -3675,3 +3757,11 @@ 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
diff --git a/plugins/org.eclipse.etrice.doc/targets/contextHelp.xml b/plugins/org.eclipse.etrice.doc/targets/contextHelp.xml
index 585ceed92..c918af062 100644
--- a/plugins/org.eclipse.etrice.doc/targets/contextHelp.xml
+++ b/plugins/org.eclipse.etrice.doc/targets/contextHelp.xml
@@ -1,62 +1,6 @@
<!-- 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"/>
@@ -156,9 +100,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">
@@ -172,10 +116,10 @@
<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">
@@ -273,10 +217,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="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"/>
+<topic href="targets/eclipse-help/feature-reference.html#actorref" label="GraphicalStructureEditor"/>
+<topic href="targets/eclipse-help/feature-reference.html#actorref" label="ActorRefPropertyDialog"/>
</context>
<context id="featureContextHelp_Binding" title="Binding">
@@ -284,9 +228,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">
@@ -294,9 +238,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">
@@ -323,6 +267,12 @@
<topic href="targets/eclipse-help/feature-reference.html#protocolclass" label="SPP"/>
</context>
+<context id="featureContextHelp_PortClass" title="PortClass">
+<description>A PortClass allows a specifc implementation of a port class of a protocol</description>
+<topic href="targets/eclipse-help/feature-reference.html#portclass" label="PortClass"/>
+<topic href="targets/eclipse-help/feature-reference.html#portclass" label="ProtocolClass"/>
+</context>
+
<context id="featureContextHelp_PrimitiveType" title="PrimitiveType">
<description>A PrimitiveType is an abstraction of a target language's basic type (e.g. integer or boolean)</description>
<topic href="targets/eclipse-help/feature-reference.html#primitivetype" label="PrimitiveType"/>
@@ -389,9 +339,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">
@@ -405,9 +355,65 @@
<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>
</contexts>
diff --git a/plugins/org.eclipse.etrice.doc/targets/eclipse-help/developers-reference.html b/plugins/org.eclipse.etrice.doc/targets/eclipse-help/developers-reference.html
index 277378db5..56844b550 100644
--- a/plugins/org.eclipse.etrice.doc/targets/eclipse-help/developers-reference.html
+++ b/plugins/org.eclipse.etrice.doc/targets/eclipse-help/developers-reference.html
@@ -233,8 +233,6 @@
<li>
<p>the default <code>multiplicity</code> of the <code>ActorRef</code> is set to 1</p></li>
<li>
- <p>an operation <code>getGeneralProtocol</code> is added to the <code>InterfaceItem</code></p></li>
- <li>
<p>an operation <code>getSemantics</code> is added to the <code>InterfaceItem</code></p></li>
<li>
<p>an operation <code>getAllIncomingAbstractMessages</code> is added to the <code>InterfaceItem</code></p></li>
diff --git a/plugins/org.eclipse.etrice.doc/targets/eclipse-help/etrice-doc.html b/plugins/org.eclipse.etrice.doc/targets/eclipse-help/etrice-doc.html
index 1e1b73720..3d99b4f7a 100644
--- a/plugins/org.eclipse.etrice.doc/targets/eclipse-help/etrice-doc.html
+++ b/plugins/org.eclipse.etrice.doc/targets/eclipse-help/etrice-doc.html
@@ -934,6 +934,15 @@
+<li><a href="feature-reference.html#portclass">PortClass</a></li>
+
+
+
+
+
+
+
+
<li><a href="feature-reference.html#primitivetype">PrimitiveType</a></li>
diff --git a/plugins/org.eclipse.etrice.doc/targets/eclipse-help/feature-reference.html b/plugins/org.eclipse.etrice.doc/targets/eclipse-help/feature-reference.html
index aaaa65316..9e6f5cbf7 100644
--- a/plugins/org.eclipse.etrice.doc/targets/eclipse-help/feature-reference.html
+++ b/plugins/org.eclipse.etrice.doc/targets/eclipse-help/feature-reference.html
@@ -1517,6 +1517,77 @@
</tbody>
</table>
<hr>
+<h3><a href="#portclass" name="portclass"></a>PortClass</h3>
+<p>A PortClass allows a specifc implementation of a port class of a protocol</p>
+<p><em>This is an advanced feature which is highly target language specific.</em></p>
+<p>A ProtocolClass may define a port class which can be used to intercept messages within a port either on the sending or on the receiving side. On the sending side the messages are intercepted before they are passed to the message service. On the receiving side they are intercepted before they are passed to the receiving actor.</p>
+<p>A PortClass is always either <em>regular</em>, i.e. it “lives” within a regular port, or <em>conjugated</em>. A PortClass may define local attributes, operations and/or handlers for incoming or outgoing messages. The message direction of handlers in PortClasses always matches the message direction of the ProtocolClass. It is not switched for the <em>conjugated</em> PortClass. Whether a message is passed from the message service into the handler and has to be forwarded to the actor or vise versa depends on the type of the PortClass (*regular*, <em>conjugated</em>) and the message direction in the ProtocolClass.</p>
+<table style="vertical-align: middle;" class="table">
+<thead>
+<tr>
+ <th colspan="3">Feature Usage</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+ <td rowspan="1" style="white-space: nowrap;"><p>Is contained in:</p></td>
+ <td><p><a href="#protocolclass">ProtocolClass</a></p></td>
+ <td><p>A ProtocolClass defines messages and is the interface specification for a Port</p></td>
+</tr>
+</tbody>
+</table>
+<p><strong>Example</strong>:</p>
+<pre><code class="room customHighlighted"><span class="comment">// This example uses the port class interface provided by the c code generator
+</span><span class="keyword">ProtocolClass</span> PingPong {
+ <span class="keyword">incoming</span> {
+ <span class="keyword">Message</span> ping(uint8)
+ }
+ <span class="keyword">outgoing</span> {
+ <span class="keyword">Message</span> pong(uint8)
+ }
+ <span class="keyword">regular</span> <span class="keyword">PortClass</span> {
+ <span class="keyword">handle</span> <span class="keyword">incoming</span> ping <span class="string">'''
+ uint8 msgDataOffset = MEM_CEIL(sizeof(etMessage));
+ uint8 transitionData = (uint8)((char*)msg + msgDataOffset);;
+
+ // do something here
+
+ /* hand over the message to the actor: */
+ (*receiveMessageFunc)(actor, self, msg);
+ '''</span>
+ <span class="keyword">handle</span> <span class="keyword">outgoing</span> pong <span class="string">'''
+ uint8 transitionData = data__et;
+
+ // do something with the data here
+
+ // hand over data to message service
+ etPort_sendMessage(self, PingPong_OUT_pong, sizeof(uint8), &amp;transitionData);
+ '''</span>
+ }
+ <span class="keyword">conjugated</span> <span class="keyword">PortClass</span> {
+ <span class="keyword">handle</span> <span class="keyword">incoming</span> ping <span class="string">'''
+ // The ping message is outgoing in the conjugated portclass
+ uint8 transitionData = data__et;
+
+ // do something with the data here
+
+ // hand over data to message service
+ etPort_sendMessage(self, PingPong_IN_ping, sizeof(uint8), &amp;transitionData);
+ '''</span>
+ <span class="keyword">handle</span> <span class="keyword">outgoing</span> pong <span class="string">'''
+ // The pong message is incoming in the conjugated portclass
+ uint8 msgDataOffset = MEM_CEIL(sizeof(etMessage));
+ uint8 transitionData = (uint8)((char*)msg + msgDataOffset);;
+
+ // do something here
+
+ /* hand over the message to the actor: */
+ (*receiveMessageFunc)(actor, self, msg);
+ '''</span>
+ }
+}
+</code></pre>
+<hr>
<h3><a href="#primitivetype" name="primitivetype"></a>PrimitiveType</h3>
<p>A PrimitiveType is an abstraction of a target language’s basic type (e.g. integer or boolean)</p>
<table style="vertical-align: middle;" class="table">
@@ -1575,7 +1646,7 @@
</thead>
<tbody>
<tr>
- <td rowspan="4" style="white-space: nowrap;"><p>Contains:</p></td>
+ <td rowspan="5" style="white-space: nowrap;"><p>Contains:</p></td>
<td><p><a href="#communicationtype">CommunicationType</a></p></td>
<td><p>The CommunicationType defines the communication semantics of a ProtocolClass</p></td>
</tr>
@@ -1592,6 +1663,10 @@
<td><p>An Annotation can be attached to a ROOM class to specify the properties of its AnnotationType</p></td>
</tr>
<tr>
+ <td><p><a href="#portclass">PortClass</a></p></td>
+ <td><p>A PortClass allows a specifc implementation of a port class of a protocol</p></td>
+</tr>
+<tr>
<td rowspan="1" style="white-space: nowrap;"><p>Uses:</p></td>
<td><p><a href="#inheritance">Inheritance</a></p></td>
<td><p>A class can specify a single super class and inherits elements from the super class hierarchy</p></td>
diff --git a/plugins/org.eclipse.etrice.doc/targets/eclipse-help/toc-topics.xml.html b/plugins/org.eclipse.etrice.doc/targets/eclipse-help/toc-topics.xml.html
index b7916c604..ae468bda0 100644
--- a/plugins/org.eclipse.etrice.doc/targets/eclipse-help/toc-topics.xml.html
+++ b/plugins/org.eclipse.etrice.doc/targets/eclipse-help/toc-topics.xml.html
@@ -117,6 +117,7 @@
</topic><topic href="targets/eclipse-help/feature-reference.html#logicalsystem" label="LogicalSystem">
</topic><topic href="targets/eclipse-help/feature-reference.html#operation" label="Operation">
</topic><topic href="targets/eclipse-help/feature-reference.html#port" label="Port">
+</topic><topic href="targets/eclipse-help/feature-reference.html#portclass" label="PortClass">
</topic><topic href="targets/eclipse-help/feature-reference.html#primitivetype" label="PrimitiveType">
</topic><topic href="targets/eclipse-help/feature-reference.html#protocolclass" label="ProtocolClass">
</topic><topic href="targets/eclipse-help/feature-reference.html#refinedstate" label="RefinedState">
diff --git a/plugins/org.eclipse.etrice.doc/targets/keyword-hover/PortClass.html b/plugins/org.eclipse.etrice.doc/targets/keyword-hover/PortClass.html
new file mode 100644
index 000000000..ea2702bf8
--- /dev/null
+++ b/plugins/org.eclipse.etrice.doc/targets/keyword-hover/PortClass.html
@@ -0,0 +1,18 @@
+<!-- generated by featurizer -->
+<p>A PortClass allows a specifc implementation of a port class of a protocol</p>
+<pre><code class=room customHighlighted><span class=comment>// This example uses the port class interface provided by the c code generator
+</span><span class=keyword>ProtocolClass</span> PingPong {
+ <span class=keyword>incoming</span> {
+ <span class=keyword>Message</span> ping(uint8)
+ }
+ <span class=keyword>outgoing</span> {
+ <span class=keyword>Message</span> pong(uint8)
+ }
+ <span class=keyword>regular</span> <span class=keyword>PortClass</span> {
+ <span class=comment>//...
+</span> }
+ <span class=keyword>conjugated</span> <span class=keyword>PortClass</span> {
+ <span class=comment>// ...
+</span> }
+}
+</code></pre> \ No newline at end of file
diff --git a/plugins/org.eclipse.etrice.generator.doc/src/org/eclipse/etrice/generator/doc/gen/InstanceDiagramGen.xtend b/plugins/org.eclipse.etrice.generator.doc/src/org/eclipse/etrice/generator/doc/gen/InstanceDiagramGen.xtend
index 603c4e8c5..4dc7e114d 100644
--- a/plugins/org.eclipse.etrice.generator.doc/src/org/eclipse/etrice/generator/doc/gen/InstanceDiagramGen.xtend
+++ b/plugins/org.eclipse.etrice.generator.doc/src/org/eclipse/etrice/generator/doc/gen/InstanceDiagramGen.xtend
@@ -42,7 +42,7 @@ class InstanceDiagramGen {
def private generate(Root root, SystemInstance sys) '''
digraph sys.name {
- rankdir=LR;
+ //rankdir=LR;
node [shape=box];
sys.path.getPathName() [label="sys.name\n(sys.name)" style=filled color=red];
FOR ssi : sys.instances

Back to the top