added documentation PInterrupt
diff --git a/documentation/nightly/Dave-Integration.html b/documentation/nightly/Dave-Integration.html
index 7116d2c..7a10d79 100644
--- a/documentation/nightly/Dave-Integration.html
+++ b/documentation/nightly/Dave-Integration.html
@@ -574,6 +574,13 @@
 
 
 
+<li><a href="etrice-features.html#interrupt-events">Interrupt Events</a></li>
+
+
+
+
+
+
 </ul>
 </li>
 
@@ -769,6 +776,13 @@
 
 
 
+<li><a href="feature-reference.html#portclass">PortClass</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#primitivetype">PrimitiveType</a></li>
 
 
@@ -1200,7 +1214,7 @@
 </ul>
 </div>
 </div>
-<span class="version pull-right">version 2.x</span></p>
+<span class="version pull-right">version 3.x</span></p>
 <div class="col-sm-9">
 <h1><a href="#dave-etrice-toolchain-tutorial" name="dave-etrice-toolchain-tutorial"></a>DAVE-eTrice Toolchain Tutorial</h1>
 <h2><a href="#introduction" name="introduction"></a>Introduction</h2>
@@ -1886,7 +1900,7 @@
 </code></pre>
 <p>Generate your code, compile and debug the application.<br>Have fun.</p>
 <hr>
-<p><a href="#navbar">back to top</a> <span class="version pull-right">version 2.x</span></p>
+<p><a href="#navbar">back to top</a> <span class="version pull-right">version 3.x</span></p>
 </div>
 </div>
 </div>
diff --git a/documentation/nightly/ResourceRequirements.html b/documentation/nightly/ResourceRequirements.html
index 61f7c8e..26f1679 100644
--- a/documentation/nightly/ResourceRequirements.html
+++ b/documentation/nightly/ResourceRequirements.html
@@ -574,6 +574,13 @@
 
 
 
+<li><a href="etrice-features.html#interrupt-events">Interrupt Events</a></li>
+
+
+
+
+
+
 </ul>
 </li>
 
@@ -769,6 +776,13 @@
 
 
 
+<li><a href="feature-reference.html#portclass">PortClass</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#primitivetype">PrimitiveType</a></li>
 
 
@@ -1200,7 +1214,7 @@
 </ul>
 </div>
 </div>
-<span class="version pull-right">version 2.x</span></p>
+<span class="version pull-right">version 3.x</span></p>
 <div class="col-sm-9">
 <h1><a href="#resource-requirements" name="resource-requirements"></a>Resource Requirements</h1>
 <p>There is often the question: What are the costs of the high level modeling language? The answer depends on many parameters e.g. compiler settings, uC architecture, configuration of the runtime system, model size…</p>
@@ -1252,7 +1266,7 @@
 </table>
 <p>As a result from the above table you should be able to assess the costs on the one hand and the benefits of a model on the other hand for your specific application. As a rough recommendation and depending on your specific application it might be reasonable to start modeling with a single threaded application on a microcontroller starting from 16KByte Flash an 4KByte RAM. For example a XMC™ Cortex M0 from Infineon with 64KByte Flash and 16kByte RAM provides a comfortable platform for modelling even multi threaded systems with underlaying operating system. </p>
 <hr>
-<p><a href="#navbar">back to top</a> <span class="version pull-right">version 2.x</span></p>
+<p><a href="#navbar">back to top</a> <span class="version pull-right">version 3.x</span></p>
 </div>
 </div>
 </div>
diff --git a/documentation/nightly/developers-reference.html b/documentation/nightly/developers-reference.html
index ad35d11..2f3dbe8 100644
--- a/documentation/nightly/developers-reference.html
+++ b/documentation/nightly/developers-reference.html
@@ -574,6 +574,13 @@
 
 
 
+<li><a href="etrice-features.html#interrupt-events">Interrupt Events</a></li>
+
+
+
+
+
+
 </ul>
 </li>
 
@@ -769,6 +776,13 @@
 
 
 
+<li><a href="feature-reference.html#portclass">PortClass</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#primitivetype">PrimitiveType</a></li>
 
 
@@ -1200,7 +1214,7 @@
 </ul>
 </div>
 </div>
-<span class="version pull-right">version 2.x</span></p>
+<span class="version pull-right">version 3.x</span></p>
 <div class="col-sm-9">
 <h1><a href="#etrice-tool-developer-s-reference" name="etrice-tool-developer-s-reference"></a>eTrice Tool Developer’s Reference</h1>
 <h2><a href="#architecture" name="architecture"></a>Architecture</h2>
@@ -1421,8 +1435,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>
@@ -1589,7 +1601,7 @@
 <h4><a href="#the-documentation-generator" name="the-documentation-generator"></a>The Documentation Generator</h4>
 <p>The documentation generator creates documentation in LaTex format which can be converted into PDF and many other formats.</p>
 <hr>
-<p><a href="#navbar">back to top</a> <span class="version pull-right">version 2.x</span></p>
+<p><a href="#navbar">back to top</a> <span class="version pull-right">version 3.x</span></p>
 </div>
 </div>
 </div>
diff --git a/documentation/nightly/etrice-features.html b/documentation/nightly/etrice-features.html
index db86ffb..b3788ef 100644
--- a/documentation/nightly/etrice-features.html
+++ b/documentation/nightly/etrice-features.html
@@ -574,6 +574,13 @@
 
 
 
+<li><a href="etrice-features.html#interrupt-events">Interrupt Events</a></li>
+
+
+
+
+
+
 </ul>
 </li>
 
@@ -769,6 +776,13 @@
 
 
 
+<li><a href="feature-reference.html#portclass">PortClass</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#primitivetype">PrimitiveType</a></li>
 
 
@@ -1200,7 +1214,7 @@
 </ul>
 </div>
 </div>
-<span class="version pull-right">version 2.x</span></p>
+<span class="version pull-right">version 3.x</span></p>
 <div class="col-sm-9">
 <h1><a href="#etrice-features" name="etrice-features"></a>eTrice Features</h1>
 <h2><a href="#model-navigation" name="model-navigation"></a>Model Navigation</h2>
@@ -1453,8 +1467,73 @@
 <p>It is possible to generate a monitor, that can check the contract at runtime. The generator transforms any contract to an ActorClass, which can be placed between the implementing parties to detect any violation of the contract.</p>
 <img style="width: 100%;" src="images/050-InterfaceContractMonitor.png">
 <p>The generator is called “eTrice Contract Monitor Generator”. The usage is similar to the eTrice source code generators. By default the generated models are placed in the folder ‘model-gen’. The name of the generated ActorClass can be adjusted in the contract annotation <code>@InterfaceContractDefinition</code> using the attribute <code>generatedMontiorName</code>.<br>The generated monitor implements <code>PContractMonitorControl</code>, which can be used to query the violations status or to toggle the propagation of invalid messages. It can be found in the modellib under the namespace <code>etrice.api.contracts.monitors</code>.</p>
+<h2><a href="#interrupt-events" name="interrupt-events"></a>Interrupt Events</h2>
+<p>In eTrice the protocol <code>etrice.api.interrupt.PInterrupt</code> models an <a href="https://en.wikipedia.org/wiki/Interrupt">interrupt</a> event. The protocol consists of two messages <code>fire</code> and <code>event</code>, which have higher priority than other eTrice messages.<br>The flow of an interrupt event is as follows. First, the interrupt handler must create the eTrice message <code>PInterrupt.fire</code>. As soon as the execution returns to the eTrice thread, the eTrice runtime dispatches the <code>PInterrupt.event</code> message immediately before any other queued message. As a result, the interrupt <code>event</code> message will be received by the target state machine at once. The execution is always on the eTrice thread to avoid any concurrency issues from the interrupt context.</p>
+<p>The following examples shows how to connect an interrupt handler to the eTrice application.<br>First there is the simple actor <code>AExternalUSBIsr</code>, which exports the <code>PInterrupt</code> conjugated port to an external function called <code>USB_register_port</code>.</p>
+<pre><code class="room customHighlighted"><span class="keyword">import</span> etrice.api.interrupt.PInterrupt
+
+<span class="keyword">ActorClass</span> AExternalUSBIsr {
+	<span class="keyword">Interface</span> {
+		<span class="keyword">conjugated</span> <span class="keyword">Port</span> isrUSBExported: PInterrupt
+	}
+	<span class="keyword">Structure</span> {
+		<span class="keyword">external</span> <span class="keyword">Port</span> isrUSBExported
+	}
+	<span class="keyword">Behavior</span> {
+		<span class="keyword">StateMachine</span> {
+			<span class="keyword">State</span> state
+			<span class="keyword">Transition</span> init: <span class="keyword">initial</span> -&gt; state {
+				<span class="keyword">action</span> <span class="string">'''
+					// export port isrUSBExported to external function
+					USB_register_port(isrUSBExported.export());
+				'''</span>
+			}
+		}
+	}
+}
+</code></pre>
+<p>The function <code>USB_register_port</code> saves the port handle to <code>usbIsr_port</code>. The interrupt handler can use this handle to trigger the <code>fire</code> message from its interrupt context.</p>
+<pre><code class="c">// #include "etrice/api/interrupt/PInterrupt.h"
+
+static PInterruptConjPort *usbIsr_port = NULL;
+
+// called from eTrice initial transition
+void USB_register_port(PInterruptConjPort *port) {
+	usbIsr_port = port;
+}
+
+// !! interrupt context !!
+void MY_USB_INTERRUPT_HANDLER() {
+	if(usbIsr_port) {
+		PInterruptConjPort_fire(usbIsr_port);
+	}
+}
+</code></pre>
+<p>The event is handled in actor <code>AUSBService</code>, which contains the previous actor <code>AExternalUSBIsr</code>. The port <code>usbIsr</code> is bound to <code>AExternalUSBIsr.externalUsbIsr</code>. If the interrupt handler triggers the <code>fire</code> message, the state machine will finally receive the associated <code>event</code> message on port <code>usbIsr</code>.</p>
+<pre><code class="room customHighlighted"><span class="keyword">ActorClass</span> AUSBService {
+	<span class="keyword">Structure</span> {
+		<span class="keyword">Port</span> usbIsr: PInterrupt
+		<span class="keyword">ActorRef</span> externalUsbIsr: AExternalUSBIsr
+		<span class="keyword">Binding</span> usbIsr <span class="keyword">and</span> externalUsbIsr.isrUSBExported
+	}
+	<span class="keyword">Behavior</span> {
+		<span class="keyword">StateMachine</span> {
+			<span class="keyword">State</span> state
+			<span class="keyword">Transition</span> init: <span class="keyword">initial</span> -&gt; state
+			<span class="keyword">Transition</span> receiveUSB: state -&gt; state {
+				<span class="keyword">triggers</span> {
+					&lt;event: usbIsr&gt;
+				}
+				<span class="keyword">action</span> <span class="string">'''
+					// do something, e.g. read usb buffer
+				'''</span>
+			}
+		}
+	}
+}
+</code></pre>
 <hr>
-<p><a href="#navbar">back to top</a> <span class="version pull-right">version 2.x</span></p>
+<p><a href="#navbar">back to top</a> <span class="version pull-right">version 3.x</span></p>
 </div>
 </div>
 </div>
diff --git a/documentation/nightly/examples.html b/documentation/nightly/examples.html
index 07a3538..3c77291 100644
--- a/documentation/nightly/examples.html
+++ b/documentation/nightly/examples.html
@@ -574,6 +574,13 @@
 
 
 
+<li><a href="etrice-features.html#interrupt-events">Interrupt Events</a></li>
+
+
+
+
+
+
 </ul>
 </li>
 
@@ -769,6 +776,13 @@
 
 
 
+<li><a href="feature-reference.html#portclass">PortClass</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#primitivetype">PrimitiveType</a></li>
 
 
@@ -1200,7 +1214,7 @@
 </ul>
 </div>
 </div>
-<span class="version pull-right">version 2.x</span></p>
+<span class="version pull-right">version 3.x</span></p>
 <div class="col-sm-9">
 <h1><a href="#examples" name="examples"></a>Examples</h1>
 <p>The eTrice examples can be installed using the new wizard.</p>
@@ -1486,7 +1500,7 @@
   <li><em>Caution:</em> currently the generator informs about unsatisfied services in dynamic actors. But it is still possible to create such an instance. The consequence is an unbound SAP</li>
 </ul>
 <hr>
-<p><a href="#navbar">back to top</a> <span class="version pull-right">version 2.x</span></p>
+<p><a href="#navbar">back to top</a> <span class="version pull-right">version 3.x</span></p>
 </div>
 </div>
 </div>
diff --git a/documentation/nightly/feature-reference.html b/documentation/nightly/feature-reference.html
index 6f2fe17..de85caf 100644
--- a/documentation/nightly/feature-reference.html
+++ b/documentation/nightly/feature-reference.html
@@ -574,6 +574,13 @@
 
 
 
+<li><a href="etrice-features.html#interrupt-events">Interrupt Events</a></li>
+
+
+
+
+
+
 </ul>
 </li>
 
@@ -769,6 +776,13 @@
 
 
 
+<li><a href="feature-reference.html#portclass">PortClass</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#primitivetype">PrimitiveType</a></li>
 
 
@@ -1200,7 +1214,7 @@
 </ul>
 </div>
 </div>
-<span class="version pull-right">version 2.x</span></p>
+<span class="version pull-right">version 3.x</span></p>
 <div class="col-sm-9">
 <!--  generated by featurizer  -->
 <h1><a href="#roomlanguage" name="roomlanguage"></a>ROOMLanguage</h1>
@@ -2705,6 +2719,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">
@@ -2763,7 +2848,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>
@@ -2780,6 +2865,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>
@@ -3926,7 +4015,7 @@
 <hr>
 <h2><a href="#msclogging" name="msclogging"></a>MSCLogging</h2>
 <p>Runtime logger for event-driven Messages, represented as a Message Sequence Chart.</p>
-<p>The MSCLogging is activated by default, but can be set manually in the <a href="#generationoptions">GenerationOptions</a>. The output file is created upon regular termination of the application. The resulting file can be found in the logging directory and has the name <em>msc.seq</em>, which can be open with the free open source tool <a href="http://trace2uml.stage.tigris.org/">Trace2UML</a>.</p>
+<p>The MSCLogging is activated by default, but can be set manually in the <a href="#generationoptions">GenerationOptions</a>. The output file is created upon regular termination of the application. The resulting file can be found in the logging directory and has the name <em>msc.seq</em>, which can be open with the free open source tool <a href="https://wiki.astade.de/">Trace2UML</a>.</p>
 <p><img src="images/300-MSCLogging.png" alt="MSCLogging"></p>
 <table style="vertical-align: middle;" class="table">
 <thead>
@@ -3962,7 +4051,7 @@
 </table>
 <hr>
 <hr>
-<p><a href="#navbar">back to top</a> <span class="version pull-right">version 2.x</span></p>
+<p><a href="#navbar">back to top</a> <span class="version pull-right">version 3.x</span></p>
 </div>
 </div>
 </div>
diff --git a/documentation/nightly/introduction.html b/documentation/nightly/introduction.html
index 66cf715..114434b 100644
--- a/documentation/nightly/introduction.html
+++ b/documentation/nightly/introduction.html
@@ -574,6 +574,13 @@
 
 
 
+<li><a href="etrice-features.html#interrupt-events">Interrupt Events</a></li>
+
+
+
+
+
+
 </ul>
 </li>
 
@@ -769,6 +776,13 @@
 
 
 
+<li><a href="feature-reference.html#portclass">PortClass</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#primitivetype">PrimitiveType</a></li>
 
 
@@ -1200,7 +1214,7 @@
 </ul>
 </div>
 </div>
-<span class="version pull-right">version 2.x</span></p>
+<span class="version pull-right">version 3.x</span></p>
 <div class="col-sm-9">
 <h1><a href="#introduction" name="introduction"></a>Introduction</h1>
 <h2><a href="#etrice-overview" name="etrice-overview"></a>eTrice Overview</h2>
@@ -1385,7 +1399,7 @@
 <h5><a href="#synchronous" name="synchronous"></a>synchronous</h5>
 <p>The synchronous execution model could also be called <em>function calls</em>. This model in general is not very well suited to support the <em>run to completion</em> semantics typical for ROOM models, but could also be generated from ROOM models. With this execution model also lower levels of a software system, such as device drivers, could be generated from ROOM models.</p>
 <hr>
-<p><a href="#navbar">back to top</a> <span class="version pull-right">version 2.x</span></p>
+<p><a href="#navbar">back to top</a> <span class="version pull-right">version 3.x</span></p>
 </div>
 </div>
 </div>
diff --git a/documentation/nightly/release-notes.html b/documentation/nightly/release-notes.html
index 3f2ce65..b112ebd 100644
--- a/documentation/nightly/release-notes.html
+++ b/documentation/nightly/release-notes.html
@@ -574,6 +574,13 @@
 
 
 
+<li><a href="etrice-features.html#interrupt-events">Interrupt Events</a></li>
+
+
+
+
+
+
 </ul>
 </li>
 
@@ -769,6 +776,13 @@
 
 
 
+<li><a href="feature-reference.html#portclass">PortClass</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#primitivetype">PrimitiveType</a></li>
 
 
@@ -1200,7 +1214,7 @@
 </ul>
 </div>
 </div>
-<span class="version pull-right">version 2.x</span></p>
+<span class="version pull-right">version 3.x</span></p>
 <div class="col-sm-9">
 <h1><a href="#release-notes" name="release-notes"></a>Release Notes</h1>
 <p>Noteworthy release changes are described here.</p>
@@ -1215,7 +1229,7 @@
 <p>In addition eTrice now uses the so-called <strong>Smart Strings</strong> for user code. This is not a breaking change, but it is recommended to migrate to this new syntax also. Using the Transition Data migration action will automatically convert all affected user codes into Smart Strings. Further there is a dedicated migration action for the Smart Strings, see <em>Migrate to Smart Action Codes</em> above. Additionally there is a quickfix available:</p>
 <p><img src="images/600-DetailcodeMigration.png" alt="image"></p>
 <hr>
-<p><a href="#navbar">back to top</a> <span class="version pull-right">version 2.x</span></p>
+<p><a href="#navbar">back to top</a> <span class="version pull-right">version 3.x</span></p>
 </div>
 </div>
 </div>
diff --git a/documentation/nightly/room-concepts.html b/documentation/nightly/room-concepts.html
index 9f6758f..6ccb673 100644
--- a/documentation/nightly/room-concepts.html
+++ b/documentation/nightly/room-concepts.html
@@ -574,6 +574,13 @@
 
 
 
+<li><a href="etrice-features.html#interrupt-events">Interrupt Events</a></li>
+
+
+
+
+
+
 </ul>
 </li>
 
@@ -769,6 +776,13 @@
 
 
 
+<li><a href="feature-reference.html#portclass">PortClass</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#primitivetype">PrimitiveType</a></li>
 
 
@@ -1200,7 +1214,7 @@
 </ul>
 </div>
 </div>
-<span class="version pull-right">version 2.x</span></p>
+<span class="version pull-right">version 3.x</span></p>
 <div class="col-sm-9">
 <h1><a href="#room-concepts" name="room-concepts"></a>ROOM Concepts</h1>
 <p>This chapter gives an overview over the ROOM language elements and their textual and graphical notation. The formal ROOM grammar based on Xtext (EBNF) you can find in the eTrice repository:<br><a href="http://git.eclipse.org/c/etrice/org.eclipse.etrice.git/plain/plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/Room.xtext">http://git.eclipse.org/c/etrice/org.eclipse.etrice.git/plain/plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/Room.xtext</a></p>
@@ -1690,6 +1704,31 @@
 <h3><a href="#motivation" name="motivation"></a>Motivation</h3>
 <p>For event driven systems a finite state machine is ideal for processing the stream of events. Typically during processing new events are produced which are sent to peer actors.</p>
 <p>We distinguish flat and hierarchical state machines.</p>
+<h3><a href="#semantics" name="semantics"></a>Semantics</h3>
+<p>State machine execution begins at the top level by traversal of the initial transition. During traversal of a transition its (optional) action code is executed.</p>
+<p>So called triggered transitions start at a state or a transition point. The simple most trigger is a pair of port (or <abbr title="Service Access Point">SAP</abbr>) and message.</p>
+<p>For the following we will discuss hierarchical finite state machines, which include flat state machines as a special case.</p>
+<p>Assume the state machine is in an arbitrary leaf state (states with no nested state machines). Then when an event occurs, a transition with a matching trigger is searched. This is done level by level from the state graph of the current state to the top level state graph. First all outgoing transitions are considered, then handler transitions. If no match was found this is repeated one level higher and so on to the top level. If no match is found at all, the event is discarded.</p>
+<p>Then the transition which was triggered is traversed.</p>
+<p>For any transition it can continue in several ways:</p>
+<ul>
+  <li><em>If it starts</em> from a state or is a continuation after an entry or exit point
+    <ul>
+      <li><em>and ends</em> at a leaf state, the state machine will assume this state</li>
+      <li><em>and ends</em> at a state with sub graph, it is called a transition to history and the last active state inside the target state is assumed</li>
+      <li><em>and ends</em> at a choice point, the choice point branch conditions are evaluated (in arbitrary order). The first transition whose condition is met will be traversed or else the default branch is taken</li>
+    </ul>
+  </li>
+  <li><em>if it starts</em> in a transition point, then in any case the current state is left, thereby executing all exit codes until the level of the transition point
+    <ul>
+      <li><em>and ends</em> in the same transition point then the transition is traversed and the current state is activated again, thereby executing all entry codes</li>
+      <li><em>else</em> the transition is traversed and processing continues</li>
+      <li><em>eTrice specific variant (not contained in ROOM)</em>: the transition point can be a handler. In this case no entry and exit codes of states are executed</li>
+    </ul>
+  </li>
+  <li>if the transition ends in an entry or exit point the traversal is continued on the other side of this point, entering or leaving the subgraph resp.</li>
+</ul>
+<p>All this is looped until the new leaf state is reached.</p>
 <h3><a href="#notation" name="notation"></a>Notation</h3>
 <p>We distinguish flat finite state machines (with just one level of hierarchy) and hierarchical ones.</p>
 <h4><a href="#flat-finite-state-machine" name="flat-finite-state-machine"></a>Flat Finite State Machine</h4>
@@ -1788,7 +1827,7 @@
 <p><img src="images/040-HierarchicalFSMRunning.jpg" alt="Hierarchical finite state machine – sub state machine of <em>Running</em>"></p>
 <!-- Abbreviations --->
 <hr>
-<p><a href="#navbar">back to top</a> <span class="version pull-right">version 2.x</span></p>
+<p><a href="#navbar">back to top</a> <span class="version pull-right">version 3.x</span></p>
 </div>
 </div>
 </div>
diff --git a/documentation/nightly/standalone-generators.html b/documentation/nightly/standalone-generators.html
index c20faf1..8124b35 100644
--- a/documentation/nightly/standalone-generators.html
+++ b/documentation/nightly/standalone-generators.html
@@ -574,6 +574,13 @@
 
 
 
+<li><a href="etrice-features.html#interrupt-events">Interrupt Events</a></li>
+
+
+
+
+
+
 </ul>
 </li>
 
@@ -769,6 +776,13 @@
 
 
 
+<li><a href="feature-reference.html#portclass">PortClass</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#primitivetype">PrimitiveType</a></li>
 
 
@@ -1200,7 +1214,7 @@
 </ul>
 </div>
 </div>
-<span class="version pull-right">version 2.x</span></p>
+<span class="version pull-right">version 3.x</span></p>
 <div class="col-sm-9">
 <h1><a href="#standalone-generators" name="standalone-generators"></a>Standalone Generators</h1>
 <p>The eTrice generators can be called from the command line. This is useful e.g. if they should participate in a build process driven by command line tools like make.</p>
@@ -1259,7 +1273,7 @@
       -help                              # display this help text
 </code></pre>
 <hr>
-<p><a href="#navbar">back to top</a> <span class="version pull-right">version 2.x</span></p>
+<p><a href="#navbar">back to top</a> <span class="version pull-right">version 3.x</span></p>
 </div>
 </div>
 </div>
diff --git a/documentation/nightly/tutorials.html b/documentation/nightly/tutorials.html
index a9ecc80..409cc1d 100644
--- a/documentation/nightly/tutorials.html
+++ b/documentation/nightly/tutorials.html
@@ -574,6 +574,13 @@
 
 
 
+<li><a href="etrice-features.html#interrupt-events">Interrupt Events</a></li>
+
+
+
+
+
+
 </ul>
 </li>
 
@@ -769,6 +776,13 @@
 
 
 
+<li><a href="feature-reference.html#portclass">PortClass</a></li>
+
+
+
+
+
+
 <li><a href="feature-reference.html#primitivetype">PrimitiveType</a></li>
 
 
@@ -1200,7 +1214,7 @@
 </ul>
 </div>
 </div>
-<span class="version pull-right">version 2.x</span></p>
+<span class="version pull-right">version 3.x</span></p>
 <div class="col-sm-9">
 <h1><a href="#tutorials" name="tutorials"></a>Tutorials</h1>
 <h2><a href="#working-with-the-tutorials" name="working-with-the-tutorials"></a>Working with the tutorials</h2>
@@ -1252,10 +1266,10 @@
     </ul>
   </li>
   <li>
-    <p>Optional: Install <a href="http://trace2uml.stage.tigris.org/">Trace2UML</a>, an Open Source MSC viewer</p>
+    <p>Optional: Install <a href="https://wiki.astade.de/">Trace2UML</a>, an Open Source MSC viewer</p>
     <ul>
-      <li><a href="http://trace2uml.tigris.org/servlets/ProjectDocumentList?folderID=6208">Windows download site</a></li>
-      <li><a href="http://apt.astade.de/">Linux package</a></li>
+      <li><a href="https://wiki.astade.de/dokuwiki/doku.php?id=download:index">Windows download site</a></li>
+      <li><a href="https://wiki.astade.de/dokuwiki/doku.php?id=download:index">Linux package</a></li>
     </ul>
   </li>
 </ul>
@@ -1364,10 +1378,10 @@
     </ul>
   </li>
   <li>
-    <p>Optional: Install <a href="http://trace2uml.stage.tigris.org/">Trace2UML</a>, an Open Source MSC viewer</p>
+    <p>Optional: Install <a href="https://wiki.astade.de/">Trace2UML</a>, an Open Source MSC viewer</p>
     <ul>
-      <li><a href="http://trace2uml.tigris.org/servlets/ProjectDocumentList?folderID=6208">Windows download site</a></li>
-      <li><a href="http://apt.astade.de/">Linux package</a></li>
+      <li><a href="https://wiki.astade.de/dokuwiki/doku.php?id=download:index">Windows download site</a></li>
+      <li><a href="https://wiki.astade.de/dokuwiki/doku.php?id=download:index">Linux package</a></li>
     </ul>
   </li>
 </ul>
@@ -1434,10 +1448,10 @@
     </ul>
   </li>
   <li>
-    <p>Optional: Install <a href="http://trace2uml.stage.tigris.org/">Trace2UML</a>, an Open Source MSC viewer</p>
+    <p>Optional: Install <a href="https://wiki.astade.de/">Trace2UML</a>, an Open Source MSC viewer</p>
     <ul>
-      <li><a href="http://trace2uml.tigris.org/servlets/ProjectDocumentList?folderID=6208">Windows download site</a></li>
-      <li><a href="http://apt.astade.de/">Linux package</a></li>
+      <li><a href="https://wiki.astade.de/dokuwiki/doku.php?id=download:index">Windows download site</a></li>
+      <li><a href="https://wiki.astade.de/dokuwiki/doku.php?id=download:index">Linux package</a></li>
     </ul>
   </li>
 </ul>
@@ -1605,7 +1619,7 @@
 <h4><a href="#missing-msc" name="missing-msc"></a>Missing MSC</h4>
 <p>The MSC is created when the application has been shutdown in proper form, thus has been terminated by typing <em>quit</em> in the Console of the application.<br>Depending on the Eclipse workspace settings, it might be necessary to refresh (F5) the <em>log</em> folder manually.</p>
 <hr>
-<p><a href="#navbar">back to top</a> <span class="version pull-right">version 2.x</span></p>
+<p><a href="#navbar">back to top</a> <span class="version pull-right">version 3.x</span></p>
 </div>
 </div>
 </div>