<p>dexter has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-bts/+/20318">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">vty: add attributes to VTY commands indicating when they apply<br><br>Change-Id: Ifcdfcd157e5067fa2e4296d7c7e93a74087f49ff<br>Related: SYS#4937, OS#1601<br>---<br>M include/osmo-bts/vty.h<br>M src/common/vty.c<br>M src/osmo-bts-trx/trx_vty.c<br>3 files changed, 201 insertions(+), 151 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/18/20318/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/include/osmo-bts/vty.h b/include/osmo-bts/vty.h</span><br><span>index 8eb76a8..b6e3f0d 100644</span><br><span>--- a/include/osmo-bts/vty.h</span><br><span>+++ b/include/osmo-bts/vty.h</span><br><span>@@ -28,4 +28,10 @@</span><br><span> </span><br><span> extern struct vty_app_info bts_vty_info;</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+enum bts_vty_cmd_attr {</span><br><span style="color: hsl(120, 100%, 40%);">+    BTS_VTY_ATTR_NEW_LCHAN,</span><br><span style="color: hsl(120, 100%, 40%);">+       BTS_VTY_TRX_POWERCYCLE,</span><br><span style="color: hsl(120, 100%, 40%);">+       /* NOTE: up to 32 entries */</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> #endif</span><br><span>diff --git a/src/common/vty.c b/src/common/vty.c</span><br><span>index d5993d6..c5d37f1 100644</span><br><span>--- a/src/common/vty.c</span><br><span>+++ b/src/common/vty.c</span><br><span>@@ -66,6 +66,8 @@</span><br><span> #define BTS_TRX_TS_STR BTS_TRX_STR TS_NR_STR</span><br><span> #define BTS_TRX_TS_LCHAN_STR BTS_TRX_TS_STR LCHAN_NR_STR</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+#define X(x) (1 << x)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> int g_vty_port_num = OSMO_VTY_PORT_BTS;</span><br><span> </span><br><span> struct phy_instance *vty_get_phy_instance(struct vty *vty, int phy_nr, int inst_nr)</span><br><span>@@ -137,6 +139,16 @@</span><br><span>    .copyright      = osmobts_copyright,</span><br><span>         .go_parent_cb   = bts_vty_go_parent,</span><br><span>         .is_config_node = bts_vty_is_config_node,</span><br><span style="color: hsl(120, 100%, 40%);">+     .usr_attr_desc  = {</span><br><span style="color: hsl(120, 100%, 40%);">+           [BTS_VTY_ATTR_NEW_LCHAN] = \</span><br><span style="color: hsl(120, 100%, 40%);">+                  "This command applies for newly created lchans",</span><br><span style="color: hsl(120, 100%, 40%);">+            [BTS_VTY_TRX_POWERCYCLE] = \</span><br><span style="color: hsl(120, 100%, 40%);">+                  "This command applies when the TRX powercycles or restarts",</span><br><span style="color: hsl(120, 100%, 40%);">+        },</span><br><span style="color: hsl(120, 100%, 40%);">+    .usr_attr_letters = {</span><br><span style="color: hsl(120, 100%, 40%);">+         [BTS_VTY_ATTR_NEW_LCHAN] = 'N',</span><br><span style="color: hsl(120, 100%, 40%);">+               [BTS_VTY_TRX_POWERCYCLE] = 'T',</span><br><span style="color: hsl(120, 100%, 40%);">+       },</span><br><span> };</span><br><span> </span><br><span> extern struct gsm_network bts_gsmnet;</span><br><span>@@ -178,10 +190,10 @@</span><br><span>        return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-DEFUN(cfg_bts_trx, cfg_bts_trx_cmd,</span><br><span style="color: hsl(0, 100%, 40%);">- "trx <0-254>",</span><br><span style="color: hsl(0, 100%, 40%);">-  "Select a TRX to configure\n" "TRX number\n")</span><br><span style="color: hsl(120, 100%, 40%);">+DEFUN_ATTR(cfg_bts_trx, cfg_bts_trx_cmd,</span><br><span style="color: hsl(120, 100%, 40%);">+      "trx <0-254>",</span><br><span style="color: hsl(120, 100%, 40%);">+        "Select a TRX to configure\n" "TRX number\n",</span><br><span style="color: hsl(120, 100%, 40%);">+     CMD_ATTR_IMMEDIATE)</span><br><span> {</span><br><span>  int trx_nr = atoi(argv[0]);</span><br><span>  struct gsm_bts *bts = vty->index;</span><br><span>@@ -360,11 +372,12 @@</span><br><span> }</span><br><span> </span><br><span> /* per-BTS configuration */</span><br><span style="color: hsl(0, 100%, 40%);">-DEFUN(cfg_bts,</span><br><span style="color: hsl(0, 100%, 40%);">-      cfg_bts_cmd,</span><br><span style="color: hsl(0, 100%, 40%);">-      "bts BTS_NR",</span><br><span style="color: hsl(0, 100%, 40%);">-      "Select a BTS to configure\n"</span><br><span style="color: hsl(0, 100%, 40%);">-  "BTS Number\n")</span><br><span style="color: hsl(120, 100%, 40%);">+DEFUN_ATTR(cfg_bts,</span><br><span style="color: hsl(120, 100%, 40%);">+           cfg_bts_cmd,</span><br><span style="color: hsl(120, 100%, 40%);">+          "bts BTS_NR",</span><br><span style="color: hsl(120, 100%, 40%);">+       "Select a BTS to configure\n"</span><br><span style="color: hsl(120, 100%, 40%);">+       "BTS Number\n",</span><br><span style="color: hsl(120, 100%, 40%);">+     CMD_ATTR_IMMEDIATE)</span><br><span> {</span><br><span>  struct gsm_network *gsmnet = gsmnet_from_vty(vty);</span><br><span>   int bts_nr = atoi(argv[0]);</span><br><span>@@ -457,10 +470,11 @@</span><br><span>  return CMD_WARNING;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-DEFUN(cfg_bts_rtp_jitbuf,</span><br><span style="color: hsl(0, 100%, 40%);">-   cfg_bts_rtp_jitbuf_cmd,</span><br><span style="color: hsl(0, 100%, 40%);">- "rtp jitter-buffer <0-10000> [adaptive]",</span><br><span style="color: hsl(0, 100%, 40%);">-       RTP_STR "RTP jitter buffer\n" "jitter buffer in ms\n")</span><br><span style="color: hsl(120, 100%, 40%);">+DEFUN_USRATTR(cfg_bts_rtp_jitbuf,</span><br><span style="color: hsl(120, 100%, 40%);">+       cfg_bts_rtp_jitbuf_cmd,</span><br><span style="color: hsl(120, 100%, 40%);">+       X(BTS_VTY_ATTR_NEW_LCHAN),</span><br><span style="color: hsl(120, 100%, 40%);">+            "rtp jitter-buffer <0-10000> [adaptive]",</span><br><span style="color: hsl(120, 100%, 40%);">+             RTP_STR "RTP jitter buffer\n" "jitter buffer in ms\n")</span><br><span> {</span><br><span>        struct gsm_bts *bts = vty->index;</span><br><span> </span><br><span>@@ -508,10 +522,11 @@</span><br><span>     return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-DEFUN(cfg_bts_rtp_ip_dscp,</span><br><span style="color: hsl(0, 100%, 40%);">-  cfg_bts_rtp_ip_dscp_cmd,</span><br><span style="color: hsl(0, 100%, 40%);">-        "rtp ip-dscp <0-63>",</span><br><span style="color: hsl(0, 100%, 40%);">-   RTP_STR "Specify DSCP for RTP/IP packets\n" "The DSCP value (upper 6 bits of TOS)\n")</span><br><span style="color: hsl(120, 100%, 40%);">+DEFUN_USRATTR(cfg_bts_rtp_ip_dscp,</span><br><span style="color: hsl(120, 100%, 40%);">+       cfg_bts_rtp_ip_dscp_cmd,</span><br><span style="color: hsl(120, 100%, 40%);">+              X(BTS_VTY_ATTR_NEW_LCHAN),</span><br><span style="color: hsl(120, 100%, 40%);">+            "rtp ip-dscp <0-63>",</span><br><span style="color: hsl(120, 100%, 40%);">+         RTP_STR "Specify DSCP for RTP/IP packets\n" "The DSCP value (upper 6 bits of TOS)\n")</span><br><span> {</span><br><span>         struct gsm_bts *bts = vty->index;</span><br><span>         int dscp = atoi(argv[0]);</span><br><span>@@ -523,11 +538,12 @@</span><br><span> </span><br><span> #define PAG_STR "Paging related parameters\n"</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-DEFUN(cfg_bts_paging_queue_size,</span><br><span style="color: hsl(0, 100%, 40%);">-    cfg_bts_paging_queue_size_cmd,</span><br><span style="color: hsl(0, 100%, 40%);">-  "paging queue-size <1-1024>",</span><br><span style="color: hsl(0, 100%, 40%);">-   PAG_STR "Maximum length of BTS-internal paging queue\n"</span><br><span style="color: hsl(0, 100%, 40%);">-               "Maximum length of BTS-internal paging queue\n")</span><br><span style="color: hsl(120, 100%, 40%);">+DEFUN_ATTR(cfg_bts_paging_queue_size,</span><br><span style="color: hsl(120, 100%, 40%);">+        cfg_bts_paging_queue_size_cmd,</span><br><span style="color: hsl(120, 100%, 40%);">+        "paging queue-size <1-1024>",</span><br><span style="color: hsl(120, 100%, 40%);">+         PAG_STR "Maximum length of BTS-internal paging queue\n"</span><br><span style="color: hsl(120, 100%, 40%);">+     "Maximum length of BTS-internal paging queue\n",</span><br><span style="color: hsl(120, 100%, 40%);">+    CMD_ATTR_IMMEDIATE)</span><br><span> {</span><br><span>  struct gsm_bts *bts = vty->index;</span><br><span> </span><br><span>@@ -536,11 +552,12 @@</span><br><span>     return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-DEFUN(cfg_bts_paging_lifetime,</span><br><span style="color: hsl(0, 100%, 40%);">-      cfg_bts_paging_lifetime_cmd,</span><br><span style="color: hsl(0, 100%, 40%);">-    "paging lifetime <0-60>",</span><br><span style="color: hsl(0, 100%, 40%);">-       PAG_STR "Maximum lifetime of a paging record\n"</span><br><span style="color: hsl(0, 100%, 40%);">-               "Maximum lifetime of a paging record (secods)\n")</span><br><span style="color: hsl(120, 100%, 40%);">+DEFUN_ATTR(cfg_bts_paging_lifetime,</span><br><span style="color: hsl(120, 100%, 40%);">+         cfg_bts_paging_lifetime_cmd,</span><br><span style="color: hsl(120, 100%, 40%);">+          "paging lifetime <0-60>",</span><br><span style="color: hsl(120, 100%, 40%);">+     PAG_STR "Maximum lifetime of a paging record\n"</span><br><span style="color: hsl(120, 100%, 40%);">+     "Maximum lifetime of a paging record (secods)\n",</span><br><span style="color: hsl(120, 100%, 40%);">+           CMD_ATTR_IMMEDIATE)</span><br><span> {</span><br><span>  struct gsm_bts *bts = vty->index;</span><br><span> </span><br><span>@@ -551,13 +568,14 @@</span><br><span> </span><br><span> #define AGCH_QUEUE_STR "AGCH queue mgmt\n"</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-DEFUN(cfg_bts_agch_queue_mgmt_params,</span><br><span style="color: hsl(0, 100%, 40%);">-   cfg_bts_agch_queue_mgmt_params_cmd,</span><br><span style="color: hsl(0, 100%, 40%);">-     "agch-queue-mgmt threshold <0-100> low <0-100> high <0-100000>",</span><br><span style="color: hsl(0, 100%, 40%);">-    AGCH_QUEUE_STR</span><br><span style="color: hsl(0, 100%, 40%);">-  "Threshold to start cleanup\nin %% of the maximum queue length\n"</span><br><span style="color: hsl(0, 100%, 40%);">-     "Low water mark for cleanup\nin %% of the maximum queue length\n"</span><br><span style="color: hsl(0, 100%, 40%);">-     "High water mark for cleanup\nin %% of the maximum queue length\n")</span><br><span style="color: hsl(120, 100%, 40%);">+DEFUN_ATTR(cfg_bts_agch_queue_mgmt_params,</span><br><span style="color: hsl(120, 100%, 40%);">+        cfg_bts_agch_queue_mgmt_params_cmd,</span><br><span style="color: hsl(120, 100%, 40%);">+           "agch-queue-mgmt threshold <0-100> low <0-100> high <0-100000>",</span><br><span style="color: hsl(120, 100%, 40%);">+          AGCH_QUEUE_STR</span><br><span style="color: hsl(120, 100%, 40%);">+        "Threshold to start cleanup\nin %% of the maximum queue length\n"</span><br><span style="color: hsl(120, 100%, 40%);">+           "Low water mark for cleanup\nin %% of the maximum queue length\n"</span><br><span style="color: hsl(120, 100%, 40%);">+           "High water mark for cleanup\nin %% of the maximum queue length\n",</span><br><span style="color: hsl(120, 100%, 40%);">+         CMD_ATTR_IMMEDIATE)</span><br><span> {</span><br><span>  struct gsm_bts *bts = vty->index;</span><br><span> </span><br><span>@@ -568,11 +586,12 @@</span><br><span>     return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-DEFUN(cfg_bts_agch_queue_mgmt_default,</span><br><span style="color: hsl(0, 100%, 40%);">-      cfg_bts_agch_queue_mgmt_default_cmd,</span><br><span style="color: hsl(0, 100%, 40%);">-    "agch-queue-mgmt default",</span><br><span style="color: hsl(0, 100%, 40%);">-    AGCH_QUEUE_STR</span><br><span style="color: hsl(0, 100%, 40%);">-  "Reset clean parameters to default values\n")</span><br><span style="color: hsl(120, 100%, 40%);">+DEFUN_ATTR(cfg_bts_agch_queue_mgmt_default,</span><br><span style="color: hsl(120, 100%, 40%);">+     cfg_bts_agch_queue_mgmt_default_cmd,</span><br><span style="color: hsl(120, 100%, 40%);">+          "agch-queue-mgmt default",</span><br><span style="color: hsl(120, 100%, 40%);">+          AGCH_QUEUE_STR</span><br><span style="color: hsl(120, 100%, 40%);">+        "Reset clean parameters to default values\n",</span><br><span style="color: hsl(120, 100%, 40%);">+       CMD_ATTR_IMMEDIATE)</span><br><span> {</span><br><span>  struct gsm_bts *bts = vty->index;</span><br><span> </span><br><span>@@ -583,10 +602,11 @@</span><br><span>     return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-DEFUN(cfg_bts_ul_power_target, cfg_bts_ul_power_target_cmd,</span><br><span style="color: hsl(0, 100%, 40%);">- "uplink-power-target <-110-0>",</span><br><span style="color: hsl(0, 100%, 40%);">- "Set the nominal target Rx Level for uplink power control loop\n"</span><br><span style="color: hsl(0, 100%, 40%);">-     "Target uplink Rx level in dBm\n")</span><br><span style="color: hsl(120, 100%, 40%);">+DEFUN_ATTR(cfg_bts_ul_power_target, cfg_bts_ul_power_target_cmd,</span><br><span style="color: hsl(120, 100%, 40%);">+           "uplink-power-target <-110-0>",</span><br><span style="color: hsl(120, 100%, 40%);">+       "Set the nominal target Rx Level for uplink power control loop\n"</span><br><span style="color: hsl(120, 100%, 40%);">+           "Target uplink Rx level in dBm\n",</span><br><span style="color: hsl(120, 100%, 40%);">+          CMD_ATTR_IMMEDIATE)</span><br><span> {</span><br><span>  struct gsm_bts *bts = vty->index;</span><br><span> </span><br><span>@@ -595,10 +615,11 @@</span><br><span>     return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-DEFUN(cfg_bts_min_qual_rach, cfg_bts_min_qual_rach_cmd,</span><br><span style="color: hsl(0, 100%, 40%);">-     "min-qual-rach <-100-100>",</span><br><span style="color: hsl(0, 100%, 40%);">-     "Set the minimum link quality level of Access Bursts to be accepted\n"</span><br><span style="color: hsl(0, 100%, 40%);">-        "C/I (Carrier-to-Interference) ratio in centiBels (10e-2 B or 10e-1 dB)\n")</span><br><span style="color: hsl(120, 100%, 40%);">+DEFUN_ATTR(cfg_bts_min_qual_rach, cfg_bts_min_qual_rach_cmd,</span><br><span style="color: hsl(120, 100%, 40%);">+      "min-qual-rach <-100-100>",</span><br><span style="color: hsl(120, 100%, 40%);">+           "Set the minimum link quality level of Access Bursts to be accepted\n"</span><br><span style="color: hsl(120, 100%, 40%);">+      "C/I (Carrier-to-Interference) ratio in centiBels (10e-2 B or 10e-1 dB)\n",</span><br><span style="color: hsl(120, 100%, 40%);">+         CMD_ATTR_IMMEDIATE)</span><br><span> {</span><br><span>  struct gsm_bts *bts = vty->index;</span><br><span> </span><br><span>@@ -607,10 +628,11 @@</span><br><span>     return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-DEFUN(cfg_bts_min_qual_norm, cfg_bts_min_qual_norm_cmd,</span><br><span style="color: hsl(0, 100%, 40%);">-     "min-qual-norm <-100-100>",</span><br><span style="color: hsl(0, 100%, 40%);">-     "Set the minimum link quality level of Normal Bursts to be accepted\n"</span><br><span style="color: hsl(0, 100%, 40%);">-        "C/I (Carrier-to-Interference) ratio in centiBels (10e-2 B or 10e-1 dB)\n")</span><br><span style="color: hsl(120, 100%, 40%);">+DEFUN_ATTR(cfg_bts_min_qual_norm, cfg_bts_min_qual_norm_cmd,</span><br><span style="color: hsl(120, 100%, 40%);">+      "min-qual-norm <-100-100>",</span><br><span style="color: hsl(120, 100%, 40%);">+           "Set the minimum link quality level of Normal Bursts to be accepted\n"</span><br><span style="color: hsl(120, 100%, 40%);">+      "C/I (Carrier-to-Interference) ratio in centiBels (10e-2 B or 10e-1 dB)\n",</span><br><span style="color: hsl(120, 100%, 40%);">+         CMD_ATTR_IMMEDIATE)</span><br><span> {</span><br><span>  struct gsm_bts *bts = vty->index;</span><br><span> </span><br><span>@@ -619,10 +641,11 @@</span><br><span>     return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-DEFUN(cfg_bts_max_ber_rach, cfg_bts_max_ber_rach_cmd,</span><br><span style="color: hsl(0, 100%, 40%);">-       "max-ber10k-rach <0-10000>",</span><br><span style="color: hsl(0, 100%, 40%);">-    "Set the maximum BER for valid RACH requests\n"</span><br><span style="color: hsl(0, 100%, 40%);">-       "BER in 1/10000 units (0=no BER; 100=1% BER)\n")</span><br><span style="color: hsl(120, 100%, 40%);">+DEFUN_ATTR(cfg_bts_max_ber_rach, cfg_bts_max_ber_rach_cmd,</span><br><span style="color: hsl(120, 100%, 40%);">+           "max-ber10k-rach <0-10000>",</span><br><span style="color: hsl(120, 100%, 40%);">+          "Set the maximum BER for valid RACH requests\n"</span><br><span style="color: hsl(120, 100%, 40%);">+     "BER in 1/10000 units (0=no BER; 100=1% BER)\n",</span><br><span style="color: hsl(120, 100%, 40%);">+    CMD_ATTR_IMMEDIATE)</span><br><span> {</span><br><span>  struct gsm_bts *bts = vty->index;</span><br><span> </span><br><span>@@ -647,10 +670,11 @@</span><br><span>     return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-DEFUN(cfg_bts_supp_meas_toa256, cfg_bts_supp_meas_toa256_cmd,</span><br><span style="color: hsl(0, 100%, 40%);">-       "supp-meas-info toa256",</span><br><span style="color: hsl(0, 100%, 40%);">-      "Configure the RSL Supplementary Measurement Info\n"</span><br><span style="color: hsl(0, 100%, 40%);">-  "Report the TOA in 1/256th symbol periods\n")</span><br><span style="color: hsl(120, 100%, 40%);">+DEFUN_ATTR(cfg_bts_supp_meas_toa256, cfg_bts_supp_meas_toa256_cmd,</span><br><span style="color: hsl(120, 100%, 40%);">+      "supp-meas-info toa256",</span><br><span style="color: hsl(120, 100%, 40%);">+    "Configure the RSL Supplementary Measurement Info\n"</span><br><span style="color: hsl(120, 100%, 40%);">+        "Report the TOA in 1/256th symbol periods\n",</span><br><span style="color: hsl(120, 100%, 40%);">+       CMD_ATTR_IMMEDIATE)</span><br><span> {</span><br><span>  struct gsm_bts *bts = vty->index;</span><br><span> </span><br><span>@@ -658,10 +682,11 @@</span><br><span>     return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-DEFUN(cfg_bts_no_supp_meas_toa256, cfg_bts_no_supp_meas_toa256_cmd,</span><br><span style="color: hsl(0, 100%, 40%);">- "no supp-meas-info toa256",</span><br><span style="color: hsl(0, 100%, 40%);">-   NO_STR "Configure the RSL Supplementary Measurement Info\n"</span><br><span style="color: hsl(0, 100%, 40%);">-   "Report the TOA in 1/256th symbol periods\n")</span><br><span style="color: hsl(120, 100%, 40%);">+DEFUN_ATTR(cfg_bts_no_supp_meas_toa256, cfg_bts_no_supp_meas_toa256_cmd,</span><br><span style="color: hsl(120, 100%, 40%);">+        "no supp-meas-info toa256",</span><br><span style="color: hsl(120, 100%, 40%);">+         NO_STR "Configure the RSL Supplementary Measurement Info\n"</span><br><span style="color: hsl(120, 100%, 40%);">+         "Report the TOA in 1/256th symbol periods\n",</span><br><span style="color: hsl(120, 100%, 40%);">+       CMD_ATTR_IMMEDIATE)</span><br><span> {</span><br><span>  struct gsm_bts *bts = vty->index;</span><br><span> </span><br><span>@@ -669,27 +694,30 @@</span><br><span>     return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-DEFUN(cfg_bts_smscb_max_qlen, cfg_bts_smscb_max_qlen_cmd,</span><br><span style="color: hsl(0, 100%, 40%);">-   "smscb queue-max-length <1-60>",</span><br><span style="color: hsl(0, 100%, 40%);">-        "Maximum queue length for SMSCB (CBCH) queue. In count of messages/pages (Default: 15)")</span><br><span style="color: hsl(120, 100%, 40%);">+DEFUN_ATTR(cfg_bts_smscb_max_qlen, cfg_bts_smscb_max_qlen_cmd,</span><br><span style="color: hsl(120, 100%, 40%);">+       "smscb queue-max-length <1-60>",</span><br><span style="color: hsl(120, 100%, 40%);">+      "Maximum queue length for SMSCB (CBCH) queue. In count of messages/pages (Default: 15)",</span><br><span style="color: hsl(120, 100%, 40%);">+    CMD_ATTR_IMMEDIATE)</span><br><span> {</span><br><span>  struct gsm_bts *bts = vty->index;</span><br><span>         bts->smscb_queue_max_len = atoi(argv[0]);</span><br><span>         return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-DEFUN(cfg_bts_smscb_tgt_qlen, cfg_bts_smscb_tgt_qlen_cmd,</span><br><span style="color: hsl(0, 100%, 40%);">-   "smscb queue-target-length <1-30>",</span><br><span style="color: hsl(0, 100%, 40%);">-     "Target queue length for SMSCB (CBCH) queue. In count of messages/pages (Default: 2)")</span><br><span style="color: hsl(120, 100%, 40%);">+DEFUN_ATTR(cfg_bts_smscb_tgt_qlen, cfg_bts_smscb_tgt_qlen_cmd,</span><br><span style="color: hsl(120, 100%, 40%);">+         "smscb queue-target-length <1-30>",</span><br><span style="color: hsl(120, 100%, 40%);">+           "Target queue length for SMSCB (CBCH) queue. In count of messages/pages (Default: 2)",</span><br><span style="color: hsl(120, 100%, 40%);">+      CMD_ATTR_IMMEDIATE)</span><br><span> {</span><br><span>  struct gsm_bts *bts = vty->index;</span><br><span>         bts->smscb_queue_tgt_len = atoi(argv[0]);</span><br><span>         return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-DEFUN(cfg_bts_smscb_qhyst, cfg_bts_smscb_qhyst_cmd,</span><br><span style="color: hsl(0, 100%, 40%);">- "smscb queue-hysteresis <0-30>",</span><br><span style="color: hsl(0, 100%, 40%);">-        "Hysteresis for SMSCB (CBCH) queue. In count of messages/pages (Default: 2)")</span><br><span style="color: hsl(120, 100%, 40%);">+DEFUN_ATTR(cfg_bts_smscb_qhyst, cfg_bts_smscb_qhyst_cmd,</span><br><span style="color: hsl(120, 100%, 40%);">+        "smscb queue-hysteresis <0-30>",</span><br><span style="color: hsl(120, 100%, 40%);">+      "Hysteresis for SMSCB (CBCH) queue. In count of messages/pages (Default: 2)",</span><br><span style="color: hsl(120, 100%, 40%);">+       CMD_ATTR_IMMEDIATE)</span><br><span> {</span><br><span>  struct gsm_bts *bts = vty->index;</span><br><span>         bts->smscb_queue_hyst = atoi(argv[0]);</span><br><span>@@ -763,7 +791,7 @@</span><br><span> </span><br><span> DEFUN(cfg_trx_ms_power_control, cfg_trx_ms_power_control_cmd,</span><br><span>         "ms-power-control (dsp|osmo)",</span><br><span style="color: hsl(0, 100%, 40%);">-        "Mobile Station Power Level Control (change requires restart)\n"</span><br><span style="color: hsl(120, 100%, 40%);">+    "Mobile Station Power Level Control\n"</span><br><span>     "Handled by DSP\n" "Handled by OsmoBTS\n")</span><br><span> {</span><br><span>  struct gsm_bts_trx *trx = vty->index;</span><br><span>@@ -1474,9 +1502,10 @@</span><br><span>    1,</span><br><span> };</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-DEFUN(cfg_phy, cfg_phy_cmd,</span><br><span style="color: hsl(0, 100%, 40%);">- "phy <0-255>",</span><br><span style="color: hsl(0, 100%, 40%);">-  "Select a PHY to configure\n" "PHY number\n")</span><br><span style="color: hsl(120, 100%, 40%);">+DEFUN_ATTR(cfg_phy, cfg_phy_cmd,</span><br><span style="color: hsl(120, 100%, 40%);">+      "phy <0-255>",</span><br><span style="color: hsl(120, 100%, 40%);">+        "Select a PHY to configure\n" "PHY number\n",</span><br><span style="color: hsl(120, 100%, 40%);">+     CMD_ATTR_IMMEDIATE)</span><br><span> {</span><br><span>  int phy_nr = atoi(argv[0]);</span><br><span>  struct phy_link *plink;</span><br><span>@@ -1494,9 +1523,10 @@</span><br><span>     return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-DEFUN(cfg_phy_inst, cfg_phy_inst_cmd,</span><br><span style="color: hsl(0, 100%, 40%);">-       "instance <0-255>",</span><br><span style="color: hsl(0, 100%, 40%);">-     "Select a PHY instance to configure\n" "PHY Instance number\n")</span><br><span style="color: hsl(120, 100%, 40%);">+DEFUN_ATTR(cfg_phy_inst, cfg_phy_inst_cmd,</span><br><span style="color: hsl(120, 100%, 40%);">+          "instance <0-255>",</span><br><span style="color: hsl(120, 100%, 40%);">+           "Select a PHY instance to configure\n" "PHY Instance number\n",</span><br><span style="color: hsl(120, 100%, 40%);">+           CMD_ATTR_IMMEDIATE)</span><br><span> {</span><br><span>  int inst_nr = atoi(argv[0]);</span><br><span>         struct phy_link *plink = vty->index;</span><br><span>diff --git a/src/osmo-bts-trx/trx_vty.c b/src/osmo-bts-trx/trx_vty.c</span><br><span>index 6b8ca77..cb719ee 100644</span><br><span>--- a/src/osmo-bts-trx/trx_vty.c</span><br><span>+++ b/src/osmo-bts-trx/trx_vty.c</span><br><span>@@ -48,6 +48,8 @@</span><br><span> #include "trx_if.h"</span><br><span> #include "loops.h"</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+#define X(x) (1 << x)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> #define OSMOTRX_STR     "OsmoTRX Transceiver configuration\n"</span><br><span> </span><br><span> static struct gsm_bts *vty_bts;</span><br><span>@@ -160,10 +162,11 @@</span><br><span>       return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-DEFUN(cfg_trx_nominal_power, cfg_trx_nominal_power_cmd,</span><br><span style="color: hsl(0, 100%, 40%);">-     "nominal-tx-power <-10-100>",</span><br><span style="color: hsl(0, 100%, 40%);">-   "Manually set (force) the nominal transmit output power in dBm\n"</span><br><span style="color: hsl(0, 100%, 40%);">-     "Nominal transmit output power level in dBm\n")</span><br><span style="color: hsl(120, 100%, 40%);">+DEFUN_USRATTR(cfg_trx_nominal_power, cfg_trx_nominal_power_cmd,</span><br><span style="color: hsl(120, 100%, 40%);">+          X(BTS_VTY_TRX_POWERCYCLE),</span><br><span style="color: hsl(120, 100%, 40%);">+            "nominal-tx-power <-10-100>",</span><br><span style="color: hsl(120, 100%, 40%);">+         "Manually set (force) the nominal transmit output power in dBm\n"</span><br><span style="color: hsl(120, 100%, 40%);">+           "Nominal transmit output power level in dBm\n")</span><br><span> {</span><br><span>         struct gsm_bts_trx *trx = vty->index;</span><br><span>     struct phy_instance *pinst = trx_phy_instance(trx);</span><br><span>@@ -176,10 +179,11 @@</span><br><span>  return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-DEFUN(cfg_trx_no_nominal_power, cfg_trx_no_nominal_power_cmd,</span><br><span style="color: hsl(0, 100%, 40%);">-       "no nominal-tx-power",</span><br><span style="color: hsl(0, 100%, 40%);">-        NO_STR</span><br><span style="color: hsl(0, 100%, 40%);">-  "Manually set (force) the nominal transmit output power; ask the TRX instead (default)\n")</span><br><span style="color: hsl(120, 100%, 40%);">+DEFUN_USRATTR(cfg_trx_no_nominal_power, cfg_trx_no_nominal_power_cmd,</span><br><span style="color: hsl(120, 100%, 40%);">+         X(BTS_VTY_TRX_POWERCYCLE),</span><br><span style="color: hsl(120, 100%, 40%);">+            "no nominal-tx-power",</span><br><span style="color: hsl(120, 100%, 40%);">+              NO_STR</span><br><span style="color: hsl(120, 100%, 40%);">+        "Manually set (force) the nominal transmit output power; ask the TRX instead (default)\n")</span><br><span> {</span><br><span>      struct gsm_bts_trx *trx = vty->index;</span><br><span>     struct phy_instance *pinst = trx_phy_instance(trx);</span><br><span>@@ -228,17 +232,18 @@</span><br><span>  return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-DEFUN(cfg_phyinst_maxdly, cfg_phyinst_maxdly_cmd,</span><br><span style="color: hsl(0, 100%, 40%);">-   "osmotrx maxdly <0-31>",</span><br><span style="color: hsl(0, 100%, 40%);">-        OSMOTRX_STR</span><br><span style="color: hsl(0, 100%, 40%);">-     "Set the maximum acceptable delay of an Access Burst (in GSM symbols)."</span><br><span style="color: hsl(0, 100%, 40%);">-       " Access Burst is the first burst a mobile transmits in order to establish"</span><br><span style="color: hsl(0, 100%, 40%);">-   " a connection and it is used to estimate Timing Advance (TA) which is"</span><br><span style="color: hsl(0, 100%, 40%);">-       " then applied to Normal Bursts to compensate for signal delay due to"</span><br><span style="color: hsl(0, 100%, 40%);">-        " distance. So changing this setting effectively changes maximum range of"</span><br><span style="color: hsl(0, 100%, 40%);">-    " the cell, because if we receive an Access Burst with a delay higher than"</span><br><span style="color: hsl(0, 100%, 40%);">-   " this value, it will be ignored and connection is dropped.\n"</span><br><span style="color: hsl(0, 100%, 40%);">-        "GSM symbols (approx. 1.1km per symbol)\n")</span><br><span style="color: hsl(120, 100%, 40%);">+DEFUN_ATTR(cfg_phyinst_maxdly, cfg_phyinst_maxdly_cmd,</span><br><span style="color: hsl(120, 100%, 40%);">+    "osmotrx maxdly <0-31>",</span><br><span style="color: hsl(120, 100%, 40%);">+      OSMOTRX_STR</span><br><span style="color: hsl(120, 100%, 40%);">+           "Set the maximum acceptable delay of an Access Burst (in GSM symbols)."</span><br><span style="color: hsl(120, 100%, 40%);">+     " Access Burst is the first burst a mobile transmits in order to establish"</span><br><span style="color: hsl(120, 100%, 40%);">+         " a connection and it is used to estimate Timing Advance (TA) which is"</span><br><span style="color: hsl(120, 100%, 40%);">+     " then applied to Normal Bursts to compensate for signal delay due to"</span><br><span style="color: hsl(120, 100%, 40%);">+      " distance. So changing this setting effectively changes maximum range of"</span><br><span style="color: hsl(120, 100%, 40%);">+          " the cell, because if we receive an Access Burst with a delay higher than"</span><br><span style="color: hsl(120, 100%, 40%);">+         " this value, it will be ignored and connection is dropped.\n"</span><br><span style="color: hsl(120, 100%, 40%);">+      "GSM symbols (approx. 1.1km per symbol)\n",</span><br><span style="color: hsl(120, 100%, 40%);">+         CMD_ATTR_IMMEDIATE)</span><br><span> {</span><br><span>  struct phy_instance *pinst = vty->index;</span><br><span>  struct trx_l1h *l1h = pinst->u.osmotrx.hdl;</span><br><span>@@ -251,20 +256,20 @@</span><br><span>       return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-DEFUN(cfg_phyinst_maxdlynb, cfg_phyinst_maxdlynb_cmd,</span><br><span style="color: hsl(0, 100%, 40%);">-       "osmotrx maxdlynb <0-31>",</span><br><span style="color: hsl(0, 100%, 40%);">-      OSMOTRX_STR</span><br><span style="color: hsl(0, 100%, 40%);">-     "Set the maximum acceptable delay of a Normal Burst (in GSM symbols)."</span><br><span style="color: hsl(0, 100%, 40%);">-        " USE FOR TESTING ONLY, DON'T CHANGE IN PRODUCTION USE!"</span><br><span style="color: hsl(0, 100%, 40%);">-  " During normal operation, Normal Bursts delay are controlled by a Timing"</span><br><span style="color: hsl(0, 100%, 40%);">-    " Advance control loop and thus Normal Bursts arrive to a BTS with no more"</span><br><span style="color: hsl(0, 100%, 40%);">-   " than a couple GSM symbols, which is already taken into account in osmo-trx."</span><br><span style="color: hsl(0, 100%, 40%);">-        " So changing this setting will have no effect in production installations"</span><br><span style="color: hsl(0, 100%, 40%);">-   " except increasing osmo-trx CPU load. This setting is only useful when"</span><br><span style="color: hsl(0, 100%, 40%);">-      " testing with a transmitter which can't precisely synchronize to the BTS"</span><br><span style="color: hsl(0, 100%, 40%);">-        " downlink signal, like e.g. R&S CMD57.\n"</span><br><span style="color: hsl(0, 100%, 40%);">-        "GSM symbols (approx. 1.1km per symbol)\n")</span><br><span style="color: hsl(120, 100%, 40%);">+DEFUN_ATTR(cfg_phyinst_maxdlynb, cfg_phyinst_maxdlynb_cmd,</span><br><span style="color: hsl(120, 100%, 40%);">+        "osmotrx maxdlynb <0-31>",</span><br><span style="color: hsl(120, 100%, 40%);">+    OSMOTRX_STR</span><br><span style="color: hsl(120, 100%, 40%);">+           "Set the maximum acceptable delay of a Normal Burst (in GSM symbols)."</span><br><span style="color: hsl(120, 100%, 40%);">+      " USE FOR TESTING ONLY, DON'T CHANGE IN PRODUCTION USE!"</span><br><span style="color: hsl(120, 100%, 40%);">+        " During normal operation, Normal Bursts delay are controlled by a Timing"</span><br><span style="color: hsl(120, 100%, 40%);">+          " Advance control loop and thus Normal Bursts arrive to a BTS with no more"</span><br><span style="color: hsl(120, 100%, 40%);">+         " than a couple GSM symbols, which is already taken into account in osmo-trx."</span><br><span style="color: hsl(120, 100%, 40%);">+      " So changing this setting will have no effect in production installations"</span><br><span style="color: hsl(120, 100%, 40%);">+         " except increasing osmo-trx CPU load. This setting is only useful when"</span><br><span style="color: hsl(120, 100%, 40%);">+    " testing with a transmitter which can't precisely synchronize to the BTS"</span><br><span style="color: hsl(120, 100%, 40%);">+      " downlink signal, like e.g. R&S CMD57.\n"</span><br><span style="color: hsl(120, 100%, 40%);">+      "GSM symbols (approx. 1.1km per symbol)\n",</span><br><span style="color: hsl(120, 100%, 40%);">+         CMD_ATTR_IMMEDIATE)</span><br><span> {</span><br><span>  struct phy_instance *pinst = vty->index;</span><br><span>  struct trx_l1h *l1h = pinst->u.osmotrx.hdl;</span><br><span>@@ -319,12 +324,13 @@</span><br><span>       return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-DEFUN(cfg_phy_fn_advance, cfg_phy_fn_advance_cmd,</span><br><span style="color: hsl(0, 100%, 40%);">-   "osmotrx fn-advance <0-30>",</span><br><span style="color: hsl(0, 100%, 40%);">-    OSMOTRX_STR</span><br><span style="color: hsl(0, 100%, 40%);">-     "Set the number of frames to be transmitted to transceiver in advance "</span><br><span style="color: hsl(0, 100%, 40%);">-       "of current FN\n"</span><br><span style="color: hsl(0, 100%, 40%);">-     "Advance in frames\n")</span><br><span style="color: hsl(120, 100%, 40%);">+DEFUN_ATTR(cfg_phy_fn_advance, cfg_phy_fn_advance_cmd,</span><br><span style="color: hsl(120, 100%, 40%);">+         "osmotrx fn-advance <0-30>",</span><br><span style="color: hsl(120, 100%, 40%);">+          OSMOTRX_STR</span><br><span style="color: hsl(120, 100%, 40%);">+           "Set the number of frames to be transmitted to transceiver in advance "</span><br><span style="color: hsl(120, 100%, 40%);">+     "of current FN\n"</span><br><span style="color: hsl(120, 100%, 40%);">+           "Advance in frames\n",</span><br><span style="color: hsl(120, 100%, 40%);">+      CMD_ATTR_IMMEDIATE)</span><br><span> {</span><br><span>  struct phy_link *plink = vty->index;</span><br><span> </span><br><span>@@ -333,12 +339,13 @@</span><br><span>  return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-DEFUN(cfg_phy_rts_advance, cfg_phy_rts_advance_cmd,</span><br><span style="color: hsl(0, 100%, 40%);">- "osmotrx rts-advance <0-30>",</span><br><span style="color: hsl(0, 100%, 40%);">-   OSMOTRX_STR</span><br><span style="color: hsl(0, 100%, 40%);">-     "Set the number of frames to be requested (PCU) in advance of current "</span><br><span style="color: hsl(0, 100%, 40%);">-       "FN. Do not change this, unless you have a good reason!\n"</span><br><span style="color: hsl(0, 100%, 40%);">-    "Advance in frames\n")</span><br><span style="color: hsl(120, 100%, 40%);">+DEFUN_ATTR(cfg_phy_rts_advance, cfg_phy_rts_advance_cmd,</span><br><span style="color: hsl(120, 100%, 40%);">+       "osmotrx rts-advance <0-30>",</span><br><span style="color: hsl(120, 100%, 40%);">+         OSMOTRX_STR</span><br><span style="color: hsl(120, 100%, 40%);">+           "Set the number of frames to be requested (PCU) in advance of current "</span><br><span style="color: hsl(120, 100%, 40%);">+     "FN. Do not change this, unless you have a good reason!\n"</span><br><span style="color: hsl(120, 100%, 40%);">+          "Advance in frames\n",</span><br><span style="color: hsl(120, 100%, 40%);">+      CMD_ATTR_IMMEDIATE)</span><br><span> {</span><br><span>  struct phy_link *plink = vty->index;</span><br><span> </span><br><span>@@ -347,11 +354,12 @@</span><br><span>  return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-DEFUN(cfg_phyinst_rxgain, cfg_phyinst_rxgain_cmd,</span><br><span style="color: hsl(0, 100%, 40%);">-   "osmotrx rx-gain <0-50>",</span><br><span style="color: hsl(0, 100%, 40%);">-       OSMOTRX_STR</span><br><span style="color: hsl(0, 100%, 40%);">-     "Set the receiver gain in dB\n"</span><br><span style="color: hsl(0, 100%, 40%);">-       "Gain in dB\n")</span><br><span style="color: hsl(120, 100%, 40%);">+DEFUN_ATTR(cfg_phyinst_rxgain, cfg_phyinst_rxgain_cmd,</span><br><span style="color: hsl(120, 100%, 40%);">+        "osmotrx rx-gain <0-50>",</span><br><span style="color: hsl(120, 100%, 40%);">+     OSMOTRX_STR</span><br><span style="color: hsl(120, 100%, 40%);">+           "Set the receiver gain in dB\n"</span><br><span style="color: hsl(120, 100%, 40%);">+     "Gain in dB\n",</span><br><span style="color: hsl(120, 100%, 40%);">+     CMD_ATTR_IMMEDIATE)</span><br><span> {</span><br><span>  struct phy_instance *pinst = vty->index;</span><br><span>  struct trx_l1h *l1h = pinst->u.osmotrx.hdl;</span><br><span>@@ -382,9 +390,10 @@</span><br><span>        return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-DEFUN(cfg_phyinst_no_rxgain, cfg_phyinst_no_rxgain_cmd,</span><br><span style="color: hsl(0, 100%, 40%);">-     "no osmotrx rx-gain",</span><br><span style="color: hsl(0, 100%, 40%);">- NO_STR OSMOTRX_STR "Unset the receiver gain in dB\n")</span><br><span style="color: hsl(120, 100%, 40%);">+DEFUN_USRATTR(cfg_phyinst_no_rxgain, cfg_phyinst_no_rxgain_cmd,</span><br><span style="color: hsl(120, 100%, 40%);">+            X(BTS_VTY_TRX_POWERCYCLE),</span><br><span style="color: hsl(120, 100%, 40%);">+            "no osmotrx rx-gain",</span><br><span style="color: hsl(120, 100%, 40%);">+       NO_STR OSMOTRX_STR "Unset the receiver gain in dB\n")</span><br><span> {</span><br><span>   struct phy_instance *pinst = vty->index;</span><br><span>  struct trx_l1h *l1h = pinst->u.osmotrx.hdl;</span><br><span>@@ -394,10 +403,11 @@</span><br><span>       return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-DEFUN(cfg_phyinst_no_maxdly, cfg_phyinst_no_maxdly_cmd,</span><br><span style="color: hsl(0, 100%, 40%);">-     "no osmotrx maxdly",</span><br><span style="color: hsl(0, 100%, 40%);">-  NO_STR OSMOTRX_STR</span><br><span style="color: hsl(0, 100%, 40%);">-      "Unset the maximum delay of GSM symbols\n")</span><br><span style="color: hsl(120, 100%, 40%);">+DEFUN_USRATTR(cfg_phyinst_no_maxdly, cfg_phyinst_no_maxdly_cmd,</span><br><span style="color: hsl(120, 100%, 40%);">+              X(BTS_VTY_TRX_POWERCYCLE),</span><br><span style="color: hsl(120, 100%, 40%);">+            "no osmotrx maxdly",</span><br><span style="color: hsl(120, 100%, 40%);">+        NO_STR OSMOTRX_STR</span><br><span style="color: hsl(120, 100%, 40%);">+            "Unset the maximum delay of GSM symbols\n")</span><br><span> {</span><br><span>     struct phy_instance *pinst = vty->index;</span><br><span>  struct trx_l1h *l1h = pinst->u.osmotrx.hdl;</span><br><span>@@ -407,10 +417,11 @@</span><br><span>       return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-DEFUN(cfg_phyinst_no_maxdlynb, cfg_phyinst_no_maxdlynb_cmd,</span><br><span style="color: hsl(0, 100%, 40%);">- "no osmotrx maxdlynb",</span><br><span style="color: hsl(0, 100%, 40%);">-        NO_STR OSMOTRX_STR</span><br><span style="color: hsl(0, 100%, 40%);">-      "Unset the maximum delay of GSM symbols\n")</span><br><span style="color: hsl(120, 100%, 40%);">+DEFUN_USRATTR(cfg_phyinst_no_maxdlynb, cfg_phyinst_no_maxdlynb_cmd,</span><br><span style="color: hsl(120, 100%, 40%);">+          X(BTS_VTY_TRX_POWERCYCLE),</span><br><span style="color: hsl(120, 100%, 40%);">+            "no osmotrx maxdlynb",</span><br><span style="color: hsl(120, 100%, 40%);">+              NO_STR OSMOTRX_STR</span><br><span style="color: hsl(120, 100%, 40%);">+            "Unset the maximum delay of GSM symbols\n")</span><br><span> {</span><br><span>     struct phy_instance *pinst = vty->index;</span><br><span>  struct trx_l1h *l1h = pinst->u.osmotrx.hdl;</span><br><span>@@ -467,9 +478,10 @@</span><br><span>        return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-DEFUN(cfg_phy_setbsic, cfg_phy_setbsic_cmd,</span><br><span style="color: hsl(0, 100%, 40%);">- "osmotrx legacy-setbsic", OSMOTRX_STR</span><br><span style="color: hsl(0, 100%, 40%);">- "Use SETBSIC to configure transceiver (use ONLY with OpenBTS Transceiver!)\n")</span><br><span style="color: hsl(120, 100%, 40%);">+DEFUN_USRATTR(cfg_phy_setbsic, cfg_phy_setbsic_cmd,</span><br><span style="color: hsl(120, 100%, 40%);">+       X(BTS_VTY_TRX_POWERCYCLE),</span><br><span style="color: hsl(120, 100%, 40%);">+            "osmotrx legacy-setbsic", OSMOTRX_STR</span><br><span style="color: hsl(120, 100%, 40%);">+       "Use SETBSIC to configure transceiver (use ONLY with OpenBTS Transceiver!)\n")</span><br><span> {</span><br><span>  struct phy_link *plink = vty->index;</span><br><span>      plink->u.osmotrx.use_legacy_setbsic = true;</span><br><span>@@ -481,9 +493,10 @@</span><br><span>        return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-DEFUN(cfg_phy_no_setbsic, cfg_phy_no_setbsic_cmd,</span><br><span style="color: hsl(0, 100%, 40%);">-   "no osmotrx legacy-setbsic",</span><br><span style="color: hsl(0, 100%, 40%);">-  NO_STR OSMOTRX_STR "Disable Legacy SETBSIC to configure transceiver\n")</span><br><span style="color: hsl(120, 100%, 40%);">+DEFUN_USRATTR(cfg_phy_no_setbsic, cfg_phy_no_setbsic_cmd,</span><br><span style="color: hsl(120, 100%, 40%);">+        X(BTS_VTY_TRX_POWERCYCLE),</span><br><span style="color: hsl(120, 100%, 40%);">+            "no osmotrx legacy-setbsic",</span><br><span style="color: hsl(120, 100%, 40%);">+        NO_STR OSMOTRX_STR "Disable Legacy SETBSIC to configure transceiver\n")</span><br><span> {</span><br><span>         struct phy_link *plink = vty->index;</span><br><span>      plink->u.osmotrx.use_legacy_setbsic = false;</span><br><span>@@ -491,11 +504,12 @@</span><br><span>      return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-DEFUN(cfg_phy_trxd_max_version, cfg_phy_trxd_max_version_cmd,</span><br><span style="color: hsl(0, 100%, 40%);">-       "osmotrx trxd-max-version (latest|<0-15>)", OSMOTRX_STR</span><br><span style="color: hsl(0, 100%, 40%);">- "Set maximum TRXD format version to negotiate with TRX\n"</span><br><span style="color: hsl(0, 100%, 40%);">-     "Use latest supported TRXD format version (default)\n"</span><br><span style="color: hsl(0, 100%, 40%);">-        "Maximum TRXD format version number\n")</span><br><span style="color: hsl(120, 100%, 40%);">+DEFUN_USRATTR(cfg_phy_trxd_max_version, cfg_phy_trxd_max_version_cmd,</span><br><span style="color: hsl(120, 100%, 40%);">+            X(BTS_VTY_TRX_POWERCYCLE),</span><br><span style="color: hsl(120, 100%, 40%);">+            "osmotrx trxd-max-version (latest|<0-15>)", OSMOTRX_STR</span><br><span style="color: hsl(120, 100%, 40%);">+       "Set maximum TRXD format version to negotiate with TRX\n"</span><br><span style="color: hsl(120, 100%, 40%);">+           "Use latest supported TRXD format version (default)\n"</span><br><span style="color: hsl(120, 100%, 40%);">+              "Maximum TRXD format version number\n")</span><br><span> {</span><br><span>         struct phy_link *plink = vty->index;</span><br><span> </span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-bts/+/20318">change 20318</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-bts/+/20318"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-bts </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: Ifcdfcd157e5067fa2e4296d7c7e93a74087f49ff </div>
<div style="display:none"> Gerrit-Change-Number: 20318 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: dexter <pmaier@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>