diff options
author | Thomas Tsou <tom@tsou.cc> | 2012-12-25 14:20:22 +0100 |
---|---|---|
committer | Alexander Chemeris <Alexander.Chemeris@gmail.com> | 2013-06-24 01:45:04 +0400 |
commit | 82ede3e810ee9cc070ed25857771810eeff7785a (patch) | |
tree | f7f856816c8316dcf3f1389d42a8e4ee7a247805 | |
parent | d734e2d63485b260235c7694622f671b78dbbe6d (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>
-rw-r--r-- | Transceiver52M/UHDDevice.cpp | 24 | ||||
-rw-r--r-- | Transceiver52M/radioDevice.h | 6 | ||||
-rw-r--r-- | Transceiver52M/runTransceiver.cpp | 15 |
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"; |