lms: Do {under,over}run checks even if LMS_RecvStream fails

Under failure, it could still be that stream status is updated, so let's
father that in all cases.

Change-Id: I4e2b8be06d2993db1bab233948a8ee774b8ac4ee
This commit is contained in:
Pau Espin Pedrol
2018-12-07 11:13:55 +01:00
parent e5b6664419
commit fe865f45d7

View File

@@ -534,6 +534,7 @@ int LMSDevice::readSamples(std::vector < short *>&bufs, int len, bool * overrun,
for (i = 0; i<chans; i++) {
thread_enable_cancel(false);
rc = LMS_RecvStream(&m_lms_stream_rx[i], bufs[i], len, &rx_metadata, 100);
update_stream_stats(i, underrun, overrun);
if (rc != len) {
LOGC(DDEV, ALERT) << "LMS: Device receive timed out (" << rc << " vs exp " << len << ").";
thread_enable_cancel(true);
@@ -541,7 +542,6 @@ int LMSDevice::readSamples(std::vector < short *>&bufs, int len, bool * overrun,
}
if (timestamp != (TIMESTAMP)rx_metadata.timestamp)
LOGC(DDEV, ALERT) << "chan "<< i << " recv buffer of len " << rc << " expect " << std::hex << timestamp << " got " << std::hex << (TIMESTAMP)rx_metadata.timestamp << " (" << std::hex << rx_metadata.timestamp <<") diff=" << rx_metadata.timestamp - timestamp;
update_stream_stats(i, underrun, overrun);
thread_enable_cancel(true);
}