blob: 88d0e25c51929386a310213b072684fd68e56731 [file] [log] [blame]
<?xml version="1.0" encoding="iso-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!--http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd-->
<html xmlns="http://www.w3.org/1999/xhtml"
>
<head><title>HelloWorld for Java</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)" />
<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)" />
<!-- xhtml,3,next,html -->
<meta name="src" content="etrice-doc.tex" />
<meta name="date" content="2013-10-21 12:44:00" />
<link rel="stylesheet" type="text/css" href="etrice-doc.css" />
</head><body
>
<!--l. 1--><div class="crosslinks"><p class="noindent">[<a
href="etrice-docse7.html" >next</a>] [<a
href="etrice-docse5.html" >prev</a>] [<a
href="etrice-docse5.html#tailetrice-docse5.html" >prev-tail</a>] [<a
href="#tailetrice-docse6.html">tail</a>] [<a
href="etrice-docch2.html#etrice-docse6.html" >up</a>] </p></div>
<h3 class="sectionHead"><span class="titlemark">2.4 </span> <a
id="x10-330002.4"></a>HelloWorld for Java</h3>
<!--l. 3--><p class="noindent" >
</p>
<h4 class="subsectionHead"><span class="titlemark">2.4.1 </span> <a
id="x10-340002.4.1"></a>Scope</h4>
<!--l. 5--><p class="noindent" >In this tutorial you will build your first very simple eTrice model. The goal is to learn the work flow of eTrice and to
understand a few basic features of ROOM. You will perform the following steps:
</p><!--l. 8--><p class="noindent" >
</p><ol class="enumerate1" >
<li
class="enumerate" id="x10-34002x1">create a new model from scratch
</li>
<li
class="enumerate" id="x10-34004x2">add a very simple state machine to an actor
</li>
<li
class="enumerate" id="x10-34006x3">generate the source code
</li>
<li
class="enumerate" id="x10-34008x4">run the model
</li>
<li
class="enumerate" id="x10-34010x5">open the message sequence chart</li></ol>
<!--l. 16--><p class="noindent" >Make sure that you have set up the workspace as described in <span
class="ec-lmsso-10">Setting up the Workspace for Java</span>.
</p><!--l. 18--><p class="noindent" >
</p>
<h4 class="subsectionHead"><span class="titlemark">2.4.2 </span> <a
id="x10-350002.4.2"></a>Create a new model from scratch</h4>
<!--l. 20--><p class="noindent" >The easiest way to create a new eTrice Project is to use the eclipse project wizard. From the eclipse file menu select
<span
class="ec-lmsso-10">File-&#x003E;New-&#x003E;Project </span>and create a new <span
class="ec-lmsso-10">Empty eTrice Java Project </span>and name it <span
class="ec-lmssbx-10">HelloWorld</span>.
</p><!--l. 23--><p class="noindent" ><img
src="images/015-HelloWorld10.png" alt="PIC"
/>
</p><!--l. 25--><p class="noindent" >The wizard creates everything that is needed to create, build and run an eTrice model. The resulting project should look like
this:
</p><!--l. 28--><p class="noindent" ><img
src="images/015-HelloWorld11.png" alt="PIC"
/>
</p><!--l. 30--><p class="noindent" >Within the model directory the model file <span
class="ec-lmsso-10">HelloWorld.room </span>was created. Open the <span
class="ec-lmsso-10">HelloWorld.room </span>file and delete the
contents of the file. Open the content assist with Ctrl+Space and select <span
class="ec-lmsso-10">RoomModel - model skeleton</span>.
</p><!--l. 34--><p class="noindent" ><img
src="images/015-HelloWorld12.png" alt="PIC"
/>
</p><!--l. 36--><p class="noindent" >Edit the template variables by typing the new names and jumping with Tab from name to name.
</p><!--l. 38--><p class="noindent" >The resulting model code should look like this:
</p>
<!--l. 40-->
<div class="lstlisting" id="listing-1"><span class="label"><a
id="x10-35001r1"></a><span
class="ec-lmss-8x-x-62">1</span></span><span
class="ec-lmssbx-10x-x-90">RoomModel</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">HelloWorld_Model</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">{</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-35002r2"></a><span
class="ec-lmss-8x-x-62">2</span></span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-35003r3"></a><span
class="ec-lmss-8x-x-62">3</span></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">LogicalSystem</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">LogSys1</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">{</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-35004r4"></a><span
class="ec-lmss-8x-x-62">4</span></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">SubSystemRef</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">subSysRef1</span><span
class="ec-lmtt-9">:</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">SubSysClass1</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-35005r5"></a><span
class="ec-lmss-8x-x-62">5</span></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">}</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-35006r6"></a><span
class="ec-lmss-8x-x-62">6</span></span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-35007r7"></a><span
class="ec-lmss-8x-x-62">7</span></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">SubSystemClass</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">SubSysClass1</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">{</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-35008r8"></a><span
class="ec-lmss-8x-x-62">8</span></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">ActorRef</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">actorRef1</span><span
class="ec-lmtt-9">:</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">HelloWorldTop</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-35009r9"></a><span
class="ec-lmss-8x-x-62">9</span></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">LogicalThread</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">defaultThread</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-35010r10"></a><span
class="ec-lmss-8x-x-62">10</span></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">}</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-35011r11"></a><span
class="ec-lmss-8x-x-62">11</span></span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-35012r12"></a><span
class="ec-lmss-8x-x-62">12</span></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">ActorClass</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">HelloWorldTop</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">{</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">}</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-35013r13"></a><span
class="ec-lmss-8x-x-62">13</span></span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-35014r14"></a><span
class="ec-lmss-8x-x-62">14</span></span><span
class="ec-lmtt-9">}</span>
</div>
<!--l. 57--><p class="noindent" >The physical model has already been created for us in file model/HelloWorld.etphys. We can just leave it as it
is.
</p>
<!--l. 60-->
<div class="lstlisting" id="listing-2"><span class="label"><a
id="x10-35015r1"></a><span
class="ec-lmss-8x-x-62">1</span></span><span
class="ec-lmssbx-10x-x-90">PhysicalModel</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">PhysicalModel1</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">{</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-35016r2"></a><span
class="ec-lmss-8x-x-62">2</span></span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-35017r3"></a><span
class="ec-lmss-8x-x-62">3</span></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">PhysicalSystem</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">PhysSys1</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">{</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-35018r4"></a><span
class="ec-lmss-8x-x-62">4</span></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">NodeRef</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">nodeRef1</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">:</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">NodeClass1</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-35019r5"></a><span
class="ec-lmss-8x-x-62">5</span></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">}</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-35020r6"></a><span
class="ec-lmss-8x-x-62">6</span></span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-35021r7"></a><span
class="ec-lmss-8x-x-62">7</span></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">NodeClass</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">NodeClass1</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">{</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-35022r8"></a><span
class="ec-lmss-8x-x-62">8</span></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">runtime</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">=</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">RuntimeClass1</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-35023r9"></a><span
class="ec-lmss-8x-x-62">9</span></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">priomin</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">=</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">-10</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-35024r10"></a><span
class="ec-lmss-8x-x-62">10</span></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">priomax</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">=</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">10</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-35025r11"></a><span
class="ec-lmss-8x-x-62">11</span></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">DefaultThread</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">PhysicalThread1</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">{</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-35026r12"></a><span
class="ec-lmss-8x-x-62">12</span></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">execmode</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">=</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">mixed</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-35027r13"></a><span
class="ec-lmss-8x-x-62">13</span></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">interval</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">=</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">100</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">ms</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-35028r14"></a><span
class="ec-lmss-8x-x-62">14</span></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">prio</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">=</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">0</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-35029r15"></a><span
class="ec-lmss-8x-x-62">15</span></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">stacksize</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">=</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">1024</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-35030r16"></a><span
class="ec-lmss-8x-x-62">16</span></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">msgblocksize</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">=</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">32</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-35031r17"></a><span
class="ec-lmss-8x-x-62">17</span></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">msgpoolsize</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">=</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">10</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-35032r18"></a><span
class="ec-lmss-8x-x-62">18</span></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">}</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-35033r19"></a><span
class="ec-lmss-8x-x-62">19</span></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">}</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-35034r20"></a><span
class="ec-lmss-8x-x-62">20</span></span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-35035r21"></a><span
class="ec-lmss-8x-x-62">21</span></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">RuntimeClass</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">RuntimeClass1</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">{</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-35036r22"></a><span
class="ec-lmss-8x-x-62">22</span></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">model</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">=</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">multiThreaded</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-35037r23"></a><span
class="ec-lmss-8x-x-62">23</span></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">}</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-35038r24"></a><span
class="ec-lmss-8x-x-62">24</span></span><span
class="ec-lmtt-9">}</span>
</div>
<!--l. 87--><p class="noindent" >The physical model defines the setup of your nodes with their attributes like threads and mode of execution. In this case we
define one node with one thread.
</p><!--l. 89--><p class="noindent" >Similar for the mapping model model/HelloWorld.etmap which is used to deploy the logical system onto the physical
system.
</p>
<!--l. 91-->
<div class="lstlisting" id="listing-3"><span class="label"><a
id="x10-35039r1"></a><span
class="ec-lmss-8x-x-62">1</span></span><span
class="ec-lmssbx-10x-x-90">MappingModel</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">MappingModel1</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">{</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-35040r2"></a><span
class="ec-lmss-8x-x-62">2</span></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">import</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">HelloWorld_Model</span><span
class="ec-lmtt-9">.*</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">from</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">"</span><span
class="ec-lmtt-9">HelloWorldC</span><span
class="ec-lmtt-9">.</span><span
class="ec-lmtt-9">room</span><span
class="ec-lmtt-9">"</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-35041r3"></a><span
class="ec-lmss-8x-x-62">3</span></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">import</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">PhysicalModel1</span><span
class="ec-lmtt-9">.*</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">from</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">"</span><span
class="ec-lmtt-9">HelloWorldC</span><span
class="ec-lmtt-9">.</span><span
class="ec-lmtt-9">etphys</span><span
class="ec-lmtt-9">"</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-35042r4"></a><span
class="ec-lmss-8x-x-62">4</span></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">Mapping</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">LogSys1</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">-&#x003E;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">PhysSys1</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">{</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-35043r5"></a><span
class="ec-lmss-8x-x-62">5</span></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">SubSystemMapping</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">subSysRef1</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">-&#x003E;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">nodeRef1</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">{</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-35044r6"></a><span
class="ec-lmss-8x-x-62">6</span></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">ThreadMapping</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">defaultThread</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">-&#x003E;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">PhysicalThread1</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-35045r7"></a><span
class="ec-lmss-8x-x-62">7</span></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">}</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-35046r8"></a><span
class="ec-lmss-8x-x-62">8</span></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">}</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-35047r9"></a><span
class="ec-lmss-8x-x-62">9</span></span><span
class="ec-lmtt-9">}</span>
</div>
<!--l. 1--><p class="noindent" >The ROOM model describes distributed systems on a logical level. In the current version not all elements will be used. But as
prerequisite for further versions the following elements can be defined: </p>
<ul class="itemize1">
<li class="itemize">the <span
class="ec-lmsso-10">LogicalSystem </span>(currently optional)
</li>
<li class="itemize">at least one <span
class="ec-lmsso-10">SubSystemClass </span>(mandatory)
</li>
<li class="itemize">at least one <span
class="ec-lmsso-10">ActorClass </span>(mandatory)</li></ul>
<!--l. 9--><p class="noindent" >The <span
class="ec-lmsso-10">LogicalSystem </span>represents the complete distributed system and contains at least one <span
class="ec-lmsso-10">SubSystemRef</span>. The
<span
class="ec-lmsso-10">SubSystemClass </span>represents an address space (e.g. a Linux process or an image for a micro controller) and
contains at least one <span
class="ec-lmsso-10">ActorRef</span>. The <span
class="ec-lmsso-10">ActorClass </span>is the building block for building the hierachical structure of an
application. A good way to start is to define a top level actor that can be used as structural root within the
subsystem.
</p><!--l. 14--><p class="noindent" >The outline view of the textual ROOM editor shows the main modeling elements in a navigation tree. You can jump to an
element in the textual editor by double clicking the element in the outline view (provided the outline is linked with the
editor).
</p><!--l. 18--><p class="noindent" ><img
src="images/015-HelloWorld02.png" alt="PIC"
/>
</p><!--l. 20--><p class="noindent" >
</p>
<h4 class="subsectionHead"><span class="titlemark">2.4.3 </span> <a
id="x10-360002.4.3"></a>Create a state machine</h4>
<!--l. 22--><p class="noindent" >We will implement the Hello World code on the initial transition of the <span
class="ec-lmsso-10">HelloWorldTop </span>actor. Therefore open the state
machine editor by right clicking the <span
class="ec-lmsso-10">HelloWorldTop </span>actor in the outline view and select <span
class="ec-lmsso-10">Edit Behavior</span>.
</p><!--l. 25--><p class="noindent" ><img
src="images/015-HelloWorld03.png" alt="PIC"
/>
</p><!--l. 27--><p class="noindent" >The state machine editor will be opened. Drag and drop an <span
class="ec-lmsso-10">Initial Point </span>from the tool box to the diagram into the top level
state. Drag and drop a <span
class="ec-lmsso-10">State </span>from the tool box to the diagram. Confirm the dialog with <span
class="ec-lmsso-10">ok</span>. Select the <span
class="ec-lmsso-10">Transition </span>in the tool
box and draw the transition from the <span
class="ec-lmsso-10">Initial Point </span>to the State. In the transition property dialog fill in the action code. Be
aware of the different action code in Java and C.
</p>
<hr class="figure" /><div class="figure"
>
<div class="minipage">_________________________________________
_________________________________________&#x00A0; &#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0; &#x00A0; <!--l. 36--><p class="noindent" ><span
class="ec-lmssbx-10">action code for Java</span>
</p>
<div class="verbatim" id="verbatim-3">
System.out.println("Hello&#x00A0;World");
</div>
<!--l. 39--><p class="nopar" >
</p></div> &#x00A0; <div class="minipage">_________________________________________________________________&#x00A0; &#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0; &#x00A0; <!--l. 45--><p class="noindent" ><span
class="ec-lmssbx-10">action code for C</span>
</p>
<div class="verbatim" id="verbatim-4">
printf("Hello&#x00A0;World\n");
</div>
<!--l. 48--><p class="nopar" >
</p></div>
</div><hr class="endfigure" />
<!--l. 54--><p class="noindent" >The result should look like this:
</p><!--l. 56--><p class="noindent" ><img
src="images/015-HelloWorld04.png" alt="PIC"
/>
</p><!--l. 58--><p class="noindent" >Save the diagram and inspect the model (HelloWorld.room) file. Note that the textual representation was changed after
saving the diagram.
</p>
<hr class="figure" /><div class="figure"
>
<div class="minipage">
______________________________________________
______________________________________________&#x00A0; &#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0; &#x00A0; <!--l. 64--><p class="noindent" ><span
class="ec-lmssbx-10">room model for Java </span><br
class="newline" /></p><!--l. 66-->
<div class="lstlisting" id="listing-4"><span class="label"><a
id="x10-36001r1"></a><span
class="ec-lmss-8x-x-62">1</span></span><span
class="ec-lmssbx-10x-x-90">RoomModel</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">HelloWorld_Model</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">{</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-36002r2"></a><span
class="ec-lmss-8x-x-62">2</span></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">LogicalSystem</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">LogSys1</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">{</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-36003r3"></a><span
class="ec-lmss-8x-x-62">3</span></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">SubSystemRef</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">subSysRef1</span><span
class="ec-lmtt-9">:</span><span
class="ec-lmtt-9">SubSysClass1</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-36004r4"></a><span
class="ec-lmss-8x-x-62">4</span></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">}</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-36005r5"></a><span
class="ec-lmss-8x-x-62">5</span></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">SubSystemClass</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">SubSysClass1</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">{</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-36006r6"></a><span
class="ec-lmss-8x-x-62">6</span></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">ActorRef</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">actorRef1</span><span
class="ec-lmtt-9">:</span><span
class="ec-lmtt-9">HelloWorldTop</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-36007r7"></a><span
class="ec-lmss-8x-x-62">7</span></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">LogicalThread</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">defaultThread</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-36008r8"></a><span
class="ec-lmss-8x-x-62">8</span></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">}</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-36009r9"></a><span
class="ec-lmss-8x-x-62">9</span></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">ActorClass</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">HelloWorldTop</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">{</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-36010r10"></a><span
class="ec-lmss-8x-x-62">10</span></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">Structure</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">{</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">}</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-36011r11"></a><span
class="ec-lmss-8x-x-62">11</span></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">Behavior</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">{</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-36012r12"></a><span
class="ec-lmss-8x-x-62">12</span></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">StateMachine</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">{</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-36013r13"></a><span
class="ec-lmss-8x-x-62">13</span></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">Transition</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">init</span><span
class="ec-lmtt-9">:</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">initial</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">-&#x003E;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">state0</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">{</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-36014r14"></a><span
class="ec-lmss-8x-x-62">14</span></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">action</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">{</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-36015r15"></a><span
class="ec-lmss-8x-x-62">15</span></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">"</span><span
class="ec-lmtt-9">System</span><span
class="ec-lmtt-9">.</span><span
class="ec-lmtt-9">out</span><span
class="ec-lmtt-9">.</span><span
class="ec-lmtt-9">println</span><span
class="ec-lmtt-9">(\"</span><span
class="ec-lmtt-9">Hello</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">World</span><span
class="ec-lmtt-9">\")</span><span
class="ec-lmtt-9">;</span><span
class="ec-lmtt-9">"</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-36016r16"></a><span
class="ec-lmss-8x-x-62">16</span></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">}</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-36017r17"></a><span
class="ec-lmss-8x-x-62">17</span></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">}</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-36018r18"></a><span
class="ec-lmss-8x-x-62">18</span></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">State</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">state0</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-36019r19"></a><span
class="ec-lmss-8x-x-62">19</span></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">}</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-36020r20"></a><span
class="ec-lmss-8x-x-62">20</span></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">}</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-36021r21"></a><span
class="ec-lmss-8x-x-62">21</span></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">}</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-36022r22"></a><span
class="ec-lmss-8x-x-62">22</span></span><span
class="ec-lmtt-9">}</span>
</div>
</div> <div class="minipage">
___________________________________________________&#x00A0; &#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0; &#x00A0; <!--l. 95--><p class="noindent" ><span
class="ec-lmssbx-10">room model for C </span><br
class="newline" /></p><!--l. 97-->
<div class="lstlisting" id="listing-5"><span class="label"><a
id="x10-36023r1"></a><span
class="ec-lmss-8x-x-62">1</span></span><span
class="ec-lmssbx-10x-x-90">RoomModel</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">HelloWorld_Model</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">{</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-36024r2"></a><span
class="ec-lmss-8x-x-62">2</span></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">LogicalSystem</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">LogSys1</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">{</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-36025r3"></a><span
class="ec-lmss-8x-x-62">3</span></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">SubSystemRef</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">subSysRef1</span><span
class="ec-lmtt-9">:</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">SubSysClass1</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-36026r4"></a><span
class="ec-lmss-8x-x-62">4</span></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">}</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-36027r5"></a><span
class="ec-lmss-8x-x-62">5</span></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">SubSystemClass</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">SubSysClass1</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">{</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-36028r6"></a><span
class="ec-lmss-8x-x-62">6</span></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">ActorRef</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">actorRef1</span><span
class="ec-lmtt-9">:</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">HelloWorldTop</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-36029r7"></a><span
class="ec-lmss-8x-x-62">7</span></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">LogicalThread</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">defaultThread</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-36030r8"></a><span
class="ec-lmss-8x-x-62">8</span></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">}</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-36031r9"></a><span
class="ec-lmss-8x-x-62">9</span></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">ActorClass</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">HelloWorldTop</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">{</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-36032r10"></a><span
class="ec-lmss-8x-x-62">10</span></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">Structure</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">{</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">}</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-36033r11"></a><span
class="ec-lmss-8x-x-62">11</span></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">Behavior</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">{</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-36034r12"></a><span
class="ec-lmss-8x-x-62">12</span></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">StateMachine</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">{</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-36035r13"></a><span
class="ec-lmss-8x-x-62">13</span></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">Transition</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">init</span><span
class="ec-lmtt-9">:</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">initial</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">-&#x003E;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">state0</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">{</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-36036r14"></a><span
class="ec-lmss-8x-x-62">14</span></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">action</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">{</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-36037r15"></a><span
class="ec-lmss-8x-x-62">15</span></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">"</span><span
class="ec-lmtt-9">printf</span><span
class="ec-lmtt-9">(\"</span><span
class="ec-lmtt-9">Hello</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">World</span><span
class="ec-lmtt-9">\\</span><span
class="ec-lmtt-9">n</span><span
class="ec-lmtt-9">\")</span><span
class="ec-lmtt-9">;</span><span
class="ec-lmtt-9">"</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-36038r16"></a><span
class="ec-lmss-8x-x-62">16</span></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">}</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-36039r17"></a><span
class="ec-lmss-8x-x-62">17</span></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">}</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-36040r18"></a><span
class="ec-lmss-8x-x-62">18</span></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmssbx-10x-x-90">State</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">state0</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-36041r19"></a><span
class="ec-lmss-8x-x-62">19</span></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">}</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-36042r20"></a><span
class="ec-lmss-8x-x-62">20</span></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">}</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-36043r21"></a><span
class="ec-lmss-8x-x-62">21</span></span><span
class="ec-lmtt-9">&#x00A0;</span><span
class="ec-lmtt-9">}</span><span
class="ec-lmtt-9">&#x00A0;</span><br /><span class="label"><a
id="x10-36044r22"></a><span
class="ec-lmss-8x-x-62">22</span></span><span
class="ec-lmtt-9">}</span>
</div>
</div>
</div><hr class="endfigure" />
<h4 class="subsectionHead"><span class="titlemark">2.4.4 </span> <a
id="x10-370002.4.4"></a>Build and run the model</h4>
<!--l. 107--><p class="noindent" >Now the model is finished and the source code can be generated. The project wizard has created a launch configuration that
is responsible for generating the source code. In the project <span
class="ec-lmsso-10">HelloWorld </span>right click <span
class="ec-lmsso-10">gen_HelloWorld.launch </span>and run it as
<span
class="ec-lmsso-10">gen_HelloWorld</span>.
</p><!--l. 110--><p class="noindent" ><img
src="images/015-HelloWorld06.png" alt="PIC"
/>
</p><!--l. 112--><p class="noindent" >The source code for the model will be generated into the folder <span
class="ec-lmsso-10">src-gen</span>. The main function will be contained in
<span
class="ec-lmsso-10">HelloWorld/Nod_nodeRef1_subSysRef1Runner.java</span>. Select this file and run it as Java application or use the generated
launch configuration <span
class="ec-lmsso-10">run_HelloWorld.launch</span>.
</p><!--l. 115--><p class="noindent" ><img
src="images/015-HelloWorld07.png" alt="PIC"
/>
</p><!--l. 118--><p class="noindent" >The Hello World application starts and the string <span
class="ec-lmsso-10">"Hello World" </span>will be printed into the console window. To terminate the
application the user must enter <span
class="ec-lmsso-10">quit </span>in the console window.
</p><!--l. 120--><p class="noindent" ><img
src="images/015-HelloWorld08.png" alt="PIC"
/>
</p><!--l. 1--><p class="noindent" >
</p>
<h4 class="subsectionHead"><span class="titlemark">2.4.5 </span> <a
id="x10-380002.4.5"></a>Open the Message Sequence Chart</h4>
<!--l. 3--><p class="noindent" >For debugging and learning purposes, the application produced a Message Sequence Chart and wrote it to a file. Open the file
<span
class="ec-lmsso-10">subSysRef1_Async.seq </span>or <span
class="ec-lmsso-10">msc.seq </span>in the folder <span
class="ec-lmsso-10">HelloWorld/tmp/log/ </span>using the tool Trace2UML. Create the path if not
already there.
</p><!--l. 5--><p class="noindent" >Trace2UML is an open source MSC viewer and can be obtained here: </p>
<ul class="itemize1">
<li class="itemize"><a
href="http://trace2uml.tigris.org/" >Trace2UML project home and download of windows version</a>
</li>
<li class="itemize"><a
href="http://apt.astade.de/" >download of the Linux package of the Astade UML tool which contains Trace2UML</a></li></ul>
<!--l. 10--><p class="noindent" >After opening the file, you should see something like this:
</p><!--l. 12--><p class="noindent" ><img
src="images/015-HelloWorld09.png" alt="PIC"
/>
</p><!--l. 15--><p class="noindent" >The Actor with the instance path <span
class="ec-lmsso-10">/LogSys1/subSysRef1/actorRef1 </span>is in the state <span
class="ec-lmsso-10">state0</span>. This is the simplest possible MSC.
The MSCs for further tutorials will contain more information.
</p><!--l. 124--><p class="noindent" >
</p>
<h4 class="subsectionHead"><span class="titlemark">2.4.6 </span> <a
id="x10-390002.4.6"></a>Summary</h4>
<!--l. 126--><p class="noindent" >Now you have generated your first eTrice model from scratch. You can switch between diagram editor and textual model
representation (.room file) and you can see what will be generated during editing and saving the diagram files. You
should take a look at the generated source files to understand how the state machine is generated and the life
cycle of the application works. The next tutorials will deal with more complex hierarchies in structure and
behavior.
</p>
<!--l. 1--><div class="crosslinks"><p class="noindent">[<a
href="etrice-docse7.html" >next</a>] [<a
href="etrice-docse5.html" >prev</a>] [<a
href="etrice-docse5.html#tailetrice-docse5.html" >prev-tail</a>] [<a
href="etrice-docse6.html" >front</a>] [<a
href="etrice-docch2.html#etrice-docse6.html" >up</a>] </p></div>
<!--l. 1--><p class="noindent" ><a
id="tailetrice-docse6.html"></a> </p>
</body></html>