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

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">Update IA Rest Octets encoding<br><br>Write initial bits of 3GPP TS 44.018 §10.5.2.16 IA Rest Octets the same<br>way as  write_ia_rest_*() routines do.<br><br>This should also fix the issue addressed in<br>I75dd5bebc74eea85edf9582607c774d0bba0d2a6 initially by properly encoding<br>L/H bits.<br><br>Change-Id: I7ed5270bf95c3f6e9e026ff447eef8539f6f0314<br>---<br>M src/encoding.cpp<br>1 file changed, 13 insertions(+), 17 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 b460d41..1b325b4 100644</span><br><span>--- a/src/encoding.cpp</span><br><span>+++ b/src/encoding.cpp</span><br><span>@@ -497,41 +497,37 @@</span><br><span>     plen = wp / 8;</span><br><span> </span><br><span>   /* 3GPP TS 44.018 §10.5.2.16 IA Rest Octets */</span><br><span style="color: hsl(120, 100%, 40%);">+       dest->cur_bit = wp;</span><br><span>       if (downlink) {</span><br><span>              if (!as_dl_tbf(tbf)) {</span><br><span>                       LOGP(DRLCMACDL, LOGL_ERROR, "Cannot encode DL IMMEDIATE ASSIGNMENT without TBF\n");</span><br><span>                        return -EINVAL;</span><br><span>              }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-           dest->cur_bit = wp;</span><br><span>               rc = write_ia_rest_downlink(as_dl_tbf(tbf), dest, polling, gsm48_ta_is_valid(ta), fn, alpha, gamma,</span><br><span>                                      ta_idx);</span><br><span>         } else if (((burst_type == GSM_L1_BURST_TYPE_ACCESS_1) || (burst_type == GSM_L1_BURST_TYPE_ACCESS_2))) {</span><br><span style="color: hsl(0, 100%, 40%);">-                bitvec_write_field(dest, &wp, 1, 2);    /* LH */</span><br><span style="color: hsl(0, 100%, 40%);">-            bitvec_write_field(dest, &wp, 0, 2);    /* 0 EGPRS Uplink Assignment */</span><br><span style="color: hsl(0, 100%, 40%);">-             bitvec_write_field(dest, &wp, ra & 0x1F, 5);    /* Extended RA */</span><br><span style="color: hsl(0, 100%, 40%);">-               bitvec_write_field(dest, &wp, 0, 1);    /* Access technology Request */</span><br><span style="color: hsl(120, 100%, 40%);">+           SET_L(dest); SET_H(dest); // "LH"</span><br><span style="color: hsl(120, 100%, 40%);">+           SET_0(dest); SET_0(dest); // "00" < EGPRS Packet Uplink Assignment ></span><br><span style="color: hsl(120, 100%, 40%);">+          rc = bitvec_set_u64(dest, ra & 0x1F, 5, false); // < Extended RA ></span><br><span style="color: hsl(120, 100%, 40%);">+          CHECK(rc);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-          if (as_ul_tbf(tbf) != NULL) {</span><br><span style="color: hsl(0, 100%, 40%);">-                   dest->cur_bit = wp;</span><br><span style="color: hsl(120, 100%, 40%);">+                SET_0(dest); // No < Access Technologies Request struct ></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+             if (as_ul_tbf(tbf) != NULL)</span><br><span>                  rc = write_ia_rest_egprs_uplink_sba(as_ul_tbf(tbf), dest, usf, alpha, gamma, ta_idx);</span><br><span style="color: hsl(0, 100%, 40%);">-           } else {</span><br><span style="color: hsl(0, 100%, 40%);">-                        dest->cur_bit = wp;</span><br><span style="color: hsl(120, 100%, 40%);">+                else</span><br><span>                         rc = write_ia_rest_egprs_uplink_mba(dest, fn, alpha, gamma);</span><br><span style="color: hsl(0, 100%, 40%);">-            }</span><br><span>    } else {</span><br><span>             OSMO_ASSERT(!tbf || !tbf->is_egprs_enabled());</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-           bitvec_write_field(dest, &wp, 3, 2);    // "HH"</span><br><span style="color: hsl(0, 100%, 40%);">-           bitvec_write_field(dest, &wp, 0, 2);    // "0" Packet Uplink Assignment</span><br><span style="color: hsl(120, 100%, 40%);">+         SET_H(dest); SET_H(dest); // "HH"</span><br><span style="color: hsl(120, 100%, 40%);">+           SET_0(dest); SET_0(dest); // "00" < Packet Uplink Assignment ></span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-              if (as_ul_tbf(tbf) != NULL) {</span><br><span style="color: hsl(0, 100%, 40%);">-                   dest->cur_bit = wp;</span><br><span style="color: hsl(120, 100%, 40%);">+                if (as_ul_tbf(tbf) != NULL)</span><br><span>                  rc = write_ia_rest_uplink_mba(as_ul_tbf(tbf), dest, usf, alpha, gamma, ta_idx);</span><br><span style="color: hsl(0, 100%, 40%);">-         } else {</span><br><span style="color: hsl(0, 100%, 40%);">-                        dest->cur_bit = wp;</span><br><span style="color: hsl(120, 100%, 40%);">+                else</span><br><span>                         rc = write_ia_rest_uplink_sba(dest, fn, alpha, gamma);</span><br><span style="color: hsl(0, 100%, 40%);">-          }</span><br><span>    }</span><br><span> </span><br><span>        if (rc < 0) {</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/13245">change 13245</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/13245"/><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: I7ed5270bf95c3f6e9e026ff447eef8539f6f0314 </div>
<div style="display:none"> Gerrit-Change-Number: 13245 </div>
<div style="display:none"> Gerrit-PatchSet: 5 </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>