aboutsummaryrefslogtreecommitdiffstats
path: root/Transceiver52M
diff options
context:
space:
mode:
authorThomas Tsou <tom@tsou.cc>2012-12-25 14:20:22 +0100
committerAlexander Chemeris <Alexander.Chemeris@gmail.com>2013-06-24 01:45:04 +0400
commit82ede3e810ee9cc070ed25857771810eeff7785a (patch)
treef7f856816c8316dcf3f1389d42a8e4ee7a247805 /Transceiver52M
parentd734e2d63485b260235c7694622f671b78dbbe6d (diff)
Transceiver52M: add antenna selection from configuration
Set optional transmit and receive antennas from database configuration file. Use default antenna values on empty string or if option does not exist. Signed-off-by: Thomas Tsou <tom@tsou.cc>
Diffstat (limited to 'Transceiver52M')
-rw-r--r--Transceiver52M/UHDDevice.cpp24
-rw-r--r--Transceiver52M/radioDevice.h6
-rw-r--r--Transceiver52M/runTransceiver.cpp15
3 files changed, 45 insertions, 0 deletions
diff --git a/Transceiver52M/UHDDevice.cpp b/Transceiver52M/UHDDevice.cpp
index 6fc0c19..a065ed7 100644
--- a/Transceiver52M/UHDDevice.cpp
+++ b/Transceiver52M/UHDDevice.cpp
@@ -183,6 +183,10 @@ public:
double setTxGain(double db);
double maxTxGain(void) { return tx_gain_max; }
double minTxGain(void) { return tx_gain_min; }
+ void setTxAntenna(std::string &name);
+ void setRxAntenna(std::string &name);
+ std::string getRxAntenna();
+ std::string getTxAntenna();
double getTxFreq() { return tx_freq; }
double getRxFreq() { return rx_freq; }
@@ -385,6 +389,26 @@ double uhd_device::setRxGain(double db)
return rx_gain;
}
+void uhd_device::setTxAntenna(std::string &name)
+{
+ usrp_dev->set_tx_antenna(name);
+}
+
+void uhd_device::setRxAntenna(std::string &name)
+{
+ usrp_dev->set_rx_antenna(name);
+}
+
+std::string uhd_device::getTxAntenna()
+{
+ return usrp_dev->get_tx_antenna();
+}
+
+std::string uhd_device::getRxAntenna()
+{
+ return usrp_dev->get_rx_antenna();
+}
+
/*
Parse the UHD device tree and mboard name to find out what device we're
dealing with. We need the bus type so that the transceiver knows how to
diff --git a/Transceiver52M/radioDevice.h b/Transceiver52M/radioDevice.h
index f7dcb03..006e663 100644
--- a/Transceiver52M/radioDevice.h
+++ b/Transceiver52M/radioDevice.h
@@ -117,6 +117,12 @@ class RadioDevice {
/** return minimum Tx Gain **/
virtual double minTxGain(void) = 0;
+ /** set and return antennas selection **/
+ virtual void setTxAntenna(std::string &name) = 0;
+ virtual void setRxAntenna(std::string &name) = 0;
+ virtual std::string getRxAntenna() = 0;
+ virtual std::string getTxAntenna() = 0;
+
/** Return internal status values */
virtual double getTxFreq()=0;
virtual double getRxFreq()=0;
diff --git a/Transceiver52M/runTransceiver.cpp b/Transceiver52M/runTransceiver.cpp
index 33ab434..8e0794c 100644
--- a/Transceiver52M/runTransceiver.cpp
+++ b/Transceiver52M/runTransceiver.cpp
@@ -58,6 +58,7 @@ static void ctrlCHandler(int signo)
int main(int argc, char *argv[])
{
std::string deviceArgs;
+ std::string txAntenna, rxAntenna;
if (argc == 3)
{
@@ -95,9 +96,23 @@ int main(int argc, char *argv[])
return EXIT_FAILURE;
}
+ if (gConfig.defines("GSM.Radio.TxAntenna"))
+ txAntenna = gConfig.getStr("GSM.Radio.TxAntenna").c_str();
+ if (gConfig.defines("GSM.Radio.RxAntenna"))
+ rxAntenna = gConfig.getStr("GSM.Radio.RxAntenna").c_str();
+
+ if (txAntenna != "")
+ usrp->setTxAntenna(txAntenna);
+ if (rxAntenna != "")
+ usrp->setRxAntenna(rxAntenna);
+
+ LOG(INFO) << "transceiver using transmit antenna " << usrp->getRxAntenna();
+ LOG(INFO) << "transceiver using receive antenna " << usrp->getTxAntenna();
+
RadioInterface* radio = new RadioInterface(usrp,3,SAMPSPERSYM,mOversamplingRate,false);
Transceiver *trx = new Transceiver(gConfig.getNum("TRX.Port"),gConfig.getStr("TRX.IP").c_str(),SAMPSPERSYM,GSM::Time(3,0),radio);
trx->receiveFIFO(radio->receiveFIFO());
+
/*
signalVector *gsmPulse = generateGSMPulse(2,1);
BitVector normalBurstSeg = "0000101010100111110010101010010110101110011000111001101010000";