| <?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->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. 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"> </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-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-35003r3"></a><span |
| class="ec-lmss-8x-x-62">3</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-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-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-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><br /><span class="label"><a |
| 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-35007r7"></a><span |
| class="ec-lmss-8x-x-62">7</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-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-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-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-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-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-35011r11"></a><span |
| class="ec-lmss-8x-x-62">11</span></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><span |
| class="ec-lmtt-9">}</span><span |
| class="ec-lmtt-9"> </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"> </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"> </span><span |
| class="ec-lmtt-9">PhysicalModel1</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-35016r2"></a><span |
| class="ec-lmss-8x-x-62">2</span></span><span |
| class="ec-lmtt-9"> </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"> </span><span |
| class="ec-lmssbx-10x-x-90">PhysicalSystem</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">PhysSys1</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-35018r4"></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-lmssbx-10x-x-90">NodeRef</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">nodeRef1</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">:</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">NodeClass1</span><span |
| class="ec-lmtt-9"> </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"> </span><span |
| class="ec-lmtt-9">}</span><span |
| class="ec-lmtt-9"> </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"> </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"> </span><span |
| class="ec-lmssbx-10x-x-90">NodeClass</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">NodeClass1</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-35022r8"></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-lmssbx-10x-x-90">runtime</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">=</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">RuntimeClass1</span><span |
| class="ec-lmtt-9"> </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"> </span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmssbx-10x-x-90">priomin</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">=</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">-10</span><span |
| class="ec-lmtt-9"> </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"> </span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmssbx-10x-x-90">priomax</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">=</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">10</span><span |
| class="ec-lmtt-9"> </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"> </span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmssbx-10x-x-90">DefaultThread</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">PhysicalThread1</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-35026r12"></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">execmode</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">mixed</span><span |
| class="ec-lmtt-9"> </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"> </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">interval</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">=</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">100</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmssbx-10x-x-90">ms</span><span |
| class="ec-lmtt-9"> </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"> </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">prio</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">=</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">0</span><span |
| class="ec-lmtt-9"> </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"> </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">stacksize</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">=</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">1024</span><span |
| class="ec-lmtt-9"> </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"> </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">msgblocksize</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">=</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">32</span><span |
| class="ec-lmtt-9"> </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"> </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">msgpoolsize</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">=</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">10</span><span |
| class="ec-lmtt-9"> </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"> </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-35033r19"></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><br /><span class="label"><a |
| id="x10-35034r20"></a><span |
| class="ec-lmss-8x-x-62">20</span></span><span |
| class="ec-lmtt-9"> </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"> </span><span |
| class="ec-lmssbx-10x-x-90">RuntimeClass</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">RuntimeClass1</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-35036r22"></a><span |
| class="ec-lmss-8x-x-62">22</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">model</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">multiThreaded</span><span |
| class="ec-lmtt-9"> </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"> </span><span |
| class="ec-lmtt-9">}</span><span |
| class="ec-lmtt-9"> </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"> </span><span |
| class="ec-lmtt-9">MappingModel1</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-35040r2"></a><span |
| class="ec-lmss-8x-x-62">2</span></span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmssbx-10x-x-90">import</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-lmssbx-10x-x-90">from</span><span |
| class="ec-lmtt-9"> </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"> </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"> </span><span |
| class="ec-lmssbx-10x-x-90">import</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">PhysicalModel1</span><span |
| class="ec-lmtt-9">.*</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmssbx-10x-x-90">from</span><span |
| class="ec-lmtt-9"> </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"> </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"> </span><span |
| class="ec-lmssbx-10x-x-90">Mapping</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><span |
| class="ec-lmtt-9">PhysSys1</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-35043r5"></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-lmssbx-10x-x-90">SubSystemMapping</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"> </span><span |
| class="ec-lmtt-9">nodeRef1</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-35044r6"></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-lmtt-9"> </span><span |
| class="ec-lmssbx-10x-x-90">ThreadMapping</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">defaultThread</span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">-></span><span |
| class="ec-lmtt-9"> </span><span |
| class="ec-lmtt-9">PhysicalThread1</span><span |
| class="ec-lmtt-9"> </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"> </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-35046r8"></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-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">_________________________________________ |
| _________________________________________          <!--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 World"); |
| </div> |
| <!--l. 39--><p class="nopar" > |
| </p></div>   <div class="minipage">_________________________________________________________________          <!--l. 45--><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. 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"> |
| ______________________________________________ |
| ______________________________________________          <!--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"> </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. 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"> </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-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> |