<p>Pau Espin Pedrol has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/13833">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">uhd: No need to use dynamic mem for rx_buffers<br><br>This way we don't need to free explicitly and we simplify code.<br><br>Change-Id: I39b293c24053298256626fa78344102032fc2104<br>---<br>M Transceiver52M/device/uhd/UHDDevice.cpp<br>M Transceiver52M/device/uhd/UHDDevice.h<br>2 files changed, 12 insertions(+), 17 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-trx refs/changes/33/13833/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/Transceiver52M/device/uhd/UHDDevice.cpp b/Transceiver52M/device/uhd/UHDDevice.cpp</span><br><span>index 79e5855..3e53111 100644</span><br><span>--- a/Transceiver52M/device/uhd/UHDDevice.cpp</span><br><span>+++ b/Transceiver52M/device/uhd/UHDDevice.cpp</span><br><span>@@ -173,9 +173,6 @@</span><br><span> uhd_device::~uhd_device()</span><br><span> {</span><br><span>   stop();</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- for (size_t i = 0; i < rx_buffers.size(); i++)</span><br><span style="color: hsl(0, 100%, 40%);">-               delete rx_buffers[i];</span><br><span> }</span><br><span> </span><br><span> void uhd_device::init_gains()</span><br><span>@@ -459,7 +456,6 @@</span><br><span>        rx_freqs.resize(chans);</span><br><span>      tx_gains.resize(chans);</span><br><span>      rx_gains.resize(chans);</span><br><span style="color: hsl(0, 100%, 40%);">- rx_buffers.resize(chans);</span><br><span> </span><br><span>        switch (ref) {</span><br><span>       case REF_INTERNAL:</span><br><span>@@ -513,8 +509,7 @@</span><br><span> </span><br><span>         // Create receive buffer</span><br><span>     size_t buf_len = SAMPLE_BUF_SZ / sizeof(uint32_t);</span><br><span style="color: hsl(0, 100%, 40%);">-      for (size_t i = 0; i < rx_buffers.size(); i++)</span><br><span style="color: hsl(0, 100%, 40%);">-               rx_buffers[i] = new smpl_buf(buf_len, rx_rate);</span><br><span style="color: hsl(120, 100%, 40%);">+       rx_buffers = std::vector<smpl_buf>(chans, smpl_buf(buf_len, rx_rate));</span><br><span> </span><br><span>     // Create vector buffer</span><br><span>      pkt_bufs = std::vector<std::vector<short> >(chans, std::vector<short>(2 * rx_spp));</span><br><span>@@ -711,15 +706,15 @@</span><br><span>        LOGC(DDEV, DEBUG) << "Requested timestamp = " << ts.get_real_secs();</span><br><span> </span><br><span>       // Check that timestamp is valid</span><br><span style="color: hsl(0, 100%, 40%);">-        rc = rx_buffers[0]->avail_smpls(timestamp);</span><br><span style="color: hsl(120, 100%, 40%);">+        rc = rx_buffers[0].avail_smpls(timestamp);</span><br><span>   if (rc < 0) {</span><br><span style="color: hsl(0, 100%, 40%);">-                LOGC(DDEV, ERROR) << rx_buffers[0]->str_code(rc);</span><br><span style="color: hsl(0, 100%, 40%);">-              LOGC(DDEV, ERROR) << rx_buffers[0]->str_status(timestamp);</span><br><span style="color: hsl(120, 100%, 40%);">+           LOGC(DDEV, ERROR) << rx_buffers[0].str_code(rc);</span><br><span style="color: hsl(120, 100%, 40%);">+                LOGC(DDEV, ERROR) << rx_buffers[0].str_status(timestamp);</span><br><span>              return 0;</span><br><span>    }</span><br><span> </span><br><span>        // Receive samples from the usrp until we have enough</span><br><span style="color: hsl(0, 100%, 40%);">-   while (rx_buffers[0]->avail_smpls(timestamp) < len) {</span><br><span style="color: hsl(120, 100%, 40%);">+   while (rx_buffers[0].avail_smpls(timestamp) < len) {</span><br><span>              thread_enable_cancel(false);</span><br><span>                 size_t num_smpls = rx_stream->recv(pkt_ptrs, rx_spp,</span><br><span>                                                 metadata, 0.1, true);</span><br><span>@@ -745,14 +740,14 @@</span><br><span>             LOGC(DDEV, DEBUG) << "Received timestamp = " << ts.get_real_secs();</span><br><span> </span><br><span>                for (size_t i = 0; i < rx_buffers.size(); i++) {</span><br><span style="color: hsl(0, 100%, 40%);">-                     rc = rx_buffers[i]->write((short *) &pkt_bufs[i].front(),</span><br><span style="color: hsl(120, 100%, 40%);">+                      rc = rx_buffers[i].write((short *) &pkt_bufs[i].front(),</span><br><span>                                                   num_smpls,</span><br><span>                                                   metadata.time_spec.to_ticks(rx_rate));</span><br><span> </span><br><span>                         // Continue on local overrun, exit on other errors</span><br><span>                   if ((rc < 0)) {</span><br><span style="color: hsl(0, 100%, 40%);">-                              LOGC(DDEV, ERROR) << rx_buffers[i]->str_code(rc);</span><br><span style="color: hsl(0, 100%, 40%);">-                              LOGC(DDEV, ERROR) << rx_buffers[i]->str_status(timestamp);</span><br><span style="color: hsl(120, 100%, 40%);">+                           LOGC(DDEV, ERROR) << rx_buffers[i].str_code(rc);</span><br><span style="color: hsl(120, 100%, 40%);">+                                LOGC(DDEV, ERROR) << rx_buffers[i].str_status(timestamp);</span><br><span>                              if (rc != smpl_buf::ERROR_OVERFLOW)</span><br><span>                                  return 0;</span><br><span>                    }</span><br><span>@@ -761,10 +756,10 @@</span><br><span> </span><br><span>        // We have enough samples</span><br><span>    for (size_t i = 0; i < rx_buffers.size(); i++) {</span><br><span style="color: hsl(0, 100%, 40%);">-             rc = rx_buffers[i]->read(bufs[i], len, timestamp);</span><br><span style="color: hsl(120, 100%, 40%);">+         rc = rx_buffers[i].read(bufs[i], len, timestamp);</span><br><span>            if ((rc < 0) || (rc != len)) {</span><br><span style="color: hsl(0, 100%, 40%);">-                       LOGC(DDEV, ERROR) << rx_buffers[i]->str_code(rc);</span><br><span style="color: hsl(0, 100%, 40%);">-                      LOGC(DDEV, ERROR) << rx_buffers[i]->str_status(timestamp);</span><br><span style="color: hsl(120, 100%, 40%);">+                   LOGC(DDEV, ERROR) << rx_buffers[i].str_code(rc);</span><br><span style="color: hsl(120, 100%, 40%);">+                        LOGC(DDEV, ERROR) << rx_buffers[i].str_status(timestamp);</span><br><span>                      return 0;</span><br><span>            }</span><br><span>    }</span><br><span>diff --git a/Transceiver52M/device/uhd/UHDDevice.h b/Transceiver52M/device/uhd/UHDDevice.h</span><br><span>index 2a9fc02..5d7e4bd 100644</span><br><span>--- a/Transceiver52M/device/uhd/UHDDevice.h</span><br><span>+++ b/Transceiver52M/device/uhd/UHDDevice.h</span><br><span>@@ -139,7 +139,7 @@</span><br><span>     uhd::time_spec_t prev_ts;</span><br><span> </span><br><span>        TIMESTAMP ts_initial, ts_offset;</span><br><span style="color: hsl(0, 100%, 40%);">-        std::vector<smpl_buf *> rx_buffers;</span><br><span style="color: hsl(120, 100%, 40%);">+     std::vector<smpl_buf> rx_buffers;</span><br><span>      /* Sample buffers used to receive samples from UHD: */</span><br><span>       std::vector<std::vector<short> > pkt_bufs;</span><br><span>       /* Used to call UHD API: Buffer pointer of each elem in pkt_ptrs will</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/13833">change 13833</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/13833"/><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-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: I39b293c24053298256626fa78344102032fc2104 </div>
<div style="display:none"> Gerrit-Change-Number: 13833 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Pau Espin Pedrol <pespin@sysmocom.de> </div>