<p>fixeria has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-pcu/+/19789">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">pcuif_proto: version 10: add frequency hopping parameters<br><br>Change-Id: I6863830883d90954006a7126c22d348aa2a83271<br>Related: SYS#4868, OS#4547<br>---<br>M include/osmocom/pcu/pcuif_proto.h<br>M src/pcu_l1_if.cpp<br>2 files changed, 33 insertions(+), 6 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-pcu refs/changes/89/19789/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/include/osmocom/pcu/pcuif_proto.h b/include/osmocom/pcu/pcuif_proto.h</span><br><span>index e88607e..ad6fa9a 100644</span><br><span>--- a/include/osmocom/pcu/pcuif_proto.h</span><br><span>+++ b/include/osmocom/pcu/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,20 @@</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_ts {</span><br><span style="color: hsl(120, 100%, 40%);">+        uint8_t         tsc;</span><br><span style="color: hsl(120, 100%, 40%);">+  uint8_t         h;</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[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 slot-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_ts ts[8];        /* timeslots per TRX */</span><br><span> } __attribute__ ((packed));</span><br><span> </span><br><span> struct gsm_pcu_if_info_ind {</span><br><span>diff --git a/src/pcu_l1_if.cpp b/src/pcu_l1_if.cpp</span><br><span>index f92fe4e..3c348a4 100644</span><br><span>--- a/src/pcu_l1_if.cpp</span><br><span>+++ b/src/pcu_l1_if.cpp</span><br><span>@@ -630,6 +630,7 @@</span><br><span>            }</span><br><span> </span><br><span>                for (ts_nr = 0; ts_nr < ARRAY_SIZE(bts->trx[0].pdch); ts_nr++) {</span><br><span style="color: hsl(120, 100%, 40%);">+                        const struct gsm_pcu_if_info_ts *its = &info_ind->trx[trx_nr].ts[ts_nr];</span><br><span>                      struct gprs_rlcmac_pdch *pdch = &bts->trx[trx_nr].pdch[ts_nr];</span><br><span>                        if ((info_ind->trx[trx_nr].pdch_mask & (1 << ts_nr))) {</span><br><span>                                 /* FIXME: activate dynamically at RLCMAC */</span><br><span>@@ -643,9 +644,27 @@</span><br><span>                                   pcu_tx_act_req(trx_nr, ts_nr, 1);</span><br><span>                                    pdch->enable();</span><br><span>                           }</span><br><span style="color: hsl(0, 100%, 40%);">-                               pdch->tsc = info_ind->trx[trx_nr].tsc[ts_nr];</span><br><span style="color: hsl(0, 100%, 40%);">-                             LOGP(DL1IF, LOGL_INFO, "PDCH: trx=%d ts=%d\n",</span><br><span style="color: hsl(0, 100%, 40%);">-                                        trx_nr, ts_nr);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+                             pdch->tsc = its->tsc;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+                         /* (Optional) frequency hopping parameters */</span><br><span style="color: hsl(120, 100%, 40%);">+                         if (its->h) {</span><br><span style="color: hsl(120, 100%, 40%);">+                                      pdch->fh.enabled = true;</span><br><span style="color: hsl(120, 100%, 40%);">+                                   pdch->fh.maio    = its->maio;</span><br><span style="color: hsl(120, 100%, 40%);">+                                   pdch->fh.hsn     = its->hsn;</span><br><span style="color: hsl(120, 100%, 40%);">+                                    pdch->fh.ma_len  = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+                                    /* Mobile Allocation (byte/bit order as on the wire) */</span><br><span style="color: hsl(120, 100%, 40%);">+                                       for (unsigned int i = 0; i < ARRAY_SIZE(pdch->fh.ma); i++) {</span><br><span style="color: hsl(120, 100%, 40%);">+                                            /* Skip redundant octets (basically padding) */</span><br><span style="color: hsl(120, 100%, 40%);">+                                               if (!pdch->fh.ma_len && its->ma[i] == 0x00)</span><br><span style="color: hsl(120, 100%, 40%);">+                                                     continue;</span><br><span style="color: hsl(120, 100%, 40%);">+                                             pdch->fh.ma[pdch->fh.ma_len++] = its->ma[i];</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%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+                           LOGP(DL1IF, LOGL_INFO, "PDCH (trx=%u, ts=%u): tsc=%u, hopping=%s\n",</span><br><span style="color: hsl(120, 100%, 40%);">+                                     trx_nr, ts_nr, pdch->tsc, pdch->fh.enabled ? "yes" : "no");</span><br><span>                   } else {</span><br><span>                             if (pdch->is_enabled()) {</span><br><span>                                         pcu_tx_act_req(trx_nr, ts_nr, 0);</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-pcu/+/19789">change 19789</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-pcu/+/19789"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-pcu </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I6863830883d90954006a7126c22d348aa2a83271 </div>
<div style="display:none"> Gerrit-Change-Number: 19789 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: fixeria <vyanitskiy@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>