<p>neels has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-bsc/+/25039">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">vty: lchan deact: allow omitting the lchan type arg<br><br>In the command<br><br>  bts <0-255> trx <0-255> timeslot <0-7> sub-slot <0-7> deactivate fr<br><br>the final argument indicating the channel type does not make sense and<br>is not actually used. Define a separate vty command for 'deactivate', so<br>that it doesn't require arguments only used for 'activate'.<br><br>Change-Id: Ibdeca3b1d75b9f6092f566544e9d5f4da67fffce<br>---<br>M src/osmo-bsc/bsc_vty.c<br>1 file changed, 42 insertions(+), 16 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/39/25039/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/osmo-bsc/bsc_vty.c b/src/osmo-bsc/bsc_vty.c</span><br><span>index 5966f85..b0fe8bf 100644</span><br><span>--- a/src/osmo-bsc/bsc_vty.c</span><br><span>+++ b/src/osmo-bsc/bsc_vty.c</span><br><span>@@ -1548,6 +1548,11 @@</span><br><span>               GSM0808_SC_CFG_AMR_12_2 };</span><br><span> </span><br><span>         if (activate) {</span><br><span style="color: hsl(120, 100%, 40%);">+               if (!codec_str) {</span><br><span style="color: hsl(120, 100%, 40%);">+                     vty_out(vty, "%% Error: need a channel type argument to activate%s", VTY_NEWLINE);</span><br><span style="color: hsl(120, 100%, 40%);">+                  return CMD_WARNING;</span><br><span style="color: hsl(120, 100%, 40%);">+           }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>          LOG_LCHAN(lchan, LOGL_NOTICE, "attempt from VTY to activate lchan %s with codec %s\n",</span><br><span>                       gsm_lchan_name(lchan), codec_str);</span><br><span>                 if (!lchan->fi) {</span><br><span>@@ -1700,28 +1705,21 @@</span><br><span>       return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/* Debug/Measurement command to activate a given logical channel</span><br><span style="color: hsl(0, 100%, 40%);">- * manually in a given mode/codec.  This is useful for receiver</span><br><span style="color: hsl(0, 100%, 40%);">- * performance testing (FER/RBER/...) */</span><br><span style="color: hsl(0, 100%, 40%);">-DEFUN(lchan_act, lchan_act_cmd,</span><br><span style="color: hsl(0, 100%, 40%);">-      "bts <0-255> trx <0-255> timeslot <0-7> (sub-slot|vamos-sub-slot) <0-7> (activate|activate-vamos|deactivate) (hr|fr|efr|amr|sig) [<0-7>]",</span><br><span style="color: hsl(0, 100%, 40%);">-      BTS_NR_TRX_TS_STR2</span><br><span style="color: hsl(0, 100%, 40%);">-      "Primary sub-slot\n" "VAMOS secondary shadow subslot, range <0-1>, only valid for TCH type timeslots\n"</span><br><span style="color: hsl(0, 100%, 40%);">-       SS_NR_STR</span><br><span style="color: hsl(0, 100%, 40%);">-       "Manual Channel Activation (e.g. for BER test)\n"</span><br><span style="color: hsl(0, 100%, 40%);">-     "Manual Channel Activation, in VAMOS mode\n"</span><br><span style="color: hsl(0, 100%, 40%);">-  "Manual Channel Deactivation (e.g. for BER test)\n"</span><br><span style="color: hsl(0, 100%, 40%);">-   "Half-Rate v1\n" "Full-Rate\n" "Enhanced Full Rate\n" "Adaptive Multi-Rate\n" "Signalling\n" "AMR Mode\n")</span><br><span style="color: hsl(120, 100%, 40%);">+static int lchan_act_deact(struct vty *vty, const char **argv, int argc)</span><br><span> {</span><br><span>        struct gsm_bts_trx_ts *ts;</span><br><span>   struct gsm_lchan *lchan;</span><br><span>     bool vamos = (strcmp(argv[3], "vamos-sub-slot") == 0);</span><br><span>     int ss_nr = atoi(argv[4]);</span><br><span style="color: hsl(0, 100%, 40%);">-      const char *act_str = argv[5];</span><br><span style="color: hsl(0, 100%, 40%);">-  const char *codec_str = argv[6];</span><br><span style="color: hsl(120, 100%, 40%);">+      const char *act_str = NULL;</span><br><span style="color: hsl(120, 100%, 40%);">+   const char *codec_str = NULL;</span><br><span>        int activate;</span><br><span>        int amr_mode = -1;</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+        if (argc > 5)</span><br><span style="color: hsl(120, 100%, 40%);">+              act_str = argv[5];</span><br><span style="color: hsl(120, 100%, 40%);">+    if (argc > 6)</span><br><span style="color: hsl(120, 100%, 40%);">+              codec_str = argv[6];</span><br><span>         if (argc > 7)</span><br><span>             amr_mode = atoi(argv[7]);</span><br><span> </span><br><span>@@ -1744,16 +1742,43 @@</span><br><span> </span><br><span>  lchan = &ts->lchan[ss_nr];</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   if (!strcmp(act_str, "activate"))</span><br><span style="color: hsl(120, 100%, 40%);">+   if (!act_str)</span><br><span style="color: hsl(120, 100%, 40%);">+         activate = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+ else if (!strcmp(act_str, "activate"))</span><br><span>             activate = 1;</span><br><span>        else if (!strcmp(act_str, "activate-vamos"))</span><br><span>               activate = 2;</span><br><span>        else</span><br><span style="color: hsl(0, 100%, 40%);">-            activate = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+         return CMD_WARNING;</span><br><span> </span><br><span>      return lchan_act_single(vty, lchan, codec_str, amr_mode, activate);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/* Debug/Measurement command to activate a given logical channel</span><br><span style="color: hsl(120, 100%, 40%);">+ * manually in a given mode/codec.  This is useful for receiver</span><br><span style="color: hsl(120, 100%, 40%);">+ * performance testing (FER/RBER/...) */</span><br><span style="color: hsl(120, 100%, 40%);">+DEFUN(lchan_act, lchan_act_cmd,</span><br><span style="color: hsl(120, 100%, 40%);">+    "bts <0-255> trx <0-255> timeslot <0-7> (sub-slot|vamos-sub-slot) <0-7> (activate|activate-vamos) (hr|fr|efr|amr|sig) [<0-7>]",</span><br><span style="color: hsl(120, 100%, 40%);">+       BTS_NR_TRX_TS_STR2</span><br><span style="color: hsl(120, 100%, 40%);">+    "Primary sub-slot\n" "VAMOS secondary shadow subslot, range <0-1>, only valid for TCH type timeslots\n"</span><br><span style="color: hsl(120, 100%, 40%);">+     SS_NR_STR</span><br><span style="color: hsl(120, 100%, 40%);">+     "Manual Channel Activation (e.g. for BER test)\n"</span><br><span style="color: hsl(120, 100%, 40%);">+   "Manual Channel Activation, in VAMOS mode\n"</span><br><span style="color: hsl(120, 100%, 40%);">+        "Half-Rate v1\n" "Full-Rate\n" "Enhanced Full Rate\n" "Adaptive Multi-Rate\n" "Signalling\n" "AMR Mode\n")</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+     return lchan_act_deact(vty, argv, argc);</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%);">+DEFUN(lchan_deact, lchan_deact_cmd,</span><br><span style="color: hsl(120, 100%, 40%);">+    "bts <0-255> trx <0-255> timeslot <0-7> (sub-slot|vamos-sub-slot) <0-7> deactivate",</span><br><span style="color: hsl(120, 100%, 40%);">+        BTS_NR_TRX_TS_STR2</span><br><span style="color: hsl(120, 100%, 40%);">+    "Primary sub-slot\n" "VAMOS secondary shadow subslot, range <0-1>, only valid for TCH type timeslots\n"</span><br><span style="color: hsl(120, 100%, 40%);">+     SS_NR_STR</span><br><span style="color: hsl(120, 100%, 40%);">+     "Manual Channel Deactivation (e.g. for BER test)\n")</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+     return lchan_act_deact(vty, argv, argc);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> #define ACTIVATE_ALL_LCHANS_STR "Manual Channel Activation of all logical channels (e.g. for BER test)\n"</span><br><span> #define DEACTIVATE_ALL_LCHANS_STR "Manual Channel Deactivation of all logical channels (e.g. for BER test)\n"</span><br><span> </span><br><span>@@ -3365,6 +3390,7 @@</span><br><span>  install_element(ENABLE_NODE, &bts_c0_power_red_cmd);</span><br><span>     install_element(ENABLE_NODE, &pdch_act_cmd);</span><br><span>     install_element(ENABLE_NODE, &lchan_act_cmd);</span><br><span style="color: hsl(120, 100%, 40%);">+     install_element(ENABLE_NODE, &lchan_deact_cmd);</span><br><span>  install_element(ENABLE_NODE, &lchan_act_all_cmd);</span><br><span>        install_element(ENABLE_NODE, &lchan_act_all_bts_cmd);</span><br><span>    install_element(ENABLE_NODE, &lchan_act_all_trx_cmd);</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-bsc/+/25039">change 25039</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-bsc/+/25039"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-bsc </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: Ibdeca3b1d75b9f6092f566544e9d5f4da67fffce </div>
<div style="display:none"> Gerrit-Change-Number: 25039 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: neels <nhofmeyr@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>