<p>lynxis lazus has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-bsc/+/20293">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">pcuif_proto: version 10: add frequency hopping parameters<br><br>Related: SYS#4868, OS#4546, OS#4547<br>Change-Id: I5540fae66a116cbb25ec75b35145c36137146ffd<br>---<br>M include/osmocom/bsc/pcuif_proto.h<br>M src/osmo-bsc/pcu_sock.c<br>2 files changed, 41 insertions(+), 13 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/93/20293/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/include/osmocom/bsc/pcuif_proto.h b/include/osmocom/bsc/pcuif_proto.h</span><br><span>index e88607e..80d4f90 100644</span><br><span>--- a/include/osmocom/bsc/pcuif_proto.h</span><br><span>+++ b/include/osmocom/bsc/pcuif_proto.h</span><br><span>@@ -5,7 +5,7 @@</span><br><span> </span><br><span> #define PCU_SOCK_DEFAULT      "/tmp/pcu_bts"</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-#define PCU_IF_VERSION              0x09</span><br><span style="color: hsl(120, 100%, 40%);">+#define PCU_IF_VERSION            0x0a</span><br><span> #define TXT_MAX_LEN     128</span><br><span> </span><br><span> /* msg_type */</span><br><span>@@ -112,12 +112,21 @@</span><br><span>    uint8_t         ts_nr;</span><br><span> } __attribute__ ((packed));</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+struct gsm_pcu_if_info_trx_ts {</span><br><span style="color: hsl(120, 100%, 40%);">+    uint8_t         tsc;</span><br><span style="color: hsl(120, 100%, 40%);">+  uint8_t         hopping;</span><br><span style="color: hsl(120, 100%, 40%);">+      uint8_t         hsn;</span><br><span style="color: hsl(120, 100%, 40%);">+  uint8_t         maio;</span><br><span style="color: hsl(120, 100%, 40%);">+ uint8_t         ma_bit_len;</span><br><span style="color: hsl(120, 100%, 40%);">+   uint8_t         ma[8];</span><br><span style="color: hsl(120, 100%, 40%);">+} __attribute__ ((packed));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> struct gsm_pcu_if_info_trx {</span><br><span>        uint16_t        arfcn;</span><br><span style="color: hsl(0, 100%, 40%);">-  uint8_t         pdch_mask;              /* PDCH channels per TS */</span><br><span style="color: hsl(120, 100%, 40%);">+    uint8_t         pdch_mask;              /* PDCH timeslot mask */</span><br><span>     uint8_t         spare;</span><br><span style="color: hsl(0, 100%, 40%);">-  uint8_t         tsc[8];                 /* TSC per channel */</span><br><span>        uint32_t        hlayer1;</span><br><span style="color: hsl(120, 100%, 40%);">+      struct gsm_pcu_if_info_trx_ts ts[8];</span><br><span> } __attribute__ ((packed));</span><br><span> </span><br><span> struct gsm_pcu_if_info_ind {</span><br><span>diff --git a/src/osmo-bsc/pcu_sock.c b/src/osmo-bsc/pcu_sock.c</span><br><span>index 35fe2d7..1a0f06a 100644</span><br><span>--- a/src/osmo-bsc/pcu_sock.c</span><br><span>+++ b/src/osmo-bsc/pcu_sock.c</span><br><span>@@ -96,6 +96,18 @@</span><br><span>        return msg;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/* Fill the frequency hopping parameter */</span><br><span style="color: hsl(120, 100%, 40%);">+static void info_ind_fill_fhp(struct gsm_pcu_if_info_trx_ts *ts_info,</span><br><span style="color: hsl(120, 100%, 40%);">+                             const struct gsm_bts_trx_ts *ts)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+     ts_info->maio = ts->hopping.maio;</span><br><span style="color: hsl(120, 100%, 40%);">+       ts_info->hsn = ts->hopping.hsn;</span><br><span style="color: hsl(120, 100%, 40%);">+ ts_info->hopping = 0x1;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  memcpy(&ts_info->ma, ts->hopping.ma_data, ts->hopping.ma_len);</span><br><span style="color: hsl(120, 100%, 40%);">+   ts_info->ma_bit_len = ts->hopping.ma_len * 8 - ts->hopping.ma.cur_bit;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /* Send BTS properties to the PCU */</span><br><span> static int pcu_tx_info_ind(struct gsm_bts *bts)</span><br><span> {</span><br><span>@@ -206,17 +218,24 @@</span><br><span>                 info_ind->trx[i].arfcn = trx->arfcn;</span><br><span>           for (tn = 0; tn < ARRAY_SIZE(trx->ts); tn++) {</span><br><span>                         ts = &trx->ts[tn];</span><br><span style="color: hsl(0, 100%, 40%);">-                       if (ts->mo.nm_state.operational == NM_OPSTATE_ENABLED</span><br><span style="color: hsl(0, 100%, 40%);">-                            && ts->pchan_is == GSM_PCHAN_PDCH) {</span><br><span style="color: hsl(0, 100%, 40%);">-                             info_ind->trx[i].pdch_mask |= (1 << tn);</span><br><span style="color: hsl(0, 100%, 40%);">-                               info_ind->trx[i].tsc[tn] =</span><br><span style="color: hsl(120, 100%, 40%);">+                 if (ts->mo.nm_state.operational != NM_OPSTATE_ENABLED ||</span><br><span style="color: hsl(120, 100%, 40%);">+                       ts->pchan_is != GSM_PCHAN_PDCH)</span><br><span style="color: hsl(120, 100%, 40%);">+                                continue;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+                   info_ind->trx[i].pdch_mask |= (1 << tn);</span><br><span style="color: hsl(120, 100%, 40%);">+                     info_ind->trx[i].ts[tn].tsc =</span><br><span>                                     (ts->tsc >= 0) ? ts->tsc : bts->bsic & 7;</span><br><span style="color: hsl(0, 100%, 40%);">-                               LOGP(DPCU, LOGL_INFO, "trx=%d ts=%d: "</span><br><span style="color: hsl(0, 100%, 40%);">-                                        "available (tsc=%d arfcn=%d)\n",</span><br><span style="color: hsl(0, 100%, 40%);">-                                      trx->nr, ts->nr,</span><br><span style="color: hsl(0, 100%, 40%);">-                                  info_ind->trx[i].tsc[tn],</span><br><span style="color: hsl(0, 100%, 40%);">-                                    info_ind->trx[i].arfcn);</span><br><span style="color: hsl(0, 100%, 40%);">-                     }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+                   if (ts->hopping.enabled)</span><br><span style="color: hsl(120, 100%, 40%);">+                           info_ind_fill_fhp(&info_ind->trx[i].ts[tn], ts);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+                     LOGP(DPCU, LOGL_INFO, "trx=%d ts=%d: PDCH is available "</span><br><span style="color: hsl(120, 100%, 40%);">+                         "(tsc=%u ", trx->nr, ts->nr, info_ind->trx[i].ts[tn].tsc);</span><br><span style="color: hsl(120, 100%, 40%);">+                    if (ts->hopping.enabled)</span><br><span style="color: hsl(120, 100%, 40%);">+                           LOGPC(DPCU, LOGL_INFO, "hopping=yes hsn=%u maio=%u ma_bit_len=%u)\n",</span><br><span style="color: hsl(120, 100%, 40%);">+                                     ts->hopping.hsn, ts->hopping.maio, trx->ts[tn].hopping.ma.data_len - trx->ts[tn].hopping.ma.cur_bit);</span><br><span style="color: hsl(120, 100%, 40%);">+                       else</span><br><span style="color: hsl(120, 100%, 40%);">+                          LOGPC(DPCU, LOGL_INFO, "hopping=no arfcn=%u)\n", trx->arfcn);</span><br><span>           }</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/+/20293">change 20293</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/+/20293"/><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: I5540fae66a116cbb25ec75b35145c36137146ffd </div>
<div style="display:none"> Gerrit-Change-Number: 20293 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: lynxis lazus <lynxis@fe80.eu> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>