<p>pespin has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/16327">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">pcu: Add VTY support and use it to set (M)CS lqual thresholds<br><br>Requires osmo-pcu.git I3430abb5fc622dec293457466e760de95fa3a05c, before<br>that commit OsmoPCU cmd prompt contained a dash which resulted in TTCN3<br>being unable to match it.<br><br>Change-Id: I221675721b65b3ab44179e9657da70ba4004d7de<br>---<br>M pcu/PCU_Tests.default<br>M pcu/PCU_Tests_RAW.ttcn<br>M pcu/gen_links.sh<br>M pcu/regen_makefile.sh<br>4 files changed, 91 insertions(+), 2 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/27/16327/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/pcu/PCU_Tests.default b/pcu/PCU_Tests.default</span><br><span>index 2a87345..537744f 100644</span><br><span>--- a/pcu/PCU_Tests.default</span><br><span>+++ b/pcu/PCU_Tests.default</span><br><span>@@ -21,10 +21,20 @@</span><br><span>        },</span><br><span>   sgsn_role := true</span><br><span> }</span><br><span style="color: hsl(120, 100%, 40%);">+Osmocom_VTY_Functions.mp_prompt_prefix := "OsmoPCU";</span><br><span> </span><br><span> [TESTPORT_PARAMETERS]</span><br><span> *.*.udpReuseAddress := "yes";</span><br><span> *.PCU.socket_type := "SEQPACKET"</span><br><span style="color: hsl(120, 100%, 40%);">+*.PCUVTY.CTRL_MODE := "client"</span><br><span style="color: hsl(120, 100%, 40%);">+*.PCUVTY.CTRL_HOSTNAME := "127.0.0.1"</span><br><span style="color: hsl(120, 100%, 40%);">+*.PCUVTY.CTRL_PORTNUM := "4240"</span><br><span style="color: hsl(120, 100%, 40%);">+*.PCUVTY.CTRL_LOGIN_SKIPPED := "yes"</span><br><span style="color: hsl(120, 100%, 40%);">+*.PCUVTY.CTRL_DETECT_SERVER_DISCONNECTED := "yes"</span><br><span style="color: hsl(120, 100%, 40%);">+*.PCUVTY.CTRL_READMODE := "buffered"</span><br><span style="color: hsl(120, 100%, 40%);">+*.PCUVTY.CTRL_CLIENT_CLEANUP_LINEFEED := "yes"</span><br><span style="color: hsl(120, 100%, 40%);">+*.PCUVTY.CTRL_DETECT_CONNECTION_ESTABLISHMENT_RESULT := "yes"</span><br><span style="color: hsl(120, 100%, 40%);">+*.PCUVTY.PROMPT1 := "OsmoPCU> "</span><br><span> </span><br><span> [MAIN_CONTROLLER]</span><br><span> </span><br><span>diff --git a/pcu/PCU_Tests_RAW.ttcn b/pcu/PCU_Tests_RAW.ttcn</span><br><span>index 6129831..5bb5fa7 100644</span><br><span>--- a/pcu/PCU_Tests_RAW.ttcn</span><br><span>+++ b/pcu/PCU_Tests_RAW.ttcn</span><br><span>@@ -21,6 +21,9 @@</span><br><span> import from GSM_Types all;</span><br><span> import from GSM_RR_Types all;</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+import from Osmocom_VTY_Functions all;</span><br><span style="color: hsl(120, 100%, 40%);">+import from TELNETasp_PortType all;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> import from RLCMAC_CSN1_Types all;</span><br><span> import from RLCMAC_Types all;</span><br><span> </span><br><span>@@ -456,11 +459,42 @@</span><br><span>  setverdict(pass);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+type record lqual_range {</span><br><span style="color: hsl(120, 100%, 40%);">+ /* component reference to the IPA_Client component used for RSL */</span><br><span style="color: hsl(120, 100%, 40%);">+    uint8_t low,</span><br><span style="color: hsl(120, 100%, 40%);">+  uint8_t high</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> type component RAW_PCU_Test_CT extends bssgp_CT {</span><br><span>       /* Connection to the BTS component (one for now) */</span><br><span>  port RAW_PCU_MSG_PT BTS;</span><br><span>     /* Connection to the PCUIF component */</span><br><span>      port RAW_PCU_MSG_PT PCUIF;</span><br><span style="color: hsl(120, 100%, 40%);">+    /* VTY connection to the PCU */</span><br><span style="color: hsl(120, 100%, 40%);">+       port TELNETasp_PT PCUVTY;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   /* Uplink CS/MCS thresholds, default from pcu_main.c: */</span><br><span style="color: hsl(120, 100%, 40%);">+      var lqual_range g_cs_lqual_ranges[4] := {{low := 0, high := 6},</span><br><span style="color: hsl(120, 100%, 40%);">+                                                {low := 5, high := 8},</span><br><span style="color: hsl(120, 100%, 40%);">+                                                {low := 7, high := 13},</span><br><span style="color: hsl(120, 100%, 40%);">+                                               {low := 12,high := 35}};</span><br><span style="color: hsl(120, 100%, 40%);">+     var lqual_range g_mcs_lqual_ranges[9] := {{low := 0, high := 6},</span><br><span style="color: hsl(120, 100%, 40%);">+                                               {low := 5, high := 8},</span><br><span style="color: hsl(120, 100%, 40%);">+                                                {low := 7, high := 13},</span><br><span style="color: hsl(120, 100%, 40%);">+                                               {low := 12,high := 15},</span><br><span style="color: hsl(120, 100%, 40%);">+                                               {low := 14, high := 17},</span><br><span style="color: hsl(120, 100%, 40%);">+                                              {low := 16, high := 18},</span><br><span style="color: hsl(120, 100%, 40%);">+                                              {low := 17,high := 20},</span><br><span style="color: hsl(120, 100%, 40%);">+                                               {low := 19, high := 24},</span><br><span style="color: hsl(120, 100%, 40%);">+                                              {low := 23,high := 35}};</span><br><span style="color: hsl(120, 100%, 40%);">+     var uint8_t g_cs_initial_dl := 1;</span><br><span style="color: hsl(120, 100%, 40%);">+     var uint8_t g_cs_initial_ul := 1;</span><br><span style="color: hsl(120, 100%, 40%);">+     var uint8_t g_mcs_initial_dl := 1;</span><br><span style="color: hsl(120, 100%, 40%);">+    var uint8_t g_mcs_initial_ul := 1;</span><br><span style="color: hsl(120, 100%, 40%);">+    var uint8_t g_cs_max_dl := 4;</span><br><span style="color: hsl(120, 100%, 40%);">+ var uint8_t g_cs_max_ul := 4;</span><br><span style="color: hsl(120, 100%, 40%);">+ var uint8_t g_mcs_max_dl := 9;</span><br><span style="color: hsl(120, 100%, 40%);">+        var uint8_t g_mcs_max_ul := 9;</span><br><span> </span><br><span>   /* Guard timeout */</span><br><span>  timer g_T_guard := 60.0;</span><br><span>@@ -473,6 +507,43 @@</span><br><span>              }</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+private function f_pcuvty_set_allowed_cs_mcs() runs on RAW_PCU_Test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+  f_vty_config2(PCUVTY, {"pcu"}, "cs " & int2str(g_cs_initial_dl) & " " & int2str(g_cs_initial_ul));</span><br><span style="color: hsl(120, 100%, 40%);">+  f_vty_config2(PCUVTY, {"pcu"}, "cs max " & int2str(g_cs_max_dl) & " " & int2str(g_cs_max_ul));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    f_vty_config2(PCUVTY, {"pcu"}, "mcs " & int2str(g_mcs_initial_dl) & " " & int2str(g_mcs_initial_ul));</span><br><span style="color: hsl(120, 100%, 40%);">+       f_vty_config2(PCUVTY, {"pcu"}, "mcs max " & int2str(g_mcs_max_dl) & " " & int2str(g_mcs_max_ul));</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%);">+private function f_pcuvty_set_link_quality_ranges() runs on RAW_PCU_Test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+       var charstring cmd;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ cmd := "cs link-quality-ranges" &</span><br><span style="color: hsl(120, 100%, 40%);">+              " cs1 " & int2str(g_cs_lqual_ranges[0].high) &</span><br><span style="color: hsl(120, 100%, 40%);">+              " cs2 " & int2str(g_cs_lqual_ranges[1].low) & " " & int2str(g_cs_lqual_ranges[1].high) &</span><br><span style="color: hsl(120, 100%, 40%);">+          " cs3 " & int2str(g_cs_lqual_ranges[2].low) & " " & int2str(g_cs_lqual_ranges[2].high) &</span><br><span style="color: hsl(120, 100%, 40%);">+          " cs4 " & int2str(g_cs_lqual_ranges[3].low);</span><br><span style="color: hsl(120, 100%, 40%);">+     f_vty_config2(PCUVTY, {"pcu"}, cmd);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      cmd := "mcs link-quality-ranges" &</span><br><span style="color: hsl(120, 100%, 40%);">+             " mcs1 " & int2str(g_mcs_lqual_ranges[0].high) &</span><br><span style="color: hsl(120, 100%, 40%);">+            " mcs2 " & int2str(g_mcs_lqual_ranges[1].low) & " " & int2str(g_mcs_lqual_ranges[1].high) &</span><br><span style="color: hsl(120, 100%, 40%);">+               " mcs3 " & int2str(g_mcs_lqual_ranges[2].low) & " " & int2str(g_mcs_lqual_ranges[2].high) &</span><br><span style="color: hsl(120, 100%, 40%);">+               " mcs4 " & int2str(g_mcs_lqual_ranges[3].low) & " " & int2str(g_mcs_lqual_ranges[3].high) &</span><br><span style="color: hsl(120, 100%, 40%);">+               " mcs5 " & int2str(g_mcs_lqual_ranges[4].low) & " " & int2str(g_mcs_lqual_ranges[4].high) &</span><br><span style="color: hsl(120, 100%, 40%);">+               " mcs6 " & int2str(g_mcs_lqual_ranges[5].low) & " " & int2str(g_mcs_lqual_ranges[5].high) &</span><br><span style="color: hsl(120, 100%, 40%);">+               " mcs7 " & int2str(g_mcs_lqual_ranges[6].low) & " " & int2str(g_mcs_lqual_ranges[6].high) &</span><br><span style="color: hsl(120, 100%, 40%);">+               " mcs8 " & int2str(g_mcs_lqual_ranges[7].low) & " " & int2str(g_mcs_lqual_ranges[7].high) &</span><br><span style="color: hsl(120, 100%, 40%);">+               " mcs9 " & int2str(g_mcs_lqual_ranges[8].low);</span><br><span style="color: hsl(120, 100%, 40%);">+   f_vty_config2(PCUVTY, {"pcu"}, cmd);</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%);">+private function f_init_vty(charstring id) runs on RAW_PCU_Test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+     map(self:PCUVTY, system:PCUVTY);</span><br><span style="color: hsl(120, 100%, 40%);">+      f_vty_set_prompts(PCUVTY);</span><br><span style="color: hsl(120, 100%, 40%);">+    f_vty_transceive(PCUVTY, "enable");</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> private function f_init_raw(charstring id, template (value) PCUIF_info_ind info_ind := ts_PCUIF_INFO_default)</span><br><span> runs on RAW_PCU_Test_CT {</span><br><span>     var RAW_PCUIF_CT vc_PCUIF;</span><br><span>@@ -492,6 +563,8 @@</span><br><span>     connect(vc_BTS:PCUIF, vc_PCUIF:BTS);</span><br><span>         connect(vc_BTS:TC, self:BTS);</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+     f_init_vty(id);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>    vc_PCUIF.start(f_PCUIF_CT_handler(mp_pcu_sock_path));</span><br><span>        vc_BTS.start(f_BTS_CT_handler(0, valueof(info_ind)));</span><br><span> </span><br><span>@@ -967,6 +1040,9 @@</span><br><span>     /* Initialize the PCU interface abstraction */</span><br><span>       f_init_raw(testcasename());</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+       f_pcuvty_set_allowed_cs_mcs();</span><br><span style="color: hsl(120, 100%, 40%);">+        f_pcuvty_set_link_quality_ranges();</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>        /* Establish an Uplink TBF */</span><br><span>        ok := f_establish_tbf(rr_imm_ass);</span><br><span>   if (not ok) {</span><br><span>diff --git a/pcu/gen_links.sh b/pcu/gen_links.sh</span><br><span>index f9f6dd5..9ad318c 100755</span><br><span>--- a/pcu/gen_links.sh</span><br><span>+++ b/pcu/gen_links.sh</span><br><span>@@ -44,9 +44,12 @@</span><br><span> FILES="SNDCP_Types.ttcn"</span><br><span> gen_links $DIR $FILES</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+DIR=$BASEDIR/titan.TestPorts.TELNETasp/src</span><br><span style="color: hsl(120, 100%, 40%);">+FILES="TELNETasp_PT.cc  TELNETasp_PT.hh  TELNETasp_PortType.ttcn"</span><br><span style="color: hsl(120, 100%, 40%);">+gen_links $DIR $FILES</span><br><span> </span><br><span> DIR=../library</span><br><span style="color: hsl(0, 100%, 40%);">-FILES="Misc_Helpers.ttcn General_Types.ttcn Native_Functions.ttcn Native_FunctionDefs.cc GSM_Types.ttcn GSM_RR_Types.ttcn Osmocom_Types.ttcn RLCMAC_Types.ttcn RLCMAC_CSN1_Types.ttcn RLCMAC_EncDec.cc L1CTL_Types.ttcn L1CTL_PortType.ttcn L1CTL_PortType_CtrlFunct.ttcn L1CTL_PortType_CtrlFunctDef.cc LAPDm_RAW_PT.ttcn LAPDm_Types.ttcn "</span><br><span style="color: hsl(120, 100%, 40%);">+FILES="Misc_Helpers.ttcn General_Types.ttcn Osmocom_VTY_Functions.ttcn Native_Functions.ttcn Native_FunctionDefs.cc GSM_Types.ttcn GSM_RR_Types.ttcn Osmocom_Types.ttcn RLCMAC_Types.ttcn RLCMAC_CSN1_Types.ttcn RLCMAC_EncDec.cc L1CTL_Types.ttcn L1CTL_PortType.ttcn L1CTL_PortType_CtrlFunct.ttcn L1CTL_PortType_CtrlFunctDef.cc LAPDm_RAW_PT.ttcn LAPDm_Types.ttcn "</span><br><span> FILES+="NS_Emulation.ttcn NS_CodecPort.ttcn NS_CodecPort_CtrlFunct.ttcn NS_CodecPort_CtrlFunctDef.cc "</span><br><span> FILES+="BSSGP_Emulation.ttcn Osmocom_Gb_Types.ttcn "</span><br><span> FILES+="LLC_Templates.ttcn L3_Templates.ttcn L3_Common.ttcn "</span><br><span>diff --git a/pcu/regen_makefile.sh b/pcu/regen_makefile.sh</span><br><span>index ff712dc..c2f636d 100755</span><br><span>--- a/pcu/regen_makefile.sh</span><br><span>+++ b/pcu/regen_makefile.sh</span><br><span>@@ -1,5 +1,5 @@</span><br><span> #!/bin/sh</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-FILES="*.ttcn BSSGP_EncDec.cc IPL4asp_PT.cc IPL4asp_discovery.cc TCCConversion.cc TCCInterface.cc NS_CodecPort_CtrlFunctDef.cc UD_PT.cc RLCMAC_EncDec.cc LLC_EncDec.cc L1CTL_PortType_CtrlFunctDef.cc Native_FunctionDefs.cc"</span><br><span style="color: hsl(120, 100%, 40%);">+FILES="*.ttcn BSSGP_EncDec.cc IPL4asp_PT.cc IPL4asp_discovery.cc TCCConversion.cc TCCInterface.cc NS_CodecPort_CtrlFunctDef.cc UD_PT.cc RLCMAC_EncDec.cc LLC_EncDec.cc L1CTL_PortType_CtrlFunctDef.cc TELNETasp_PT.cc Native_FunctionDefs.cc"</span><br><span> </span><br><span> ../regen-makefile.sh PCU_Tests.ttcn $FILES</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/16327">change 16327</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/+/16327"/><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: I221675721b65b3ab44179e9657da70ba4004d7de </div>
<div style="display:none"> Gerrit-Change-Number: 16327 </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>