Transceiver52M: Dynamically allocate correlation vectors

Stack allocating the correlation output generates a call to the copy
constructor of an zero valued vector. We can avoid this extra copy
constructor with a pointer reference and dynamic allocation.

Signed-off-by: Thomas Tsou <tom@tsou.cc>
This commit is contained in:
Thomas Tsou 2013-11-09 22:25:46 -05:00
parent 94edaaeee6
commit b075dd2f73
1 changed files with 10 additions and 6 deletions

View File

@ -1401,7 +1401,7 @@ int detectRACHBurst(signalVector &rxBurst,
int rc, start, target, head, tail, len;
float _toa;
complex _amp;
signalVector corr;
signalVector *corr;
CorrelationSequence *sync;
if ((sps != 1) && (sps != 4))
@ -1414,10 +1414,12 @@ int detectRACHBurst(signalVector &rxBurst,
start = (target - head) * sps - 1;
len = (head + tail) * sps;
sync = gRACHSequence;
corr = signalVector(len);
corr = new signalVector(len);
rc = detectBurst(rxBurst, corr, sync,
rc = detectBurst(rxBurst, *corr, sync,
thresh, sps, &_amp, &_toa, start, len);
delete corr;
if (rc < 0) {
return -1;
} else if (!rc) {
@ -1452,7 +1454,7 @@ int analyzeTrafficBurst(signalVector &rxBurst, unsigned tsc, float thresh,
int rc, start, target, head, tail, len;
complex _amp;
float _toa;
signalVector corr;
signalVector *corr;
CorrelationSequence *sync;
if ((tsc < 0) || (tsc > 7) || ((sps != 1) && (sps != 4)))
@ -1465,10 +1467,12 @@ int analyzeTrafficBurst(signalVector &rxBurst, unsigned tsc, float thresh,
start = (target - head) * sps - 1;
len = (head + tail) * sps;
sync = gMidambles[tsc];
corr = signalVector(len);
corr = new signalVector(len);
rc = detectBurst(rxBurst, corr, sync,
rc = detectBurst(rxBurst, *corr, sync,
thresh, sps, &_amp, &_toa, start, len);
delete corr;
if (rc < 0) {
return -1;
} else if (!rc) {