<p>daniel <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/21264">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  daniel: Looks good to me, approved
  pespin: Looks good to me, but someone else must approve
  Jenkins Builder: Verified

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">Osmocom_Gb_Types: Fix indentation<br><br>Change-Id: I4ca156b53dfe9daa190d52a7de46be56cf74099a<br>---<br>M library/Osmocom_Gb_Types.ttcn<br>1 file changed, 360 insertions(+), 362 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/library/Osmocom_Gb_Types.ttcn b/library/Osmocom_Gb_Types.ttcn</span><br><span>index 8d48cb1..2c82437 100644</span><br><span>--- a/library/Osmocom_Gb_Types.ttcn</span><br><span>+++ b/library/Osmocom_Gb_Types.ttcn</span><br><span>@@ -929,41 +929,41 @@</span><br><span>               return ret;</span><br><span>  }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-template (value) Tag ts_BSSGP_IE_Tag(OCT1 tag) := {</span><br><span style="color: hsl(0, 100%, 40%);">-        iEI := '1E'O,</span><br><span style="color: hsl(0, 100%, 40%);">-   ext := '1'B,</span><br><span style="color: hsl(0, 100%, 40%);">-    lengthIndicator := {</span><br><span style="color: hsl(0, 100%, 40%);">-            length1 := 1</span><br><span style="color: hsl(0, 100%, 40%);">-    },</span><br><span style="color: hsl(0, 100%, 40%);">-      unstructured_Value := tag</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(120, 100%, 40%);">+    template (value) Tag ts_BSSGP_IE_Tag(OCT1 tag) := {</span><br><span style="color: hsl(120, 100%, 40%);">+           iEI := '1E'O,</span><br><span style="color: hsl(120, 100%, 40%);">+         ext := '1'B,</span><br><span style="color: hsl(120, 100%, 40%);">+          lengthIndicator := {</span><br><span style="color: hsl(120, 100%, 40%);">+                  length1 := 1</span><br><span style="color: hsl(120, 100%, 40%);">+          },</span><br><span style="color: hsl(120, 100%, 40%);">+            unstructured_Value := tag</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-template (present) Tag tr_BSSGP_IE_Tag(template (present) OCT1 tag) := {</span><br><span style="color: hsl(0, 100%, 40%);">-   iEI := '1E'O,</span><br><span style="color: hsl(0, 100%, 40%);">-   ext := '1'B,</span><br><span style="color: hsl(0, 100%, 40%);">-    lengthIndicator := {</span><br><span style="color: hsl(0, 100%, 40%);">-            length1 := 1</span><br><span style="color: hsl(0, 100%, 40%);">-    },</span><br><span style="color: hsl(0, 100%, 40%);">-      unstructured_Value := tag</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(120, 100%, 40%);">+    template (present) Tag tr_BSSGP_IE_Tag(template (present) OCT1 tag) := {</span><br><span style="color: hsl(120, 100%, 40%);">+              iEI := '1E'O,</span><br><span style="color: hsl(120, 100%, 40%);">+         ext := '1'B,</span><br><span style="color: hsl(120, 100%, 40%);">+          lengthIndicator := {</span><br><span style="color: hsl(120, 100%, 40%);">+                  length1 := 1</span><br><span style="color: hsl(120, 100%, 40%);">+          },</span><br><span style="color: hsl(120, 100%, 40%);">+            unstructured_Value := tag</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-template (value) RA_Cap_UPD_CAUSE ts_BSSGP_IE_RACU_Cause(template (value) OCT1 cause) := {</span><br><span style="color: hsl(0, 100%, 40%);">- iEI := '1A'O,</span><br><span style="color: hsl(0, 100%, 40%);">-   ext := '1'B,</span><br><span style="color: hsl(0, 100%, 40%);">-    lengthIndicator := {</span><br><span style="color: hsl(0, 100%, 40%);">-            length1 := 1</span><br><span style="color: hsl(0, 100%, 40%);">-    },</span><br><span style="color: hsl(0, 100%, 40%);">-      rA_CAP_UPD_Cause_value := cause</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(120, 100%, 40%);">+      template (value) RA_Cap_UPD_CAUSE ts_BSSGP_IE_RACU_Cause(template (value) OCT1 cause) := {</span><br><span style="color: hsl(120, 100%, 40%);">+            iEI := '1A'O,</span><br><span style="color: hsl(120, 100%, 40%);">+         ext := '1'B,</span><br><span style="color: hsl(120, 100%, 40%);">+          lengthIndicator := {</span><br><span style="color: hsl(120, 100%, 40%);">+                  length1 := 1</span><br><span style="color: hsl(120, 100%, 40%);">+          },</span><br><span style="color: hsl(120, 100%, 40%);">+            rA_CAP_UPD_Cause_value := cause</span><br><span style="color: hsl(120, 100%, 40%);">+       }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-template (present) RA_Cap_UPD_CAUSE tr_BSSGP_IE_RACU_Cause(template (present) OCT1 cause) := {</span><br><span style="color: hsl(0, 100%, 40%);">-     iEI := '1A'O,</span><br><span style="color: hsl(0, 100%, 40%);">-   ext := '1'B,</span><br><span style="color: hsl(0, 100%, 40%);">-    lengthIndicator := {</span><br><span style="color: hsl(0, 100%, 40%);">-            length1 := 1</span><br><span style="color: hsl(0, 100%, 40%);">-    },</span><br><span style="color: hsl(0, 100%, 40%);">-      rA_CAP_UPD_Cause_value := cause</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(120, 100%, 40%);">+      template (present) RA_Cap_UPD_CAUSE tr_BSSGP_IE_RACU_Cause(template (present) OCT1 cause) := {</span><br><span style="color: hsl(120, 100%, 40%);">+                iEI := '1A'O,</span><br><span style="color: hsl(120, 100%, 40%);">+         ext := '1'B,</span><br><span style="color: hsl(120, 100%, 40%);">+          lengthIndicator := {</span><br><span style="color: hsl(120, 100%, 40%);">+                  length1 := 1</span><br><span style="color: hsl(120, 100%, 40%);">+          },</span><br><span style="color: hsl(120, 100%, 40%);">+            rA_CAP_UPD_Cause_value := cause</span><br><span style="color: hsl(120, 100%, 40%);">+       }</span><br><span> </span><br><span> </span><br><span>    template PDU_BSSGP ts_BVC_RESET(BssgpCause cause, BssgpBvci bvci,</span><br><span>@@ -1683,362 +1683,360 @@</span><br><span>                }</span><br><span>    }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/* 10.2.3 */</span><br><span style="color: hsl(0, 100%, 40%);">-template (value) PDU_BSSGP ts_BSSGP_RA_CAP(GprsTlli tlli,</span><br><span style="color: hsl(0, 100%, 40%);">-                                         template (omit) MSRadioAccessCapabilityV_BSSGP racap := omit) := {</span><br><span style="color: hsl(0, 100%, 40%);">-   pDU_BSSGP_RA_CAPABILITY := {</span><br><span style="color: hsl(0, 100%, 40%);">-            bssgpPduType := '02'O,</span><br><span style="color: hsl(0, 100%, 40%);">-          tLLI := ts_BSSGP_TLLI(tlli),</span><br><span style="color: hsl(0, 100%, 40%);">-            mS_Radio_Access_Capability := ts_BSSGP_IE_MSRAcap_omit(racap)</span><br><span style="color: hsl(120, 100%, 40%);">+ /* 10.2.3 */</span><br><span style="color: hsl(120, 100%, 40%);">+  template (value) PDU_BSSGP ts_BSSGP_RA_CAP(GprsTlli tlli,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                template (omit) MSRadioAccessCapabilityV_BSSGP racap := omit) := {</span><br><span style="color: hsl(120, 100%, 40%);">+         pDU_BSSGP_RA_CAPABILITY := {</span><br><span style="color: hsl(120, 100%, 40%);">+                  bssgpPduType := '02'O,</span><br><span style="color: hsl(120, 100%, 40%);">+                        tLLI := ts_BSSGP_TLLI(tlli),</span><br><span style="color: hsl(120, 100%, 40%);">+                  mS_Radio_Access_Capability := ts_BSSGP_IE_MSRAcap_omit(racap)</span><br><span style="color: hsl(120, 100%, 40%);">+         }</span><br><span>    }</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-template (present) PDU_BSSGP tr_BSSGP_RA_CAP(template (present) GprsTlli tlli,</span><br><span style="color: hsl(0, 100%, 40%);">-                                             template MSRadioAccessCapabilityV_BSSGP racap) := {</span><br><span style="color: hsl(0, 100%, 40%);">-        pDU_BSSGP_RA_CAPABILITY := {</span><br><span style="color: hsl(0, 100%, 40%);">-            bssgpPduType := '02'O,</span><br><span style="color: hsl(0, 100%, 40%);">-          tLLI := ts_BSSGP_TLLI(tlli),</span><br><span style="color: hsl(0, 100%, 40%);">-            mS_Radio_Access_Capability := tr_BSSGP_IE_MSRAcap(racap)</span><br><span style="color: hsl(120, 100%, 40%);">+      template (present) PDU_BSSGP tr_BSSGP_RA_CAP(template (present) GprsTlli tlli,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                     template MSRadioAccessCapabilityV_BSSGP racap) := {</span><br><span style="color: hsl(120, 100%, 40%);">+              pDU_BSSGP_RA_CAPABILITY := {</span><br><span style="color: hsl(120, 100%, 40%);">+                  bssgpPduType := '02'O,</span><br><span style="color: hsl(120, 100%, 40%);">+                        tLLI := ts_BSSGP_TLLI(tlli),</span><br><span style="color: hsl(120, 100%, 40%);">+                  mS_Radio_Access_Capability := tr_BSSGP_IE_MSRAcap(racap)</span><br><span style="color: hsl(120, 100%, 40%);">+              }</span><br><span>    }</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span> </span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/* 10.3.3 */</span><br><span style="color: hsl(0, 100%, 40%);">-template (value) PDU_BSSGP ts_BSSGP_RA_CAP_UPD(GprsTlli tlli, OCT1 tag) := {</span><br><span style="color: hsl(0, 100%, 40%);">-      pDU_BSSGP_RA_CAPABILITY_UPDATE := {</span><br><span style="color: hsl(0, 100%, 40%);">-             bssgpPduType := '08'O,</span><br><span style="color: hsl(0, 100%, 40%);">-          tLLI := ts_BSSGP_TLLI(tlli),</span><br><span style="color: hsl(0, 100%, 40%);">-            tag := ts_BSSGP_IE_Tag(tag)</span><br><span style="color: hsl(120, 100%, 40%);">+   /* 10.3.3 */</span><br><span style="color: hsl(120, 100%, 40%);">+  template (value) PDU_BSSGP ts_BSSGP_RA_CAP_UPD(GprsTlli tlli, OCT1 tag) := {</span><br><span style="color: hsl(120, 100%, 40%);">+          pDU_BSSGP_RA_CAPABILITY_UPDATE := {</span><br><span style="color: hsl(120, 100%, 40%);">+                   bssgpPduType := '08'O,</span><br><span style="color: hsl(120, 100%, 40%);">+                        tLLI := ts_BSSGP_TLLI(tlli),</span><br><span style="color: hsl(120, 100%, 40%);">+                  tag := ts_BSSGP_IE_Tag(tag)</span><br><span style="color: hsl(120, 100%, 40%);">+           }</span><br><span>    }</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-template (present) PDU_BSSGP tr_BSSGP_RA_CAP_UPD(template (present) GprsTlli tlli,</span><br><span style="color: hsl(0, 100%, 40%);">-                                         template OCT1 tag) := {</span><br><span style="color: hsl(0, 100%, 40%);">-    pDU_BSSGP_RA_CAPABILITY_UPDATE := {</span><br><span style="color: hsl(0, 100%, 40%);">-             bssgpPduType := '08'O,</span><br><span style="color: hsl(0, 100%, 40%);">-          tLLI := ts_BSSGP_TLLI(tlli),</span><br><span style="color: hsl(0, 100%, 40%);">-            tag := tr_BSSGP_IE_Tag(tag)</span><br><span style="color: hsl(120, 100%, 40%);">+   template (present) PDU_BSSGP tr_BSSGP_RA_CAP_UPD(template (present) GprsTlli tlli,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                 template OCT1 tag) := {</span><br><span style="color: hsl(120, 100%, 40%);">+          pDU_BSSGP_RA_CAPABILITY_UPDATE := {</span><br><span style="color: hsl(120, 100%, 40%);">+                   bssgpPduType := '08'O,</span><br><span style="color: hsl(120, 100%, 40%);">+                        tLLI := ts_BSSGP_TLLI(tlli),</span><br><span style="color: hsl(120, 100%, 40%);">+                  tag := tr_BSSGP_IE_Tag(tag)</span><br><span style="color: hsl(120, 100%, 40%);">+           }</span><br><span>    }</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span> </span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/* 10.3.4 */</span><br><span style="color: hsl(0, 100%, 40%);">-template (value) PDU_BSSGP</span><br><span style="color: hsl(0, 100%, 40%);">-ts_BSSGP_RA_CAP_UPD_ACK(GprsTlli tlli, OCT1 tag, template (value) OCT1 cause,</span><br><span style="color: hsl(0, 100%, 40%);">-                   template (omit) MSRadioAccessCapabilityV_BSSGP racap := omit) := {</span><br><span style="color: hsl(0, 100%, 40%);">-      pDU_BSSGP_RA_CAPABILITY_UPDATE_ACK := {</span><br><span style="color: hsl(0, 100%, 40%);">-         bssgpPduType := '09'O,</span><br><span style="color: hsl(0, 100%, 40%);">-          tLLI := ts_BSSGP_TLLI(tlli),</span><br><span style="color: hsl(0, 100%, 40%);">-            tag := ts_BSSGP_IE_Tag(tag),</span><br><span style="color: hsl(0, 100%, 40%);">-            iMSI := omit,</span><br><span style="color: hsl(0, 100%, 40%);">-           rA_Cap_UPDATE_CAUSE := ts_BSSGP_IE_RACU_Cause(cause),</span><br><span style="color: hsl(0, 100%, 40%);">-           mS_Radio_Access_Capability := ts_BSSGP_IE_MSRAcap_omit(racap)</span><br><span style="color: hsl(120, 100%, 40%);">+ /* 10.3.4 */</span><br><span style="color: hsl(120, 100%, 40%);">+  template (value) PDU_BSSGP</span><br><span style="color: hsl(120, 100%, 40%);">+    ts_BSSGP_RA_CAP_UPD_ACK(GprsTlli tlli, OCT1 tag, template (value) OCT1 cause,</span><br><span style="color: hsl(120, 100%, 40%);">+                         template (omit) MSRadioAccessCapabilityV_BSSGP racap := omit) := {</span><br><span style="color: hsl(120, 100%, 40%);">+            pDU_BSSGP_RA_CAPABILITY_UPDATE_ACK := {</span><br><span style="color: hsl(120, 100%, 40%);">+                       bssgpPduType := '09'O,</span><br><span style="color: hsl(120, 100%, 40%);">+                        tLLI := ts_BSSGP_TLLI(tlli),</span><br><span style="color: hsl(120, 100%, 40%);">+                  tag := ts_BSSGP_IE_Tag(tag),</span><br><span style="color: hsl(120, 100%, 40%);">+                  iMSI := omit,</span><br><span style="color: hsl(120, 100%, 40%);">+                 rA_Cap_UPDATE_CAUSE := ts_BSSGP_IE_RACU_Cause(cause),</span><br><span style="color: hsl(120, 100%, 40%);">+                 mS_Radio_Access_Capability := ts_BSSGP_IE_MSRAcap_omit(racap)</span><br><span style="color: hsl(120, 100%, 40%);">+         }</span><br><span>    }</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-template (present) PDU_BSSGP</span><br><span style="color: hsl(0, 100%, 40%);">-tr_BSSGP_RA_CAP_UPD_ACK(template (present) GprsTlli tlli, template OCT1 tag, template (present) OCT1 cause,</span><br><span style="color: hsl(0, 100%, 40%);">-                       template MSRadioAccessCapabilityV_BSSGP racap := omit) := {</span><br><span style="color: hsl(0, 100%, 40%);">-     pDU_BSSGP_RA_CAPABILITY_UPDATE_ACK := {</span><br><span style="color: hsl(0, 100%, 40%);">-         bssgpPduType := '09'O,</span><br><span style="color: hsl(0, 100%, 40%);">-          tLLI := ts_BSSGP_TLLI(tlli),</span><br><span style="color: hsl(0, 100%, 40%);">-            tag := tr_BSSGP_IE_Tag(tag),</span><br><span style="color: hsl(0, 100%, 40%);">-            iMSI := omit,</span><br><span style="color: hsl(0, 100%, 40%);">-           rA_Cap_UPDATE_CAUSE := tr_BSSGP_IE_RACU_Cause(cause),</span><br><span style="color: hsl(0, 100%, 40%);">-           mS_Radio_Access_Capability := tr_BSSGP_IE_MSRAcap(racap)</span><br><span style="color: hsl(120, 100%, 40%);">+      template (present) PDU_BSSGP</span><br><span style="color: hsl(120, 100%, 40%);">+  tr_BSSGP_RA_CAP_UPD_ACK(template (present) GprsTlli tlli, template OCT1 tag, template (present) OCT1 cause,</span><br><span style="color: hsl(120, 100%, 40%);">+                           template MSRadioAccessCapabilityV_BSSGP racap := omit) := {</span><br><span style="color: hsl(120, 100%, 40%);">+           pDU_BSSGP_RA_CAPABILITY_UPDATE_ACK := {</span><br><span style="color: hsl(120, 100%, 40%);">+                       bssgpPduType := '09'O,</span><br><span style="color: hsl(120, 100%, 40%);">+                        tLLI := ts_BSSGP_TLLI(tlli),</span><br><span style="color: hsl(120, 100%, 40%);">+                  tag := tr_BSSGP_IE_Tag(tag),</span><br><span style="color: hsl(120, 100%, 40%);">+                  iMSI := omit,</span><br><span style="color: hsl(120, 100%, 40%);">+                 rA_Cap_UPDATE_CAUSE := tr_BSSGP_IE_RACU_Cause(cause),</span><br><span style="color: hsl(120, 100%, 40%);">+                 mS_Radio_Access_Capability := tr_BSSGP_IE_MSRAcap(racap)</span><br><span style="color: hsl(120, 100%, 40%);">+              }</span><br><span>    }</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-type enumerated BssgpRadioCause {</span><br><span style="color: hsl(0, 100%, 40%);">- BSSGP_RADIO_CAUSE_CONTACT_LOST          ('00'H),</span><br><span style="color: hsl(0, 100%, 40%);">-        BSSGP_RADIO_CAUSE_LINK_QUAL_INSUFF      ('01'H),</span><br><span style="color: hsl(0, 100%, 40%);">-        BSSGP_RADIO_CAUSE_CELL_RESEL_ORDERED    ('02'H),</span><br><span style="color: hsl(0, 100%, 40%);">-        BSSGP_RADIO_CAUSE_CELL_RESEL_PREPARE    ('03'H),</span><br><span style="color: hsl(0, 100%, 40%);">-        BSSGP_RADIO_CAUSE_CELL_RESEL_FAILURE    ('04'H)</span><br><span style="color: hsl(0, 100%, 40%);">-} with { variant "FIELDLENGTH(8)" };</span><br><span style="color: hsl(120, 100%, 40%);">+ type enumerated BssgpRadioCause {</span><br><span style="color: hsl(120, 100%, 40%);">+             BSSGP_RADIO_CAUSE_CONTACT_LOST          ('00'H),</span><br><span style="color: hsl(120, 100%, 40%);">+              BSSGP_RADIO_CAUSE_LINK_QUAL_INSUFF      ('01'H),</span><br><span style="color: hsl(120, 100%, 40%);">+              BSSGP_RADIO_CAUSE_CELL_RESEL_ORDERED    ('02'H),</span><br><span style="color: hsl(120, 100%, 40%);">+              BSSGP_RADIO_CAUSE_CELL_RESEL_PREPARE    ('03'H),</span><br><span style="color: hsl(120, 100%, 40%);">+              BSSGP_RADIO_CAUSE_CELL_RESEL_FAILURE    ('04'H)</span><br><span style="color: hsl(120, 100%, 40%);">+       } with { variant "FIELDLENGTH(8)" };</span><br><span> </span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-function ts_BSSGP_RADIO_CAUSE(template (omit) BssgpRadioCause cause) return template (omit) Radio_Cause {</span><br><span style="color: hsl(0, 100%, 40%);">- var template (omit) Radio_Cause ret;</span><br><span style="color: hsl(0, 100%, 40%);">-    if (istemplatekind(cause, "omit")) {</span><br><span style="color: hsl(0, 100%, 40%);">-          ret := omit;</span><br><span style="color: hsl(0, 100%, 40%);">-    } else {</span><br><span style="color: hsl(120, 100%, 40%);">+      function ts_BSSGP_RADIO_CAUSE(template (omit) BssgpRadioCause cause) return template (omit) Radio_Cause {</span><br><span style="color: hsl(120, 100%, 40%);">+             var template (omit) Radio_Cause ret;</span><br><span style="color: hsl(120, 100%, 40%);">+          if (istemplatekind(cause, "omit")) {</span><br><span style="color: hsl(120, 100%, 40%);">+                        ret := omit;</span><br><span style="color: hsl(120, 100%, 40%);">+          } else {</span><br><span style="color: hsl(120, 100%, 40%);">+                      ret.iEI := '19'O;</span><br><span style="color: hsl(120, 100%, 40%);">+                     ret.ext := '1'B;</span><br><span style="color: hsl(120, 100%, 40%);">+                      ret.lengthIndicator := { length1 := 1 };</span><br><span style="color: hsl(120, 100%, 40%);">+                      ret.radio_Cause_Value := int2oct(enum2int(valueof(cause)), 1);</span><br><span style="color: hsl(120, 100%, 40%);">+                }</span><br><span style="color: hsl(120, 100%, 40%);">+             return ret;</span><br><span style="color: hsl(120, 100%, 40%);">+   }</span><br><span style="color: hsl(120, 100%, 40%);">+     function tr_BSSGP_RADIO_CAUSE(template BssgpRadioCause cause) return template (present) Radio_Cause {</span><br><span style="color: hsl(120, 100%, 40%);">+         var template Radio_Cause ret;</span><br><span>                ret.iEI := '19'O;</span><br><span>            ret.ext := '1'B;</span><br><span>             ret.lengthIndicator := { length1 := 1 };</span><br><span style="color: hsl(0, 100%, 40%);">-                ret.radio_Cause_Value := int2oct(enum2int(valueof(cause)), 1);</span><br><span style="color: hsl(120, 100%, 40%);">+                if (isvalue(cause)) {</span><br><span style="color: hsl(120, 100%, 40%);">+                 ret.radio_Cause_Value := int2oct(enum2int(valueof(cause)), 1);</span><br><span style="color: hsl(120, 100%, 40%);">+                } else {</span><br><span style="color: hsl(120, 100%, 40%);">+                      ret.radio_Cause_Value := ?</span><br><span style="color: hsl(120, 100%, 40%);">+            }</span><br><span style="color: hsl(120, 100%, 40%);">+             return ret;</span><br><span>  }</span><br><span style="color: hsl(0, 100%, 40%);">-       return ret;</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-function tr_BSSGP_RADIO_CAUSE(template BssgpRadioCause cause) return template (present) Radio_Cause {</span><br><span style="color: hsl(0, 100%, 40%);">-       var template Radio_Cause ret;</span><br><span style="color: hsl(0, 100%, 40%);">-   ret.iEI := '19'O;</span><br><span style="color: hsl(0, 100%, 40%);">-       ret.ext := '1'B;</span><br><span style="color: hsl(0, 100%, 40%);">-        ret.lengthIndicator := { length1 := 1 };</span><br><span style="color: hsl(0, 100%, 40%);">-        if (isvalue(cause)) {</span><br><span style="color: hsl(0, 100%, 40%);">-           ret.radio_Cause_Value := int2oct(enum2int(valueof(cause)), 1);</span><br><span style="color: hsl(0, 100%, 40%);">-  } else {</span><br><span style="color: hsl(0, 100%, 40%);">-                ret.radio_Cause_Value := ?</span><br><span style="color: hsl(0, 100%, 40%);">-      }</span><br><span style="color: hsl(0, 100%, 40%);">-       return ret;</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/* 10.3.5 */</span><br><span style="color: hsl(0, 100%, 40%);">-template (value) PDU_BSSGP</span><br><span style="color: hsl(0, 100%, 40%);">-ts_BSSGP_RADIO_STATUS(GprsTlli tlli, template (value) BssgpRadioCause cause) := {</span><br><span style="color: hsl(0, 100%, 40%);">- pDU_BSSGP_RADIO_STATUS := {</span><br><span style="color: hsl(0, 100%, 40%);">-             bssgpPduType := '0a'O,</span><br><span style="color: hsl(0, 100%, 40%);">-          tLLI := ts_BSSGP_TLLI(tlli),</span><br><span style="color: hsl(0, 100%, 40%);">-            tMSI := omit,</span><br><span style="color: hsl(0, 100%, 40%);">-           iMSI := omit,</span><br><span style="color: hsl(0, 100%, 40%);">-           radio_Cause := ts_BSSGP_RADIO_CAUSE(cause)</span><br><span style="color: hsl(0, 100%, 40%);">-      }</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-template (present) PDU_BSSGP</span><br><span style="color: hsl(0, 100%, 40%);">-tr_BSSGP_RADIO_STATUS(template (present) GprsTlli tlli, template (present) BssgpRadioCause cause) := {</span><br><span style="color: hsl(0, 100%, 40%);">-    pDU_BSSGP_RADIO_STATUS := {</span><br><span style="color: hsl(0, 100%, 40%);">-             bssgpPduType := '0a'O,</span><br><span style="color: hsl(0, 100%, 40%);">-          tLLI := ts_BSSGP_TLLI(tlli),</span><br><span style="color: hsl(0, 100%, 40%);">-            tMSI := omit,</span><br><span style="color: hsl(0, 100%, 40%);">-           iMSI := omit,</span><br><span style="color: hsl(0, 100%, 40%);">-           radio_Cause := tr_BSSGP_RADIO_CAUSE(cause)</span><br><span style="color: hsl(0, 100%, 40%);">-      }</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/* PDU permitted on PTP BVC only (TS 48.018 Section 5.4.1) */</span><br><span style="color: hsl(0, 100%, 40%);">-template (present) PDU_BSSGP tr_BSSGP_PERMITTED_PTP_ONLY := (</span><br><span style="color: hsl(0, 100%, 40%);">-    {pDU_BSSGP_DL_UNITDATA := ?},</span><br><span style="color: hsl(0, 100%, 40%);">-   {pDU_BSSGP_UL_UNITDATA := ?},</span><br><span style="color: hsl(0, 100%, 40%);">-   {pDU_BSSGP_RA_CAPABILITY := ?},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_RA_CAPABILITY_UPDATE := ?},</span><br><span style="color: hsl(0, 100%, 40%);">-  {pDU_BSSGP_RA_CAPABILITY_UPDATE_ACK := ?},</span><br><span style="color: hsl(0, 100%, 40%);">-      {pDU_BSSGP_RADIO_STATUS := ?},</span><br><span style="color: hsl(0, 100%, 40%);">-  {pDU_BSSGP_FLOW_CONTROL_BVC := ?},</span><br><span style="color: hsl(0, 100%, 40%);">-      {pDU_BSSGP_FLOW_CONTROL_BVC_ACK := ?},</span><br><span style="color: hsl(0, 100%, 40%);">-  {pDU_BSSGP_FLOW_CONTROL_MS := ?},</span><br><span style="color: hsl(0, 100%, 40%);">-       {pDU_BSSGP_FLOW_CONTROL_MS_ACK := ?},</span><br><span style="color: hsl(0, 100%, 40%);">-   {pDU_BSSGP_FLOW_CONTROL_PFC := ?},</span><br><span style="color: hsl(0, 100%, 40%);">-      {pDU_BSSGP_FLOW_CONTROL_PFC_ACK := ?},</span><br><span style="color: hsl(0, 100%, 40%);">-  {pDU_BSSGP_DOWNLOAD_BSS_PFC := ?},</span><br><span style="color: hsl(0, 100%, 40%);">-      {pDU_BSSGP_CREATE_BSS_PFC := ?},</span><br><span style="color: hsl(0, 100%, 40%);">-        {pDU_BSSGP_CREATE_BSS_PFC_ACK := ?},</span><br><span style="color: hsl(0, 100%, 40%);">-    {pDU_BSSGP_CREATE_BSS_PFC_NACK := ?},</span><br><span style="color: hsl(0, 100%, 40%);">-   {pDU_BSSGP_MODIFY_BSS_PFC := ?},</span><br><span style="color: hsl(0, 100%, 40%);">-        {pDU_BSSGP_MODIFY_BSS_PFC_ACK := ?},</span><br><span style="color: hsl(0, 100%, 40%);">-    {pDU_BSSGP_DELETE_BSS_PFC := ?},</span><br><span style="color: hsl(0, 100%, 40%);">-        {pDU_BSSGP_DELETE_BSS_PFC_ACK := ?},</span><br><span style="color: hsl(0, 100%, 40%);">-    {pDU_BSSGP_DELETE_BSS_PFC_REQ := ?},</span><br><span style="color: hsl(0, 100%, 40%);">-    {pDU_BSSGP_PS_HANDOVER_REQUIRED := ?},</span><br><span style="color: hsl(0, 100%, 40%);">-  {pDU_BSSGP_PS_HANDOVER_REQUIRED_ACK := ?},</span><br><span style="color: hsl(0, 100%, 40%);">-      {pDU_BSSGP_PS_HANDOVER_REQUIRED_NACK := ?},</span><br><span style="color: hsl(0, 100%, 40%);">-     {pDU_BSSGP_PS_HANDOVER_REQUEST := ?},</span><br><span style="color: hsl(0, 100%, 40%);">-   {pDU_BSSGP_PS_HANDOVER_REQUEST_ACK := ?},</span><br><span style="color: hsl(0, 100%, 40%);">-       {pDU_BSSGP_PS_HANDOVER_REQUEST_NACK := ?},</span><br><span style="color: hsl(0, 100%, 40%);">-      {pDU_BSSGP_PS_HANDOVER_COMPLETE := ?},</span><br><span style="color: hsl(0, 100%, 40%);">-  {pDU_BSSGP_PS_HANDOVER_COMPLETE_ACK := ?},</span><br><span style="color: hsl(0, 100%, 40%);">-      {pDU_BSSGP_PS_HANDOVER_CANCEL := ?}</span><br><span style="color: hsl(0, 100%, 40%);">-);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-template (present) PDU_BSSGP tr_BSSGP_PERMITTED_PTP := (</span><br><span style="color: hsl(0, 100%, 40%);">-   tr_BSSGP_PERMITTED_PTP_ONLY,</span><br><span style="color: hsl(0, 100%, 40%);">-    {pDU_BSSGP_PAGING_PS := ?},</span><br><span style="color: hsl(0, 100%, 40%);">-     {pDU_BSSGP_PAGING_CS := ?},</span><br><span style="color: hsl(0, 100%, 40%);">-     {pDU_BSSGP_STATUS := ?}</span><br><span style="color: hsl(0, 100%, 40%);">-);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/* PDU permitted on Signaling BVC only (TS 48.018 Section 5.4.1) */</span><br><span style="color: hsl(0, 100%, 40%);">-template (present) PDU_BSSGP tr_BSSGP_PERMITTED_SIGN_ONLY := (</span><br><span style="color: hsl(0, 100%, 40%);">-      {pDU_BSSGP_SUSPEND := ?},</span><br><span style="color: hsl(0, 100%, 40%);">-       {pDU_BSSGP_SUSPEND_ACK := ?},</span><br><span style="color: hsl(0, 100%, 40%);">-   {pDU_BSSGP_SUSPEND_NACK := ?},</span><br><span style="color: hsl(0, 100%, 40%);">-  {pDU_BSSGP_RESUME := ?},</span><br><span style="color: hsl(0, 100%, 40%);">-        {pDU_BSSGP_RESUME_ACK := ?},</span><br><span style="color: hsl(0, 100%, 40%);">-    {pDU_BSSGP_RESUME_NACK := ?},</span><br><span style="color: hsl(0, 100%, 40%);">-   {pDU_BSSGP_FLUSH_LL := ?},</span><br><span style="color: hsl(0, 100%, 40%);">-      {pDU_BSSGP_FLUSH_LL_ACK := ?},</span><br><span style="color: hsl(0, 100%, 40%);">-  {pDU_BSSGP_LLC_DISCARDED := ?},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_BVC_BLOCK := ?},</span><br><span style="color: hsl(0, 100%, 40%);">-     {pDU_BSSGP_BVC_BLOCK_ACK := ?},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_BVC_UNBLOCK := ?},</span><br><span style="color: hsl(0, 100%, 40%);">-   {pDU_BSSGP_BVC_UNBLOCK_ACK := ?},</span><br><span style="color: hsl(0, 100%, 40%);">-       {pDU_BSSGP_BVC_RESET := ?},</span><br><span style="color: hsl(0, 100%, 40%);">-     {pDU_BSSGP_BVC_RESET_ACK := ?},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_SGSN_INVOKE_TRACE := ?},</span><br><span style="color: hsl(0, 100%, 40%);">-     {pDU_BSSGP_PERFORM_LOCATION_REQUEST := ?},</span><br><span style="color: hsl(0, 100%, 40%);">-      {pDU_BSSGP_PERFORM_LOCATION_RESPONSE := ?},</span><br><span style="color: hsl(0, 100%, 40%);">-     {pDU_BSSGP_PERFORM_LOCATION_ABORT := ?},</span><br><span style="color: hsl(0, 100%, 40%);">-        {pDU_BSSGP_POSITION_COMMAND := ?},</span><br><span style="color: hsl(0, 100%, 40%);">-      {pDU_BSSGP_POSITION_RESPONSE := ?},</span><br><span style="color: hsl(0, 100%, 40%);">-     {pDU_BSSGP_RAN_INFORMATION := ?},</span><br><span style="color: hsl(0, 100%, 40%);">-       {pDU_BSSGP_RAN_INFORMATION_REQUEST := ?},</span><br><span style="color: hsl(0, 100%, 40%);">-       {pDU_BSSGP_RAN_INFORMATION_ACK := ?},</span><br><span style="color: hsl(0, 100%, 40%);">-   {pDU_BSSGP_RAN_INFORMATION_ERROR := ?},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_RAN_INFORMATION_APPLICATION_ERROR := ?},</span><br><span style="color: hsl(0, 100%, 40%);">-     {pDU_BSSGP_MBMS_SESSION_START_REQUEST := ?},</span><br><span style="color: hsl(0, 100%, 40%);">-    {pDU_BSSGP_MBMS_SESSION_START_RESPONSE := ?},</span><br><span style="color: hsl(0, 100%, 40%);">-   {pDU_BSSGP_MBMS_SESSION_STOP_REQUEST := ?},</span><br><span style="color: hsl(0, 100%, 40%);">-     {pDU_BSSGP_MBMS_STOP_RESPONSE := ?},</span><br><span style="color: hsl(0, 100%, 40%);">-    {pDU_BSSGP_SESSION_UPDATE_REQUEST := ?},</span><br><span style="color: hsl(0, 100%, 40%);">-        {pDU_BSSGP_SESSION_UPDATE_RESPONSE := ?}</span><br><span style="color: hsl(0, 100%, 40%);">-);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-template (present) PDU_BSSGP tr_BSSGP_PERMITTED_SIGN := (</span><br><span style="color: hsl(0, 100%, 40%);">-     tr_BSSGP_PERMITTED_SIGN_ONLY,</span><br><span style="color: hsl(0, 100%, 40%);">-   {pDU_BSSGP_PAGING_PS := ?},</span><br><span style="color: hsl(0, 100%, 40%);">-     {pDU_BSSGP_PAGING_CS := ?},</span><br><span style="color: hsl(0, 100%, 40%);">-     {pDU_BSSGP_SUSPEND := ?},</span><br><span style="color: hsl(0, 100%, 40%);">-       {pDU_BSSGP_STATUS := ?}</span><br><span style="color: hsl(0, 100%, 40%);">-);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/* PDU permitted on PTM BVC only (TS 48.018 Section 5.4.1) */</span><br><span style="color: hsl(0, 100%, 40%);">-template (present) PDU_BSSGP tr_BSSGP_PERMITTED_PTM_ONLY := (</span><br><span style="color: hsl(0, 100%, 40%);">-     {pDU_BSSGP_DL_MBMS_UNITDATA := ?},</span><br><span style="color: hsl(0, 100%, 40%);">-      {pDU_BSSGP_UL_MBMS_UNITDATA := ?}</span><br><span style="color: hsl(0, 100%, 40%);">-);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-template (present) PDU_BSSGP tr_BSSGP_PERMITTED_PTM := (</span><br><span style="color: hsl(0, 100%, 40%);">-     tr_BSSGP_PERMITTED_PTM_ONLY,</span><br><span style="color: hsl(0, 100%, 40%);">-    {pDU_BSSGP_STATUS := ?}</span><br><span style="color: hsl(0, 100%, 40%);">-);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/* Template for any PTP BVCI IE */</span><br><span style="color: hsl(0, 100%, 40%);">-template (present) BVCI tr_BSSGP_IE_PtpBvci := {</span><br><span style="color: hsl(0, 100%, 40%);">-     iEI := '04'O,</span><br><span style="color: hsl(0, 100%, 40%);">-   ext := '1'B,</span><br><span style="color: hsl(0, 100%, 40%);">-    lengthIndicator := {</span><br><span style="color: hsl(0, 100%, 40%);">-            length1 := 2</span><br><span style="color: hsl(0, 100%, 40%);">-    },</span><br><span style="color: hsl(0, 100%, 40%);">-      unstructured_value := complement ('0000'O, '0001'O)</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/* message on signaling PTP but containing a ptp BVC */</span><br><span style="color: hsl(0, 100%, 40%);">-/*</span><br><span style="color: hsl(0, 100%, 40%);">-template PDU_BSSGP tr_BSSGP_SIG_FOR_PTP(template Bvci bvci) := (</span><br><span style="color: hsl(0, 100%, 40%);">-   {pDU_BSSGP_FLUSH_LL:{?,?,tr_BSSGP_IE_PtpBvci, *, *}},</span><br><span style="color: hsl(0, 100%, 40%);">-   {pDU_BSSGP_FLUSH_LL_ACK:{?,?,?,tr_BSSGP_IE_PtpBvci, ?, *}},</span><br><span style="color: hsl(0, 100%, 40%);">-     {pDU_BSSGP_LLC_DISCARDED:{?,?,?,tr_BSSGP_IE_PtpBvci, ?, *}},</span><br><span style="color: hsl(0, 100%, 40%);">-    {pDU_BSSGP_BVC_BLOCK:{?,tr_BSSGP_IE_PtpBvci, ?}},</span><br><span style="color: hsl(0, 100%, 40%);">-       {pDU_BSSGP_BVC_BLOCK_ACK:{?,tr_BSSGP_IE_PtpBvci}},</span><br><span style="color: hsl(0, 100%, 40%);">-      {pDU_BSSGP_BVC_UNBLOCK:{?,tr_BSSGP_IE_PtpBvci}},</span><br><span style="color: hsl(0, 100%, 40%);">-        {pDU_BSSGP_BVC_UNBLOCK_ACK:{?,tr_BSSGP_IE_PtpBvci}},</span><br><span style="color: hsl(0, 100%, 40%);">-    {pDU_BSSGP_BVC_RESET:{?,tr_BSSGP_IE_PtpBvci,?,*,*,*}},</span><br><span style="color: hsl(0, 100%, 40%);">-  {pDU_BSSGP_BVC_RESET_ACK:{?,tr_BSSGP_IE_PtpBvci,*,*,*}},</span><br><span style="color: hsl(0, 100%, 40%);">-        {pDU_BSSGP_STATUS:{?,?,tr_BSSGP_IE_PtpBvci,*}},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_PERFORM_LOCATION_REQUEST:{?,?,?,*,tr_BSSGP_IE_PtpBvci,?,?,?,*,*,*,*,*,*,*,*,*}},</span><br><span style="color: hsl(0, 100%, 40%);">-     {pDU_BSSGP_PERFORM_LOCATION_RESPONSE:{?,?,tr_BSSGP_IE_PtpBvci,*,*,*,*,*,*}},</span><br><span style="color: hsl(0, 100%, 40%);">-    {pDU_BSSGP_PERFORM_LOCATION_ABORT:{?,?,tr_BSSGP_IE_PtpBvci,?}},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_POSITION_COMMAND:{</span><br><span style="color: hsl(0, 100%, 40%);">-);</span><br><span style="color: hsl(0, 100%, 40%);">-*/</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/* extract the BVCI IE of given PDU + return it */</span><br><span style="color: hsl(0, 100%, 40%);">-function f_BSSGP_BVCI_IE_get(PDU_BSSGP pdu) return template (omit) BVCI {</span><br><span style="color: hsl(0, 100%, 40%);">-    select (pdu) {</span><br><span style="color: hsl(0, 100%, 40%);">-  case (PDU_BSSGP:{pDU_BSSGP_FLUSH_LL:=?}) {</span><br><span style="color: hsl(0, 100%, 40%);">-              return pdu.pDU_BSSGP_FLUSH_LL.bVCI_old;</span><br><span style="color: hsl(0, 100%, 40%);">-         }</span><br><span style="color: hsl(0, 100%, 40%);">-       case (PDU_BSSGP:{pDU_BSSGP_FLUSH_LL_ACK:=?}) {</span><br><span style="color: hsl(0, 100%, 40%);">-          return pdu.pDU_BSSGP_FLUSH_LL_ACK.bVCI_new;</span><br><span style="color: hsl(0, 100%, 40%);">-             }</span><br><span style="color: hsl(0, 100%, 40%);">-       case (PDU_BSSGP:{pDU_BSSGP_LLC_DISCARDED:=?}) {</span><br><span style="color: hsl(0, 100%, 40%);">-         return pdu.pDU_BSSGP_LLC_DISCARDED.bVCI;</span><br><span style="color: hsl(0, 100%, 40%);">-                }</span><br><span style="color: hsl(0, 100%, 40%);">-       case (PDU_BSSGP:{pDU_BSSGP_BVC_BLOCK:=?}) {</span><br><span style="color: hsl(0, 100%, 40%);">-             return pdu.pDU_BSSGP_BVC_BLOCK.bVCI;</span><br><span style="color: hsl(0, 100%, 40%);">-            }</span><br><span style="color: hsl(0, 100%, 40%);">-       case (PDU_BSSGP:{pDU_BSSGP_BVC_BLOCK_ACK:=?}) {</span><br><span style="color: hsl(0, 100%, 40%);">-         return pdu.pDU_BSSGP_BVC_BLOCK_ACK.bVCI;</span><br><span style="color: hsl(0, 100%, 40%);">-                }</span><br><span style="color: hsl(0, 100%, 40%);">-       case (PDU_BSSGP:{pDU_BSSGP_BVC_UNBLOCK:=?}) {</span><br><span style="color: hsl(0, 100%, 40%);">-           return pdu.pDU_BSSGP_BVC_UNBLOCK.bVCI;</span><br><span style="color: hsl(0, 100%, 40%);">-          }</span><br><span style="color: hsl(0, 100%, 40%);">-       case (PDU_BSSGP:{pDU_BSSGP_BVC_UNBLOCK_ACK:=?}) {</span><br><span style="color: hsl(0, 100%, 40%);">-               return pdu.pDU_BSSGP_BVC_UNBLOCK_ACK.bVCI;</span><br><span style="color: hsl(0, 100%, 40%);">-              }</span><br><span style="color: hsl(0, 100%, 40%);">-       case (PDU_BSSGP:{pDU_BSSGP_BVC_RESET:=?}) {</span><br><span style="color: hsl(0, 100%, 40%);">-             return pdu.pDU_BSSGP_BVC_RESET.bVCI;</span><br><span style="color: hsl(0, 100%, 40%);">-            }</span><br><span style="color: hsl(0, 100%, 40%);">-       case (PDU_BSSGP:{pDU_BSSGP_BVC_RESET_ACK:=?}) {</span><br><span style="color: hsl(0, 100%, 40%);">-         return pdu.pDU_BSSGP_BVC_RESET_ACK.bVCI;</span><br><span style="color: hsl(0, 100%, 40%);">-                }</span><br><span style="color: hsl(0, 100%, 40%);">-       case (PDU_BSSGP:{pDU_BSSGP_STATUS:=?}) {</span><br><span style="color: hsl(0, 100%, 40%);">-                return pdu.pDU_BSSGP_STATUS.bVCI;</span><br><span style="color: hsl(0, 100%, 40%);">-               }</span><br><span style="color: hsl(0, 100%, 40%);">-       case (PDU_BSSGP:{pDU_BSSGP_PERFORM_LOCATION_REQUEST:=?}) {</span><br><span style="color: hsl(0, 100%, 40%);">-              return pdu.pDU_BSSGP_PERFORM_LOCATION_REQUEST.bVCI;</span><br><span style="color: hsl(0, 100%, 40%);">-             }</span><br><span style="color: hsl(0, 100%, 40%);">-       case (PDU_BSSGP:{pDU_BSSGP_PERFORM_LOCATION_RESPONSE:=?}) {</span><br><span style="color: hsl(0, 100%, 40%);">-             return pdu.pDU_BSSGP_PERFORM_LOCATION_RESPONSE.bVCI;</span><br><span style="color: hsl(0, 100%, 40%);">-            }</span><br><span style="color: hsl(0, 100%, 40%);">-       case (PDU_BSSGP:{pDU_BSSGP_PERFORM_LOCATION_ABORT:=?}) {</span><br><span style="color: hsl(0, 100%, 40%);">-                return pdu.pDU_BSSGP_PERFORM_LOCATION_ABORT.bVCI;</span><br><span style="color: hsl(0, 100%, 40%);">-               }</span><br><span style="color: hsl(0, 100%, 40%);">-       case (PDU_BSSGP:{pDU_BSSGP_POSITION_COMMAND:=?}) {</span><br><span style="color: hsl(0, 100%, 40%);">-              return pdu.pDU_BSSGP_POSITION_COMMAND.bVCI;</span><br><span style="color: hsl(0, 100%, 40%);">-             }</span><br><span style="color: hsl(0, 100%, 40%);">-       case (PDU_BSSGP:{pDU_BSSGP_POSITION_RESPONSE:=?}) {</span><br><span style="color: hsl(0, 100%, 40%);">-             return pdu.pDU_BSSGP_POSITION_RESPONSE.bVCI;</span><br><span style="color: hsl(0, 100%, 40%);">-            }</span><br><span style="color: hsl(0, 100%, 40%);">-       case (PDU_BSSGP:{pDU_BSSGP_PAGING_PS:={?,?,*,{bVCI:=?},*,*,?,*,*}}) {</span><br><span style="color: hsl(0, 100%, 40%);">-           return pdu.pDU_BSSGP_PAGING_PS.paging_Field4.bVCI;</span><br><span style="color: hsl(0, 100%, 40%);">-              }</span><br><span style="color: hsl(0, 100%, 40%);">-       case (PDU_BSSGP:{pDU_BSSGP_PAGING_CS:={?,?,?,{bVCI:=?},*,*,*,*,*}}) {</span><br><span style="color: hsl(0, 100%, 40%);">-           return pdu.pDU_BSSGP_PAGING_CS.paging_Field4.bVCI;</span><br><span style="color: hsl(0, 100%, 40%);">-              }</span><br><span style="color: hsl(0, 100%, 40%);">-       case else {</span><br><span style="color: hsl(0, 100%, 40%);">-             return omit;</span><br><span style="color: hsl(120, 100%, 40%);">+  /* 10.3.5 */</span><br><span style="color: hsl(120, 100%, 40%);">+  template (value) PDU_BSSGP</span><br><span style="color: hsl(120, 100%, 40%);">+    ts_BSSGP_RADIO_STATUS(GprsTlli tlli, template (value) BssgpRadioCause cause) := {</span><br><span style="color: hsl(120, 100%, 40%);">+             pDU_BSSGP_RADIO_STATUS := {</span><br><span style="color: hsl(120, 100%, 40%);">+                   bssgpPduType := '0a'O,</span><br><span style="color: hsl(120, 100%, 40%);">+                        tLLI := ts_BSSGP_TLLI(tlli),</span><br><span style="color: hsl(120, 100%, 40%);">+                  tMSI := omit,</span><br><span style="color: hsl(120, 100%, 40%);">+                 iMSI := omit,</span><br><span style="color: hsl(120, 100%, 40%);">+                 radio_Cause := ts_BSSGP_RADIO_CAUSE(cause)</span><br><span>           }</span><br><span>    }</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/* extract the BVCI IE of given PDU + convert it to integer value */</span><br><span style="color: hsl(0, 100%, 40%);">-function f_BSSGP_BVCI_get(PDU_BSSGP pdu) return template (omit) BssgpBvci {</span><br><span style="color: hsl(0, 100%, 40%);">-       var template (omit) BVCI bvci_raw := f_BSSGP_BVCI_IE_get(pdu);</span><br><span style="color: hsl(0, 100%, 40%);">-  if (istemplatekind(bvci_raw, "omit")) {</span><br><span style="color: hsl(0, 100%, 40%);">-               return omit;</span><br><span style="color: hsl(120, 100%, 40%);">+  template (present) PDU_BSSGP</span><br><span style="color: hsl(120, 100%, 40%);">+  tr_BSSGP_RADIO_STATUS(template (present) GprsTlli tlli, template (present) BssgpRadioCause cause) := {</span><br><span style="color: hsl(120, 100%, 40%);">+                pDU_BSSGP_RADIO_STATUS := {</span><br><span style="color: hsl(120, 100%, 40%);">+                   bssgpPduType := '0a'O,</span><br><span style="color: hsl(120, 100%, 40%);">+                        tLLI := ts_BSSGP_TLLI(tlli),</span><br><span style="color: hsl(120, 100%, 40%);">+                  tMSI := omit,</span><br><span style="color: hsl(120, 100%, 40%);">+                 iMSI := omit,</span><br><span style="color: hsl(120, 100%, 40%);">+                 radio_Cause := tr_BSSGP_RADIO_CAUSE(cause)</span><br><span style="color: hsl(120, 100%, 40%);">+            }</span><br><span>    }</span><br><span style="color: hsl(0, 100%, 40%);">-       return oct2int(valueof(bvci_raw.unstructured_value));</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/* 3GPP TS 23.003 2.6 */</span><br><span style="color: hsl(0, 100%, 40%);">-type enumerated TlliType {</span><br><span style="color: hsl(0, 100%, 40%);">-    TLLI_LOCAL,</span><br><span style="color: hsl(0, 100%, 40%);">-     TLLI_FOREIGN,</span><br><span style="color: hsl(0, 100%, 40%);">-   TLLI_RANDOM,</span><br><span style="color: hsl(0, 100%, 40%);">-    TLLI_AUXILIARY,</span><br><span style="color: hsl(0, 100%, 40%);">- TLLI_RESERVED,</span><br><span style="color: hsl(0, 100%, 40%);">-  TLLI_G_RNTI,</span><br><span style="color: hsl(0, 100%, 40%);">-    TLLI_RAND_G_RNTI</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/* 3GPP TS 23.003 2.6 */</span><br><span style="color: hsl(0, 100%, 40%);">-function f_gprs_tlli_type(OCT4 tlli) return TlliType {</span><br><span style="color: hsl(0, 100%, 40%);">-     var bitstring tllib := oct2bit(tlli);</span><br><span style="color: hsl(0, 100%, 40%);">-   if (substr(tllib, 0, 2) == '11'B) {</span><br><span style="color: hsl(0, 100%, 40%);">-             return TLLI_LOCAL;</span><br><span style="color: hsl(0, 100%, 40%);">-      } else if (substr(tllib, 0, 2) == '10'B) {</span><br><span style="color: hsl(0, 100%, 40%);">-              return TLLI_FOREIGN;</span><br><span style="color: hsl(0, 100%, 40%);">-    } else if (substr(tllib, 0, 5) == '01111'B) {</span><br><span style="color: hsl(0, 100%, 40%);">-           return TLLI_RANDOM;</span><br><span style="color: hsl(0, 100%, 40%);">-     } else if (substr(tllib, 0, 4) == '0110'B) {</span><br><span style="color: hsl(0, 100%, 40%);">-            return TLLI_RESERVED;</span><br><span style="color: hsl(0, 100%, 40%);">-   } else if (substr(tllib, 0, 3) == '010'B) {</span><br><span style="color: hsl(0, 100%, 40%);">-             return TLLI_RESERVED;</span><br><span style="color: hsl(0, 100%, 40%);">-   } else if (substr(tllib, 0, 4) == '0000'B) {</span><br><span style="color: hsl(0, 100%, 40%);">-            return TLLI_G_RNTI;</span><br><span style="color: hsl(0, 100%, 40%);">-     } else if (substr(tllib, 0, 4) == '0001'B) {</span><br><span style="color: hsl(0, 100%, 40%);">-            return TLLI_RAND_G_RNTI;</span><br><span style="color: hsl(0, 100%, 40%);">-        } else {</span><br><span style="color: hsl(0, 100%, 40%);">-                setverdict(fail, "Unknonw TLLI Type ", tllib);</span><br><span style="color: hsl(0, 100%, 40%);">-                mtc.stop;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   /* PDU permitted on PTP BVC only (TS 48.018 Section 5.4.1) */</span><br><span style="color: hsl(120, 100%, 40%);">+ template (present) PDU_BSSGP tr_BSSGP_PERMITTED_PTP_ONLY := (</span><br><span style="color: hsl(120, 100%, 40%);">+         {pDU_BSSGP_DL_UNITDATA := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+         {pDU_BSSGP_UL_UNITDATA := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+         {pDU_BSSGP_RA_CAPABILITY := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+               {pDU_BSSGP_RA_CAPABILITY_UPDATE := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+                {pDU_BSSGP_RA_CAPABILITY_UPDATE_ACK := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+            {pDU_BSSGP_RADIO_STATUS := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+                {pDU_BSSGP_FLOW_CONTROL_BVC := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+            {pDU_BSSGP_FLOW_CONTROL_BVC_ACK := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+                {pDU_BSSGP_FLOW_CONTROL_MS := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+             {pDU_BSSGP_FLOW_CONTROL_MS_ACK := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+         {pDU_BSSGP_FLOW_CONTROL_PFC := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+            {pDU_BSSGP_FLOW_CONTROL_PFC_ACK := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+                {pDU_BSSGP_DOWNLOAD_BSS_PFC := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+            {pDU_BSSGP_CREATE_BSS_PFC := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+              {pDU_BSSGP_CREATE_BSS_PFC_ACK := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+          {pDU_BSSGP_CREATE_BSS_PFC_NACK := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+         {pDU_BSSGP_MODIFY_BSS_PFC := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+              {pDU_BSSGP_MODIFY_BSS_PFC_ACK := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+          {pDU_BSSGP_DELETE_BSS_PFC := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+              {pDU_BSSGP_DELETE_BSS_PFC_ACK := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+          {pDU_BSSGP_DELETE_BSS_PFC_REQ := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+          {pDU_BSSGP_PS_HANDOVER_REQUIRED := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+                {pDU_BSSGP_PS_HANDOVER_REQUIRED_ACK := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+            {pDU_BSSGP_PS_HANDOVER_REQUIRED_NACK := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+           {pDU_BSSGP_PS_HANDOVER_REQUEST := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+         {pDU_BSSGP_PS_HANDOVER_REQUEST_ACK := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+             {pDU_BSSGP_PS_HANDOVER_REQUEST_NACK := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+            {pDU_BSSGP_PS_HANDOVER_COMPLETE := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+                {pDU_BSSGP_PS_HANDOVER_COMPLETE_ACK := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+            {pDU_BSSGP_PS_HANDOVER_CANCEL := ?}</span><br><span style="color: hsl(120, 100%, 40%);">+   );</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  template (present) PDU_BSSGP tr_BSSGP_PERMITTED_PTP := (</span><br><span style="color: hsl(120, 100%, 40%);">+              tr_BSSGP_PERMITTED_PTP_ONLY,</span><br><span style="color: hsl(120, 100%, 40%);">+          {pDU_BSSGP_PAGING_PS := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+           {pDU_BSSGP_PAGING_CS := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+           {pDU_BSSGP_STATUS := ?}</span><br><span style="color: hsl(120, 100%, 40%);">+       );</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  /* PDU permitted on Signaling BVC only (TS 48.018 Section 5.4.1) */</span><br><span style="color: hsl(120, 100%, 40%);">+   template (present) PDU_BSSGP tr_BSSGP_PERMITTED_SIGN_ONLY := (</span><br><span style="color: hsl(120, 100%, 40%);">+                {pDU_BSSGP_SUSPEND := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+             {pDU_BSSGP_SUSPEND_ACK := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+         {pDU_BSSGP_SUSPEND_NACK := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+                {pDU_BSSGP_RESUME := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+              {pDU_BSSGP_RESUME_ACK := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+          {pDU_BSSGP_RESUME_NACK := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+         {pDU_BSSGP_FLUSH_LL := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+            {pDU_BSSGP_FLUSH_LL_ACK := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+                {pDU_BSSGP_LLC_DISCARDED := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+               {pDU_BSSGP_BVC_BLOCK := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+           {pDU_BSSGP_BVC_BLOCK_ACK := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+               {pDU_BSSGP_BVC_UNBLOCK := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+         {pDU_BSSGP_BVC_UNBLOCK_ACK := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+             {pDU_BSSGP_BVC_RESET := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+           {pDU_BSSGP_BVC_RESET_ACK := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+               {pDU_BSSGP_SGSN_INVOKE_TRACE := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+           {pDU_BSSGP_PERFORM_LOCATION_REQUEST := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+            {pDU_BSSGP_PERFORM_LOCATION_RESPONSE := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+           {pDU_BSSGP_PERFORM_LOCATION_ABORT := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+              {pDU_BSSGP_POSITION_COMMAND := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+            {pDU_BSSGP_POSITION_RESPONSE := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+           {pDU_BSSGP_RAN_INFORMATION := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+             {pDU_BSSGP_RAN_INFORMATION_REQUEST := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+             {pDU_BSSGP_RAN_INFORMATION_ACK := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+         {pDU_BSSGP_RAN_INFORMATION_ERROR := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+               {pDU_BSSGP_RAN_INFORMATION_APPLICATION_ERROR := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+           {pDU_BSSGP_MBMS_SESSION_START_REQUEST := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+          {pDU_BSSGP_MBMS_SESSION_START_RESPONSE := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+         {pDU_BSSGP_MBMS_SESSION_STOP_REQUEST := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+           {pDU_BSSGP_MBMS_STOP_RESPONSE := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+          {pDU_BSSGP_SESSION_UPDATE_REQUEST := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+              {pDU_BSSGP_SESSION_UPDATE_RESPONSE := ?}</span><br><span style="color: hsl(120, 100%, 40%);">+      );</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  template (present) PDU_BSSGP tr_BSSGP_PERMITTED_SIGN := (</span><br><span style="color: hsl(120, 100%, 40%);">+             tr_BSSGP_PERMITTED_SIGN_ONLY,</span><br><span style="color: hsl(120, 100%, 40%);">+         {pDU_BSSGP_PAGING_PS := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+           {pDU_BSSGP_PAGING_CS := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+           {pDU_BSSGP_SUSPEND := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+             {pDU_BSSGP_STATUS := ?}</span><br><span style="color: hsl(120, 100%, 40%);">+       );</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  /* PDU permitted on PTM BVC only (TS 48.018 Section 5.4.1) */</span><br><span style="color: hsl(120, 100%, 40%);">+ template (present) PDU_BSSGP tr_BSSGP_PERMITTED_PTM_ONLY := (</span><br><span style="color: hsl(120, 100%, 40%);">+         {pDU_BSSGP_DL_MBMS_UNITDATA := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+            {pDU_BSSGP_UL_MBMS_UNITDATA := ?}</span><br><span style="color: hsl(120, 100%, 40%);">+     );</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  template (present) PDU_BSSGP tr_BSSGP_PERMITTED_PTM := (</span><br><span style="color: hsl(120, 100%, 40%);">+              tr_BSSGP_PERMITTED_PTM_ONLY,</span><br><span style="color: hsl(120, 100%, 40%);">+          {pDU_BSSGP_STATUS := ?}</span><br><span style="color: hsl(120, 100%, 40%);">+       );</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        /* Template for any PTP BVCI IE */</span><br><span style="color: hsl(120, 100%, 40%);">+    template (present) BVCI tr_BSSGP_IE_PtpBvci := {</span><br><span style="color: hsl(120, 100%, 40%);">+              iEI := '04'O,</span><br><span style="color: hsl(120, 100%, 40%);">+         ext := '1'B,</span><br><span style="color: hsl(120, 100%, 40%);">+          lengthIndicator := {</span><br><span style="color: hsl(120, 100%, 40%);">+                  length1 := 2</span><br><span style="color: hsl(120, 100%, 40%);">+          },</span><br><span style="color: hsl(120, 100%, 40%);">+            unstructured_value := complement ('0000'O, '0001'O)</span><br><span>  }</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-function f_gprs_tlli_random() return OCT4 {</span><br><span style="color: hsl(0, 100%, 40%);">-       var OCT4 tlli := f_rnd_octstring(4);</span><br><span style="color: hsl(0, 100%, 40%);">-    return tlli or4b 'c0000000'O;</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(120, 100%, 40%);">+        /* message on signaling PTP but containing a ptp BVC */</span><br><span style="color: hsl(120, 100%, 40%);">+       /*</span><br><span style="color: hsl(120, 100%, 40%);">+    template PDU_BSSGP tr_BSSGP_SIG_FOR_PTP(template Bvci bvci) := (</span><br><span style="color: hsl(120, 100%, 40%);">+              {pDU_BSSGP_FLUSH_LL:{?,?,tr_BSSGP_IE_PtpBvci, *, *}},</span><br><span style="color: hsl(120, 100%, 40%);">+         {pDU_BSSGP_FLUSH_LL_ACK:{?,?,?,tr_BSSGP_IE_PtpBvci, ?, *}},</span><br><span style="color: hsl(120, 100%, 40%);">+           {pDU_BSSGP_LLC_DISCARDED:{?,?,?,tr_BSSGP_IE_PtpBvci, ?, *}},</span><br><span style="color: hsl(120, 100%, 40%);">+          {pDU_BSSGP_BVC_BLOCK:{?,tr_BSSGP_IE_PtpBvci, ?}},</span><br><span style="color: hsl(120, 100%, 40%);">+             {pDU_BSSGP_BVC_BLOCK_ACK:{?,tr_BSSGP_IE_PtpBvci}},</span><br><span style="color: hsl(120, 100%, 40%);">+            {pDU_BSSGP_BVC_UNBLOCK:{?,tr_BSSGP_IE_PtpBvci}},</span><br><span style="color: hsl(120, 100%, 40%);">+              {pDU_BSSGP_BVC_UNBLOCK_ACK:{?,tr_BSSGP_IE_PtpBvci}},</span><br><span style="color: hsl(120, 100%, 40%);">+          {pDU_BSSGP_BVC_RESET:{?,tr_BSSGP_IE_PtpBvci,?,*,*,*}},</span><br><span style="color: hsl(120, 100%, 40%);">+                {pDU_BSSGP_BVC_RESET_ACK:{?,tr_BSSGP_IE_PtpBvci,*,*,*}},</span><br><span style="color: hsl(120, 100%, 40%);">+              {pDU_BSSGP_STATUS:{?,?,tr_BSSGP_IE_PtpBvci,*}},</span><br><span style="color: hsl(120, 100%, 40%);">+               {pDU_BSSGP_PERFORM_LOCATION_REQUEST:{?,?,?,*,tr_BSSGP_IE_PtpBvci,?,?,?,*,*,*,*,*,*,*,*,*}},</span><br><span style="color: hsl(120, 100%, 40%);">+           {pDU_BSSGP_PERFORM_LOCATION_RESPONSE:{?,?,tr_BSSGP_IE_PtpBvci,*,*,*,*,*,*}},</span><br><span style="color: hsl(120, 100%, 40%);">+          {pDU_BSSGP_PERFORM_LOCATION_ABORT:{?,?,tr_BSSGP_IE_PtpBvci,?}},</span><br><span style="color: hsl(120, 100%, 40%);">+               {pDU_BSSGP_POSITION_COMMAND:{</span><br><span style="color: hsl(120, 100%, 40%);">+ );</span><br><span style="color: hsl(120, 100%, 40%);">+    */</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+        /* extract the BVCI IE of given PDU + return it */</span><br><span style="color: hsl(120, 100%, 40%);">+    function f_BSSGP_BVCI_IE_get(PDU_BSSGP pdu) return template (omit) BVCI {</span><br><span style="color: hsl(120, 100%, 40%);">+             select (pdu) {</span><br><span style="color: hsl(120, 100%, 40%);">+                case (PDU_BSSGP:{pDU_BSSGP_FLUSH_LL:=?}) {</span><br><span style="color: hsl(120, 100%, 40%);">+                    return pdu.pDU_BSSGP_FLUSH_LL.bVCI_old;</span><br><span style="color: hsl(120, 100%, 40%);">+                       }</span><br><span style="color: hsl(120, 100%, 40%);">+             case (PDU_BSSGP:{pDU_BSSGP_FLUSH_LL_ACK:=?}) {</span><br><span style="color: hsl(120, 100%, 40%);">+                        return pdu.pDU_BSSGP_FLUSH_LL_ACK.bVCI_new;</span><br><span style="color: hsl(120, 100%, 40%);">+                   }</span><br><span style="color: hsl(120, 100%, 40%);">+             case (PDU_BSSGP:{pDU_BSSGP_LLC_DISCARDED:=?}) {</span><br><span style="color: hsl(120, 100%, 40%);">+                       return pdu.pDU_BSSGP_LLC_DISCARDED.bVCI;</span><br><span style="color: hsl(120, 100%, 40%);">+                      }</span><br><span style="color: hsl(120, 100%, 40%);">+             case (PDU_BSSGP:{pDU_BSSGP_BVC_BLOCK:=?}) {</span><br><span style="color: hsl(120, 100%, 40%);">+                   return pdu.pDU_BSSGP_BVC_BLOCK.bVCI;</span><br><span style="color: hsl(120, 100%, 40%);">+                  }</span><br><span style="color: hsl(120, 100%, 40%);">+             case (PDU_BSSGP:{pDU_BSSGP_BVC_BLOCK_ACK:=?}) {</span><br><span style="color: hsl(120, 100%, 40%);">+                       return pdu.pDU_BSSGP_BVC_BLOCK_ACK.bVCI;</span><br><span style="color: hsl(120, 100%, 40%);">+                      }</span><br><span style="color: hsl(120, 100%, 40%);">+             case (PDU_BSSGP:{pDU_BSSGP_BVC_UNBLOCK:=?}) {</span><br><span style="color: hsl(120, 100%, 40%);">+                 return pdu.pDU_BSSGP_BVC_UNBLOCK.bVCI;</span><br><span style="color: hsl(120, 100%, 40%);">+                        }</span><br><span style="color: hsl(120, 100%, 40%);">+             case (PDU_BSSGP:{pDU_BSSGP_BVC_UNBLOCK_ACK:=?}) {</span><br><span style="color: hsl(120, 100%, 40%);">+                     return pdu.pDU_BSSGP_BVC_UNBLOCK_ACK.bVCI;</span><br><span style="color: hsl(120, 100%, 40%);">+                    }</span><br><span style="color: hsl(120, 100%, 40%);">+             case (PDU_BSSGP:{pDU_BSSGP_BVC_RESET:=?}) {</span><br><span style="color: hsl(120, 100%, 40%);">+                   return pdu.pDU_BSSGP_BVC_RESET.bVCI;</span><br><span style="color: hsl(120, 100%, 40%);">+                  }</span><br><span style="color: hsl(120, 100%, 40%);">+             case (PDU_BSSGP:{pDU_BSSGP_BVC_RESET_ACK:=?}) {</span><br><span style="color: hsl(120, 100%, 40%);">+                       return pdu.pDU_BSSGP_BVC_RESET_ACK.bVCI;</span><br><span style="color: hsl(120, 100%, 40%);">+                      }</span><br><span style="color: hsl(120, 100%, 40%);">+             case (PDU_BSSGP:{pDU_BSSGP_STATUS:=?}) {</span><br><span style="color: hsl(120, 100%, 40%);">+                      return pdu.pDU_BSSGP_STATUS.bVCI;</span><br><span style="color: hsl(120, 100%, 40%);">+                     }</span><br><span style="color: hsl(120, 100%, 40%);">+             case (PDU_BSSGP:{pDU_BSSGP_PERFORM_LOCATION_REQUEST:=?}) {</span><br><span style="color: hsl(120, 100%, 40%);">+                    return pdu.pDU_BSSGP_PERFORM_LOCATION_REQUEST.bVCI;</span><br><span style="color: hsl(120, 100%, 40%);">+                   }</span><br><span style="color: hsl(120, 100%, 40%);">+             case (PDU_BSSGP:{pDU_BSSGP_PERFORM_LOCATION_RESPONSE:=?}) {</span><br><span style="color: hsl(120, 100%, 40%);">+                   return pdu.pDU_BSSGP_PERFORM_LOCATION_RESPONSE.bVCI;</span><br><span style="color: hsl(120, 100%, 40%);">+                  }</span><br><span style="color: hsl(120, 100%, 40%);">+             case (PDU_BSSGP:{pDU_BSSGP_PERFORM_LOCATION_ABORT:=?}) {</span><br><span style="color: hsl(120, 100%, 40%);">+                      return pdu.pDU_BSSGP_PERFORM_LOCATION_ABORT.bVCI;</span><br><span style="color: hsl(120, 100%, 40%);">+                     }</span><br><span style="color: hsl(120, 100%, 40%);">+             case (PDU_BSSGP:{pDU_BSSGP_POSITION_COMMAND:=?}) {</span><br><span style="color: hsl(120, 100%, 40%);">+                    return pdu.pDU_BSSGP_POSITION_COMMAND.bVCI;</span><br><span style="color: hsl(120, 100%, 40%);">+                   }</span><br><span style="color: hsl(120, 100%, 40%);">+             case (PDU_BSSGP:{pDU_BSSGP_POSITION_RESPONSE:=?}) {</span><br><span style="color: hsl(120, 100%, 40%);">+                   return pdu.pDU_BSSGP_POSITION_RESPONSE.bVCI;</span><br><span style="color: hsl(120, 100%, 40%);">+                  }</span><br><span style="color: hsl(120, 100%, 40%);">+             case (PDU_BSSGP:{pDU_BSSGP_PAGING_PS:={?,?,*,{bVCI:=?},*,*,?,*,*}}) {</span><br><span style="color: hsl(120, 100%, 40%);">+                 return pdu.pDU_BSSGP_PAGING_PS.paging_Field4.bVCI;</span><br><span style="color: hsl(120, 100%, 40%);">+                    }</span><br><span style="color: hsl(120, 100%, 40%);">+             case (PDU_BSSGP:{pDU_BSSGP_PAGING_CS:={?,?,?,{bVCI:=?},*,*,*,*,*}}) {</span><br><span style="color: hsl(120, 100%, 40%);">+                 return pdu.pDU_BSSGP_PAGING_CS.paging_Field4.bVCI;</span><br><span style="color: hsl(120, 100%, 40%);">+                    }</span><br><span style="color: hsl(120, 100%, 40%);">+             case else {</span><br><span style="color: hsl(120, 100%, 40%);">+                   return omit;</span><br><span style="color: hsl(120, 100%, 40%);">+                  }</span><br><span style="color: hsl(120, 100%, 40%);">+             }</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ /* extract the BVCI IE of given PDU + convert it to integer value */</span><br><span style="color: hsl(120, 100%, 40%);">+  function f_BSSGP_BVCI_get(PDU_BSSGP pdu) return template (omit) BssgpBvci {</span><br><span style="color: hsl(120, 100%, 40%);">+           var template (omit) BVCI bvci_raw := f_BSSGP_BVCI_IE_get(pdu);</span><br><span style="color: hsl(120, 100%, 40%);">+                if (istemplatekind(bvci_raw, "omit")) {</span><br><span style="color: hsl(120, 100%, 40%);">+                     return omit;</span><br><span style="color: hsl(120, 100%, 40%);">+          }</span><br><span style="color: hsl(120, 100%, 40%);">+             return oct2int(valueof(bvci_raw.unstructured_value));</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   /* 3GPP TS 23.003 2.6 */</span><br><span style="color: hsl(120, 100%, 40%);">+      type enumerated TlliType {</span><br><span style="color: hsl(120, 100%, 40%);">+            TLLI_LOCAL,</span><br><span style="color: hsl(120, 100%, 40%);">+           TLLI_FOREIGN,</span><br><span style="color: hsl(120, 100%, 40%);">+         TLLI_RANDOM,</span><br><span style="color: hsl(120, 100%, 40%);">+          TLLI_AUXILIARY,</span><br><span style="color: hsl(120, 100%, 40%);">+               TLLI_RESERVED,</span><br><span style="color: hsl(120, 100%, 40%);">+                TLLI_G_RNTI,</span><br><span style="color: hsl(120, 100%, 40%);">+          TLLI_RAND_G_RNTI</span><br><span style="color: hsl(120, 100%, 40%);">+      }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   /* 3GPP TS 23.003 2.6 */</span><br><span style="color: hsl(120, 100%, 40%);">+      function f_gprs_tlli_type(OCT4 tlli) return TlliType {</span><br><span style="color: hsl(120, 100%, 40%);">+                var bitstring tllib := oct2bit(tlli);</span><br><span style="color: hsl(120, 100%, 40%);">+         if (substr(tllib, 0, 2) == '11'B) {</span><br><span style="color: hsl(120, 100%, 40%);">+                   return TLLI_LOCAL;</span><br><span style="color: hsl(120, 100%, 40%);">+            } else if (substr(tllib, 0, 2) == '10'B) {</span><br><span style="color: hsl(120, 100%, 40%);">+                    return TLLI_FOREIGN;</span><br><span style="color: hsl(120, 100%, 40%);">+          } else if (substr(tllib, 0, 5) == '01111'B) {</span><br><span style="color: hsl(120, 100%, 40%);">+                 return TLLI_RANDOM;</span><br><span style="color: hsl(120, 100%, 40%);">+           } else if (substr(tllib, 0, 4) == '0110'B) {</span><br><span style="color: hsl(120, 100%, 40%);">+                  return TLLI_RESERVED;</span><br><span style="color: hsl(120, 100%, 40%);">+         } else if (substr(tllib, 0, 3) == '010'B) {</span><br><span style="color: hsl(120, 100%, 40%);">+                   return TLLI_RESERVED;</span><br><span style="color: hsl(120, 100%, 40%);">+         } else if (substr(tllib, 0, 4) == '0000'B) {</span><br><span style="color: hsl(120, 100%, 40%);">+                  return TLLI_G_RNTI;</span><br><span style="color: hsl(120, 100%, 40%);">+           } else if (substr(tllib, 0, 4) == '0001'B) {</span><br><span style="color: hsl(120, 100%, 40%);">+                  return TLLI_RAND_G_RNTI;</span><br><span style="color: hsl(120, 100%, 40%);">+              } else {</span><br><span style="color: hsl(120, 100%, 40%);">+                      setverdict(fail, "Unknonw TLLI Type ", tllib);</span><br><span style="color: hsl(120, 100%, 40%);">+                      mtc.stop;</span><br><span style="color: hsl(120, 100%, 40%);">+             }</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   function f_gprs_tlli_random() return OCT4 {</span><br><span style="color: hsl(120, 100%, 40%);">+           var OCT4 tlli := f_rnd_octstring(4);</span><br><span style="color: hsl(120, 100%, 40%);">+          return tlli or4b 'c0000000'O;</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span> </span><br><span> } with { encode "RAW" };</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/21264">change 21264</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/21264"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-ttcn3-hacks </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I4ca156b53dfe9daa190d52a7de46be56cf74099a </div>
<div style="display:none"> Gerrit-Change-Number: 21264 </div>
<div style="display:none"> Gerrit-PatchSet: 2 </div>
<div style="display:none"> Gerrit-Owner: daniel <dwillmann@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: daniel <dwillmann@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>