radioInterface: forward errors from RadioDevice to Transceiver in recv path

Change-Id: Id7b08b19d6575c79b4d57db656a17ff05bb61ee9
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 @@
   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 @@
       burstSize = (symbolsPerSlot + (tN % 4 == 0)) * mSPSRx;
   }
 
-  return true;
+  return 1;
 }
 
 bool RadioInterface::isUnderrun()
@@ -300,13 +301,13 @@
 }
 
 /* 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 @@
 
   if (numRecv != segmentLen) {
           LOG(ALERT) << "Receive error " << numRecv;
-          return;
+          return -1;
   }
 
   for (size_t i = 0; i < mChans; i++) {
@@ -328,6 +329,7 @@
 
   underrun |= local_underrun;
   readTimestamp += numRecv;
+  return 0;
 }
 
 /* Send timestamped chunk to the device with arbitrary size */