diff options
Diffstat (limited to 'plugins/org.eclipse.etrice.doc/html/etrice-docse6.html')
-rw-r--r-- | plugins/org.eclipse.etrice.doc/html/etrice-docse6.html | 749 |
1 files changed, 615 insertions, 134 deletions
diff --git a/plugins/org.eclipse.etrice.doc/html/etrice-docse6.html b/plugins/org.eclipse.etrice.doc/html/etrice-docse6.html index fc7b1a647..949f7bf4c 100644 --- a/plugins/org.eclipse.etrice.doc/html/etrice-docse6.html +++ b/plugins/org.eclipse.etrice.doc/html/etrice-docse6.html @@ -10,7 +10,7 @@ <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-07-04 15:04:00" /> +<meta name="date" content="2013-07-12 01:23:00" /> <link rel="stylesheet" type="text/css" href="etrice-doc.css" /> </head><body > @@ -21,175 +21,161 @@ 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-310002.4"></a>HelloWorld for Java</h3> + 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-320002.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: + 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-32002x1">create a new model from scratch + class="enumerate" id="x10-34002x1">create a new model from scratch </li> <li - class="enumerate" id="x10-32004x2">add a very simple state machine to an actor + class="enumerate" id="x10-34004x2">add a very simple state machine to an actor </li> <li - class="enumerate" id="x10-32006x3">generate the source code + class="enumerate" id="x10-34006x3">generate the source code </li> <li - class="enumerate" id="x10-32008x4">run the model + class="enumerate" id="x10-34008x4">run the model </li> <li - class="enumerate" id="x10-32010x5">open the message sequence chart</li></ol> + 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</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-330002.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-lmssbx-10">File->New->Project </span>and create a new eTrice project and name it <span + 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->New->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. 26--><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. 26--><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. 29--><p class="noindent" ><img src="images/015-HelloWorld11.png" alt="PIC" /> </p><!--l. 32--><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">model</span> -<span -class="ec-lmsso-10">skeleton</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. 36--><p class="noindent" ><img src="images/015-HelloWorld12.png" alt="PIC" /> - - </p><!--l. 39--><p class="noindent" >Edit the template variables by typing the new names and jumping with Tab from name to name. </p><!--l. 41--><p class="noindent" >The resulting model code should look like this: </p> <!--l. 43--> <div class="lstlisting" id="listing-1"><span class="label"><a - id="x10-33001r1"></a><span + 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"> </span><span -class="ec-lmtt-9">HelloWorld</span><span +class="ec-lmtt-9">HelloWorld_Model</span><span class="ec-lmtt-9"> </span><span class="ec-lmtt-9">{</span><span class="ec-lmtt-9"> </span><br /><span class="label"><a - id="x10-33002r2"></a><span + id="x10-35002r2"></a><span class="ec-lmss-8x-x-62">2</span></span><span class="ec-lmtt-9"> </span><br /><span class="label"><a - id="x10-33003r3"></a><span + id="x10-35003r3"></a><span class="ec-lmss-8x-x-62">3</span></span><span class="ec-lmtt-9"> </span><span -class="ec-lmtt-9"> </span><span -class="ec-lmtt-9"> </span><span class="ec-lmssbx-10x-x-90">LogicalSystem</span><span class="ec-lmtt-9"> </span><span -class="ec-lmtt-9">System_HelloWorld</span><span +class="ec-lmtt-9">LogSys1</span><span class="ec-lmtt-9"> </span><span class="ec-lmtt-9">{</span><span class="ec-lmtt-9"> </span><br /><span class="label"><a - id="x10-33004r4"></a><span + id="x10-35004r4"></a><span class="ec-lmss-8x-x-62">4</span></span><span class="ec-lmtt-9"> </span><span class="ec-lmtt-9"> </span><span class="ec-lmtt-9"> </span><span -class="ec-lmtt-9"> </span><span -class="ec-lmtt-9"> </span><span -class="ec-lmtt-9"> </span><span class="ec-lmssbx-10x-x-90">SubSystemRef</span><span class="ec-lmtt-9"> </span><span -class="ec-lmtt-9">subsystem</span><span -class="ec-lmtt-9"> </span><span +class="ec-lmtt-9">subSysRef1</span><span class="ec-lmtt-9">:</span><span class="ec-lmtt-9"> </span><span -class="ec-lmtt-9">SubSystem_HelloWorld</span><span +class="ec-lmtt-9">SubSysClass1</span><span class="ec-lmtt-9"> </span><br /><span class="label"><a - id="x10-33005r5"></a><span + id="x10-35005r5"></a><span class="ec-lmss-8x-x-62">5</span></span><span class="ec-lmtt-9"> </span><span -class="ec-lmtt-9"> </span><span -class="ec-lmtt-9"> </span><span class="ec-lmtt-9">}</span><span class="ec-lmtt-9"> </span><br /><span class="label"><a - id="x10-33006r6"></a><span + id="x10-35006r6"></a><span class="ec-lmss-8x-x-62">6</span></span><span class="ec-lmtt-9"> </span><br /><span class="label"><a - id="x10-33007r7"></a><span + id="x10-35007r7"></a><span class="ec-lmss-8x-x-62">7</span></span><span class="ec-lmtt-9"> </span><span -class="ec-lmtt-9"> </span><span -class="ec-lmtt-9"> </span><span class="ec-lmssbx-10x-x-90">SubSystemClass</span><span class="ec-lmtt-9"> </span><span -class="ec-lmtt-9">SubSystem_HelloWorld</span><span +class="ec-lmtt-9">SubSysClass1</span><span class="ec-lmtt-9"> </span><span class="ec-lmtt-9">{</span><span class="ec-lmtt-9"> </span><br /><span class="label"><a - id="x10-33008r8"></a><span + id="x10-35008r8"></a><span class="ec-lmss-8x-x-62">8</span></span><span class="ec-lmtt-9"> </span><span class="ec-lmtt-9"> </span><span class="ec-lmtt-9"> </span><span -class="ec-lmtt-9"> </span><span -class="ec-lmtt-9"> </span><span -class="ec-lmtt-9"> </span><span class="ec-lmssbx-10x-x-90">ActorRef</span><span class="ec-lmtt-9"> </span><span -class="ec-lmtt-9">application</span><span -class="ec-lmtt-9"> </span><span +class="ec-lmtt-9">actorRef1</span><span class="ec-lmtt-9">:</span><span class="ec-lmtt-9"> </span><span class="ec-lmtt-9">HelloWorldTop</span><span class="ec-lmtt-9"> </span><br /><span class="label"><a - id="x10-33009r9"></a><span + id="x10-35009r9"></a><span class="ec-lmss-8x-x-62">9</span></span><span class="ec-lmtt-9"> </span><span class="ec-lmtt-9"> </span><span class="ec-lmtt-9"> </span><span -class="ec-lmtt-9">}</span><span +class="ec-lmssbx-10x-x-90">LogicalThread</span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9">defaultThread</span><span class="ec-lmtt-9"> </span><br /><span class="label"><a - id="x10-33010r10"></a><span + id="x10-35010r10"></a><span class="ec-lmss-8x-x-62">10</span></span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9">}</span><span class="ec-lmtt-9"> </span><br /><span class="label"><a - id="x10-33011r11"></a><span + id="x10-35011r11"></a><span class="ec-lmss-8x-x-62">11</span></span><span -class="ec-lmtt-9"> </span><span -class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </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"> </span><span class="ec-lmssbx-10x-x-90">ActorClass</span><span class="ec-lmtt-9"> </span><span class="ec-lmtt-9">HelloWorldTop</span><span class="ec-lmtt-9"> </span><span class="ec-lmtt-9">{</span><span -class="ec-lmtt-9"> </span><br /><span class="label"><a - id="x10-33012r12"></a><span -class="ec-lmss-8x-x-62">12</span></span><span -class="ec-lmtt-9"> </span><span -class="ec-lmtt-9"> </span><span class="ec-lmtt-9"> </span><span class="ec-lmtt-9">}</span><span class="ec-lmtt-9"> </span><br /><span class="label"><a - id="x10-33013r13"></a><span + id="x10-35013r13"></a><span class="ec-lmss-8x-x-62">13</span></span><span +class="ec-lmtt-9"> </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. 59--><p class="noindent" >The goal of eTrice is to describe 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> +<!--l. 1--><p class="noindent" >The goal of eTrice is to describe 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) @@ -199,106 +185,601 @@ 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. 67--><p class="noindent" >The <span +<!--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 +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 microcontroller) and contains at least one <span +class="ec-lmsso-10">ActorRef</span>. The <span -class="ec-lmsso-10">SubSystemClass </span>represents an address space and contains at least one <span -class="ec-lmsso-10">ActorRef</span>. The <span -class="ec-lmsso-10">ActorClass </span>is the -building block of which an application will be built of. It is in general a good idea to define a top level actor -that can be used as reference within the subsystem. -</p><!--l. 72--><p class="noindent" >The outline view of the textual ROOM editor shows the main modeling elements in an easy to navigate -tree. -</p><!--l. 74--><p class="noindent" ><img +class="ec-lmsso-10">ActorClass </span>is the building block for building the hierachical structure of an application. A good point 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. +</p><!--l. 16--><p class="noindent" ><img src="images/015-HelloWorld02.png" alt="PIC" /> -</p><!--l. 78--><p class="noindent" > +</p><!--l. 19--><p class="noindent" > </p> <h4 class="subsectionHead"><span class="titlemark">2.4.3 </span> <a - id="x10-340002.4.3"></a>Create a state machine</h4> -<!--l. 80--><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 + id="x10-360002.4.3"></a>Create a state machine</h4> +<!--l. 21--><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</span> -<span -class="ec-lmsso-10">Behavior</span>. -</p><!--l. 84--><p class="noindent" ><img +class="ec-lmsso-10">Edit Behavior</span>. +</p><!--l. 24--><p class="noindent" ><img src="images/015-HelloWorld03.png" alt="PIC" /> -</p><!--l. 87--><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 dialogue with -<span +</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 dialogue 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. Open the transition dialogue by double clicking the transition arrow and fill in the action -code. - - +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. Open the transition dialogue by double +clicking the transition arrow and fill in the action code. Be aware of the different action code in Java and +C. </p> -<div class="verbatim" id="verbatim-1"> +<hr class="figure" /><div class="figure" +> + + + + +<div class="minipage">_________________________________________ +_________________________________________          <!--l. 33--><p class="noindent" ><span +class="ec-lmssbx-10">action code for Java</span> +</p> +<div class="verbatim" id="verbatim-3"> System.out.println("Hello World !"); </div> -<!--l. 95--><p class="nopar" > -</p><!--l. 97--><p class="noindent" >The result should look like this: -</p><!--l. 99--><p class="noindent" ><img +<!--l. 36--><p class="nopar" > +</p></div>   <div class="minipage">_________________________________________________________________          <!--l. 42--><p class="noindent" ><span +class="ec-lmssbx-10">action code for C</span> +</p> +<div class="verbatim" id="verbatim-4"> +printf("Hello World\n"); +</div> +<!--l. 45--><p class="nopar" > +</p></div> + + +</div><hr class="endfigure" /> +<!--l. 51--><p class="noindent" >The result should look like this: +</p><!--l. 53--><p class="noindent" ><img src="images/015-HelloWorld04.png" alt="PIC" /> -</p><!--l. 102--><p class="noindent" >Save the diagram and inspect the model file. Note that the textual representation was created after saving the -diagram. -</p><!--l. 105--><p class="noindent" ><img -src="images/015-HelloWorld05.png" alt="PIC" - /> -</p><!--l. 109--><p class="noindent" > +</p><!--l. 56--><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"> +______________________________________________ +______________________________________________          <!--l. 62--><p class="noindent" ><span +class="ec-lmssbx-10">room model for Java </span><br +class="newline" /></p><!--l. 64--> +<div class="lstlisting" id="listing-2"><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"> </span><span +class="ec-lmtt-9">HelloWorld_Model</span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9">{</span><span +class="ec-lmtt-9"> </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"> </span><span +class="ec-lmssbx-10x-x-90">LogicalSystem</span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9">LogSys1</span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9">{</span><span +class="ec-lmtt-9"> </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"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmssbx-10x-x-90">SubSystemRef</span><span +class="ec-lmtt-9"> </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"> </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"> </span><span +class="ec-lmtt-9">}</span><span +class="ec-lmtt-9"> </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"> </span><span +class="ec-lmssbx-10x-x-90">SubSystemClass</span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9">SubSysClass1</span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9">{</span><span +class="ec-lmtt-9"> </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"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmssbx-10x-x-90">ActorRef</span><span +class="ec-lmtt-9"> </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"> </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"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmssbx-10x-x-90">LogicalThread</span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9">defaultThread</span><span +class="ec-lmtt-9"> </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"> </span><span +class="ec-lmtt-9">}</span><span +class="ec-lmtt-9"> </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"> </span><span +class="ec-lmssbx-10x-x-90">ActorClass</span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9">HelloWorldTop</span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9">{</span><span +class="ec-lmtt-9"> </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"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmssbx-10x-x-90">Structure</span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9">{</span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9">}</span><span +class="ec-lmtt-9"> </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"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmssbx-10x-x-90">Behavior</span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9">{</span><span +class="ec-lmtt-9"> </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"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmssbx-10x-x-90">StateMachine</span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9">{</span><span +class="ec-lmtt-9"> </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"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmssbx-10x-x-90">Transition</span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9">init</span><span +class="ec-lmtt-9">:</span><span +class="ec-lmtt-9"> </span><span +class="ec-lmssbx-10x-x-90">initial</span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9">-></span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9">state0</span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9">{</span><span +class="ec-lmtt-9"> </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"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmssbx-10x-x-90">action</span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9">{</span><span +class="ec-lmtt-9"> </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"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </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"> </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"> </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"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9">}</span><span +class="ec-lmtt-9"> </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"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9">}</span><span +class="ec-lmtt-9"> </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"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmssbx-10x-x-90">State</span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9">state0</span><span +class="ec-lmtt-9"> </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"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9">}</span><span +class="ec-lmtt-9"> </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"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9">}</span><span +class="ec-lmtt-9"> </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"> </span><span +class="ec-lmtt-9">}</span><span +class="ec-lmtt-9"> </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"> +___________________________________________________          <!--l. 93--><p class="noindent" ><span +class="ec-lmssbx-10">room model for C </span><br +class="newline" /></p><!--l. 95--> +<div class="lstlisting" id="listing-3"><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"> </span><span +class="ec-lmtt-9">HelloWorld_Model</span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9">{</span><span +class="ec-lmtt-9"> </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"> </span><span +class="ec-lmssbx-10x-x-90">LogicalSystem</span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9">LogSys1</span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9">{</span><span +class="ec-lmtt-9"> </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"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmssbx-10x-x-90">SubSystemRef</span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9">subSysRef1</span><span +class="ec-lmtt-9">:</span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9">SubSysClass1</span><span +class="ec-lmtt-9"> </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"> </span><span +class="ec-lmtt-9">}</span><span +class="ec-lmtt-9"> </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"> </span><span +class="ec-lmssbx-10x-x-90">SubSystemClass</span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9">SubSysClass1</span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9">{</span><span +class="ec-lmtt-9"> </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"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmssbx-10x-x-90">ActorRef</span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9">actorRef1</span><span +class="ec-lmtt-9">:</span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9">HelloWorldTop</span><span +class="ec-lmtt-9"> </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"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmssbx-10x-x-90">LogicalThread</span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9">defaultThread</span><span +class="ec-lmtt-9"> </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"> </span><span +class="ec-lmtt-9">}</span><span +class="ec-lmtt-9"> </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"> </span><span +class="ec-lmssbx-10x-x-90">ActorClass</span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9">HelloWorldTop</span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9">{</span><span +class="ec-lmtt-9"> </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"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmssbx-10x-x-90">Structure</span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9">{</span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9">}</span><span +class="ec-lmtt-9"> </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"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmssbx-10x-x-90">Behavior</span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9">{</span><span +class="ec-lmtt-9"> </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"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmssbx-10x-x-90">StateMachine</span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9">{</span><span +class="ec-lmtt-9"> </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"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmssbx-10x-x-90">Transition</span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9">init</span><span +class="ec-lmtt-9">:</span><span +class="ec-lmtt-9"> </span><span +class="ec-lmssbx-10x-x-90">initial</span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9">-></span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9">state0</span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9">{</span><span +class="ec-lmtt-9"> </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"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmssbx-10x-x-90">action</span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9">{</span><span +class="ec-lmtt-9"> </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"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </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"> </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"> </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"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9">}</span><span +class="ec-lmtt-9"> </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"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9">}</span><span +class="ec-lmtt-9"> </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"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmssbx-10x-x-90">State</span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9">state0</span><span +class="ec-lmtt-9"> </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"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9">}</span><span +class="ec-lmtt-9"> </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"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9"> </span><span +class="ec-lmtt-9">}</span><span +class="ec-lmtt-9"> </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"> </span><span +class="ec-lmtt-9">}</span><span +class="ec-lmtt-9"> </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-350002.4.4"></a>Build and run the model</h4> -<!--l. 111--><p class="noindent" >Now the model is finished and source code can be generated. The project wizard has created a launch -configuration that is responsible for generating the source code. From <span -class="ec-lmsso-10">HelloWorld/ </span>right click + id="x10-370002.4.4"></a>Build and run the model</h4> +<!--l. 64--><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">_HelloWorld.launch </span>and run it as <span -class="ec-lmssbx-10">gen_HelloWorld.launch </span>and run it as gen_HelloWorld. All model files in the model directory will be -generated. -</p><!--l. 116--><p class="noindent" ><img +class="ec-lmsso-10">gen_HelloWorld</span>. +</p><!--l. 67--><p class="noindent" ><img src="images/015-HelloWorld06.png" alt="PIC" /> -</p><!--l. 119--><p class="noindent" >The code will be generated to the src-gen directory. The main function will be contained in +</p><!--l. 70--><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-lmssbx-10">SubSystem_HelloWorldRunner.java</span>. Select this file and run it as Java application. -</p><!--l. 122--><p class="noindent" ><img +class="ec-lmsso-10">SubSystem_HelloWorldRunner.java</span>. Select this file and run it as Java application. +</p><!--l. 72--><p class="noindent" ><img src="images/015-HelloWorld07.png" alt="PIC" /> -</p><!--l. 126--><p class="noindent" >The Hello World application starts and the string will be printed on the console window. To stop the +</p><!--l. 76--><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 stop the application the user must type <span -class="ec-lmssbx-10">quit </span>in the console window. -</p><!--l. 129--><p class="noindent" ><img +class="ec-lmsso-10">quit </span>in the console window. +</p><!--l. 78--><p class="noindent" ><img src="images/015-HelloWorld08.png" alt="PIC" /> -</p><!--l. 132--><p class="noindent" > +</p><!--l. 1--><p class="noindent" > </p> <h4 class="subsectionHead"><span class="titlemark">2.4.5 </span> <a - id="x10-360002.4.5"></a>Open the Message Sequence Chart</h4> -<!--l. 134--><p class="noindent" >During runtime the application produced a MSC and wrote it to a file. Open -HelloWorld/tmp/log/SubSystem_HelloWorld_Async.seq using Trace2UML (it is open source and can be -obtained from http://trace2uml.tigris.org/). You should see something like this: -</p><!--l. 138--><p class="noindent" ><img + 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. 142--><p class="noindent" > +</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. 83--><p class="noindent" > </p> <h4 class="subsectionHead"><span class="titlemark">2.4.6 </span> <a - id="x10-370002.4.6"></a>Summary</h4> -<!--l. 144--><p class="noindent" >Now you have generated your first eTrice model from scratch. You can switch between diagram editor and -model (.room file) and you can see what will be generated during editing and saving the diagram files. You + id="x10-390002.4.6"></a>Summary</h4> +<!--l. 85--><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. The next tutorials will deal with more complex hierarchies in structure and +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 |