mirror of
https://github.com/RangeNetworks/openbts.git
synced 2025-11-06 23:03:15 +00:00
Adding in the missing Transceiver52M directory
git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@2307 19bc5d8c-e614-43d4-8b26-e1612bc8e597
This commit is contained in:
168
Transceiver52M/sigProcLibTest.cpp
Normal file
168
Transceiver52M/sigProcLibTest.cpp
Normal file
@@ -0,0 +1,168 @@
|
||||
/*
|
||||
* Copyright 2011 Free Software Foundation, Inc.
|
||||
* Copyright 2008, 2010 Kestrel Signal Processing, Inc.
|
||||
*
|
||||
* This software is distributed under the terms of the GNU Affero Public License.
|
||||
* See the COPYING file in the main directory for details.
|
||||
*
|
||||
* This use of this software may be subject to additional restrictions.
|
||||
* See the LEGAL file in the main directory for details.
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
*/
|
||||
|
||||
/*
|
||||
Contributors:
|
||||
Harvind S. Samra, hssamra@kestrelsp.com
|
||||
*/
|
||||
|
||||
|
||||
#include "sigProcLib.h"
|
||||
//#include "radioInterface.h"
|
||||
#include <Logger.h>
|
||||
#include <Configuration.h>
|
||||
|
||||
using namespace std;
|
||||
|
||||
ConfigurationTable gConfig;
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
|
||||
gLogInit("sigProcLibTest","DEBUG");
|
||||
|
||||
int samplesPerSymbol = 1;
|
||||
|
||||
int TSC = 2;
|
||||
|
||||
sigProcLibSetup(samplesPerSymbol);
|
||||
|
||||
signalVector *gsmPulse = generateGSMPulse(2,samplesPerSymbol);
|
||||
cout << *gsmPulse << endl;
|
||||
|
||||
BitVector RACHBurstStart = "01010101";
|
||||
BitVector RACHBurstRest = "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000";
|
||||
|
||||
BitVector RACHBurst(BitVector(RACHBurstStart,gRACHSynchSequence),RACHBurstRest);
|
||||
|
||||
|
||||
signalVector *RACHSeq = modulateBurst(RACHBurst,
|
||||
*gsmPulse,
|
||||
9,
|
||||
samplesPerSymbol);
|
||||
|
||||
generateRACHSequence(*gsmPulse,samplesPerSymbol);
|
||||
|
||||
complex a; float t;
|
||||
detectRACHBurst(*RACHSeq, 5, samplesPerSymbol,&a,&t);
|
||||
|
||||
//cout << *RACHSeq << endl;
|
||||
//signalVector *autocorr = correlate(RACHSeq,RACHSeq,NULL,NO_DELAY);
|
||||
|
||||
//cout << *autocorr;
|
||||
|
||||
//exit(1);
|
||||
|
||||
|
||||
/*signalVector x(6500);
|
||||
x.fill(1.0);
|
||||
|
||||
frequencyShift(&x,&x,0.48*M_PI);
|
||||
|
||||
signalVector *y = polyphaseResampleVector(x,96,65,NULL);
|
||||
|
||||
cout << *y << endl;
|
||||
|
||||
exit(1);*/
|
||||
|
||||
//CommSig normalBurstSeg = "0000000000000000000000000000000000000000000000000000000000000";
|
||||
|
||||
BitVector normalBurstSeg = "0000101010100111110010101010010110101110011000111001101010000";
|
||||
|
||||
BitVector normalBurst(BitVector(normalBurstSeg,gTrainingSequence[TSC]),normalBurstSeg);
|
||||
|
||||
|
||||
generateMidamble(*gsmPulse,samplesPerSymbol,TSC);
|
||||
|
||||
|
||||
signalVector *modBurst = modulateBurst(normalBurst,*gsmPulse,
|
||||
0,samplesPerSymbol);
|
||||
|
||||
|
||||
//delayVector(*rsVector2,6.932);
|
||||
|
||||
complex ampl = 1;
|
||||
float TOA = 0;
|
||||
|
||||
//modBurst = rsVector2;
|
||||
//delayVector(*modBurst,0.8);
|
||||
|
||||
/*
|
||||
signalVector channelResponse(4);
|
||||
signalVector::iterator c=channelResponse.begin();
|
||||
*c = (complex) 9000.0; c++;
|
||||
*c = (complex) 0.4*9000.0; c++; c++;
|
||||
*c = (complex) -1.2*0;
|
||||
|
||||
signalVector *guhBurst = convolve(modBurst,&channelResponse,NULL,NO_DELAY);
|
||||
delete modBurst; modBurst = guhBurst;
|
||||
*/
|
||||
|
||||
signalVector *chanResp;
|
||||
/*
|
||||
double noisePwr = 0.001/sqrtf(2);
|
||||
signalVector *noise = gaussianNoise(modBurst->size(),noisePwr);
|
||||
*/
|
||||
float chanRespOffset;
|
||||
analyzeTrafficBurst(*modBurst,TSC,8.0,samplesPerSymbol,&l,&TOA,1,true,&chanResp,&chanRespOffset);
|
||||
//addVector(*modBurst,*noise);
|
||||
|
||||
cout << "ampl:" << ampl << endl;
|
||||
cout << "TOA: " << TOA << endl;
|
||||
//cout << "chanResp: " << *chanResp << endl;
|
||||
SoftVector *demodBurst = demodulateBurst(*modBurst,*gsmPulse,samplesPerSymbol,(complex) ampl, TOA);
|
||||
|
||||
cout << *demodBurst << endl;
|
||||
|
||||
/*
|
||||
COUT("chanResp: " << *chanResp);
|
||||
|
||||
signalVector *w,*b;
|
||||
designDFE(*chanResp,1.0/noisePwr,7,&w,&b);
|
||||
COUT("w: " << *w);
|
||||
COUT("b: " << *b);
|
||||
|
||||
|
||||
SoftSig *DFEBurst = equalizeBurst(*modBurst,TOA-chanRespOffset,samplesPerSymbol,*w,*b);
|
||||
COUT("DFEBurst: " << *DFEBurst);
|
||||
|
||||
delete gsmPulse;
|
||||
delete RACHSeq;
|
||||
delete modBurst;
|
||||
delete sendLPF;
|
||||
delete rcvLPF;
|
||||
delete rsVector;
|
||||
//delete rsVector2;
|
||||
delete autocorr;
|
||||
delete chanResp;
|
||||
delete noise;
|
||||
delete demodBurst;
|
||||
delete w;
|
||||
delete b;
|
||||
delete DFEBurst;
|
||||
*/
|
||||
|
||||
sigProcLibDestroy();
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user