<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>