diff options
Diffstat (limited to 'Transceiver52M/radioInterface.cpp')
-rw-r--r-- | Transceiver52M/radioInterface.cpp | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/Transceiver52M/radioInterface.cpp b/Transceiver52M/radioInterface.cpp index 43fa3a3..ff9f493 100644 --- a/Transceiver52M/radioInterface.cpp +++ b/Transceiver52M/radioInterface.cpp @@ -34,10 +34,9 @@ extern "C" { #define NUMCHUNKS 4 RadioInterface::RadioInterface(RadioDevice *wRadio, - int wReceiveOffset, - size_t sps, size_t chans, - GSM::Time wStartTime) - : mRadio(wRadio), mSPSTx(sps), mSPSRx(1), mChans(chans), + size_t sps, size_t chans, size_t diversity, + int wReceiveOffset, GSM::Time wStartTime) + : mRadio(wRadio), mSPSTx(sps), mSPSRx(1), mChans(chans), mMIMO(diversity), sendCursor(0), recvCursor(0), underrun(false), overrun(false), receiveOffset(wReceiveOffset), mOn(false), powerScaling(1.0), loadTest(false) @@ -52,11 +51,8 @@ RadioInterface::~RadioInterface(void) bool RadioInterface::init(int type) { - if (type != RadioDevice::NORMAL) - return false; - - if (!mChans) { - LOG(ALERT) << "Invalid number of channels " << mChans; + if ((type != RadioDevice::NORMAL) || (mMIMO > 1) || !mChans) { + LOG(ALERT) << "Invalid configuration"; return false; } @@ -251,10 +247,14 @@ bool RadioInterface::driveReceiveRadio() */ while (recvSz > burstSize) { for (size_t i = 0; i < mChans; i++) { - burst = new radioVector(rcvClock, burstSize, head); + burst = new radioVector(rcvClock, burstSize, head, mMIMO); + + for (size_t n = 0; n < mMIMO; n++) { + unRadioifyVector((float *) + (recvBuffer[mMIMO * i + n]->begin() + readSz), + *burst->getVector(n)); + } - unRadioifyVector((float *) (recvBuffer[i]->begin() + readSz), - *burst->getVector()); if (mReceiveFIFO[i].size() < 32) mReceiveFIFO[i].write(burst); |