<p>daniel <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/21172">View Change</a></p><div style="white-space:pre-wrap">Approvals:
Jenkins Builder: Verified
daniel: Looks good to me, approved
pespin: Looks good to me, but someone else must approve
</div><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;"><span>diff --git a/gbproxy/GBProxy_Tests.ttcn b/gbproxy/GBProxy_Tests.ttcn</span><br><span>index 8837a63..7d39e7c 100644</span><br><span>--- a/gbproxy/GBProxy_Tests.ttcn</span><br><span>+++ b/gbproxy/GBProxy_Tests.ttcn</span><br><span>@@ -640,10 +640,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: 4 </div>
<div style="display:none"> Gerrit-Owner: laforge <laforge@osmocom.org> </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>