Revert "UmTRX: Fix Tx gain setting procedure for the best signal quality."

This reverts commit 48da6f97e3.
This commit is contained in:
Alexander Chemeris 2015-04-28 13:17:31 -04:00
parent cd20d12392
commit 947fc8cd1f
1 changed files with 22 additions and 12 deletions

View File

@ -42,7 +42,6 @@
#define SAMPLE_BUF_SZ (1 << 20)
#define UMTRX_VGA1_DEF -18
#define UMTRX_VGA2_DEF 23
enum uhd_dev_type {
USRP1,
@ -425,9 +424,23 @@ void uhd_device::init_gains()
{
uhd::gain_range_t range;
range = usrp_dev->get_tx_gain_range();
tx_gain_min = range.start();
tx_gain_max = range.stop();
if (dev_type == UMTRX) {
std::vector<std::string> gain_stages = usrp_dev->get_tx_gain_names(0);
if (gain_stages[0] == "VGA") {
LOG(WARNING) << "Update your UHD version for a proper Tx gain support";
range = usrp_dev->get_tx_gain_range();
tx_gain_min = range.start();
tx_gain_max = range.stop();
} else {
range = usrp_dev->get_tx_gain_range("VGA2");
tx_gain_min = UMTRX_VGA1_DEF + range.start();
tx_gain_max = UMTRX_VGA1_DEF + range.stop();
}
} else {
range = usrp_dev->get_tx_gain_range();
tx_gain_min = range.start();
tx_gain_max = range.stop();
}
range = usrp_dev->get_rx_gain_range();
rx_gain_min = range.start();
@ -519,7 +532,8 @@ double uhd_device::setTxGain(double db, size_t chan)
}
if (dev_type == UMTRX) {
if (!usrp_dev->get_device()->get_tree()->exists("/mboards/0/dboards/A/tx_frontends/0/internal_gains/VGA1")) {
std::vector<std::string> gain_stages = usrp_dev->get_tx_gain_names(0);
if (gain_stages[0] == "VGA") {
LOG(WARNING) << "Update your UHD version for a proper Tx gain support";
usrp_dev->set_tx_gain(db, chan);
tx_gains[chan] = usrp_dev->get_tx_gain(chan);
@ -529,13 +543,9 @@ double uhd_device::setTxGain(double db, size_t chan)
// configuration, optimal for the Tx signal quality.
// From our measurements, VGA1 must be 18dB plus-minus
// one and VGA2 is the best when 23dB or lower.
std::string chan_name = "A";
if (chan == 1) chan_name = "B";
std::string tx_vga1_gain_path = "/mboards/0/dboards/" + chan_name + "/tx_frontends/0/internal_gains/VGA1/value";
std::string tx_vga2_gain_path = "/mboards/0/dboards/" + chan_name + "/tx_frontends/0/internal_gains/VGA2/value";
usrp_dev->get_device()->get_tree()->access<double>(tx_vga1_gain_path).set(UMTRX_VGA1_DEF);
usrp_dev->get_device()->get_tree()->access<double>(tx_vga2_gain_path).set(UMTRX_VGA2_DEF);
tx_gains[chan] = db;
usrp_dev->set_tx_gain(UMTRX_VGA1_DEF, "VGA1", chan);
usrp_dev->set_tx_gain(db-UMTRX_VGA1_DEF, "VGA2", chan);
tx_gains[chan] = usrp_dev->get_tx_gain(chan);
}
} else {
usrp_dev->set_tx_gain(db, chan);