<p>pespin <strong>merged</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/osmo-trx/+/15436">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Jenkins Builder: Verified
  fixeria: Looks good to me, but someone else must approve
  pespin: Looks good to me, approved

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">Transceiver: Don't stop TRX if pulling from OFF timeslot<br><br>BTS may have any timeslot disabled, or may have not yet sent initial<br>SETSLOT cmd to properly configure the timeslot.<br><br>Change-Id: Icf62e5d1200c7a440f255bb46023cdbf61532b7f<br>---<br>M Transceiver52M/Transceiver.cpp<br>M Transceiver52M/Transceiver.h<br>2 files changed, 17 insertions(+), 9 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/Transceiver52M/Transceiver.cpp b/Transceiver52M/Transceiver.cpp</span><br><span>index 3901997..2f4018c 100644</span><br><span>--- a/Transceiver52M/Transceiver.cpp</span><br><span>+++ b/Transceiver52M/Transceiver.cpp</span><br><span>@@ -587,9 +587,11 @@</span><br><span> /*</span><br><span>  * Pull bursts from the FIFO and handle according to the slot</span><br><span>  * and burst correlation type. Equalzation is currently disabled.</span><br><span style="color: hsl(0, 100%, 40%);">- * returns true on success (bi filled), false on error (bi content undefined).</span><br><span style="color: hsl(120, 100%, 40%);">+ * returns 0 on success (bi filled), negative on error (bi content undefined):</span><br><span style="color: hsl(120, 100%, 40%);">+ *        -ENOENT: timeslot is off (fn and tn in bi are filled),</span><br><span style="color: hsl(120, 100%, 40%);">+ *        -EIO: read error</span><br><span>  */</span><br><span style="color: hsl(0, 100%, 40%);">-bool Transceiver::pullRadioVector(size_t chan, struct trx_ul_burst_ind *bi)</span><br><span style="color: hsl(120, 100%, 40%);">+int Transceiver::pullRadioVector(size_t chan, struct trx_ul_burst_ind *bi)</span><br><span> {</span><br><span>   int rc;</span><br><span>   struct estim_burst_params ebp;</span><br><span>@@ -605,7 +607,7 @@</span><br><span>   radioVector *radio_burst = mReceiveFIFO[chan]->read();</span><br><span>   if (!radio_burst) {</span><br><span>     LOGCHAN(chan, DMAIN, ERROR) << "ReceiveFIFO->read() returned no burst";</span><br><span style="color: hsl(0, 100%, 40%);">-    return false;</span><br><span style="color: hsl(120, 100%, 40%);">+    return -EIO;</span><br><span>   }</span><br><span> </span><br><span>   /* Set time and determine correlation type */</span><br><span>@@ -635,7 +637,7 @@</span><br><span>    * Not even power level or noise calculation. */</span><br><span>   if (type == OFF) {</span><br><span>     delete radio_burst;</span><br><span style="color: hsl(0, 100%, 40%);">-    return false;</span><br><span style="color: hsl(120, 100%, 40%);">+    return -ENOENT;</span><br><span>   }</span><br><span> </span><br><span>   /* Select the diversity channel with highest energy */</span><br><span>@@ -702,12 +704,12 @@</span><br><span> </span><br><span>   delete rxBurst;</span><br><span>   delete radio_burst;</span><br><span style="color: hsl(0, 100%, 40%);">-  return true;</span><br><span style="color: hsl(120, 100%, 40%);">+  return 0;</span><br><span> </span><br><span> ret_idle:</span><br><span>   bi->idle = true;</span><br><span>   delete radio_burst;</span><br><span style="color: hsl(0, 100%, 40%);">-  return true;</span><br><span style="color: hsl(120, 100%, 40%);">+  return 0;</span><br><span> }</span><br><span> </span><br><span> void Transceiver::reset()</span><br><span>@@ -1032,9 +1034,15 @@</span><br><span> bool Transceiver::driveReceiveFIFO(size_t chan)</span><br><span> {</span><br><span>   struct trx_ul_burst_ind bi;</span><br><span style="color: hsl(120, 100%, 40%);">+  int rc;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-  if (!pullRadioVector(chan, &bi))</span><br><span style="color: hsl(0, 100%, 40%);">-    return false;</span><br><span style="color: hsl(120, 100%, 40%);">+  if ((rc = pullRadioVector(chan, &bi)) < 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+    if (rc == -ENOENT) { /* timeslot off, continue processing */</span><br><span style="color: hsl(120, 100%, 40%);">+      LOGCHAN(chan, DMAIN, DEBUG) << unsigned(bi.tn) << ":" << bi.fn << " timeslot is off";</span><br><span style="color: hsl(120, 100%, 40%);">+      return true;</span><br><span style="color: hsl(120, 100%, 40%);">+    }</span><br><span style="color: hsl(120, 100%, 40%);">+    return false; /* other errors: we want to stop the process */</span><br><span style="color: hsl(120, 100%, 40%);">+  }</span><br><span> </span><br><span>   if (!bi.idle)</span><br><span>     logRxBurst(chan, &bi);</span><br><span>diff --git a/Transceiver52M/Transceiver.h b/Transceiver52M/Transceiver.h</span><br><span>index 0d09854..30f6a60 100644</span><br><span>--- a/Transceiver52M/Transceiver.h</span><br><span>+++ b/Transceiver52M/Transceiver.h</span><br><span>@@ -182,7 +182,7 @@</span><br><span>   void pushRadioVector(GSM::Time &nowTime);</span><br><span> </span><br><span>   /** Pull and demodulate a burst from the receive FIFO */</span><br><span style="color: hsl(0, 100%, 40%);">-  bool pullRadioVector(size_t chan, struct trx_ul_burst_ind *ind);</span><br><span style="color: hsl(120, 100%, 40%);">+  int pullRadioVector(size_t chan, struct trx_ul_burst_ind *ind);</span><br><span> </span><br><span>   /** Set modulus for specific timeslot */</span><br><span>   void setModulus(size_t timeslot, size_t chan);</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-trx/+/15436">change 15436</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-trx/+/15436"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-trx </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: Icf62e5d1200c7a440f255bb46023cdbf61532b7f </div>
<div style="display:none"> Gerrit-Change-Number: 15436 </div>
<div style="display:none"> Gerrit-PatchSet: 2 </div>
<div style="display:none"> Gerrit-Owner: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: fixeria <axilirator@gmail.com> </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@gnumonks.org> </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>