<p>neels <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/osmo-bsc/+/25395">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  laforge: Looks good to me, but someone else must approve
  neels: Looks good to me, approved
  pespin: Looks good to me, but someone else must approve
  Jenkins Builder: Verified

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">add CTRL bts.N.trx.M.rf_locked (RW)<br><br>Add per-TRX command to lock/unlock single TRX.<br>(Besides the global root-node rf_locked command setting the global RF<br>policy.)<br><br>Corresponds to VTY command: 'bts N' / 'trx N' / 'rf_locked (0|1)'.<br><br>Related: SYS#5542<br>Related: I2bb5096732f75a7341c7e83951e63c5a2038b469 (osmo-ttcn3-hacks)<br>Depends: I4dac826aab00bc1780a5258b6b55d34ce7d50c60 (libosmocore)<br>Change-Id: Ie46fd730797b64fb185d705c3507e36f5f23ef4b<br>---<br>M TODO-RELEASE<br>M src/osmo-bsc/bsc_ctrl_commands.c<br>2 files changed, 33 insertions(+), 0 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/TODO-RELEASE b/TODO-RELEASE</span><br><span>index 8585c7b..90ec16b 100644</span><br><span>--- a/TODO-RELEASE</span><br><span>+++ b/TODO-RELEASE</span><br><span>@@ -14,3 +14,4 @@</span><br><span> libosmovty    >1.5.1               needs vty_read_config_filep()</span><br><span> libosmosgsm     >1.5.1          needs GSM_PCHAN_OSMO_DYN</span><br><span> libosmocore     >1.5.1          RSL_IPAC_EIE_OSMO*, struct osmo_preproc_*</span><br><span style="color: hsl(120, 100%, 40%);">+libosmocore       >1.5.1               needs osmo_str_to_int()</span><br><span>diff --git a/src/osmo-bsc/bsc_ctrl_commands.c b/src/osmo-bsc/bsc_ctrl_commands.c</span><br><span>index 3b8125a..c7547b0 100644</span><br><span>--- a/src/osmo-bsc/bsc_ctrl_commands.c</span><br><span>+++ b/src/osmo-bsc/bsc_ctrl_commands.c</span><br><span>@@ -536,6 +536,37 @@</span><br><span> }</span><br><span> CTRL_CMD_DEFINE(net_rf_lock, "rf_locked");</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+static int get_trx_rf_locked(struct ctrl_cmd *cmd, void *data)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+       struct gsm_bts_trx *trx = cmd->node;</span><br><span style="color: hsl(120, 100%, 40%);">+       /* Return rf_locked = 1 only if it is explicitly locked. If it is in shutdown or null state, do not "trick" the</span><br><span style="color: hsl(120, 100%, 40%);">+      * caller into thinking that sending "rf_locked 0" is necessary to bring the TRX up. */</span><br><span style="color: hsl(120, 100%, 40%);">+     cmd->reply = (trx->mo.nm_state.administrative == NM_STATE_LOCKED) ? "1" : "0";</span><br><span style="color: hsl(120, 100%, 40%);">+      return CTRL_CMD_REPLY;</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%);">+static int set_trx_rf_locked(struct ctrl_cmd *cmd, void *data)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+        struct gsm_bts_trx *trx = cmd->node;</span><br><span style="color: hsl(120, 100%, 40%);">+       int locked;</span><br><span style="color: hsl(120, 100%, 40%);">+   if (osmo_str_to_int(&locked, cmd->value, 10, 0, 1)) {</span><br><span style="color: hsl(120, 100%, 40%);">+          cmd->reply = "Invalid value";</span><br><span style="color: hsl(120, 100%, 40%);">+            return CTRL_CMD_ERROR;</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%);">+   gsm_trx_lock_rf(trx, locked, "ctrl");</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     /* Let's not assume the nm FSM has already switched its state, just return the intended rf_locked value. */</span><br><span style="color: hsl(120, 100%, 40%);">+       cmd->reply = locked ? "1" : "0";</span><br><span style="color: hsl(120, 100%, 40%);">+       return CTRL_CMD_REPLY;</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%);">+static int verify_trx_rf_locked(struct ctrl_cmd *cmd, const char *value, void *data)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+  return osmo_str_to_int(NULL, value, 10, 0, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+CTRL_CMD_DEFINE(trx_rf_locked, "rf_locked");</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> static int get_net_bts_num(struct ctrl_cmd *cmd, void *data)</span><br><span> {</span><br><span>     struct gsm_network *net = cmd->node;</span><br><span>@@ -661,6 +692,7 @@</span><br><span> </span><br><span>    rc |= ctrl_cmd_install(CTRL_NODE_TRX, &cmd_trx_max_power);</span><br><span>       rc |= ctrl_cmd_install(CTRL_NODE_TRX, &cmd_trx_arfcn);</span><br><span style="color: hsl(120, 100%, 40%);">+    rc |= ctrl_cmd_install(CTRL_NODE_TRX, &cmd_trx_rf_locked);</span><br><span> </span><br><span>   return rc;</span><br><span> }</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-bsc/+/25395">change 25395</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/+/25395"/><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: Ie46fd730797b64fb185d705c3507e36f5f23ef4b </div>
<div style="display:none"> Gerrit-Change-Number: 25395 </div>
<div style="display:none"> Gerrit-PatchSet: 3 </div>
<div style="display:none"> Gerrit-Owner: neels <nhofmeyr@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-Reviewer: neels <nhofmeyr@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>