<p>pespin has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/17526">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">pcu: Introduce TC_mt_ping_pong_with_dl_racap<br><br>Allows checking how pcu parses MS RA Capabilities coming from SGSN.<br><br>Change-Id: Iedd8ab278547471b72252743d93a0f9e11d7e787<br>---<br>M library/Osmocom_Gb_Types.ttcn<br>M pcu/PCU_Tests_RAW.ttcn<br>2 files changed, 89 insertions(+), 4 deletions(-)<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/26/17526/1</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 3149e77..518ca80 100644</span><br><span>--- a/library/Osmocom_Gb_Types.ttcn</span><br><span>+++ b/library/Osmocom_Gb_Types.ttcn</span><br><span>@@ -1091,6 +1091,58 @@</span><br><span> }</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ private function f_presece_bit_MultislotCap_GPRS_BSSGP(template (omit) MultislotCap_GPRS_BSSGP mscap_gprs) return BIT1 {</span><br><span style="color: hsl(120, 100%, 40%);">+ if (istemplatekind(mscap_gprs, "omit")) {</span><br><span style="color: hsl(120, 100%, 40%);">+ return '0'B;</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+ return '1'B;</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+ private function f_presece_bit_MultislotCap_EGPRS_BSSGP(template (omit) MultislotCap_EGPRS_BSSGP mscap_egprs) return BIT1 {</span><br><span style="color: hsl(120, 100%, 40%);">+ if (istemplatekind(mscap_egprs, "omit")) {</span><br><span style="color: hsl(120, 100%, 40%);">+ return '0'B;</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+ return '1'B;</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+ template (value) MSRACapabilityValuesRecord_BSSGP ts_RaCapRec_BSSGP(BIT4 att := '0001'B /* E-GSM */, template (omit) MultislotCap_GPRS_BSSGP mscap_gprs := omit, template (omit) MultislotCap_EGPRS_BSSGP mscap_egprs := omit) := {</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 := 0, /* 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 := '0'B,</span><br><span style="color: hsl(120, 100%, 40%);">+ a5bits := omit,</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 := f_presece_bit_MultislotCap_GPRS_BSSGP(mscap_gprs),</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 := omit,</span><br><span style="color: hsl(120, 100%, 40%);">+ presenceBitEgprsmulti := f_presece_bit_MultislotCap_EGPRS_BSSGP(mscap_egprs),</span><br><span style="color: hsl(120, 100%, 40%);">+ multislotCap_EGPRS := mscap_egprs,</span><br><span style="color: hsl(120, 100%, 40%);">+ presenceBitDtmGprsmulti := '0'B,</span><br><span style="color: hsl(120, 100%, 40%);">+ multislotCapdtmgprsmultislotsubclass := 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%);">+ accessCapAdditionsAfterRel97 := omit</span><br><span style="color: hsl(120, 100%, 40%);">+ },</span><br><span style="color: hsl(120, 100%, 40%);">+ spare_bits := 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 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> template QoS_Profile_V t_defaultQos := {</span><br><span> peak_Bit_Rate := int2oct(80, 2),</span><br><span> precedence := '000'B,</span><br><span>@@ -1133,13 +1185,30 @@</span><br><span> cnSpecificDRXCycleLength := '0000'B</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- template PDU_BSSGP ts_BSSGP_DL_UD(GprsTlli tlli, octetstring pdu) := {</span><br><span style="color: hsl(120, 100%, 40%);">+ function ts_BSSGP_IE_MSRAcap_omit(template (omit) MSRadioAccessCapabilityV_BSSGP racap) return template (omit) MS_Radio_Access_Capability {</span><br><span style="color: hsl(120, 100%, 40%);">+ var template (omit) 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 := '00'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%);">+ 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 style="color: hsl(120, 100%, 40%);">+ template PDU_BSSGP ts_BSSGP_DL_UD(GprsTlli tlli, octetstring pdu, template (omit) MSRadioAccessCapabilityV_BSSGP racap := omit) := {</span><br><span> pDU_BSSGP_DL_UNITDATA := {</span><br><span> bssgpPduType := '00'O,</span><br><span> tLLI_current := tlli,</span><br><span> qoS_Profile := t_defaultQos,</span><br><span> pDU_Lifetime := t_DefaultLifetime(65535),</span><br><span style="color: hsl(0, 100%, 40%);">- mS_Radio_Access_Capability := omit,</span><br><span style="color: hsl(120, 100%, 40%);">+ mS_Radio_Access_Capability := ts_BSSGP_IE_MSRAcap_omit(racap),</span><br><span> priority := omit,</span><br><span> dRX_Parameters := omit,</span><br><span> iMSI := omit,</span><br><span>diff --git a/pcu/PCU_Tests_RAW.ttcn b/pcu/PCU_Tests_RAW.ttcn</span><br><span>index a9f60cd..ad89c69 100644</span><br><span>--- a/pcu/PCU_Tests_RAW.ttcn</span><br><span>+++ b/pcu/PCU_Tests_RAW.ttcn</span><br><span>@@ -1202,7 +1202,7 @@</span><br><span> /* Test scenario where SGSN wants to send some data against MS and it is</span><br><span> * answered by the MS on PDCH, so TBFs for downlink and later for uplink are created.</span><br><span> */</span><br><span style="color: hsl(0, 100%, 40%);">-testcase TC_mt_ping_pong() runs on RAW_PCU_Test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+private function f_TC_mt_ping_pong(template (omit) MSRadioAccessCapabilityV_BSSGP ms_racap := omit) runs on RAW_PCU_Test_CT {</span><br><span> var GsmRrMessage rr_imm_ass;</span><br><span> var PacketUlAssign ul_tbf_ass;</span><br><span> var PacketDlAssign dl_tbf_ass;</span><br><span>@@ -1225,7 +1225,7 @@</span><br><span> f_bssgp_client_llgmm_assign('FFFFFFFF'O, tlli);</span><br><span> </span><br><span> /* SGSN sends some DL data, PCU will page on CCCH (PCH) */</span><br><span style="color: hsl(0, 100%, 40%);">- BSSGP[0].send(ts_BSSGP_DL_UD(tlli, data));</span><br><span style="color: hsl(120, 100%, 40%);">+ BSSGP[0].send(ts_BSSGP_DL_UD(tlli, data, ms_racap));</span><br><span> f_pcuif_rx_pch_imm_tbf_ass(rr_imm_ass);</span><br><span> </span><br><span> ok := f_imm_ass_verify_dl_tbf_ass(rr_imm_ass, dl_tbf_ass);</span><br><span>@@ -1264,6 +1264,21 @@</span><br><span> BSSGP[0].receive(tr_BSSGP_UL_UD(tlli, mp_gb_cfg.cell_id));</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+testcase TC_mt_ping_pong() runs on RAW_PCU_Test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+ f_TC_mt_ping_pong(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%);">+/* TC_mt_ping_pong, but DL-UNITDATA contains RA Access capability with (M)CS</span><br><span style="color: hsl(120, 100%, 40%);">+/* information about the MS */</span><br><span style="color: hsl(120, 100%, 40%);">+testcase TC_mt_ping_pong_with_dl_racap() runs on RAW_PCU_Test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+ var MultislotCap_GPRS_BSSGP mscap_gprs := {</span><br><span style="color: hsl(120, 100%, 40%);">+ gprsmultislotclass := '00011'B,</span><br><span style="color: hsl(120, 100%, 40%);">+ gprsextendeddynalloccap := '0'B</span><br><span style="color: hsl(120, 100%, 40%);">+ } ;</span><br><span style="color: hsl(120, 100%, 40%);">+ var MSRadioAccessCapabilityV_BSSGP ms_racap := { valueof(ts_RaCapRec_BSSGP('0001'B /* E-GSM */, mscap_gprs, omit)) };</span><br><span style="color: hsl(120, 100%, 40%);">+ f_TC_mt_ping_pong(ms_racap);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /* Verify that if PCU doesn't get an ACK for first DL block after IMM ASS, it</span><br><span> * will retry by retransmitting both the IMM ASS + DL block after poll (ack)</span><br><span> * timeout occurs (specified by sent RRBP on DL block). */</span><br><span>@@ -1503,6 +1518,7 @@</span><br><span> execute( TC_t3193() );</span><br><span> execute( TC_mo_ping_pong() );</span><br><span> execute( TC_mt_ping_pong() );</span><br><span style="color: hsl(120, 100%, 40%);">+ execute( TC_mt_ping_pong_with_dl_racap() );</span><br><span> execute( TC_imm_ass_dl_block_retrans() );</span><br><span> execute( TC_paging_cs_from_bts() );</span><br><span> execute (TC_paging_cs_from_sgsn_sign() );</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/17526">change 17526</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/+/17526"/><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: Iedd8ab278547471b72252743d93a0f9e11d7e787 </div>
<div style="display:none"> Gerrit-Change-Number: 17526 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>