diff options
author | kurtis.heimerl <kurtis.heimerl@19bc5d8c-e614-43d4-8b26-e1612bc8e597> | 2011-11-26 03:19:28 +0000 |
---|---|---|
committer | kurtis.heimerl <kurtis.heimerl@19bc5d8c-e614-43d4-8b26-e1612bc8e597> | 2011-11-26 03:19:28 +0000 |
commit | a198d45539e4581c70353ce781cbd322cb54bf6b (patch) | |
tree | 1e821faedf4bbd81b2eafb831c7865ce1965462a /Transceiver52M/sigProcLib.cpp | |
parent | e417c5a28e90bc57efcd7b5166751c12f712cfa4 (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.cpp | 33 |
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++; } |