usrp1: fix transmit side tuning bug
Transmit tuning was primarily setup for side A only. Some boards - WBX - would still tune with improper channel arguments, though receiver performance was disrupted. Previous testing was primarily with single board on side A only or dual configuration with side A transmit, so this bug largely went undetected. Patch tested with RFX and WBX daughterboards in single and dual configurations sides A and B. Signed-off-by: Thomas Tsou <ttsou@vt.edu>
This commit is contained in:
parent
e8cb2708b2
commit
d186353546
|
@ -127,36 +127,29 @@ bool USRPDevice::open()
|
||||||
|
|
||||||
switch (dboardConfig) {
|
switch (dboardConfig) {
|
||||||
case TXA_RXB:
|
case TXA_RXB:
|
||||||
m_dbTx = m_uTx->db(0)[0];
|
|
||||||
m_dbRx = m_uRx->db(1)[0];
|
|
||||||
txSubdevSpec = usrp_subdev_spec(0,0);
|
txSubdevSpec = usrp_subdev_spec(0,0);
|
||||||
rxSubdevSpec = usrp_subdev_spec(1,0);
|
rxSubdevSpec = usrp_subdev_spec(1,0);
|
||||||
break;
|
break;
|
||||||
case TXB_RXA:
|
case TXB_RXA:
|
||||||
m_dbTx = m_uTx->db(1)[0];
|
|
||||||
m_dbRx = m_uRx->db(0)[0];
|
|
||||||
txSubdevSpec = usrp_subdev_spec(1,0);
|
txSubdevSpec = usrp_subdev_spec(1,0);
|
||||||
rxSubdevSpec = usrp_subdev_spec(0,0);
|
rxSubdevSpec = usrp_subdev_spec(0,0);
|
||||||
break;
|
break;
|
||||||
case TXA_RXA:
|
case TXA_RXA:
|
||||||
m_dbTx = m_uTx->db(0)[0];
|
|
||||||
m_dbRx = m_uRx->db(0)[0];
|
|
||||||
txSubdevSpec = usrp_subdev_spec(0,0);
|
txSubdevSpec = usrp_subdev_spec(0,0);
|
||||||
rxSubdevSpec = usrp_subdev_spec(0,0);
|
rxSubdevSpec = usrp_subdev_spec(0,0);
|
||||||
break;
|
break;
|
||||||
case TXB_RXB:
|
case TXB_RXB:
|
||||||
m_dbTx = m_uTx->db(1)[0];
|
|
||||||
m_dbRx = m_uRx->db(1)[0];
|
|
||||||
txSubdevSpec = usrp_subdev_spec(1,0);
|
txSubdevSpec = usrp_subdev_spec(1,0);
|
||||||
rxSubdevSpec = usrp_subdev_spec(1,0);
|
rxSubdevSpec = usrp_subdev_spec(1,0);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
m_dbTx = m_uTx->db(0)[0];
|
|
||||||
m_dbRx = m_uRx->db(1)[0];
|
|
||||||
txSubdevSpec = usrp_subdev_spec(0,0);
|
txSubdevSpec = usrp_subdev_spec(0,0);
|
||||||
rxSubdevSpec = usrp_subdev_spec(1,0);
|
rxSubdevSpec = usrp_subdev_spec(1,0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
m_dbTx = m_uTx->selected_subdev(txSubdevSpec);
|
||||||
|
m_dbRx = m_uRx->selected_subdev(rxSubdevSpec);
|
||||||
|
|
||||||
samplesRead = 0;
|
samplesRead = 0;
|
||||||
samplesWritten = 0;
|
samplesWritten = 0;
|
||||||
started = false;
|
started = false;
|
||||||
|
@ -496,7 +489,7 @@ bool USRPDevice::setTxFreq(double wFreq)
|
||||||
{
|
{
|
||||||
usrp_tune_result result;
|
usrp_tune_result result;
|
||||||
|
|
||||||
if (m_uTx->tune(0, m_dbTx, wFreq, &result)) {
|
if (m_uTx->tune(txSubdevSpec.side, m_dbTx, wFreq, &result)) {
|
||||||
LOG(INFO) << "set TX: " << wFreq << std::endl
|
LOG(INFO) << "set TX: " << wFreq << std::endl
|
||||||
<< " baseband freq: " << result.baseband_freq << std::endl
|
<< " baseband freq: " << result.baseband_freq << std::endl
|
||||||
<< " DDC freq: " << result.dxc_freq << std::endl
|
<< " DDC freq: " << result.dxc_freq << std::endl
|
||||||
|
|
|
@ -130,36 +130,29 @@ bool USRPDevice::open()
|
||||||
|
|
||||||
switch (dboardConfig) {
|
switch (dboardConfig) {
|
||||||
case TXA_RXB:
|
case TXA_RXB:
|
||||||
m_dbTx = m_uTx->db(0)[0];
|
|
||||||
m_dbRx = m_uRx->db(1)[0];
|
|
||||||
txSubdevSpec = usrp_subdev_spec(0,0);
|
txSubdevSpec = usrp_subdev_spec(0,0);
|
||||||
rxSubdevSpec = usrp_subdev_spec(1,0);
|
rxSubdevSpec = usrp_subdev_spec(1,0);
|
||||||
break;
|
break;
|
||||||
case TXB_RXA:
|
case TXB_RXA:
|
||||||
m_dbTx = m_uTx->db(1)[0];
|
|
||||||
m_dbRx = m_uRx->db(0)[0];
|
|
||||||
txSubdevSpec = usrp_subdev_spec(1,0);
|
txSubdevSpec = usrp_subdev_spec(1,0);
|
||||||
rxSubdevSpec = usrp_subdev_spec(0,0);
|
rxSubdevSpec = usrp_subdev_spec(0,0);
|
||||||
break;
|
break;
|
||||||
case TXA_RXA:
|
case TXA_RXA:
|
||||||
m_dbTx = m_uTx->db(0)[0];
|
|
||||||
m_dbRx = m_uRx->db(0)[0];
|
|
||||||
txSubdevSpec = usrp_subdev_spec(0,0);
|
txSubdevSpec = usrp_subdev_spec(0,0);
|
||||||
rxSubdevSpec = usrp_subdev_spec(0,0);
|
rxSubdevSpec = usrp_subdev_spec(0,0);
|
||||||
break;
|
break;
|
||||||
case TXB_RXB:
|
case TXB_RXB:
|
||||||
m_dbTx = m_uTx->db(1)[0];
|
|
||||||
m_dbRx = m_uRx->db(1)[0];
|
|
||||||
txSubdevSpec = usrp_subdev_spec(1,0);
|
txSubdevSpec = usrp_subdev_spec(1,0);
|
||||||
rxSubdevSpec = usrp_subdev_spec(1,0);
|
rxSubdevSpec = usrp_subdev_spec(1,0);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
m_dbTx = m_uTx->db(0)[0];
|
|
||||||
m_dbRx = m_uRx->db(1)[0];
|
|
||||||
txSubdevSpec = usrp_subdev_spec(0,0);
|
txSubdevSpec = usrp_subdev_spec(0,0);
|
||||||
rxSubdevSpec = usrp_subdev_spec(1,0);
|
rxSubdevSpec = usrp_subdev_spec(1,0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
m_dbTx = m_uTx->selected_subdev(txSubdevSpec);
|
||||||
|
m_dbRx = m_uRx->selected_subdev(rxSubdevSpec);
|
||||||
|
|
||||||
samplesRead = 0;
|
samplesRead = 0;
|
||||||
samplesWritten = 0;
|
samplesWritten = 0;
|
||||||
started = false;
|
started = false;
|
||||||
|
@ -513,7 +506,7 @@ bool USRPDevice::setTxFreq(double wFreq)
|
||||||
{
|
{
|
||||||
usrp_tune_result result;
|
usrp_tune_result result;
|
||||||
|
|
||||||
if (m_uTx->tune(0, m_dbTx, wFreq, &result)) {
|
if (m_uTx->tune(txSubdevSpec.side, m_dbTx, wFreq, &result)) {
|
||||||
LOG(INFO) << "set TX: " << wFreq << std::endl
|
LOG(INFO) << "set TX: " << wFreq << std::endl
|
||||||
<< " baseband freq: " << result.baseband_freq << std::endl
|
<< " baseband freq: " << result.baseband_freq << std::endl
|
||||||
<< " DDC freq: " << result.dxc_freq << std::endl
|
<< " DDC freq: " << result.dxc_freq << std::endl
|
||||||
|
|
Reference in New Issue