mirror of
https://github.com/RangeNetworks/openbts.git
synced 2025-10-23 16:13:52 +00:00
Previously, two timing correction values were used for UHD devices depending on the sample rate of 270.833e3 or 400e3 for native GSM or resampled device rate respectively. The correction values compensate for residual timing effects due to analog component delays, filters lag times, and general fudge factors. These values are device specific and over-generalized by the two value configuration. This patch adds the following struct to store these correction values by device type and sample rate - through samples-per-symbol. struct uhd_dev_offset { enum uhd_dev_type type; int sps; double offset; }; Signed-off-by: Thomas Tsou <tom@tsou.cc> git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@6720 19bc5d8c-e614-43d4-8b26-e1612bc8e597
96 lines
2.6 KiB
C++
96 lines
2.6 KiB
C++
/*
|
|
* Copyright 2008, 2009 Free Software Foundation, Inc.
|
|
*
|
|
* This software is distributed under the terms of the GNU 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 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 General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include <stdint.h>
|
|
#include <stdio.h>
|
|
#include <Logger.h>
|
|
#include <Configuration.h>
|
|
#include "radioDevice.h"
|
|
|
|
ConfigurationTable gConfig;
|
|
|
|
using namespace std;
|
|
|
|
int main(int argc, char *argv[]) {
|
|
|
|
// Configure logger.
|
|
if (argc>1) gLogInit(argv[1]);
|
|
else gLogInit("DEBUG");
|
|
//if (argc>2) gSetLogFile(argv[2]);
|
|
|
|
RadioDevice *usrp = RadioDevice::make(52.0e6/192.0, 1);
|
|
|
|
usrp->open("");
|
|
|
|
TIMESTAMP timestamp;
|
|
|
|
usrp->setTxFreq(825.4e6);
|
|
usrp->setRxFreq(825.4e6);
|
|
|
|
usrp->start();
|
|
|
|
usrp->setRxGain(57);
|
|
|
|
LOG(INFO) << "Looping...";
|
|
bool underrun;
|
|
|
|
short data[]={0x00,0x02};
|
|
|
|
usrp->updateAlignment(20000);
|
|
usrp->updateAlignment(21000);
|
|
|
|
int numpkts = 1;
|
|
short data2[512*2*numpkts];
|
|
for (int i = 0; i < 512*numpkts; i++) {
|
|
data2[i<<1] = 10000;//4096*cos(2*3.14159*(i % 126)/126);
|
|
data2[(i<<1) + 1] = 10000;//4096*sin(2*3.14159*(i % 126)/126);
|
|
}
|
|
|
|
for (int i = 0; i < 1; i++)
|
|
usrp->writeSamples((short*) data2,512*numpkts,&underrun,102000+i*1000);
|
|
|
|
timestamp = 19000;
|
|
double sum = 0.0;
|
|
unsigned long num = 0;
|
|
while (1) {
|
|
short readBuf[512*2];
|
|
int rd = usrp->readSamples(readBuf,512,&underrun,timestamp);
|
|
if (rd) {
|
|
LOG(INFO) << "rcvd. data@:" << timestamp;
|
|
for (int i = 0; i < 512; i++) {
|
|
uint32_t *wordPtr = (uint32_t *) &readBuf[2*i];
|
|
printf ("%llu: %d %d\n", timestamp+i,readBuf[2*i],readBuf[2*i+1]);
|
|
sum += (readBuf[2*i+1]*readBuf[2*i+1] + readBuf[2*i]*readBuf[2*i]);
|
|
num++;
|
|
//if (num % 10000 == 0) printf("avg pwr: %f\n",sum/num);
|
|
}
|
|
timestamp += rd;
|
|
//usrp->writeSamples((short*) data2,512*numpkts,&underrun,timestamp+1000);
|
|
}
|
|
}
|
|
|
|
}
|