<p>laforge has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/21172">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">gbproxy: Test for RA Capability procedure<br><br>Change-Id: If7e5a5cab1e445e0b4ef0466990e352143c31245<br>---<br>M gbproxy/GBProxy_Tests.ttcn<br>M library/Osmocom_Gb_Types.ttcn<br>2 files changed, 175 insertions(+), 1 deletion(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/72/21172/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/gbproxy/GBProxy_Tests.ttcn b/gbproxy/GBProxy_Tests.ttcn</span><br><span>index ecaca54..3665f48 100644</span><br><span>--- a/gbproxy/GBProxy_Tests.ttcn</span><br><span>+++ b/gbproxy/GBProxy_Tests.ttcn</span><br><span>@@ -634,10 +634,45 @@</span><br><span>     f_cleanup();</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+private function f_TC_ra_capability(charstring id) runs on BSSGP_ConnHdlr {</span><br><span style="color: hsl(120, 100%, 40%);">+    var integer i;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      for (i := 0; i < 10; i := i+1) {</span><br><span style="color: hsl(120, 100%, 40%);">+           var template (value) PDU_BSSGP pdu_tx := ts_BSSGP_RA_CAP(g_pars.tlli, { ts_RaCapRec_BSSGP });</span><br><span style="color: hsl(120, 100%, 40%);">+         /* we cannot use pdu_tx as there are some subtle differences in the length field :/ */</span><br><span style="color: hsl(120, 100%, 40%);">+                var template (present) PDU_BSSGP pdu_rx := tr_BSSGP_RA_CAP(g_pars.tlli, { tr_RaCapRec_BSSGP })</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+              SGSN[0].send(pdu_tx);</span><br><span style="color: hsl(120, 100%, 40%);">+         alt {</span><br><span style="color: hsl(120, 100%, 40%);">+         [] PCU[0].receive(pdu_rx);</span><br><span style="color: hsl(120, 100%, 40%);">+            [] PCU[0].receive {</span><br><span style="color: hsl(120, 100%, 40%);">+                   setverdict(fail, "SGSN Received unexpected");</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%);">+     setverdict(pass);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+testcase TC_ra_capability() runs on test_CT</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+  var BSSGP_ConnHdlr vc_conn;</span><br><span style="color: hsl(120, 100%, 40%);">+   f_init();</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   vc_conn := f_start_handler(refers(f_TC_ra_capability), testcasename(), g_pcu, g_sgsn, 3);</span><br><span style="color: hsl(120, 100%, 40%);">+     vc_conn.done;</span><br><span style="color: hsl(120, 100%, 40%);">+ /* TODO: start multiple handlers (UEs) on various cells on same and other NSEs */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   f_cleanup();</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%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> control {</span><br><span>         execute( TC_BVC_bringup() );</span><br><span>         execute( TC_ul_unitdata() );</span><br><span>         execute( TC_dl_unitdata() );</span><br><span style="color: hsl(120, 100%, 40%);">+  execute( TC_ra_capability() );</span><br><span> }</span><br><span> </span><br><span> </span><br><span>diff --git a/library/Osmocom_Gb_Types.ttcn b/library/Osmocom_Gb_Types.ttcn</span><br><span>index 8271ced..82fdb07 100644</span><br><span>--- a/library/Osmocom_Gb_Types.ttcn</span><br><span>+++ b/library/Osmocom_Gb_Types.ttcn</span><br><span>@@ -929,6 +929,43 @@</span><br><span>          return ret;</span><br><span>  }</span><br><span> </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 style="color: hsl(120, 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 style="color: hsl(120, 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 style="color: hsl(120, 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 style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>       template PDU_BSSGP ts_BVC_RESET(BssgpCause cause, BssgpBvci bvci,</span><br><span>                                    template BssgpCellId cell_id) := {</span><br><span>           pDU_BSSGP_BVC_RESET := {</span><br><span>@@ -1204,6 +1241,48 @@</span><br><span>            },</span><br><span>           presenceBitMSRACap := '0'B</span><br><span>   };</span><br><span style="color: hsl(120, 100%, 40%);">+    template (present) MSRACapabilityValuesRecord_BSSGP</span><br><span style="color: hsl(120, 100%, 40%);">+   tr_RaCapRec_BSSGP(template (present) BIT4 att := '0001'B /* E-GSM */, template MultislotCap_GPRS_BSSGP mscap_gprs := *,</span><br><span style="color: hsl(120, 100%, 40%);">+                         template MultislotCap_EGPRS_BSSGP mscap_egprs := *) := {</span><br><span style="color: hsl(120, 100%, 40%);">+            mSRACapabilityValues := {</span><br><span style="color: hsl(120, 100%, 40%);">+                     mSRACapabilityValuesExclude1111 := {</span><br><span style="color: hsl(120, 100%, 40%);">+                          accessTechnType := att, /* E-GSM */</span><br><span style="color: hsl(120, 100%, 40%);">+                           accessCapabilities := {</span><br><span style="color: hsl(120, 100%, 40%);">+                                       lengthIndicator := ?, /* overwritten */</span><br><span style="color: hsl(120, 100%, 40%);">+                                       accessCapabilities := {</span><br><span style="color: hsl(120, 100%, 40%);">+                                               rfPowerCapability := '001'B, /* FIXME */</span><br><span style="color: hsl(120, 100%, 40%);">+                                              presenceBitA5 := ?,</span><br><span style="color: hsl(120, 100%, 40%);">+                                           a5bits := *,</span><br><span style="color: hsl(120, 100%, 40%);">+                                          esind := '1'B,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                psbit := '0'B,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                vgcs := '0'B,</span><br><span style="color: hsl(120, 100%, 40%);">+                                         vbs := '0'B,</span><br><span style="color: hsl(120, 100%, 40%);">+                                          presenceBitMultislot := '1'B,</span><br><span style="color: hsl(120, 100%, 40%);">+                                         multislotcap := {</span><br><span style="color: hsl(120, 100%, 40%);">+                                                     presenceBitHscsd := '0'B,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                     hscsdmultislotclass := omit,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                  presenceBitGprs := ?,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                 gprsmultislot := mscap_gprs,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                  presenceBitSms := '0'B,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                       multislotCap_SMS := omit,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                     multislotCapAdditionsAfterRel97 := {</span><br><span style="color: hsl(120, 100%, 40%);">+                                                          presenceBitEcsdmulti := '0'B,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                         ecsdmultislotclass := *,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                              presenceBitEgprsmulti := ?,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                           multislotCap_EGPRS := mscap_egprs,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                            presenceBitDtmGprsmulti := ?,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                         multislotCapdtmgprsmultislotsubclass := *</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%);">+                                            accessCapAdditionsAfterRel97 := *</span><br><span style="color: hsl(120, 100%, 40%);">+                                     },</span><br><span style="color: hsl(120, 100%, 40%);">+                                    spare_bits := *</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%);">+            presenceBitMSRACap := '0'B</span><br><span style="color: hsl(120, 100%, 40%);">+    };</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> </span><br><span>     template QoS_Profile_V t_defaultQos := {</span><br><span>             peak_Bit_Rate := int2oct(80, 2),</span><br><span>@@ -1253,7 +1332,7 @@</span><br><span>                     return omit;</span><br><span>                 } else {</span><br><span>                     ret := {</span><br><span style="color: hsl(0, 100%, 40%);">-                                iEI := '00'O,</span><br><span style="color: hsl(120, 100%, 40%);">+                         iEI := '13'O,</span><br><span>                                ext := '1'B,</span><br><span>                                 lengthIndicator := {</span><br><span>                                         length1 := 1</span><br><span>@@ -1264,6 +1343,21 @@</span><br><span>                }</span><br><span>    }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ function tr_BSSGP_IE_MSRAcap(template MSRadioAccessCapabilityV_BSSGP racap) return template MS_Radio_Access_Capability {</span><br><span style="color: hsl(120, 100%, 40%);">+              var template MS_Radio_Access_Capability ret;</span><br><span style="color: hsl(120, 100%, 40%);">+          if (istemplatekind(racap, "omit")) {</span><br><span style="color: hsl(120, 100%, 40%);">+                        return omit;</span><br><span style="color: hsl(120, 100%, 40%);">+          } else {</span><br><span style="color: hsl(120, 100%, 40%);">+                      ret := {</span><br><span style="color: hsl(120, 100%, 40%);">+                              iEI := '13'O,</span><br><span style="color: hsl(120, 100%, 40%);">+                         ext := ?,</span><br><span style="color: hsl(120, 100%, 40%);">+                             lengthIndicator := ?,</span><br><span style="color: hsl(120, 100%, 40%);">+                         mSRadioAccessCapabilityV_BSSGP := racap</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%);">+     }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>  template PDU_BSSGP ts_BSSGP_DL_UD(GprsTlli tlli, octetstring pdu,</span><br><span>                                      template (omit) MSRadioAccessCapabilityV_BSSGP racap := omit,</span><br><span>                                        template (omit) IMSI_BSSGP imsi := omit) := {</span><br><span>@@ -1589,6 +1683,51 @@</span><br><span>             }</span><br><span>    }</span><br><span> </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 style="color: hsl(120, 100%, 40%);">+}</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 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%);">+/* 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 style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</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 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%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> </span><br><span> /* PDU permitted on PTP BVC only (TS 48.018 Section 5.4.1) */</span><br><span> template (present) PDU_BSSGP tr_BSSGP_PERMITTED_PTP_ONLY := (</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/21172">change 21172</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/+/21172"/><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: If7e5a5cab1e445e0b4ef0466990e352143c31245 </div>
<div style="display:none"> Gerrit-Change-Number: 21172 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>