<p>fixeria <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/osmo-pcu/+/19789">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Jenkins Builder: Verified
  fixeria: Looks good to me, approved

</div><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, 34 insertions(+), 6 deletions(-)<br><br></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..61c63af 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,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_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_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_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 2374606..c2cc2c1 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%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+                                  OSMO_ASSERT(its->ma_bit_len <= sizeof(pdch->fh.ma) * 8);</span><br><span style="color: hsl(120, 100%, 40%);">+                                     pdch->fh.ma_oct_len = OSMO_BYTES_FOR_BITS(its->ma_bit_len);</span><br><span style="color: hsl(120, 100%, 40%);">+                                     pdch->fh.ma_bit_len = its->ma_bit_len;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+                                        /* Mobile Allocation + padding (byte/bit order as on the wire):</span><br><span style="color: hsl(120, 100%, 40%);">+                                        * | 00 00 00 00 00 cc bb aa | -> | cc bb aa 00 00 00 00 00 | */</span><br><span style="color: hsl(120, 100%, 40%);">+                                   unsigned int offset = sizeof(pdch->fh.ma) - pdch->fh.ma_oct_len;</span><br><span style="color: hsl(120, 100%, 40%);">+                                        memcpy(pdch->fh.ma, its->ma + offset, pdch->fh.ma_oct_len);</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: 8 </div>
<div style="display:none"> Gerrit-Owner: fixeria <vyanitskiy@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </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: lynxis lazus <lynxis@fe80.eu> </div>
<div style="display:none"> Gerrit-CC: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>