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

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">Rename osmo dyn ts enums to contain SDCCH8<br><br>They will gain support to be activated as SDCCH/8 soon too.<br><br>Related: OS#5309<br>Depends: libosmocore.git I56dcfe4d17899630b17f80145c3ced72f1e91e68<br>Change-Id: Id5b89fe589a52ff88486435ac43809edb4b80f98<br>---<br>M TODO-RELEASE<br>M doc/manuals/chapters/bts.adoc<br>M include/osmocom/bsc/bts.h<br>M include/osmocom/bsc/gsm_data.h<br>M src/osmo-bsc/abis_nm.c<br>M src/osmo-bsc/abis_om2000.c<br>M src/osmo-bsc/abis_rsl.c<br>M src/osmo-bsc/bsc_vty.c<br>M src/osmo-bsc/bts.c<br>M src/osmo-bsc/bts_trx.c<br>M src/osmo-bsc/chan_alloc.c<br>M src/osmo-bsc/codec_pref.c<br>M src/osmo-bsc/gsm_data.c<br>M src/osmo-bsc/handover_decision_2.c<br>M src/osmo-bsc/lchan_select.c<br>M src/osmo-bsc/timeslot_fsm.c<br>M tests/ctrl_test_runner.py<br>M tests/handover/handover_test.c<br>18 files changed, 81 insertions(+), 76 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 e64aebb..a9bf06c 100644</span><br><span>--- a/TODO-RELEASE</span><br><span>+++ b/TODO-RELEASE</span><br><span>@@ -12,3 +12,4 @@</span><br><span> libosmogsm    >1.5.1            introduced struct needed gsm0808_old_bss_to_new_bss_info->last_eutran_plmn_id</span><br><span> libosmo-mgcp-client >1.8.0        need osmo_mgcpc_ep_ci_get_remote_rtp_info()</span><br><span> libosmovty       >1.5.1               needs vty_read_config_filep()</span><br><span style="color: hsl(120, 100%, 40%);">+libosmosgsm     >1.5.1          needs GSM_PCHAN_OSMO_DYN</span><br><span>diff --git a/doc/manuals/chapters/bts.adoc b/doc/manuals/chapters/bts.adoc</span><br><span>index 1b33d73..acd2200 100644</span><br><span>--- a/doc/manuals/chapters/bts.adoc</span><br><span>+++ b/doc/manuals/chapters/bts.adoc</span><br><span>@@ -295,7 +295,7 @@</span><br><span> .Dynamic timeslot support by various BTS models</span><br><span> [cols="50%,25%,25%"]</span><br><span> |===</span><br><span style="color: hsl(0, 100%, 40%);">-|                    |`TCH/F_TCH/H_PDCH` |`TCH/F_PDCH`</span><br><span style="color: hsl(120, 100%, 40%);">+|                    |`TCH/F_TCH/H_SDCCH8_PDCH` |`TCH/F_PDCH`</span><br><span> |ip.access nanoBTS   |-                  |supported</span><br><span> |Ericsson RBS        |supported          |-</span><br><span> |sysmoBTS using _osmo-bts-sysmo_ |supported |supported</span><br><span>@@ -310,11 +310,11 @@</span><br><span> NOTE: Same as for dedicated PDCH timeslots, you need to enable GPRS and operate</span><br><span> a PCU, SGSN and GGSN to provide the actual data service.</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-==== Osmocom Style Dynamic Timeslots (TCH/F_TCH/H_PDCH)</span><br><span style="color: hsl(120, 100%, 40%);">+==== Osmocom Style Dynamic Timeslots (TCH/F_TCH/H_SDCCH8_PDCH)</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-Timeslots of the `TCH/F_TCH/H_PDCH` type dynamically switch between TCH/F,</span><br><span style="color: hsl(120, 100%, 40%);">+Timeslots of the `TCH/F_TCH/H_SDCCH8_PDCH` type dynamically switch between TCH/F,</span><br><span> TCH/H and PDCH, depending on the channel kind requested by the MSC. The RSL</span><br><span style="color: hsl(0, 100%, 40%);">-messaging for `TCH/F_TCH/H_PDCH` timeslots is compatible with Ericsson RBS.</span><br><span style="color: hsl(120, 100%, 40%);">+messaging for `TCH/F_TCH/H_SDCCH8_PDCH` timeslots is compatible with Ericsson RBS.</span><br><span> </span><br><span> BTS models supporting this timeslot kind are shown in <<dyn_ts_compat>>.</span><br><span> </span><br><span>@@ -361,15 +361,15 @@</span><br><span>    timeslot 1</span><br><span>     phys_chan_config SDCCH8</span><br><span>    timeslot 2</span><br><span style="color: hsl(0, 100%, 40%);">-    phys_chan_config TCH/F_TCH/H_PDCH</span><br><span style="color: hsl(120, 100%, 40%);">+    phys_chan_config TCH/F_TCH/H_SDCCH8_PDCH</span><br><span>    timeslot 3</span><br><span style="color: hsl(0, 100%, 40%);">-    phys_chan_config TCH/F_TCH/H_PDCH</span><br><span style="color: hsl(120, 100%, 40%);">+    phys_chan_config TCH/F_TCH/H_SDCCH8_PDCH</span><br><span>    timeslot 4</span><br><span style="color: hsl(0, 100%, 40%);">-    phys_chan_config TCH/F_TCH/H_PDCH</span><br><span style="color: hsl(120, 100%, 40%);">+    phys_chan_config TCH/F_TCH/H_SDCCH8_PDCH</span><br><span>    timeslot 5</span><br><span style="color: hsl(0, 100%, 40%);">-    phys_chan_config TCH/F_TCH/H_PDCH</span><br><span style="color: hsl(120, 100%, 40%);">+    phys_chan_config TCH/F_TCH/H_SDCCH8_PDCH</span><br><span>    timeslot 6</span><br><span style="color: hsl(0, 100%, 40%);">-    phys_chan_config TCH/F_TCH/H_PDCH</span><br><span style="color: hsl(120, 100%, 40%);">+    phys_chan_config TCH/F_TCH/H_SDCCH8_PDCH</span><br><span>    timeslot 7</span><br><span>     phys_chan_config PDCH</span><br><span> ----</span><br><span>diff --git a/include/osmocom/bsc/bts.h b/include/osmocom/bsc/bts.h</span><br><span>index 65c3be5..2e88129 100644</span><br><span>--- a/include/osmocom/bsc/bts.h</span><br><span>+++ b/include/osmocom/bsc/bts.h</span><br><span>@@ -166,8 +166,8 @@</span><br><span>        BTS_STAT_CHAN_CCCH_SDCCH4_CBCH_TOTAL,</span><br><span>        BTS_STAT_CHAN_SDCCH8_CBCH_USED,</span><br><span>      BTS_STAT_CHAN_SDCCH8_CBCH_TOTAL,</span><br><span style="color: hsl(0, 100%, 40%);">-        BTS_STAT_CHAN_TCH_F_TCH_H_PDCH_USED,</span><br><span style="color: hsl(0, 100%, 40%);">-    BTS_STAT_CHAN_TCH_F_TCH_H_PDCH_TOTAL,</span><br><span style="color: hsl(120, 100%, 40%);">+ BTS_STAT_CHAN_OSMO_DYN_USED,</span><br><span style="color: hsl(120, 100%, 40%);">+  BTS_STAT_CHAN_OSMO_DYN_TOTAL,</span><br><span>        BTS_STAT_T3122,</span><br><span>      BTS_STAT_RACH_BUSY,</span><br><span>  BTS_STAT_RACH_ACCESS,</span><br><span>diff --git a/include/osmocom/bsc/gsm_data.h b/include/osmocom/bsc/gsm_data.h</span><br><span>index 31759cc..b07345d 100644</span><br><span>--- a/include/osmocom/bsc/gsm_data.h</span><br><span>+++ b/include/osmocom/bsc/gsm_data.h</span><br><span>@@ -796,7 +796,7 @@</span><br><span>      * vty after OML activation. Gets written on vty 'write file'. */</span><br><span>    enum gsm_phys_chan_config pchan_from_config;</span><br><span>         /* When the timeslot OML is established, pchan_from_config is copied here. This is the pchan</span><br><span style="color: hsl(0, 100%, 40%);">-     * currently in effect; for dynamic ts, this is the dyn kind (GSM_PCHAN_TCH_F_TCH_H_PDCH or</span><br><span style="color: hsl(120, 100%, 40%);">+    * currently in effect; for dynamic ts, this is the dyn kind (GSM_PCHAN_OSMO_DYN or</span><br><span>   * GSM_PCHAN_TCH_F_PDCH) and does not show the pchan type currently active. */</span><br><span>       enum gsm_phys_chan_config pchan_on_init;</span><br><span>     /* This is the *actual* pchan type currently active. For dynamic timeslots, this reflects either</span><br><span>@@ -1302,7 +1302,7 @@</span><br><span>     /* control interface */</span><br><span>      struct ctrl_handle *ctrl;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   /* Allow or disallow TCH/F on dynamic TCH/F_TCH/H_PDCH; OS#1778 */</span><br><span style="color: hsl(120, 100%, 40%);">+    /* Allow or disallow TCH/F on dynamic TCH/F_TCH/H_SDCCH8_PDCH; OS#1778 */</span><br><span>    bool dyn_ts_allow_tch_f;</span><br><span> </span><br><span>         /* all active subscriber connections. */</span><br><span>diff --git a/src/osmo-bsc/abis_nm.c b/src/osmo-bsc/abis_nm.c</span><br><span>index c98d225..7c04394 100644</span><br><span>--- a/src/osmo-bsc/abis_nm.c</span><br><span>+++ b/src/osmo-bsc/abis_nm.c</span><br><span>@@ -1892,7 +1892,7 @@</span><br><span>                switch (chan_comb) {</span><br><span>                 case NM_CHANC_TCHHalf:</span><br><span>               case NM_CHANC_TCHHalf2:</span><br><span style="color: hsl(0, 100%, 40%);">-         case NM_CHANC_OSMO_TCHFull_TCHHalf_PDCH:</span><br><span style="color: hsl(120, 100%, 40%);">+              case NM_CHANC_OSMO_DYN:</span><br><span>                      /* not supported */</span><br><span>                  *reason = "TCH/H is not supported.";</span><br><span>                       return -EINVAL;</span><br><span>@@ -1990,7 +1990,7 @@</span><br><span>                              case NM_CHANC_TCHHalf:</span><br><span>                               case NM_CHANC_IPAC_TCHFull_TCHHalf:</span><br><span>                          case NM_CHANC_IPAC_TCHFull_PDCH:</span><br><span style="color: hsl(0, 100%, 40%);">-                                case NM_CHANC_OSMO_TCHFull_TCHHalf_PDCH:</span><br><span style="color: hsl(120, 100%, 40%);">+                              case NM_CHANC_OSMO_DYN:</span><br><span>                                      return 0;</span><br><span>                            default:</span><br><span>                                     *reason = "TS1 must carry a CBCH, SDCCH or TCH.";</span><br><span>@@ -2022,7 +2022,7 @@</span><br><span>                          return 0;</span><br><span>                    case NM_CHANC_IPAC_PDCH:</span><br><span>                     case NM_CHANC_IPAC_TCHFull_PDCH:</span><br><span style="color: hsl(0, 100%, 40%);">-                        case NM_CHANC_OSMO_TCHFull_TCHHalf_PDCH:</span><br><span style="color: hsl(120, 100%, 40%);">+                      case NM_CHANC_OSMO_DYN:</span><br><span>                              if (ts->trx->nr == 0)</span><br><span>                                  return 0;</span><br><span>                            else {</span><br><span>diff --git a/src/osmo-bsc/abis_om2000.c b/src/osmo-bsc/abis_om2000.c</span><br><span>index 61db437..8ee6371 100644</span><br><span>--- a/src/osmo-bsc/abis_om2000.c</span><br><span>+++ b/src/osmo-bsc/abis_om2000.c</span><br><span>@@ -1411,7 +1411,7 @@</span><br><span>  case GSM_PCHAN_TCH_H:</span><br><span>        case GSM_PCHAN_PDCH:</span><br><span>         case GSM_PCHAN_TCH_F_PDCH:</span><br><span style="color: hsl(0, 100%, 40%);">-      case GSM_PCHAN_TCH_F_TCH_H_PDCH:</span><br><span style="color: hsl(120, 100%, 40%);">+      case GSM_PCHAN_OSMO_DYN:</span><br><span>             return 8;</span><br><span>    default:</span><br><span>             return 0;</span><br><span>@@ -1423,7 +1423,7 @@</span><br><span>    if (ts->pchan_on_init == GSM_PCHAN_TCH_F_PDCH) {</span><br><span>          LOGP(DNM, LOGL_ERROR, "%s pchan %s not intended for use with OM2000, use %s instead\n",</span><br><span>                 gsm_ts_and_pchan_name(ts), gsm_pchan_name(GSM_PCHAN_TCH_F_PDCH),</span><br><span style="color: hsl(0, 100%, 40%);">-                gsm_pchan_name(GSM_PCHAN_TCH_F_TCH_H_PDCH));</span><br><span style="color: hsl(120, 100%, 40%);">+                  gsm_pchan_name(GSM_PCHAN_OSMO_DYN));</span><br><span>            /* If we allowed initialization of TCH/F_PDCH, it would fail</span><br><span>                  * when we try to send the ip.access specific RSL PDCH Act</span><br><span>            * message for it. Rather fail completely right now: */</span><br><span>diff --git a/src/osmo-bsc/abis_rsl.c b/src/osmo-bsc/abis_rsl.c</span><br><span>index 809cd9b..f0adc56 100644</span><br><span>--- a/src/osmo-bsc/abis_rsl.c</span><br><span>+++ b/src/osmo-bsc/abis_rsl.c</span><br><span>@@ -1054,7 +1054,7 @@</span><br><span> static bool msg_for_osmocom_dyn_ts(struct msgb *msg)</span><br><span> {</span><br><span>        struct abis_rsl_dchan_hdr *rslh = msgb_l2(msg);</span><br><span style="color: hsl(0, 100%, 40%);">- if (msg->lchan->ts->pchan_on_init != GSM_PCHAN_TCH_F_TCH_H_PDCH)</span><br><span style="color: hsl(120, 100%, 40%);">+     if (msg->lchan->ts->pchan_on_init != GSM_PCHAN_OSMO_DYN)</span><br><span>            return false;</span><br><span>        /* dyn TS messages always come in on the first lchan of a timeslot */</span><br><span>        if (msg->lchan->nr != 0)</span><br><span>@@ -2676,7 +2676,7 @@</span><br><span>       const char *act;</span><br><span> </span><br><span>         switch (ts->pchan_on_init) {</span><br><span style="color: hsl(0, 100%, 40%);">- case GSM_PCHAN_TCH_F_TCH_H_PDCH:</span><br><span style="color: hsl(120, 100%, 40%);">+      case GSM_PCHAN_OSMO_DYN:</span><br><span>             what = "Osmocom dyn TS";</span><br><span>           act = activate? "PDCH Chan Activ" : "PDCH Chan RF Release";</span><br><span> </span><br><span>diff --git a/src/osmo-bsc/bsc_vty.c b/src/osmo-bsc/bsc_vty.c</span><br><span>index efa59d3..070b660 100644</span><br><span>--- a/src/osmo-bsc/bsc_vty.c</span><br><span>+++ b/src/osmo-bsc/bsc_vty.c</span><br><span>@@ -1484,7 +1484,7 @@</span><br><span> {</span><br><span>        /* show dyn TS details, if applicable */</span><br><span>     switch (ts->pchan_on_init) {</span><br><span style="color: hsl(0, 100%, 40%);">- case GSM_PCHAN_TCH_F_TCH_H_PDCH:</span><br><span style="color: hsl(120, 100%, 40%);">+      case GSM_PCHAN_OSMO_DYN:</span><br><span>             vty_out(vty, "  Osmocom Dyn TS:");</span><br><span>                 vty_out_dyn_ts_status(vty, ts);</span><br><span>              vty_out(vty, VTY_NEWLINE);</span><br><span>@@ -5648,7 +5648,7 @@</span><br><span> }</span><br><span> </span><br><span> /* used for backwards compatibility with old config files that still</span><br><span style="color: hsl(0, 100%, 40%);">- * have uppercase pchan type names */</span><br><span style="color: hsl(120, 100%, 40%);">+ * have uppercase pchan type names. Also match older names for existing types.  */</span><br><span> DEFUN_HIDDEN(cfg_ts_pchan_compat,</span><br><span>       cfg_ts_pchan_compat_cmd,</span><br><span>       "phys_chan_config PCHAN",</span><br><span>@@ -5659,8 +5659,12 @@</span><br><span> </span><br><span>        pchanc = gsm_pchan_parse(argv[0]);</span><br><span>   if (pchanc < 0) {</span><br><span style="color: hsl(0, 100%, 40%);">-            vty_out(vty, "Unknown physical channel name '%s'%s", argv[0], VTY_NEWLINE);</span><br><span style="color: hsl(0, 100%, 40%);">-           return CMD_ERR_NO_MATCH;</span><br><span style="color: hsl(120, 100%, 40%);">+              if (strcasecmp(argv[0], "tch/f_tch/h_pdch") == 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+                 pchanc = GSM_PCHAN_OSMO_DYN;</span><br><span style="color: hsl(120, 100%, 40%);">+          } else {</span><br><span style="color: hsl(120, 100%, 40%);">+                      vty_out(vty, "Unknown physical channel name '%s'%s", argv[0], VTY_NEWLINE);</span><br><span style="color: hsl(120, 100%, 40%);">+                 return CMD_ERR_NO_MATCH;</span><br><span style="color: hsl(120, 100%, 40%);">+              }</span><br><span>    }</span><br><span> </span><br><span>        ts->pchan_from_config = pchanc;</span><br><span>@@ -6155,9 +6159,9 @@</span><br><span>           return CMD_WARNING;</span><br><span>  }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   if (ts->pchan_on_init != GSM_PCHAN_TCH_F_TCH_H_PDCH</span><br><span style="color: hsl(120, 100%, 40%);">+        if (ts->pchan_on_init != GSM_PCHAN_OSMO_DYN</span><br><span>           && ts->pchan_on_init != GSM_PCHAN_TCH_F_PDCH) {</span><br><span style="color: hsl(0, 100%, 40%);">-          vty_out(vty, "%% Timeslot %u is not dynamic TCH/F_TCH/H_PDCH or TCH/F_PDCH%s",</span><br><span style="color: hsl(120, 100%, 40%);">+              vty_out(vty, "%% Timeslot %u is not dynamic TCH/F_TCH/H_SDCCH8_PDCH or TCH/F_PDCH%s",</span><br><span>                      ts->nr, VTY_NEWLINE);</span><br><span>             return CMD_WARNING;</span><br><span>  }</span><br><span>@@ -6217,10 +6221,10 @@</span><br><span>          if (lchan_t < 0) {</span><br><span>                        if (lchan->ts->pchan_on_init == GSM_PCHAN_TCH_F_PDCH && !strcmp(codec_str, "fr"))</span><br><span>                            lchan_t = GSM_LCHAN_TCH_F;</span><br><span style="color: hsl(0, 100%, 40%);">-                      else if (lchan->ts->pchan_on_init == GSM_PCHAN_TCH_F_TCH_H_PDCH && !strcmp(codec_str, "hr"))</span><br><span style="color: hsl(120, 100%, 40%);">+                  else if (lchan->ts->pchan_on_init == GSM_PCHAN_OSMO_DYN && !strcmp(codec_str, "hr"))</span><br><span>                                 lchan_t = GSM_LCHAN_TCH_H;</span><br><span>                   else if ((lchan->ts->pchan_on_init == GSM_PCHAN_TCH_F_PDCH</span><br><span style="color: hsl(0, 100%, 40%);">-                                  || lchan->ts->pchan_on_init == GSM_PCHAN_TCH_F_TCH_H_PDCH)</span><br><span style="color: hsl(120, 100%, 40%);">+                              || lchan->ts->pchan_on_init == GSM_PCHAN_OSMO_DYN)</span><br><span>                            && !strcmp(codec_str, "fr"))</span><br><span>                              lchan_t = GSM_LCHAN_TCH_F;</span><br><span>                   else {</span><br><span>@@ -6323,7 +6327,7 @@</span><br><span>                               break;</span><br><span>                       case GSM_PCHAN_TCH_F:</span><br><span>                        case GSM_PCHAN_TCH_F_PDCH:</span><br><span style="color: hsl(0, 100%, 40%);">-                      case GSM_PCHAN_TCH_F_TCH_H_PDCH:</span><br><span style="color: hsl(120, 100%, 40%);">+                      case GSM_PCHAN_OSMO_DYN:</span><br><span>                             codec_str = "fr";</span><br><span>                          break;</span><br><span>                       case GSM_PCHAN_TCH_H:</span><br><span>@@ -6336,9 +6340,9 @@</span><br><span>                        if (codec_str && skip_next == false) {</span><br><span>                               lchan_act_single(vty, lchan, codec_str, -1, activate);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-                              /* We use GSM_PCHAN_TCH_F_TCH_H_PDCH slots as TCH_F for this test, so we</span><br><span style="color: hsl(120, 100%, 40%);">+                              /* We use GSM_PCHAN_OSMO_DYN slots as TCH_F for this test, so we</span><br><span>                              * must not use the TCH_H reserved lchan in subslot 1. */</span><br><span style="color: hsl(0, 100%, 40%);">-                               if (ts->pchan_on_init == GSM_PCHAN_TCH_F_TCH_H_PDCH)</span><br><span style="color: hsl(120, 100%, 40%);">+                               if (ts->pchan_on_init == GSM_PCHAN_OSMO_DYN)</span><br><span>                                      skip_next = true;</span><br><span>                    }</span><br><span>                    else {</span><br><span>diff --git a/src/osmo-bsc/bts.c b/src/osmo-bsc/bts.c</span><br><span>index 8608767..cf3a6b8 100644</span><br><span>--- a/src/osmo-bsc/bts.c</span><br><span>+++ b/src/osmo-bsc/bts.c</span><br><span>@@ -1256,13 +1256,13 @@</span><br><span>                { "chan_sdcch8_cbch:total",</span><br><span>                  "Number of SDCCH8+CBCH channels total",</span><br><span>            "", 60, 0 },</span><br><span style="color: hsl(0, 100%, 40%);">-        [BTS_STAT_CHAN_TCH_F_TCH_H_PDCH_USED] = \</span><br><span style="color: hsl(0, 100%, 40%);">-               { "chan_tch_f_tch_h_pdch:used",</span><br><span style="color: hsl(0, 100%, 40%);">-                 "Number of TCH/F_TCH/H_PDCH channels used",</span><br><span style="color: hsl(120, 100%, 40%);">+       [BTS_STAT_CHAN_OSMO_DYN_USED] = \</span><br><span style="color: hsl(120, 100%, 40%);">+             { "chan_osmo_dyn:used",</span><br><span style="color: hsl(120, 100%, 40%);">+               "Number of TCH/F_TCH/H_SDCCH8_PDCH channels used",</span><br><span>                 "", 60, 0 },</span><br><span style="color: hsl(0, 100%, 40%);">-        [BTS_STAT_CHAN_TCH_F_TCH_H_PDCH_TOTAL] = \</span><br><span style="color: hsl(0, 100%, 40%);">-              { "chan_tch_f_tch_h_pdch:total",</span><br><span style="color: hsl(0, 100%, 40%);">-                "Number of TCH/F_TCH/H_PDCH channels total",</span><br><span style="color: hsl(120, 100%, 40%);">+      [BTS_STAT_CHAN_OSMO_DYN_TOTAL] = \</span><br><span style="color: hsl(120, 100%, 40%);">+            { "chan_osmo_dyn:total",</span><br><span style="color: hsl(120, 100%, 40%);">+              "Number of TCH/F_TCH/H_SDCCH8_PDCH channels total",</span><br><span>                "", 60, 0 },</span><br><span>     [BTS_STAT_T3122] = \</span><br><span>                 { "T3122",</span><br><span>diff --git a/src/osmo-bsc/bts_trx.c b/src/osmo-bsc/bts_trx.c</span><br><span>index bef98c0..f183d4b 100644</span><br><span>--- a/src/osmo-bsc/bts_trx.c</span><br><span>+++ b/src/osmo-bsc/bts_trx.c</span><br><span>@@ -216,7 +216,7 @@</span><br><span>              break;</span><br><span>       case ABIS_RSL_CHAN_NR_CBITS_OSMO_PDCH:</span><br><span>               lch_idx = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-            ok = (ts->pchan_on_init == GSM_PCHAN_TCH_F_TCH_H_PDCH);</span><br><span style="color: hsl(120, 100%, 40%);">+            ok = (ts->pchan_on_init == GSM_PCHAN_OSMO_DYN);</span><br><span>           break;</span><br><span>       default:</span><br><span>             return NULL;</span><br><span>@@ -296,7 +296,7 @@</span><br><span>                                   count++;</span><br><span>                             continue;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-                   case GSM_PCHAN_TCH_F_TCH_H_PDCH:</span><br><span style="color: hsl(120, 100%, 40%);">+                      case GSM_PCHAN_OSMO_DYN:</span><br><span>                             if (pchan == GSM_PCHAN_TCH_F)</span><br><span>                                        count++;</span><br><span>                             else if (pchan == GSM_PCHAN_TCH_H)</span><br><span>diff --git a/src/osmo-bsc/chan_alloc.c b/src/osmo-bsc/chan_alloc.c</span><br><span>index f2a41b7..fea4efd 100644</span><br><span>--- a/src/osmo-bsc/chan_alloc.c</span><br><span>+++ b/src/osmo-bsc/chan_alloc.c</span><br><span>@@ -59,10 +59,10 @@</span><br><span>                    if (!nm_is_running(&ts->mo.nm_state))</span><br><span>                                 continue;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-                   /* A dynamic timeslot currently in PDCH mode are available as TCH, beause they can be switched</span><br><span style="color: hsl(0, 100%, 40%);">-                   * to TCH mode at any moment. Count TCH/F_TCH/H_PDCH as one total timeslot, even though it may</span><br><span style="color: hsl(120, 100%, 40%);">+                        /* A dynamic timeslot currently in PDCH mode are available as TCH or SDCCH8, beause they can be switched</span><br><span style="color: hsl(120, 100%, 40%);">+                       * to TCH or SDCCH mode at any moment. Count TCH/F_TCH/H_SDCCH8_PDCH as one total timeslot, even though it may</span><br><span>                        * be switched to TCH/H and would then count as two -- hence opt for pessimistic load. */</span><br><span style="color: hsl(0, 100%, 40%);">-                       if ((ts->pchan_on_init == GSM_PCHAN_TCH_F_TCH_H_PDCH ||</span><br><span style="color: hsl(120, 100%, 40%);">+                    if ((ts->pchan_on_init == GSM_PCHAN_OSMO_DYN ||</span><br><span>                        ts->pchan_on_init == GSM_PCHAN_TCH_F_PDCH) &&</span><br><span>                            (ts->pchan_is == GSM_PCHAN_NONE ||</span><br><span>                         ts->pchan_is == GSM_PCHAN_PDCH)) {</span><br><span>@@ -147,9 +147,9 @@</span><br><span>             osmo_stat_item_set(osmo_stat_item_group_get_item(bts->bts_statg, BTS_STAT_CHAN_SDCCH8_CBCH_USED), lc->used);</span><br><span>           osmo_stat_item_set(osmo_stat_item_group_get_item(bts->bts_statg, BTS_STAT_CHAN_SDCCH8_CBCH_TOTAL), lc->total);</span><br><span>                 break;</span><br><span style="color: hsl(0, 100%, 40%);">-  case GSM_PCHAN_TCH_F_TCH_H_PDCH:</span><br><span style="color: hsl(0, 100%, 40%);">-                osmo_stat_item_set(osmo_stat_item_group_get_item(bts->bts_statg, BTS_STAT_CHAN_TCH_F_TCH_H_PDCH_USED), lc->used);</span><br><span style="color: hsl(0, 100%, 40%);">-         osmo_stat_item_set(osmo_stat_item_group_get_item(bts->bts_statg, BTS_STAT_CHAN_TCH_F_TCH_H_PDCH_TOTAL), lc->total);</span><br><span style="color: hsl(120, 100%, 40%);">+     case GSM_PCHAN_OSMO_DYN:</span><br><span style="color: hsl(120, 100%, 40%);">+              osmo_stat_item_set(osmo_stat_item_group_get_item(bts->bts_statg, BTS_STAT_CHAN_OSMO_DYN_USED), lc->used);</span><br><span style="color: hsl(120, 100%, 40%);">+               osmo_stat_item_set(osmo_stat_item_group_get_item(bts->bts_statg, BTS_STAT_CHAN_OSMO_DYN_TOTAL), lc->total);</span><br><span>            break;</span><br><span>       default:</span><br><span>             LOG_BTS(bts, DRLL, LOGL_NOTICE, "Unknown channel type %d\n", pchan);</span><br><span>diff --git a/src/osmo-bsc/codec_pref.c b/src/osmo-bsc/codec_pref.c</span><br><span>index 58a7867..9b4b37f 100644</span><br><span>--- a/src/osmo-bsc/codec_pref.c</span><br><span>+++ b/src/osmo-bsc/codec_pref.c</span><br><span>@@ -197,7 +197,7 @@</span><br><span>        llist_for_each_entry(trx, &bts->trx_list, list) {</span><br><span>             for (i = 0; i < TRX_NR_TS; i++) {</span><br><span>                         pchan = trx->ts[i].pchan_from_config;</span><br><span style="color: hsl(0, 100%, 40%);">-                        if (pchan == GSM_PCHAN_TCH_F_TCH_H_PDCH)</span><br><span style="color: hsl(120, 100%, 40%);">+                      if (pchan == GSM_PCHAN_OSMO_DYN)</span><br><span>                             rate_match = true;</span><br><span>                   else if (full_rate && pchan == GSM_PCHAN_TCH_F)</span><br><span>                              rate_match = true;</span><br><span>diff --git a/src/osmo-bsc/gsm_data.c b/src/osmo-bsc/gsm_data.c</span><br><span>index 0d1395c..30590fb 100644</span><br><span>--- a/src/osmo-bsc/gsm_data.c</span><br><span>+++ b/src/osmo-bsc/gsm_data.c</span><br><span>@@ -191,7 +191,7 @@</span><br><span>    { GSM_PCHAN_UNKNOWN,    "UNKNOWN" },</span><br><span>       { GSM_PCHAN_CCCH_SDCCH4_CBCH, "CCCH+SDCCH4+CBCH" },</span><br><span>        { GSM_PCHAN_SDCCH8_SACCH8C_CBCH, "SDCCH8+CBCH" },</span><br><span style="color: hsl(0, 100%, 40%);">-     { GSM_PCHAN_TCH_F_TCH_H_PDCH, "TCH/F_TCH/H_PDCH" },</span><br><span style="color: hsl(120, 100%, 40%);">+ { GSM_PCHAN_OSMO_DYN, "TCH/F_TCH/H_SDCCH8_PDCH" },</span><br><span>         { 0,                    NULL }</span><br><span> };</span><br><span> </span><br><span>@@ -207,7 +207,7 @@</span><br><span>       { GSM_PCHAN_UNKNOWN,    "UNKNOWN" },</span><br><span>       { GSM_PCHAN_CCCH_SDCCH4_CBCH, "CCCH_SDCCH4_CBCH" },</span><br><span>        { GSM_PCHAN_SDCCH8_SACCH8C_CBCH, "SDCCH8_CBCH" },</span><br><span style="color: hsl(0, 100%, 40%);">-     { GSM_PCHAN_TCH_F_TCH_H_PDCH, "TCH_F_TCH_H_PDCH" },</span><br><span style="color: hsl(120, 100%, 40%);">+ { GSM_PCHAN_OSMO_DYN, "OSMO_DYN" },</span><br><span>        { 0,                    NULL }</span><br><span> };</span><br><span> </span><br><span>@@ -224,7 +224,7 @@</span><br><span>       { GSM_PCHAN_UNKNOWN,    "Unknown / Unsupported channel combination" },</span><br><span>     { GSM_PCHAN_CCCH_SDCCH4_CBCH, "FCCH + SCH + BCCH + CCCH + CBCH + 3 SDCCH + 2 SACCH (Comb. V)" },</span><br><span>   { GSM_PCHAN_SDCCH8_SACCH8C_CBCH, "7 SDCCH + 4 SACCH + CBCH (Comb. VII)" },</span><br><span style="color: hsl(0, 100%, 40%);">-    { GSM_PCHAN_TCH_F_TCH_H_PDCH, "Dynamic TCH/F or TCH/H or GPRS PDCH" },</span><br><span style="color: hsl(120, 100%, 40%);">+      { GSM_PCHAN_OSMO_DYN, "Dynamic TCH/F or TCH/H or SDCCH/8 or GPRS PDCH" },</span><br><span>  { 0,                    NULL }</span><br><span> };</span><br><span> </span><br><span>@@ -604,7 +604,7 @@</span><br><span>       [GSM_PCHAN_CCCH_SDCCH4_CBCH] = 4,</span><br><span>    [GSM_PCHAN_SDCCH8_SACCH8C_CBCH] = 8,</span><br><span>         /* Dyn TS: maximum allowed subslots */</span><br><span style="color: hsl(0, 100%, 40%);">-  [GSM_PCHAN_TCH_F_TCH_H_PDCH] = 2,</span><br><span style="color: hsl(120, 100%, 40%);">+     [GSM_PCHAN_OSMO_DYN] = 2,</span><br><span>    [GSM_PCHAN_TCH_F_PDCH] = 1,</span><br><span> };</span><br><span> </span><br><span>@@ -628,7 +628,7 @@</span><br><span>  [GSM_PCHAN_SDCCH8_SACCH8C] = 0,</span><br><span>      [GSM_PCHAN_CCCH_SDCCH4_CBCH] = 0,</span><br><span>    [GSM_PCHAN_SDCCH8_SACCH8C_CBCH] = 0,</span><br><span style="color: hsl(0, 100%, 40%);">-    [GSM_PCHAN_TCH_F_TCH_H_PDCH] = 2,</span><br><span style="color: hsl(120, 100%, 40%);">+     [GSM_PCHAN_OSMO_DYN] = 2,</span><br><span>    [GSM_PCHAN_TCH_F_PDCH] = 2,</span><br><span> };</span><br><span> </span><br><span>@@ -832,7 +832,7 @@</span><br><span>                  return false;</span><br><span>                }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   case GSM_PCHAN_TCH_F_TCH_H_PDCH:</span><br><span style="color: hsl(120, 100%, 40%);">+      case GSM_PCHAN_OSMO_DYN:</span><br><span>             switch (pchan) {</span><br><span>             case GSM_PCHAN_TCH_F:</span><br><span>                case GSM_PCHAN_TCH_H:</span><br><span>@@ -904,7 +904,7 @@</span><br><span>                  return false;</span><br><span>                }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   case GSM_PCHAN_TCH_F_TCH_H_PDCH:</span><br><span style="color: hsl(120, 100%, 40%);">+      case GSM_PCHAN_OSMO_DYN:</span><br><span>             switch (type) {</span><br><span>              case GSM_LCHAN_TCH_F:</span><br><span>                case GSM_LCHAN_TCH_H:</span><br><span>diff --git a/src/osmo-bsc/handover_decision_2.c b/src/osmo-bsc/handover_decision_2.c</span><br><span>index 0966583..d778876 100644</span><br><span>--- a/src/osmo-bsc/handover_decision_2.c</span><br><span>+++ b/src/osmo-bsc/handover_decision_2.c</span><br><span>@@ -1005,7 +1005,7 @@</span><br><span>           c->current.free_tch = c->current.free_tchf;</span><br><span>            c->current.min_free_tch = c->current.min_free_tchf;</span><br><span>            c->current.lchan_frees_tchf = 1;</span><br><span style="color: hsl(0, 100%, 40%);">-             if (c->current.lchan->ts->pchan_on_init == GSM_PCHAN_TCH_F_TCH_H_PDCH)</span><br><span style="color: hsl(120, 100%, 40%);">+               if (c->current.lchan->ts->pchan_on_init == GSM_PCHAN_OSMO_DYN)</span><br><span>                      c->current.lchan_frees_tchh = 2;</span><br><span>          else</span><br><span>                         c->current.lchan_frees_tchh = 0;</span><br><span>@@ -1017,7 +1017,7 @@</span><br><span>          /* Freeing one of two TCH/H does not free a dyn TS and would not free a TCH/F. It has to be the last</span><br><span>                  * TCH/H of a dynamic timeslot that is freed to get a new TCH/F in the current cell from the handover.</span><br><span>                * Hence the ts_usage_count() condition. */</span><br><span style="color: hsl(0, 100%, 40%);">-             if (c->current.lchan->ts->pchan_on_init == GSM_PCHAN_TCH_F_TCH_H_PDCH</span><br><span style="color: hsl(120, 100%, 40%);">+                if (c->current.lchan->ts->pchan_on_init == GSM_PCHAN_OSMO_DYN</span><br><span>                   && ts_usage_count(c->current.lchan->ts) == 1)</span><br><span>                      c->current.lchan_frees_tchf = 1;</span><br><span>          else</span><br><span>@@ -1034,7 +1034,7 @@</span><br><span> </span><br><span>     /* Would the next TCH/F lchan occupy a dynamic timeslot that currently counts for free TCH/H timeslots? */</span><br><span>   next_lchan = lchan_avail_by_type(c->target.bts, GSM_LCHAN_TCH_F, false);</span><br><span style="color: hsl(0, 100%, 40%);">-     if (next_lchan && next_lchan->ts->pchan_on_init == GSM_PCHAN_TCH_F_TCH_H_PDCH)</span><br><span style="color: hsl(120, 100%, 40%);">+  if (next_lchan && next_lchan->ts->pchan_on_init == GSM_PCHAN_OSMO_DYN)</span><br><span>                 c->target.next_tchf_reduces_tchh = 2;</span><br><span>     else</span><br><span>                 c->target.next_tchf_reduces_tchh = 0;</span><br><span>@@ -1042,7 +1042,7 @@</span><br><span>     /* Would the next TCH/H lchan occupy a dynamic timeslot that currently counts for free TCH/F timeslots?</span><br><span>       * Note that a dyn TS already in TCH/H mode (half occupied) would not reduce free TCH/F. */</span><br><span>  next_lchan = lchan_avail_by_type(c->target.bts, GSM_LCHAN_TCH_H, false);</span><br><span style="color: hsl(0, 100%, 40%);">-     if (next_lchan && next_lchan->ts->pchan_on_init == GSM_PCHAN_TCH_F_TCH_H_PDCH</span><br><span style="color: hsl(120, 100%, 40%);">+   if (next_lchan && next_lchan->ts->pchan_on_init == GSM_PCHAN_OSMO_DYN</span><br><span>      && next_lchan->ts->pchan_is != GSM_PCHAN_TCH_H)</span><br><span>            c->target.next_tchh_reduces_tchf = 1;</span><br><span>     else</span><br><span>@@ -1568,7 +1568,7 @@</span><br><span> </span><br><span> static bool lchan_is_on_dynamic_ts(struct gsm_lchan *lchan)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    return lchan->ts->pchan_on_init == GSM_PCHAN_TCH_F_TCH_H_PDCH</span><br><span style="color: hsl(120, 100%, 40%);">+   return lchan->ts->pchan_on_init == GSM_PCHAN_OSMO_DYN</span><br><span>          || lchan->ts->pchan_on_init == GSM_PCHAN_TCH_F_PDCH;</span><br><span> }</span><br><span> </span><br><span>diff --git a/src/osmo-bsc/lchan_select.c b/src/osmo-bsc/lchan_select.c</span><br><span>index a1f6c82..5e9d800 100644</span><br><span>--- a/src/osmo-bsc/lchan_select.c</span><br><span>+++ b/src/osmo-bsc/lchan_select.c</span><br><span>@@ -70,7 +70,7 @@</span><br><span>             if (!ts_is_usable(ts))</span><br><span>                       continue;</span><br><span>            /* The caller first selects what kind of TS to search in, e.g. looking for exact</span><br><span style="color: hsl(0, 100%, 40%);">-                 * GSM_PCHAN_TCH_F, or maybe among dynamic GSM_PCHAN_TCH_F_TCH_H_PDCH... */</span><br><span style="color: hsl(120, 100%, 40%);">+            * GSM_PCHAN_TCH_F, or maybe among dynamic GSM_PCHAN_OSMO_DYN... */</span><br><span>          if (ts->pchan_on_init != pchan) {</span><br><span>                         LOGPLCHANALLOC("%s is != %s\n", gsm_ts_and_pchan_name(ts),</span><br><span>                                        gsm_pchan_name(pchan));</span><br><span>@@ -227,7 +227,7 @@</span><br><span>                 /* Try fully dynamic TCH/F_TCH/H_PDCH as TCH/F... */</span><br><span>                 if (!lchan && bts->network->dyn_ts_allow_tch_f)</span><br><span>                        lchan = _lc_dyn_find_bts(bts,</span><br><span style="color: hsl(0, 100%, 40%);">-                                            GSM_PCHAN_TCH_F_TCH_H_PDCH,</span><br><span style="color: hsl(120, 100%, 40%);">+                                           GSM_PCHAN_OSMO_DYN,</span><br><span>                                                  GSM_PCHAN_TCH_F, log);</span><br><span>              break;</span><br><span>       case GSM_LCHAN_TCH_H:</span><br><span>@@ -236,7 +236,7 @@</span><br><span>           * TCH/F_TCH/H_PDCH */</span><br><span>               if (!lchan)</span><br><span>                  lchan = _lc_dyn_find_bts(bts,</span><br><span style="color: hsl(0, 100%, 40%);">-                                            GSM_PCHAN_TCH_F_TCH_H_PDCH,</span><br><span style="color: hsl(120, 100%, 40%);">+                                           GSM_PCHAN_OSMO_DYN,</span><br><span>                                                  GSM_PCHAN_TCH_H, log);</span><br><span>              break;</span><br><span>       default:</span><br><span>diff --git a/src/osmo-bsc/timeslot_fsm.c b/src/osmo-bsc/timeslot_fsm.c</span><br><span>index b9c86df..2664245 100644</span><br><span>--- a/src/osmo-bsc/timeslot_fsm.c</span><br><span>+++ b/src/osmo-bsc/timeslot_fsm.c</span><br><span>@@ -85,7 +85,7 @@</span><br><span>                return LCHAN_IS_READY_TO_GO;</span><br><span> </span><br><span>     switch (ts->pchan_on_init) {</span><br><span style="color: hsl(0, 100%, 40%);">- case GSM_PCHAN_TCH_F_TCH_H_PDCH:</span><br><span style="color: hsl(120, 100%, 40%);">+      case GSM_PCHAN_OSMO_DYN:</span><br><span>             if (lchan->type == GSM_LCHAN_TCH_H)</span><br><span>                       return LCHAN_NEEDS_PCHAN_CHANGE;</span><br><span>             /* fall thru */</span><br><span>@@ -241,7 +241,7 @@</span><br><span>        }</span><br><span> </span><br><span>        switch (ts->pchan_on_init) {</span><br><span style="color: hsl(0, 100%, 40%);">- case GSM_PCHAN_TCH_F_TCH_H_PDCH:</span><br><span style="color: hsl(120, 100%, 40%);">+      case GSM_PCHAN_OSMO_DYN:</span><br><span>             ts_set_pchan_is(ts, GSM_PCHAN_NONE);</span><br><span>                 break;</span><br><span>       case GSM_PCHAN_TCH_F_PDCH:</span><br><span>@@ -314,7 +314,7 @@</span><br><span>     }</span><br><span> </span><br><span>        switch (ts->pchan_on_init) {</span><br><span style="color: hsl(0, 100%, 40%);">- case GSM_PCHAN_TCH_F_TCH_H_PDCH:</span><br><span style="color: hsl(120, 100%, 40%);">+      case GSM_PCHAN_OSMO_DYN:</span><br><span>     case GSM_PCHAN_TCH_F_PDCH:</span><br><span>           if (bts->gprs.mode == BTS_GPRS_NONE) {</span><br><span>                    LOG_TS(ts, LOGL_DEBUG, "GPRS mode is 'none': not activating PDCH.\n");</span><br><span>@@ -451,7 +451,7 @@</span><br><span> </span><br><span>   /* Set pchan = PDCH status, but double check. */</span><br><span>     switch (ts->pchan_on_init) {</span><br><span style="color: hsl(0, 100%, 40%);">- case GSM_PCHAN_TCH_F_TCH_H_PDCH:</span><br><span style="color: hsl(120, 100%, 40%);">+      case GSM_PCHAN_OSMO_DYN:</span><br><span>     case GSM_PCHAN_TCH_F_PDCH:</span><br><span>   case GSM_PCHAN_PDCH:</span><br><span>                 ts_set_pchan_is(ts, GSM_PCHAN_PDCH);</span><br><span>@@ -526,7 +526,7 @@</span><br><span>   case TS_EV_PDCH_DEACT_ACK:</span><br><span>           /* Remove pchan = PDCH status, but double check. */</span><br><span>          switch (ts->pchan_on_init) {</span><br><span style="color: hsl(0, 100%, 40%);">-         case GSM_PCHAN_TCH_F_TCH_H_PDCH:</span><br><span style="color: hsl(120, 100%, 40%);">+              case GSM_PCHAN_OSMO_DYN:</span><br><span>                     ts_set_pchan_is(ts, GSM_PCHAN_NONE);</span><br><span>                         break;</span><br><span>               case GSM_PCHAN_TCH_F_PDCH:</span><br><span>@@ -650,8 +650,8 @@</span><br><span>     }</span><br><span> </span><br><span>        /* Make sure dyn TS pchan_is is updated. For TCH/F_PDCH, there are only PDCH or TCH/F modes, but</span><br><span style="color: hsl(0, 100%, 40%);">-         * for Osmocom style TCH/F_TCH/H_PDCH the pchan_is == NONE until an lchan is activated. */</span><br><span style="color: hsl(0, 100%, 40%);">-      if (ts->pchan_on_init == GSM_PCHAN_TCH_F_TCH_H_PDCH)</span><br><span style="color: hsl(120, 100%, 40%);">+        * for Osmocom style TCH/F_TCH/H_SDCCH8_PDCH the pchan_is == NONE until an lchan is activated. */</span><br><span style="color: hsl(120, 100%, 40%);">+     if (ts->pchan_on_init == GSM_PCHAN_OSMO_DYN)</span><br><span>              ts_set_pchan_is(ts, gsm_pchan_by_lchan_type(activating_type));</span><br><span>       ts_lchans_dispatch(ts, LCHAN_ST_WAIT_TS_READY, LCHAN_EV_TS_READY);</span><br><span> }</span><br><span>@@ -1019,7 +1019,7 @@</span><br><span>               * waiting for PDCH DEACT (N)ACK */</span><br><span>          if (target_pchan) {</span><br><span>                  switch (ts->pchan_on_init) {</span><br><span style="color: hsl(0, 100%, 40%);">-                 case GSM_PCHAN_TCH_F_TCH_H_PDCH:</span><br><span style="color: hsl(120, 100%, 40%);">+                      case GSM_PCHAN_OSMO_DYN:</span><br><span>                             if (target_pchan)</span><br><span>                                    *target_pchan = GSM_PCHAN_NONE;</span><br><span>                              break;</span><br><span>diff --git a/tests/ctrl_test_runner.py b/tests/ctrl_test_runner.py</span><br><span>index 64f93fc..bd2cb10 100755</span><br><span>--- a/tests/ctrl_test_runner.py</span><br><span>+++ b/tests/ctrl_test_runner.py</span><br><span>@@ -234,7 +234,7 @@</span><br><span>         self.assertEqual(r['value'],</span><br><span>                'CCCH+SDCCH4,0,0 TCH/F,0,0 TCH/H,0,0 SDCCH8,0,0'</span><br><span>             + ' TCH/F_PDCH,0,0 CCCH+SDCCH4+CBCH,0,0'</span><br><span style="color: hsl(0, 100%, 40%);">-                + ' SDCCH8+CBCH,0,0 TCH/F_TCH/H_PDCH,0,0')</span><br><span style="color: hsl(120, 100%, 40%);">+            + ' SDCCH8+CBCH,0,0 TCH/F_TCH/H_SDCCH8_PDCH,0,0')</span><br><span> </span><br><span>     def testBtsOmlConnectionState(self):</span><br><span>         """Check OML state. It will not be connected"""</span><br><span>diff --git a/tests/handover/handover_test.c b/tests/handover/handover_test.c</span><br><span>index bcf9019..2ff9f31 100644</span><br><span>--- a/tests/handover/handover_test.c</span><br><span>+++ b/tests/handover/handover_test.c</span><br><span>@@ -187,7 +187,7 @@</span><br><span> {</span><br><span>   enum gsm_phys_chan_config pchan;</span><br><span>     if (!strcmp(str, "dyn"))</span><br><span style="color: hsl(0, 100%, 40%);">-              return GSM_PCHAN_TCH_F_TCH_H_PDCH;</span><br><span style="color: hsl(120, 100%, 40%);">+            return GSM_PCHAN_OSMO_DYN;</span><br><span>   if (!strcmp(str, "c+s4"))</span><br><span>          return GSM_PCHAN_CCCH_SDCCH4;</span><br><span>        if (!strcmp(str, "-"))</span><br><span>@@ -270,7 +270,7 @@</span><br><span> </span><br><span>                   /* Unused dyn TS start out as used for PDCH */</span><br><span>                       switch (trx->ts[i].pchan_on_init) {</span><br><span style="color: hsl(0, 100%, 40%);">-                  case GSM_PCHAN_TCH_F_TCH_H_PDCH:</span><br><span style="color: hsl(120, 100%, 40%);">+                      case GSM_PCHAN_OSMO_DYN:</span><br><span>                     case GSM_PCHAN_TCH_F_PDCH:</span><br><span>                           ts_set_pchan_is(&trx->ts[i], GSM_PCHAN_PDCH);</span><br><span>                                 break;</span><br><span>@@ -392,7 +392,7 @@</span><br><span>         /* Fake osmo_mgcpc_ep_ci to indicate that the lchan is used for voice */</span><br><span>     lchan->mgw_endpoint_ci_bts = (void*)1;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   if (lchan->ts->pchan_on_init == GSM_PCHAN_TCH_F_TCH_H_PDCH)</span><br><span style="color: hsl(120, 100%, 40%);">+     if (lchan->ts->pchan_on_init == GSM_PCHAN_OSMO_DYN)</span><br><span>            ts_set_pchan_is(lchan->ts, full_rate ? GSM_PCHAN_TCH_F : GSM_PCHAN_TCH_H);</span><br><span>        if (lchan->ts->pchan_on_init == GSM_PCHAN_TCH_F_PDCH) {</span><br><span>                OSMO_ASSERT(full_rate);</span><br><span>@@ -722,7 +722,7 @@</span><br><span> </span><br><span>            /* send dyn TS back to PDCH if unused */</span><br><span>             switch (lchan->ts->pchan_on_init) {</span><br><span style="color: hsl(0, 100%, 40%);">-               case GSM_PCHAN_TCH_F_TCH_H_PDCH:</span><br><span style="color: hsl(120, 100%, 40%);">+              case GSM_PCHAN_OSMO_DYN:</span><br><span>             case GSM_PCHAN_TCH_F_PDCH:</span><br><span>                   switch (lchan->ts->pchan_is) {</span><br><span>                         case GSM_PCHAN_TCH_H:</span><br><span>@@ -884,8 +884,8 @@</span><br><span>       "Create N TRX in the new BTS\n"</span><br><span>       "TRX count\n"</span><br><span>       "Timeslot config\n"</span><br><span style="color: hsl(0, 100%, 40%);">-      "Timeslot types for 8 * trx-count, each being one of CCCH+SDCCH4|SDCCH8|TCH/F|TCH/H|TCH/F_TCH/H_PDCH|...;"</span><br><span style="color: hsl(0, 100%, 40%);">-      " shorthands: cs+4 = CCCH+SDCCH4; dyn = TCH/F_TCH/H_PDCH\n")</span><br><span style="color: hsl(120, 100%, 40%);">+      "Timeslot types for 8 * trx-count, each being one of CCCH+SDCCH4|SDCCH8|TCH/F|TCH/H|TCH/F_TCH/H_SDCCH8_PDCH|...;"</span><br><span style="color: hsl(120, 100%, 40%);">+      " shorthands: cs+4 = CCCH+SDCCH4; dyn = TCH/F_TCH/H_SDCCH8_PDCH\n")</span><br><span> {</span><br><span>    int num_trx = atoi(argv[0]);</span><br><span>         VTY_ECHO();</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-bsc/+/24785">change 24785</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/+/24785"/><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: Id5b89fe589a52ff88486435ac43809edb4b80f98 </div>
<div style="display:none"> Gerrit-Change-Number: 24785 </div>
<div style="display:none"> Gerrit-PatchSet: 5 </div>
<div style="display:none"> Gerrit-Owner: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: daniel <dwillmann@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: fixeria <vyanitskiy@sysmocom.de> </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>