<p>pespin has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-bsc/+/24949">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">Add new lchan_select() API helper<br><br>It's an easy helper, but it helps in standarizing and finding similar<br>places in code.<br>Morevoer, it will be used in follow-up commit where we first use<br>lchan_avail_by_type and finally we select it in a later stage.<br><br>Change-Id: I025a40962a5e5d40543b297a0760e47618fb525c<br>---<br>M include/osmocom/bsc/lchan_select.h<br>M src/osmo-bsc/bsc_vty.c<br>M src/osmo-bsc/lchan_select.c<br>3 files changed, 21 insertions(+), 10 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/49/24949/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/include/osmocom/bsc/lchan_select.h b/include/osmocom/bsc/lchan_select.h</span><br><span>index aa2f40e..89aad8c 100644</span><br><span>--- a/include/osmocom/bsc/lchan_select.h</span><br><span>+++ b/include/osmocom/bsc/lchan_select.h</span><br><span>@@ -6,3 +6,4 @@</span><br><span> struct gsm_lchan *lchan_select_by_chan_mode(struct gsm_bts *bts,</span><br><span>                                           enum gsm48_chan_mode chan_mode, enum channel_rate chan_rate);</span><br><span> struct gsm_lchan *lchan_avail_by_type(struct gsm_bts *bts, enum gsm_chan_t type, bool log);</span><br><span style="color: hsl(120, 100%, 40%);">+void lchan_select(struct gsm_lchan *lchan, enum gsm_chan_t type);</span><br><span>diff --git a/src/osmo-bsc/bsc_vty.c b/src/osmo-bsc/bsc_vty.c</span><br><span>index 97dd615..6590ec9 100644</span><br><span>--- a/src/osmo-bsc/bsc_vty.c</span><br><span>+++ b/src/osmo-bsc/bsc_vty.c</span><br><span>@@ -6299,7 +6299,7 @@</span><br><span>             }</span><br><span> </span><br><span>                /* configure the lchan */</span><br><span style="color: hsl(0, 100%, 40%);">-               lchan->type = lchan_t;</span><br><span style="color: hsl(120, 100%, 40%);">+             lchan_select(lchan, lchan_t);</span><br><span>                if (!strcmp(codec_str, "hr") || !strcmp(codec_str, "fr")) {</span><br><span>                      info = (struct lchan_activate_info) {</span><br><span>                                .activ_for = ACTIVATE_FOR_VTY,</span><br><span>@@ -6792,9 +6792,9 @@</span><br><span>               return CMD_WARNING;</span><br><span>  }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   /* lchan_select_*() sets the lchan->type, we need to do the same here, so that activation will work out. */</span><br><span style="color: hsl(0, 100%, 40%);">-  to_lchan->type = chan_mode_to_chan_type(from_lchan->current_ch_mode_rate.chan_mode,</span><br><span style="color: hsl(0, 100%, 40%);">-                                               from_lchan->current_ch_mode_rate.chan_rate);</span><br><span style="color: hsl(120, 100%, 40%);">+       /* Set lchan type, so that activation will work out. */</span><br><span style="color: hsl(120, 100%, 40%);">+       lchan_select(to_lchan, chan_mode_to_chan_type(from_lchan->current_ch_mode_rate.chan_mode,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                from_lchan->current_ch_mode_rate.chan_rate));</span><br><span> </span><br><span>   LOG_LCHAN(from_lchan, LOGL_NOTICE, "VTY requests re-assignment of this lchan to %s%s\n",</span><br><span>             gsm_lchan_name(to_lchan), to_lchan->vamos.is_secondary ? " (to VAMOS mode)" : "");</span><br><span>diff --git a/src/osmo-bsc/lchan_select.c b/src/osmo-bsc/lchan_select.c</span><br><span>index 3618fb4..d763ba6 100644</span><br><span>--- a/src/osmo-bsc/lchan_select.c</span><br><span>+++ b/src/osmo-bsc/lchan_select.c</span><br><span>@@ -296,16 +296,26 @@</span><br><span> {</span><br><span>    struct gsm_lchan *lchan = NULL;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-     lchan = lchan_avail_by_type(bts, type, true);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>        LOG_BTS(bts, DRLL, LOGL_DEBUG, "lchan_select_by_type(%s)\n", gsm_lchant_name(type));</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-      if (lchan) {</span><br><span style="color: hsl(0, 100%, 40%);">-            lchan->type = type;</span><br><span style="color: hsl(0, 100%, 40%);">-          LOG_LCHAN(lchan, LOGL_INFO, "Selected\n");</span><br><span style="color: hsl(0, 100%, 40%);">-    } else</span><br><span style="color: hsl(120, 100%, 40%);">+        lchan = lchan_avail_by_type(bts, type, true);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       if (!lchan) {</span><br><span>                LOG_BTS(bts, DRLL, LOGL_NOTICE, "Failed to select %s channel\n",</span><br><span>                   gsm_lchant_name(type));</span><br><span style="color: hsl(120, 100%, 40%);">+               return NULL;</span><br><span style="color: hsl(120, 100%, 40%);">+  }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ lchan_select(lchan, type);</span><br><span>   return lchan;</span><br><span> }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/* Set available lchan to given type. Usually used on lchan obtained with</span><br><span style="color: hsl(120, 100%, 40%);">+ * lchan_avail_by_type. The next logical step is lchan_activate() on it, which</span><br><span style="color: hsl(120, 100%, 40%);">+ * would possibly cause dynamic timeslot pchan switching, taken care of by the</span><br><span style="color: hsl(120, 100%, 40%);">+ * lchan and timeslot FSMs. */</span><br><span style="color: hsl(120, 100%, 40%);">+void lchan_select(struct gsm_lchan *lchan, enum gsm_chan_t type)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+  lchan->type = type;</span><br><span style="color: hsl(120, 100%, 40%);">+        LOG_LCHAN(lchan, LOGL_INFO, "Selected\n");</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-bsc/+/24949">change 24949</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/+/24949"/><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: I025a40962a5e5d40543b297a0760e47618fb525c </div>
<div style="display:none"> Gerrit-Change-Number: 24949 </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>