<p>Max <strong>merged</strong> this change.</p><p><a href="https://gerrit.osmocom.org/12952">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Jenkins Builder: Verified
  Harald Welte: Looks good to me, approved

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">Rewrite EGPRS Packet Uplink IA Rest Octets for MBA<br><br>Use bitvec_set_*() directly without external write pointer tracking to<br>simplify the code. This is part of IA Rest Octets (3GPP TS 44.018<br>ยง10.5.2.16) which is the last part of the message so it should not<br>interfere with the rest of encoding functions.<br><br>That's partially based on reverted commit 529ce885450946d85d1920fb3d1a994c3efe5849.<br><br>Change-Id: I19cc4226e7e831e7d7f70212b2078f5589a87ff0<br>Related: OS#3014<br>---<br>M src/encoding.cpp<br>1 file changed, 11 insertions(+), 15 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/encoding.cpp b/src/encoding.cpp</span><br><span>index e7e13ac..ba0e474 100644</span><br><span>--- a/src/encoding.cpp</span><br><span>+++ b/src/encoding.cpp</span><br><span>@@ -258,26 +258,21 @@</span><br><span>  return rc;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-static int write_ia_rest_egprs_uplink_mba(bitvec * dest, uint32_t fn, uint8_t alpha, uint8_t gamma, unsigned& wp)</span><br><span style="color: hsl(120, 100%, 40%);">+static int write_ia_rest_egprs_uplink_mba(bitvec * dest, uint32_t fn, uint8_t alpha, uint8_t gamma)</span><br><span> {</span><br><span>   int rc = 0;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- bitvec_write_field(dest, &wp, 0, 1); /* multiblock allocation */</span><br><span style="color: hsl(120, 100%, 40%);">+  SET_0(dest); /* Multi Block Allocation */</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   if (alpha) {</span><br><span style="color: hsl(0, 100%, 40%);">-            bitvec_write_field(dest, &wp, 0x1, 1); /* ALPHA =yes */</span><br><span style="color: hsl(0, 100%, 40%);">-             bitvec_write_field(dest, &wp, alpha, 4); /* ALPHA */</span><br><span style="color: hsl(0, 100%, 40%);">-        } else {</span><br><span style="color: hsl(0, 100%, 40%);">-                bitvec_write_field(dest, &wp, 0x0, 1); /* ALPHA = no */</span><br><span style="color: hsl(0, 100%, 40%);">-     }</span><br><span style="color: hsl(120, 100%, 40%);">+     rc = write_alpha_gamma(dest, alpha, gamma);</span><br><span style="color: hsl(120, 100%, 40%);">+   CHECK(rc);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-  bitvec_write_field(dest, &wp, gamma, 5); /* GAMMA power contrl */</span><br><span style="color: hsl(0, 100%, 40%);">-   bitvec_write_field(dest, &wp, (fn / (26 * 51)) % 32, 5);/* T1' */</span><br><span style="color: hsl(0, 100%, 40%);">-       bitvec_write_field(dest, &wp, fn % 51, 6);              /* T3 */</span><br><span style="color: hsl(0, 100%, 40%);">-    bitvec_write_field(dest, &wp, fn % 26, 5);              /* T2 */</span><br><span style="color: hsl(0, 100%, 40%);">-    bitvec_write_field(dest, &wp, 0, 2); /* Radio block allocation */</span><br><span style="color: hsl(120, 100%, 40%);">+ rc = write_tbf_start_time(dest, fn);</span><br><span style="color: hsl(120, 100%, 40%);">+  CHECK(rc);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-  bitvec_write_field(dest, &wp, 0, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+      SET_0(dest); /* NUMBER OF RADIO BLOCKS ALLOCATED: */</span><br><span style="color: hsl(120, 100%, 40%);">+  SET_0(dest); /* 1 radio block reserved for uplink transmission */</span><br><span style="color: hsl(120, 100%, 40%);">+     SET_0(dest); /* No P0 */</span><br><span> </span><br><span>         return rc;</span><br><span> }</span><br><span>@@ -483,7 +478,8 @@</span><br><span>                if (as_ul_tbf(tbf) != NULL) {</span><br><span>                        rc = write_ia_rest_egprs_uplink_sba(as_ul_tbf(tbf), dest, usf, alpha, gamma, wp);</span><br><span>            } else {</span><br><span style="color: hsl(0, 100%, 40%);">-                        rc = write_ia_rest_egprs_uplink_mba(dest, fn, alpha, gamma, wp);</span><br><span style="color: hsl(120, 100%, 40%);">+                      dest->cur_bit = wp;</span><br><span style="color: hsl(120, 100%, 40%);">+                        rc = write_ia_rest_egprs_uplink_mba(dest, fn, alpha, gamma);</span><br><span>                 }</span><br><span>    } else {</span><br><span>             OSMO_ASSERT(!tbf || !tbf->is_egprs_enabled());</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/12952">change 12952</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/12952"/><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-MessageType: merged </div>
<div style="display:none"> Gerrit-Change-Id: I19cc4226e7e831e7d7f70212b2078f5589a87ff0 </div>
<div style="display:none"> Gerrit-Change-Number: 12952 </div>
<div style="display:none"> Gerrit-PatchSet: 6 </div>
<div style="display:none"> Gerrit-Owner: Max <msuraev@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Harald Welte <laforge@gnumonks.org> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder (1000002) </div>
<div style="display:none"> Gerrit-Reviewer: Max <msuraev@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Neels Hofmeyr <nhofmeyr@sysmocom.de> </div>
<div style="display:none"> Gerrit-CC: Vadim Yanitskiy <axilirator@gmail.com> </div>