aboutsummaryrefslogtreecommitdiffstats
path: root/Transceiver52M/sigProcLib.cpp
diff options
context:
space:
mode:
authorkurtis.heimerl <kurtis.heimerl@19bc5d8c-e614-43d4-8b26-e1612bc8e597>2011-11-26 03:19:28 +0000
committerkurtis.heimerl <kurtis.heimerl@19bc5d8c-e614-43d4-8b26-e1612bc8e597>2011-11-26 03:19:28 +0000
commita198d45539e4581c70353ce781cbd322cb54bf6b (patch)
tree1e821faedf4bbd81b2eafb831c7865ce1965462a /Transceiver52M/sigProcLib.cpp
parente417c5a28e90bc57efcd7b5166751c12f712cfa4 (diff)
transceiver, resamp: insert missing filter values
With transceiver integration, the resampling filter files were dropped. This created a working resampling implementation for the USRP2 / N200, but with spectrum irregulaties that likely caused issues at longer range operation. Simply reinsert the filter files and modify the filter initialization to use them. Signed-off-by: Thomas Tsou <ttsou@vt.edu> git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@2689 19bc5d8c-e614-43d4-8b26-e1612bc8e597
Diffstat (limited to 'Transceiver52M/sigProcLib.cpp')
-rw-r--r--Transceiver52M/sigProcLib.cpp33
1 files changed, 29 insertions, 4 deletions
diff --git a/Transceiver52M/sigProcLib.cpp b/Transceiver52M/sigProcLib.cpp
index fe09c16..ae52894 100644
--- a/Transceiver52M/sigProcLib.cpp
+++ b/Transceiver52M/sigProcLib.cpp
@@ -1,5 +1,5 @@
/*
-* Copyright 2008 Free Software Foundation, Inc.
+* Copyright 2008, 2011 Free Software Foundation, Inc.
*
* This software is distributed under the terms of the GNU Affero Public License.
* See the COPYING file in the main directory for details.
@@ -28,6 +28,8 @@
#include "sigProcLib.h"
#include "GSMCommon.h"
+#include "sendLPF_961.h"
+#include "rcvLPF_651.h"
#include <Logger.h>
@@ -1171,7 +1173,7 @@ signalVector *createLPF(float cutoffFreq,
int filterLen,
float gainDC)
{
-
+#if 0
signalVector *LPF = new signalVector(filterLen-1);
LPF->isRealOnly(true);
LPF->setSymmetry(ABSSYM);
@@ -1187,11 +1189,34 @@ signalVector *createLPF(float cutoffFreq,
*itr++ = (complex) ys*yg*yw;
sum += ys*yg*yw;
}
-
+#else
+ double sum = 0.0;
+ signalVector *LPF;
+ signalVector::iterator itr;
+ if (filterLen == 651) { // receive LPF
+ LPF = new signalVector(651);
+ LPF->isRealOnly(true);
+ itr = LPF->begin();
+ for (int i = 0; i < filterLen; i++) {
+ *itr++ = complex(rcvLPF_651[i],0.0);
+ sum += rcvLPF_651[i];
+ }
+ }
+ else {
+ LPF = new signalVector(961);
+ LPF->isRealOnly(true);
+ itr = LPF->begin();
+ for (int i = 0; i < filterLen; i++) {
+ *itr++ = complex(sendLPF_961[i],0.0);
+ sum += sendLPF_961[i];
+ }
+ }
+#endif
+
float normFactor = gainDC/sum; //sqrtf(gainDC/vectorNorm2(*LPF));
// normalize power
itr = LPF->begin();
- for (int i = 1; i < filterLen; i++) {
+ for (int i = 0; i < filterLen; i++) {
*itr = *itr*normFactor;
itr++;
}