diff --git a/Transceiver52M/Transceiver.cpp b/Transceiver52M/Transceiver.cpp index a7c629e2..f09f036e 100644 --- a/Transceiver52M/Transceiver.cpp +++ b/Transceiver52M/Transceiver.cpp @@ -501,7 +501,6 @@ void Transceiver::driveControl() // Prepare for thread start mPower = -20; mRadioInterface->start(); - generateRACHSequence(mSPS); // Start radio interface threads. mFIFOServiceLoopThread->start((void * (*)(void*))FIFOServiceLoopAdapter,(void*) this); diff --git a/Transceiver52M/runTransceiver.cpp b/Transceiver52M/runTransceiver.cpp index dc2ebc68..f268752d 100644 --- a/Transceiver52M/runTransceiver.cpp +++ b/Transceiver52M/runTransceiver.cpp @@ -160,6 +160,9 @@ int main(int argc, char *argv[]) Transceiver *trx = new Transceiver(trxPort, trxAddr.c_str(), SAMPSPERSYM, GSM::Time(3,0), radio); + if (!trx->init()) { + LOG(ALERT) << "Failed to initialize transceiver"; + } trx->receiveFIFO(radio->receiveFIFO()); trx->start(); diff --git a/Transceiver52M/sigProcLib.cpp b/Transceiver52M/sigProcLib.cpp index 9ad149f0..2ccc714f 100644 --- a/Transceiver52M/sigProcLib.cpp +++ b/Transceiver52M/sigProcLib.cpp @@ -244,11 +244,21 @@ void initGMSKRotationTables(int sps) } } -void sigProcLibSetup(int sps) +bool sigProcLibSetup(int sps) { + if ((sps != 0) && (sps != 2) && (sps != 4)) + return false; + initTrigTables(); initGMSKRotationTables(sps); generateGSMPulse(sps, 2); + + if (!generateRACHSequence(sps)) { + sigProcLibDestroy(); + return false; + } + + return true; } void GMSKRotate(signalVector &x) { diff --git a/Transceiver52M/sigProcLib.h b/Transceiver52M/sigProcLib.h index a9fabb0d..ee152d54 100644 --- a/Transceiver52M/sigProcLib.h +++ b/Transceiver52M/sigProcLib.h @@ -100,7 +100,7 @@ float vectorNorm2(const signalVector &x); float vectorPower(const signalVector &x); /** Setup the signal processing library */ -void sigProcLibSetup(int sps); +bool sigProcLibSetup(int sps); /** Destroy the signal processing library */ void sigProcLibDestroy(void);