diff options
author | Pau Espin Pedrol <pespin@sysmocom.de> | 2018-09-03 16:45:15 +0200 |
---|---|---|
committer | Pau Espin Pedrol <pespin@sysmocom.de> | 2018-09-03 18:53:52 +0200 |
commit | 8e498bfd354ad0d6042fd9c88e9ffa1f40ef5ff4 (patch) | |
tree | fe5bc40de1ca22cebb8c9a7db1d8f1f47300cc7b /Transceiver52M/radioInterface.cpp | |
parent | 46444637c6678ee4c4b284d24e57d03bd4f93e25 (diff) |
radioInterface: forward errors from RadioDevice to Transceiver in recv path
Change-Id: Id7b08b19d6575c79b4d57db656a17ff05bb61ee9
Diffstat (limited to 'Transceiver52M/radioInterface.cpp')
-rw-r--r-- | Transceiver52M/radioInterface.cpp | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/Transceiver52M/radioInterface.cpp b/Transceiver52M/radioInterface.cpp index f74897f..b9c6672 100644 --- a/Transceiver52M/radioInterface.cpp +++ b/Transceiver52M/radioInterface.cpp @@ -218,14 +218,15 @@ void RadioInterface::driveTransmitRadio(std::vector<signalVector *> &bursts, while (pushBuffer()); } -bool RadioInterface::driveReceiveRadio() +int RadioInterface::driveReceiveRadio() { radioVector *burst = NULL; if (!mOn) - return false; + return 0; - pullBuffer(); + if (pullBuffer() < 0) + return -1; GSM::Time rcvClock = mClock.get(); rcvClock.decTN(receiveOffset); @@ -270,7 +271,7 @@ bool RadioInterface::driveReceiveRadio() burstSize = (symbolsPerSlot + (tN % 4 == 0)) * mSPSRx; } - return true; + return 1; } bool RadioInterface::isUnderrun() @@ -300,13 +301,13 @@ double RadioInterface::getRxGain(size_t chan) } /* Receive a timestamped chunk from the device */ -void RadioInterface::pullBuffer() +int RadioInterface::pullBuffer() { bool local_underrun; size_t numRecv, segmentLen = recvBuffer[0]->getSegmentLen(); if (recvBuffer[0]->getFreeSegments() <= 0) - return; + return -1; /* Outer buffer access size is fixed */ numRecv = mRadio->readSamples(convertRecvBuffer, @@ -317,7 +318,7 @@ void RadioInterface::pullBuffer() if (numRecv != segmentLen) { LOG(ALERT) << "Receive error " << numRecv; - return; + return -1; } for (size_t i = 0; i < mChans; i++) { @@ -328,6 +329,7 @@ void RadioInterface::pullBuffer() underrun |= local_underrun; readTimestamp += numRecv; + return 0; } /* Send timestamped chunk to the device with arbitrary size */ |