blob: 0745df40d7cc9377515d8e233528d5ee5e52aa20 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<n1:Project xmlns:n1="http://www.conformiq.com/EMF/SimpleStatechart" xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<statemachine name="GGSN">
<transitions body="" from="//@statemachine.0/@states.0" to="//@statemachine.0/@states.1"/>
<transitions body="CLIin:Configure[]/&#xA;cli.configure(msg);" from="//@statemachine.0/@states.1" to="//@statemachine.0/@states.2"/>
<transitions body="GnIn:CreatePDPcontext[]/&#xA;createPDPcontext(msg);" from="//@statemachine.0/@states.2" to="//@statemachine.0/@states.4"/>
<transitions body="GnIn:DeletePDPcontext[]/&#xA;deletePDPcontext(msg);&#xA;require ((uplinkData > 0) || (downlinkData > 0));&#xA;if ((uplinkData > 0) &amp;&amp; (downlinkData > 0))&#xA; requirement &quot;Payload/Bidirectional payload&quot;;" from="//@statemachine.0/@states.5" to="//@statemachine.0/@states.3"/>
<transitions body="[nodeConfiguration.chargingEnabled]/&#xA;charging.sendInfo(GnOut);" from="//@statemachine.0/@states.3" to="//@statemachine.0/@states.10"/>
<transitions body="" from="//@statemachine.0/@states.4" to="//@statemachine.0/@states.5"/>
<transitions body="GnIn:UpdatePDPcontext[]/&#xA;{&#xA; updatePDPcontext(msg);&#xA; if ((uplinkData > 0) || (downlinkData > 0))&#xA; requirement &quot;PDP context/Update/After data transfer&quot;;&#xA; else&#xA; requirement &quot;PDP context/Update/Before data transfer&quot;;&#xA;}" from="//@statemachine.0/@states.5" to="//@statemachine.0/@states.5"/>
<transitions body="[else]/" from="//@statemachine.0/@states.3" to="//@statemachine.0/@states.10"/>
<transitions body="[else]/" from="//@statemachine.0/@states.9" to="//@statemachine.0/@states.6"/>
<transitions body="[nodeConfiguration.configurationChanged()]/" from="//@statemachine.0/@states.9" to="//@statemachine.0/@states.7"/>
<transitions body="CLIin:Prepare[]/&#xA;handlePrepare(msg);&#xA;requirement &quot;PrepareRestore/Prepare&quot;;" from="//@statemachine.0/@states.1" to="//@statemachine.0/@states.8"/>
<transitions body="CLIin:Restore[]/&#xA;handleRestore(msg);&#xA;requirement &quot;PrepareRestore/Restore&quot;;" from="//@statemachine.0/@states.1" to="//@statemachine.0/@states.8"/>
<transitions body="[]/nodeConfiguration.checkConfiguration();" from="//@statemachine.0/@states.10" to="//@statemachine.0/@states.9"/>
<transitions body="CLIin: OverrideConfiguration[]/&#xA;require ((msg.overrideCharging == nodeConfiguration.chargingEnabled)&#xA; &amp;&amp; (msg.overrideRadiusAuth == nodeConfiguration.radiusAuthEnabled));&#xA;requirement &quot;Configuration/Clean up if configuration changed&quot;;" from="//@statemachine.0/@states.7" to="//@statemachine.0/@states.6"/>
<states xsi:type="n1:InitialState"/>
<states internal="&#xA;" name="Init" xsi:type="n1:BasicState"/>
<states internal="&#xA;" name="Operational" xsi:type="n1:BasicState"/>
<states internal="&#xA;" name="ContextDeleted" xsi:type="n1:BasicState"/>
<states internal="" name="CreateContext" xsi:type="n1:BasicState">
<transitions body="[]/" from="//@statemachine.0/@states.4/@states.0" to="//@statemachine.0/@states.4/@states.3"/>
<transitions body="GiRadiusIn:RadiusAccessAccept []/&#xA;requirement &quot;Radius/Authentication/Wait for Access Accept&quot;;" from="//@statemachine.0/@states.4/@states.1" to="//@statemachine.0/@states.4/@states.4"/>
<transitions body="[nodeConfiguration.radiusAuthEnabled]/&#xA;sendRadiusAuthRequest();" from="//@statemachine.0/@states.4/@states.3" to="//@statemachine.0/@states.4/@states.1"/>
<transitions body="[]/&#xA;confirmCreatePDPcontext();" from="//@statemachine.0/@states.4/@states.4" to="//@statemachine.0/@states.4/@states.2"/>
<transitions body="[else]/" from="//@statemachine.0/@states.4/@states.3" to="//@statemachine.0/@states.4/@states.4"/>
<states xsi:type="n1:InitialState"/>
<states internal="" name="Wait For Radius Accept" xsi:type="n1:BasicState"/>
<states xsi:type="n1:FinalState"/>
<states xsi:type="n1:Junction"/>
<states xsi:type="n1:Junction"/>
</states>
<states internal="GnIn:GPDU[]/&#xA;{ forwardGPDUtoGi(msg);&#xA; requirement &quot;Payload/Forward uplink&quot;; }&#xA;&#xA;GiIn:UDPpdu[]/&#xA;{ forwardUdpPduToGn(msg);&#xA; requirement &quot;Payload/Forward downlink&quot;; }" name="DataForwarding" xsi:type="n1:BasicState"/>
<states xsi:type="n1:FinalState"/>
<states internal="" name="Cleanup" xsi:type="n1:BasicState"/>
<states xsi:type="n1:FinalState"/>
<states xsi:type="n1:Junction"/>
<states xsi:type="n1:Junction"/>
</statemachine>
<diagrams statemachine="//@statemachine.0">
<items state="//@statemachine.0/@states.0" xsi:type="n1:DiagramInitialState">
<location x="400" y="40"/>
</items>
<items height="70" state="//@statemachine.0/@states.1" width="199" xsi:type="n1:DiagramBasicState">
<location x="300" y="176"/>
</items>
<items autolayout="true" transition="//@statemachine.0/@transitions.0" xsi:type="n1:DiagramTransition">
<bodylocation align="0" valign="0.5" x="410" y="118"/>
<route x="400" y="60"/>
<route x="400" y="176"/>
</items>
<items height="114" note="Interfaces/ports:&#xA;&#xA;CLIin&#x9;&#x9;CLI commands&#xA;GnIn/GnOut&#x9;i/f to SGSN&#xA;GiIn/GiOut&#x9;&#x9;i/f to internet" width="288" xsi:type="n1:DiagramNote">
<location x="263" y="-117"/>
</items>
<items height="70" state="//@statemachine.0/@states.2" width="199" xsi:type="n1:DiagramBasicState">
<location x="278" y="363"/>
</items>
<items height="100" state="//@statemachine.0/@states.3" width="200" xsi:type="n1:DiagramBasicState">
<location x="800" y="700"/>
</items>
<items height="89" state="//@statemachine.0/@states.4" width="202" xsi:type="n1:DiagramBasicState">
<location x="798" y="158"/>
</items>
<items autolayout="true" transition="//@statemachine.0/@transitions.1" xsi:type="n1:DiagramTransition">
<bodylocation align="0" valign="0.5" x="409.5" y="304.5"/>
<route x="399.5" y="246"/>
<route x="399.5" y="363"/>
</items>
<items autolayout="true" transition="//@statemachine.0/@transitions.2" xsi:type="n1:DiagramTransition">
<bodylocation align="0" valign="0.5" x="910" y="113.5"/>
<route x="477" y="400"/>
<route x="600" xsi:type="n1:DiagramLayoutMarker" y="400"/>
<route x="600" xsi:type="n1:DiagramLayoutMarker" y="42"/>
<route x="900" y="42"/>
<route x="900" xsi:type="n1:DiagramLayoutMarker" y="69"/>
<route x="900" y="158"/>
</items>
<items autolayout="true" transition="//@statemachine.0/@transitions.3" xsi:type="n1:DiagramTransition">
<bodylocation align="0" valign="0.5" x="915.5" y="631.5"/>
<route x="905.5" y="563"/>
<route x="905.5" y="700"/>
</items>
<items autolayout="true" transition="//@statemachine.0/@transitions.4" xsi:type="n1:DiagramTransition">
<bodylocation align="0.5" constraintBottom="843" constraintLeft="1020" valign="0" x="1194.5" y="760"/>
<route x="1000" y="750"/>
<route x="1389" y="750"/>
<route x="1389" xsi:type="n1:DiagramLayoutMarker" y="863"/>
<route x="900" y="863"/>
<route x="900" y="890"/>
</items>
<items height="108" note="GGSN Rule No. 1 – Payload &#xA;Payload shall always be transmitted in a test case whenever a successful PDP Context Activation has been performed.&#xA;" width="374" xsi:type="n1:DiagramNote">
<location x="1297" y="552"/>
</items>
<items autolayout="true" transition="//@statemachine.0/@transitions.5" xsi:type="n1:DiagramTransition">
<bodylocation align="0" valign="0.5" x="909" y="288"/>
<route x="899" y="247"/>
<route x="899" y="329"/>
</items>
<items height="234" state="//@statemachine.0/@states.5" width="307" xsi:type="n1:DiagramBasicState">
<location x="752" y="329"/>
</items>
<items autolayout="true" transition="//@statemachine.0/@transitions.6" xsi:type="n1:DiagramTransition">
<bodylocation align="0.5" constraintLeft="1207" constraintTop="268" valign="1" x="1364.5" y="453"/>
<route x="1059" y="463"/>
<route x="1187" xsi:type="n1:DiagramLayoutMarker" y="463"/>
<route x="1544" y="463"/>
<route x="1544" xsi:type="n1:DiagramLayoutMarker" y="248"/>
<route x="1032" y="248"/>
<route x="1032" y="329"/>
</items>
<items state="//@statemachine.0/@states.6" xsi:type="n1:DiagramFinalState">
<location x="1209" y="1234"/>
</items>
<items autolayout="true" transition="//@statemachine.0/@transitions.7" xsi:type="n1:DiagramTransition">
<bodylocation align="0.5" valign="1" x="599.5" y="744"/>
<route x="800" y="754"/>
<route x="399" xsi:type="n1:DiagramLayoutMarker" y="754"/>
<route x="402" y="754"/>
<route x="402" xsi:type="n1:DiagramLayoutMarker" y="862"/>
<route x="900" y="862"/>
<route x="900" y="890"/>
</items>
<items height="100" state="//@statemachine.0/@states.7" width="200" xsi:type="n1:DiagramBasicState">
<location x="1561" y="1017"/>
</items>
<items autolayout="true" transition="//@statemachine.0/@transitions.8" xsi:type="n1:DiagramTransition">
<bodylocation align="0" valign="0.5" x="910" y="1122"/>
<route x="900" y="1010"/>
<route x="900" xsi:type="n1:DiagramLayoutMarker" y="1234"/>
<route x="1189" y="1234"/>
</items>
<items autolayout="true" transition="//@statemachine.0/@transitions.9" xsi:type="n1:DiagramTransition">
<bodylocation align="0.5" constraintBottom="1006" constraintLeft="930" valign="0" x="1214" y="1010"/>
<route x="910" y="1000"/>
<route x="1661" y="1000"/>
<route x="1661" y="1017"/>
</items>
<items height="53" note="Restore default configuration only if needed" width="236" xsi:type="n1:DiagramNote">
<location x="1485" y="1152"/>
</items>
<items state="//@statemachine.0/@states.8" xsi:type="n1:DiagramFinalState">
<location x="-100" y="200"/>
</items>
<items autolayout="true" transition="//@statemachine.0/@transitions.10" xsi:type="n1:DiagramTransition">
<bodylocation align="0" valign="0.5" x="-90" y="140"/>
<route x="300" y="200"/>
<route x="246" xsi:type="n1:DiagramLayoutMarker" y="200"/>
<route x="246" xsi:type="n1:DiagramLayoutMarker" y="100"/>
<route x="-100" xsi:type="n1:DiagramLayoutMarker" y="100"/>
<route x="-100" y="180"/>
</items>
<items autolayout="true" transition="//@statemachine.0/@transitions.11" xsi:type="n1:DiagramTransition">
<bodylocation align="0.5" valign="1" x="73.5" y="290"/>
<route x="300" y="223"/>
<route x="246" xsi:type="n1:DiagramLayoutMarker" y="223"/>
<route x="247" y="223"/>
<route x="247" xsi:type="n1:DiagramLayoutMarker" y="300"/>
<route x="-100" xsi:type="n1:DiagramLayoutMarker" y="300"/>
<route x="-100" y="220"/>
</items>
<items state="//@statemachine.0/@states.9" xsi:type="n1:DiagramJunction">
<location x="900" y="1000"/>
</items>
<items autolayout="true" transition="//@statemachine.0/@transitions.12" xsi:type="n1:DiagramTransition">
<bodylocation align="0" valign="0.5" x="910" y="950"/>
<route x="900" y="910"/>
<route x="900" y="990"/>
</items>
<items state="//@statemachine.0/@states.10" xsi:type="n1:DiagramJunction">
<location x="900" y="900"/>
</items>
<items autolayout="true" transition="//@statemachine.0/@transitions.13" xsi:type="n1:DiagramTransition">
<bodylocation align="0.5" constraintBottom="1194" constraintRight="1541" valign="0" x="1385" y="1077"/>
<route x="1561" y="1067"/>
<route x="1209" y="1067"/>
<route x="1209" y="1214"/>
</items>
</diagrams>
<diagrams substate="//@statemachine.0/@states.4">
<items state="//@statemachine.0/@states.4/@states.0" xsi:type="n1:DiagramInitialState">
<location x="198" y="68"/>
</items>
<items height="80" state="//@statemachine.0/@states.4/@states.1" width="223" xsi:type="n1:DiagramBasicState">
<location x="387" y="284"/>
</items>
<items autolayout="true" transition="//@statemachine.0/@states.4/@transitions.0" xsi:type="n1:DiagramTransition">
<bodylocation align="0.5" constraintBottom="138" constraintLeft="238" valign="0" x="359.5" y="78"/>
<route x="218" y="68"/>
<route x="501" y="68"/>
<route x="501" y="158"/>
</items>
<items state="//@statemachine.0/@states.4/@states.2" xsi:type="n1:DiagramFinalState">
<location x="500" y="600"/>
</items>
<items autolayout="true" transition="//@statemachine.0/@states.4/@transitions.1" xsi:type="n1:DiagramTransition">
<bodylocation align="0" valign="0.5" x="510" y="417"/>
<route x="500" y="364"/>
<route x="500" y="470"/>
</items>
<items state="//@statemachine.0/@states.4/@states.3" xsi:type="n1:DiagramJunction">
<location x="501" y="168"/>
</items>
<items autolayout="true" transition="//@statemachine.0/@states.4/@transitions.2" xsi:type="n1:DiagramTransition">
<bodylocation align="0" valign="0.5" x="511" y="231"/>
<route x="501" y="178"/>
<route x="501" y="284"/>
</items>
<items state="//@statemachine.0/@states.4/@states.4" xsi:type="n1:DiagramJunction">
<location x="500" y="480"/>
</items>
<items autolayout="true" transition="//@statemachine.0/@states.4/@transitions.3" xsi:type="n1:DiagramTransition">
<bodylocation align="0" valign="0.5" x="510" y="535"/>
<route x="500" y="490"/>
<route x="500" y="580"/>
</items>
<items autolayout="true" transition="//@statemachine.0/@states.4/@transitions.4" xsi:type="n1:DiagramTransition">
<bodylocation align="0.5" constraintBottom="458" constraintRight="281" valign="0" x="300.5" y="177"/>
<route x="501" y="167"/>
<route x="301" xsi:type="n1:DiagramLayoutMarker" y="167"/>
<route x="300" y="167"/>
<route x="300" xsi:type="n1:DiagramLayoutMarker" y="478"/>
<route x="500" y="478"/>
</items>
</diagrams>
</n1:Project>