diff options
author | Thomas Tsou <tom@tsou.cc> | 2013-08-20 18:55:33 -0400 |
---|---|---|
committer | Thomas Tsou <tom@tsou.cc> | 2013-10-18 13:10:17 -0400 |
commit | e57004d0c3cae8ca5db3ca3eb2bcc7b9bc1d2534 (patch) | |
tree | d904599229b143a6393be59a6bcf1a3a773a7601 /Transceiver52M | |
parent | 6aa1f18f41dd681c47b1fef3d590c40326a563d5 (diff) |
Transceiver52M: Generate RACH correlation sequence at initialization
There is no temporal dependency on when the RACH sequence is generated,
so there is no need for transceiver to create it in response to a
command from GSM core. If we power on the transceiver, we will need
the RACH sequence, so just allocate it during initialization.
Signed-off-by: Thomas Tsou <tom@tsou.cc>
Diffstat (limited to 'Transceiver52M')
-rw-r--r-- | Transceiver52M/Transceiver.cpp | 1 | ||||
-rw-r--r-- | Transceiver52M/runTransceiver.cpp | 3 | ||||
-rw-r--r-- | Transceiver52M/sigProcLib.cpp | 12 | ||||
-rw-r--r-- | Transceiver52M/sigProcLib.h | 2 |
4 files changed, 15 insertions, 3 deletions
diff --git a/Transceiver52M/Transceiver.cpp b/Transceiver52M/Transceiver.cpp index a7c629e..f09f036 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 dc2ebc6..f268752 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 9ad149f..2ccc714 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 a9fabb0..ee152d5 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); |