<p>javi-tic has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-bsc/+/23318">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">Add command to enable RX diversity to RBS2000<br>Allow  selection of RX diversity from VTY<br>options are a,ab,b default is a so there is no change<br>from previous behavior<br><br>Change-Id: I430762b8cfa51060841d90ba4446de73bd557c6c<br>---<br>M include/osmocom/bsc/abis_om2000.h<br>M include/osmocom/bsc/bts_trx.h<br>M src/osmo-bsc/abis_om2000.c<br>M src/osmo-bsc/abis_om2000_vty.c<br>M src/osmo-bsc/bts_ericsson_rbs2000.c<br>5 files changed, 63 insertions(+), 2 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/18/23318/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/include/osmocom/bsc/abis_om2000.h b/include/osmocom/bsc/abis_om2000.h</span><br><span>index 51ec11b..ee03583 100644</span><br><span>--- a/include/osmocom/bsc/abis_om2000.h</span><br><span>+++ b/include/osmocom/bsc/abis_om2000.h</span><br><span>@@ -48,6 +48,12 @@</span><br><span>       OM2K_SYNC_SRC_EXTERNAL  = 0x01,</span><br><span> };</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+enum om2k_rx_diversity {</span><br><span style="color: hsl(120, 100%, 40%);">+   OM2K_RX_DIVERSITY_A     = 0x02,</span><br><span style="color: hsl(120, 100%, 40%);">+       OM2K_RX_DIVERSITY_AB    = 0x03,</span><br><span style="color: hsl(120, 100%, 40%);">+       OM2K_RX_DIVERSITY_B     = 0x01,</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /* on-wire format for IS conn group */</span><br><span> struct om2k_is_conn_grp {</span><br><span>         uint16_t icp1;</span><br><span>@@ -151,6 +157,7 @@</span><br><span> </span><br><span> struct vty;</span><br><span> void abis_om2k_config_write_bts(struct vty *vty, struct gsm_bts *bts);</span><br><span style="color: hsl(120, 100%, 40%);">+void abis_om2k_config_write_trx(struct vty *vty, struct gsm_bts_trx *trx);</span><br><span> </span><br><span> const char *abis_om2k_mo_name(const struct abis_om2k_mo *mo);</span><br><span> </span><br><span>diff --git a/include/osmocom/bsc/bts_trx.h b/include/osmocom/bsc/bts_trx.h</span><br><span>index 85adc9b..998ed7a 100644</span><br><span>--- a/include/osmocom/bsc/bts_trx.h</span><br><span>+++ b/include/osmocom/bsc/bts_trx.h</span><br><span>@@ -76,6 +76,7 @@</span><br><span>                  struct {</span><br><span>                             struct om2k_mo om2k_mo;</span><br><span>                      } tx;</span><br><span style="color: hsl(120, 100%, 40%);">+                 int rx_diversity;</span><br><span>            } rbs2000;</span><br><span>   };</span><br><span>   struct gsm_bts_trx_ts ts[TRX_NR_TS];</span><br><span>diff --git a/src/osmo-bsc/abis_om2000.c b/src/osmo-bsc/abis_om2000.c</span><br><span>index edcf8cf..61db437 100644</span><br><span>--- a/src/osmo-bsc/abis_om2000.c</span><br><span>+++ b/src/osmo-bsc/abis_om2000.c</span><br><span>@@ -1344,7 +1344,7 @@</span><br><span> </span><br><span>        /* OM2K_DEI_FREQ_SPEC_RX: Using trx_nr as "RX address" only works for single MCTR case */</span><br><span>  msgb_tv16_put(msg, OM2K_DEI_FREQ_SPEC_RX, 0x8000 | ((uint16_t)trx->nr << 10));</span><br><span style="color: hsl(0, 100%, 40%);">- msgb_tv_put(msg, OM2K_DEI_RX_DIVERSITY, 0x02); /* A */</span><br><span style="color: hsl(120, 100%, 40%);">+        msgb_tv_put(msg, OM2K_DEI_RX_DIVERSITY, trx->rbs2000.rx_diversity);</span><br><span> </span><br><span>   return abis_om2k_sendmsg(trx->bts, msg);</span><br><span> }</span><br><span>@@ -1518,7 +1518,7 @@</span><br><span>     msgb_tv_put(msg, OM2K_DEI_HSN, ts->hopping.hsn);</span><br><span>  msgb_tv_put(msg, OM2K_DEI_MAIO, ts->hopping.maio);</span><br><span>        msgb_tv_put(msg, OM2K_DEI_BSIC, ts->trx->bts->bsic);</span><br><span style="color: hsl(0, 100%, 40%);">-   msgb_tv_put(msg, OM2K_DEI_RX_DIVERSITY, 0x02); /* A */</span><br><span style="color: hsl(120, 100%, 40%);">+        msgb_tv_put(msg, OM2K_DEI_RX_DIVERSITY, ts->trx->rbs2000.rx_diversity);</span><br><span>        msgb_tv16_put(msg, OM2K_DEI_FN_OFFSET, 0);</span><br><span>   msgb_tv_put(msg, OM2K_DEI_EXT_RANGE, 0); /* Off */</span><br><span>   /* Optional: Interference Rejection Combining */</span><br><span>@@ -3076,6 +3076,7 @@</span><br><span> </span><br><span>         trx_fi = om2k_trx_fsm_alloc(trx->bts->rbs2000.bts_fi, trx, OM2K_BTS_EVT_TRX_DONE);</span><br><span>     trx->rbs2000.trx_fi = trx_fi;</span><br><span style="color: hsl(120, 100%, 40%);">+      trx->rbs2000.rx_diversity = OM2K_RX_DIVERSITY_A;</span><br><span> </span><br><span>      om2k_mo_init(&trx->rbs2000.trxc.om2k_mo, OM2K_MO_CLS_TRXC, bts->nr, 255, trx->nr);</span><br><span>      om2k_mo_fsm_alloc(trx_fi, OM2K_TRX_EVT_TRXC_DONE, trx, &trx->rbs2000.trxc.om2k_mo);</span><br><span>diff --git a/src/osmo-bsc/abis_om2000_vty.c b/src/osmo-bsc/abis_om2000_vty.c</span><br><span>index 7909fc7..7050fc5 100644</span><br><span>--- a/src/osmo-bsc/abis_om2000_vty.c</span><br><span>+++ b/src/osmo-bsc/abis_om2000_vty.c</span><br><span>@@ -574,6 +574,32 @@</span><br><span>       return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+DEFUN_USRATTR(cfg_trx_om2k_rx_diversity,</span><br><span style="color: hsl(120, 100%, 40%);">+                  cfg_trx_om2k_rx_diversity_cmd,</span><br><span style="color: hsl(120, 100%, 40%);">+                X(BSC_VTY_ATTR_RESTART_ABIS_RSL_LINK),</span><br><span style="color: hsl(120, 100%, 40%);">+                "om2000 rx-diversity-mode (a|ab|b)",</span><br><span style="color: hsl(120, 100%, 40%);">+                OM2K_VTY_HELP</span><br><span style="color: hsl(120, 100%, 40%);">+                 "RX Diversity\n"</span><br><span style="color: hsl(120, 100%, 40%);">+            "Antenna TX/RX (A)\n"</span><br><span style="color: hsl(120, 100%, 40%);">+               "Antenna RX (B)\n"</span><br><span style="color: hsl(120, 100%, 40%);">+                  "Both\n")</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+      struct gsm_bts_trx *trx = vty->index;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    if (trx->bts->type != GSM_BTS_TYPE_RBS2000) {</span><br><span style="color: hsl(120, 100%, 40%);">+           vty_out(vty, "%% Command only works for RBS2000%s",</span><br><span style="color: hsl(120, 100%, 40%);">+                 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 style="color: hsl(120, 100%, 40%);">+   if (!strcmp(argv[0], "a"))</span><br><span style="color: hsl(120, 100%, 40%);">+          trx->rbs2000.rx_diversity = OM2K_RX_DIVERSITY_A;</span><br><span style="color: hsl(120, 100%, 40%);">+   if (!strcmp(argv[0], "ab"))</span><br><span style="color: hsl(120, 100%, 40%);">+         trx->rbs2000.rx_diversity = OM2K_RX_DIVERSITY_AB;</span><br><span style="color: hsl(120, 100%, 40%);">+  if (!strcmp(argv[0], "b"))</span><br><span style="color: hsl(120, 100%, 40%);">+          trx->rbs2000.rx_diversity = OM2K_RX_DIVERSITY_B;</span><br><span style="color: hsl(120, 100%, 40%);">+   return CMD_SUCCESS;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span> </span><br><span> DEFUN(om2k_conf_req, om2k_conf_req_cmd,</span><br><span>        "configuration-request",</span><br><span>@@ -653,6 +679,24 @@</span><br><span>    }</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+const struct value_string om2k_rx_diversity_names[4] = {</span><br><span style="color: hsl(120, 100%, 40%);">+  { OM2K_RX_DIVERSITY_A,          "a" },</span><br><span style="color: hsl(120, 100%, 40%);">+      { OM2K_RX_DIVERSITY_AB,         "ab" },</span><br><span style="color: hsl(120, 100%, 40%);">+     { OM2K_RX_DIVERSITY_B,          "b" },</span><br><span style="color: hsl(120, 100%, 40%);">+      { 0, NULL }</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%);">+const char *rx_diversity2str(enum om2k_rx_diversity type)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+       return get_value_string(om2k_rx_diversity_names, type);</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%);">+void abis_om2k_config_write_trx(struct vty *vty, struct gsm_bts_trx *trx)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+    vty_out(vty, "   om2000 rx-diversity-mode %s%s",</span><br><span style="color: hsl(120, 100%, 40%);">+            rx_diversity2str(trx->rbs2000.rx_diversity), VTY_NEWLINE);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> void abis_om2k_config_write_bts(struct vty *vty, struct gsm_bts *bts)</span><br><span> {</span><br><span>     struct is_conn_group *igrp;</span><br><span>@@ -789,5 +833,7 @@</span><br><span>    install_element(BTS_NODE, &cfg_om2k_con_group_cmd);</span><br><span>      install_element(BTS_NODE, &del_om2k_con_group_cmd);</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+   install_element(TRX_NODE, &cfg_trx_om2k_rx_diversity_cmd);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>     return 0;</span><br><span> }</span><br><span>diff --git a/src/osmo-bsc/bts_ericsson_rbs2000.c b/src/osmo-bsc/bts_ericsson_rbs2000.c</span><br><span>index fa0dab8..7d29657 100644</span><br><span>--- a/src/osmo-bsc/bts_ericsson_rbs2000.c</span><br><span>+++ b/src/osmo-bsc/bts_ericsson_rbs2000.c</span><br><span>@@ -174,6 +174,11 @@</span><br><span>       abis_om2k_config_write_bts(vty, bts);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+static void config_write_trx(struct vty *vty, struct gsm_bts_trx *trx)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+     abis_om2k_config_write_trx(vty, trx);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> static int bts_model_rbs2k_start(struct gsm_network *net);</span><br><span> </span><br><span> static void bts_model_rbs2k_e1line_bind_ops(struct e1inp_line *line)</span><br><span>@@ -201,6 +206,7 @@</span><br><span>   .trx_init = bts_model_rbs2k_trx_init,</span><br><span>        .oml_rcvmsg = &abis_om2k_rcvmsg,</span><br><span>         .config_write_bts = &config_write_bts,</span><br><span style="color: hsl(120, 100%, 40%);">+    .config_write_trx = &config_write_trx,</span><br><span>   .e1line_bind_ops = &bts_model_rbs2k_e1line_bind_ops,</span><br><span> };</span><br><span> </span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-bsc/+/23318">change 23318</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/+/23318"/><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: I430762b8cfa51060841d90ba4446de73bd557c6c </div>
<div style="display:none"> Gerrit-Change-Number: 23318 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: javi-tic <javi@tic-ac.org> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>