<?xml version="1.0" encoding="UTF-8"?>
<model version="2.2.03">
 <documentation>Simple model template for QP/C</documentation>
 <framework name="qpc"/>
 <package name="Events" stereotype="0x01">
  <class name="MyEvt" superclass="qpc::QEvt"/>
 </package>
 <package name="AOs" stereotype="0x02">
  <class name="MyAO" superclass="qpc::QActive">
   <documentation>Test active object</documentation>
   <statechart>
    <initial target="../4">
     <initial_glyph conn="114,8,5,0,15,9">
      <action box="0,-2,6,2"/>
     </initial_glyph>
    </initial>
    <state name="init_reboot">
     <tran trig="TRIG1" target="../../2">
      <tran_glyph conn="26,31,2,0,19">
       <action box="0,-2,6,2"/>
      </tran_glyph>
     </tran>
     <state_glyph node="17,17,18,14"/>
    </state>
    <state name="rebooting">
     <tran trig="TRIG1" target="../../6">
      <tran_glyph conn="25,65,2,3,32,39">
       <action box="0,-2,6,2"/>
      </tran_glyph>
     </tran>
     <tran trig="TRIG2" target="../../4">
      <tran_glyph conn="35,59,1,3,16,-38,68">
       <action box="0,-2,6,2"/>
      </tran_glyph>
     </tran>
     <state_glyph node="17,50,18,15"/>
    </state>
    <state name="requesting">
     <entry brief="request(); RT = 1;"/>
     <tran trig="eAck() [ei huolita]" target="../../4">
      <action brief=" ei kannata toteuttaa?"/>
      <tran_glyph conn="79,50,0,3,-21,40">
       <action box="0,-4,26,2"/>
      </tran_glyph>
     </tran>
     <tran trig="eNak()" target="../../4">
      <action brief=" "/>
      <tran_glyph conn="70,50,0,3,-25,49">
       <action box="0,-4,7,2"/>
      </tran_glyph>
     </tran>
     <tran trig="eAck(time,addr)" target="../../6">
      <action brief="T1=time/2; T2=time*7/8; T3=time; leasetime=time; setip(addr);"/>
      <tran_glyph conn="74,65,2,0,27">
       <action box="0,3,12,12"/>
      </tran_glyph>
     </tran>
     <tran trig="eTick() [RT&gt;0]">
      <action brief="RT--"/>
      <tran_glyph conn="88,58,1,-1,-20">
       <action box="-14,-2,14,2"/>
      </tran_glyph>
     </tran>
     <tran trig="eTick() [RT=0]" target="../../4">
      <action brief=" "/>
      <tran_glyph conn="88,58,1,3,25,-26,6">
       <action box="0,-2,12,2"/>
      </tran_glyph>
     </tran>
     <state_glyph node="64,50,24,15">
      <entry box="1,2,18,3"/>
     </state_glyph>
    </state>
    <state name="init">
     <entry brief="halt network; RT = random(0,9); xid = random();"/>
     <tran trig="eTick() [RT=0]" target="../../5">
      <action brief=" "/>
      <tran_glyph conn="129,34,2,0,14">
       <action box="0,1,15,4"/>
      </tran_glyph>
     </tran>
     <tran trig="eTick() [RT&gt;0]">
      <action brief="RT--"/>
      <tran_glyph conn="119,27,3,-1,18">
       <action box="0,-2,14,2"/>
      </tran_glyph>
     </tran>
     <state_glyph node="119,17,20,17">
      <entry box="1,2,13,6"/>
     </state_glyph>
    </state>
    <state name="selecting">
     <entry brief="discover(xid); T2 = 1; RT = 1;"/>
     <tran trig="eOffer(...)" target="../../3">
      <action brief="save offer"/>
      <tran_glyph conn="120,62,3,1,-32">
       <action box="-26,-2,24,2"/>
      </tran_glyph>
     </tran>
     <tran trig="eTick() [RT&gt;0]">
      <action brief="RT--;"/>
      <tran_glyph conn="120,61,3,-1,19">
       <action box="0,-2,14,2"/>
      </tran_glyph>
     </tran>
     <tran trig="eTick() [RT=0]">
      <action brief="T2 = T2 * 2; RT = T2; discover(xid);"/>
      <tran_glyph conn="120,58,3,-1,19">
       <action box="0,-4,18,4"/>
      </tran_glyph>
     </tran>
     <state_glyph node="120,48,20,17">
      <entry box="1,2,19,4"/>
     </state_glyph>
    </state>
    <state name="bound">
     <tran trig="eTick() [T1=0]" target="../../8">
      <action brief="T2--; T3--; "/>
      <tran_glyph conn="71,109,2,3,34,50">
       <action box="-16,5,16,6"/>
      </tran_glyph>
     </tran>
     <tran trig="eTick() [T1&gt;0]">
      <action brief="T1--; T2--; T3--;"/>
      <tran_glyph conn="64,97,3,-1,21">
       <action box="0,-2,19,2"/>
      </tran_glyph>
     </tran>
     <state_glyph node="64,92,24,17"/>
    </state>
    <state name="rebinding">
     <entry brief="br_request(); RT = T2 / 2;"/>
     <tran trig="eTick() [T3=0]" target="../../4">
      <action brief=" "/>
      <tran_glyph conn="141,97,1,1,13,-68,-15">
       <action box="0,-2,11,3"/>
      </tran_glyph>
     </tran>
     <tran trig="eAck(time, addr)" target="../../6">
      <action brief="T1=time/2; T2=time*7/8; T3=time; leasetime=time;"/>
      <tran_glyph conn="121,99,3,1,-33">
       <action box="-16,0,12,10"/>
      </tran_glyph>
     </tran>
     <tran trig="eNak()" target="../../4">
      <action brief=" "/>
      <tran_glyph conn="141,102,1,1,20,-77,-22">
       <action box="0,-2,9,2"/>
      </tran_glyph>
     </tran>
     <tran trig="eTick() [RT&gt;0]">
      <action brief="RT--; T3--;"/>
      <tran_glyph conn="121,106,3,-1,18">
       <action box="0,-2,19,2"/>
      </tran_glyph>
     </tran>
     <tran trig="eTick() [RT=0]">
      <action brief="T3--; br_request(); RT = T3 / 2;"/>
      <tran_glyph conn="121,111,3,-1,18">
       <action box="0,-4,17,4"/>
      </tran_glyph>
     </tran>
     <state_glyph node="121,91,20,24">
      <entry box="1,2,14,5"/>
     </state_glyph>
    </state>
    <state name="renewing">
     <entry brief="request(); RT = T2/2;"/>
     <tran trig="eNak()" target="../../4">
      <action brief=" "/>
      <tran_glyph conn="146,146,1,1,27,-124,-34">
       <action box="0,-2,14,3"/>
      </tran_glyph>
     </tran>
     <tran trig="eAck(time, addr)" target="../../6">
      <action brief="T1=time/2; T2=time*7/8; T3=time; leasetime=time;"/>
      <tran_glyph conn="121,137,3,2,-43,-28">
       <action box="-28,-6,17,6"/>
      </tran_glyph>
     </tran>
     <tran trig="eTick() [RT&gt;0]">
      <action brief="RT--;T2--; T3--;"/>
      <tran_glyph conn="121,140,3,-1,23">
       <action box="0,-2,21,2"/>
      </tran_glyph>
     </tran>
     <tran trig="eTick() [T2=0]" target="../../7">
      <action brief=" "/>
      <tran_glyph conn="146,137,1,1,20,-32,-25">
       <action box="0,-4,16,5"/>
      </tran_glyph>
     </tran>
     <tran trig="eTick() [RT=0]">
      <action brief="T2--; T3--; request(); RT = T2/2;"/>
      <tran_glyph conn="121,147,3,-1,23">
       <action box="0,-4,20,4"/>
      </tran_glyph>
     </tran>
     <state_glyph node="121,132,25,17">
      <entry box="1,2,21,2"/>
     </state_glyph>
    </state>
    <state_diagram size="179,172"/>
   </statechart>
  </class>
 </package>
 <directory name=".">
  <file name="project.h">
   <text>#include &quot;qp_port.h&quot;

$define(AOs::MyAO)

/* define some other functions */</text>
  </file>
  <file name="myao.c"/>
 </directory>
</model>
