aboutsummaryrefslogtreecommitdiffstats
path: root/host/tests/zbx_cpld_test.cpp
diff options
context:
space:
mode:
authorLane Kolbly <lane.kolbly@ni.com>2021-09-14 14:30:30 -0500
committerAaron Rossetto <aaron.rossetto@ni.com>2021-09-16 11:30:28 -0700
commit0ee2a409c4796f87d2d311356b775d437a5cc102 (patch)
tree2aaa63dbb7bb9846eda30f8227d4e8a7c587145b /host/tests/zbx_cpld_test.cpp
parent1be44df0fc351975a6779bbe3cf7b2f08bf57a8e (diff)
downloaduhd-0ee2a409c4796f87d2d311356b775d437a5cc102.tar.gz
uhd-0ee2a409c4796f87d2d311356b775d437a5cc102.tar.bz2
uhd-0ee2a409c4796f87d2d311356b775d437a5cc102.zip
uhd: zbx: Prevent TX antenna config from disrupting RX
So, both the set_tx_antenna_switches and set_rx_antenna_switches functions configure the TX0_ANT_11 register (which controls the final switch before the TX/RX port, switching it between the three TX paths and the RX path). The RX antenna configuration code will, if the RX antenna is set to TX/RX, configure that switch to the TX/RX->RX path when the ATR is set to RX. However, the TX antenna config code will always configure that switch to the "bypass" path, for both the 0X and RX ATR modes, regardless of whether the RX side actually needs that path. Ergo, this change makes set_tx_antenna_switches only configure that switch when it is configuring the XX or TX modes.
Diffstat (limited to 'host/tests/zbx_cpld_test.cpp')
-rw-r--r--host/tests/zbx_cpld_test.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/host/tests/zbx_cpld_test.cpp b/host/tests/zbx_cpld_test.cpp
index b125e8435..861f6ccdd 100644
--- a/host/tests/zbx_cpld_test.cpp
+++ b/host/tests/zbx_cpld_test.cpp
@@ -77,6 +77,26 @@ BOOST_FIXTURE_TEST_CASE(zbx_cpld_ctrl_test, zbx_cpld_fixture)
BOOST_CHECK_EQUAL(mock_reg_iface.memory[0x1024], 0x100);
}
+BOOST_FIXTURE_TEST_CASE(zbx_tx_ant_override_rx_test, zbx_cpld_fixture)
+{
+ cpld.set_rx_antenna_switches(
+ 0, uhd::usrp::zbx::ATR_ADDR_RX, uhd::usrp::zbx::ANTENNA_TXRX);
+
+ cpld.set_tx_antenna_switches(
+ 0, ATR_ADDR_0X, uhd::usrp::zbx::ANTENNA_TXRX, tx_amp::HIGHBAND);
+ cpld.set_tx_antenna_switches(
+ 0, ATR_ADDR_RX, uhd::usrp::zbx::ANTENNA_TXRX, tx_amp::HIGHBAND);
+ cpld.set_tx_antenna_switches(
+ 0, ATR_ADDR_TX, uhd::usrp::zbx::ANTENNA_TXRX, tx_amp::HIGHBAND);
+ cpld.set_tx_antenna_switches(
+ 0, ATR_ADDR_XX, uhd::usrp::zbx::ANTENNA_TXRX, tx_amp::HIGHBAND);
+
+ // Make sure that configuring the TX antenna switches didn't disconnect the RX
+ // from the TX/RX port.
+ BOOST_CHECK_EQUAL(
+ (mock_reg_iface.memory[0x2000 + 4 * uhd::usrp::zbx::ATR_ADDR_RX] >> 20) & 0x3, 0);
+}
+
BOOST_FIXTURE_TEST_CASE(zbx_tx_amp_test, zbx_cpld_fixture)
{
cpld.set_tx_antenna_switches(