aboutsummaryrefslogtreecommitdiffstats
path: root/mpm/python/usrp_mpm/dboard_manager/neon.py
diff options
context:
space:
mode:
authorMartin Braun <martin.braun@ettus.com>2022-01-07 14:16:42 +0100
committerAaron Rossetto <aaron.rossetto@ni.com>2022-01-10 08:02:41 -0600
commit6666f36c267fc9ca908032fb719ec318c142636f (patch)
treeddfaf98d398e0f51d6cea1da4c61306c680a49f5 /mpm/python/usrp_mpm/dboard_manager/neon.py
parentedf16b3a85507064d42da2021d5eaea4002f7912 (diff)
downloaduhd-6666f36c267fc9ca908032fb719ec318c142636f.tar.gz
uhd-6666f36c267fc9ca908032fb719ec318c142636f.tar.bz2
uhd-6666f36c267fc9ca908032fb719ec318c142636f.zip
mpm: e320/e31x: Fix lo-lock sensors
The LO-locked sensors on these devices were getting routed to the MPM API call get_lo_lock_sensor(), which takes a 'which' argument (rx or tx). However, UHD wants to pass a 'chan' argument (0 or 1). The way the code was structured, it would always return 'False' (LO not locked) when the argument was neither 'rx' or 'tx'. The solution is to add get_rx_lo_lock_sensor() and get_tx_lo_lock_sensor(), which generate the appropriate 'which' argument, but discard the 'chan' argument (there is only one LO per Tx and Rx, respectively).
Diffstat (limited to 'mpm/python/usrp_mpm/dboard_manager/neon.py')
-rw-r--r--mpm/python/usrp_mpm/dboard_manager/neon.py26
1 files changed, 19 insertions, 7 deletions
diff --git a/mpm/python/usrp_mpm/dboard_manager/neon.py b/mpm/python/usrp_mpm/dboard_manager/neon.py
index 88839bd06..1f8f9b190 100644
--- a/mpm/python/usrp_mpm/dboard_manager/neon.py
+++ b/mpm/python/usrp_mpm/dboard_manager/neon.py
@@ -38,15 +38,15 @@ class Neon(DboardManagerBase):
'rssi' : 'get_rssi_sensor',
# For backward compatibility reasons we have the same sensor with two
# different names
- 'lo_lock' : 'get_lo_lock_sensor',
- 'lo_locked' : 'get_lo_lock_sensor',
+ 'lo_lock' : 'get_rx_lo_lock_sensor',
+ 'lo_locked' : 'get_rx_lo_lock_sensor',
}
tx_sensor_callback_map = {
'ad9361_temperature': 'get_catalina_temp_sensor',
# For backward compatibility reasons we have the same sensor with two
# different names
- 'lo_lock' : 'get_lo_lock_sensor',
- 'lo_locked' : 'get_lo_lock_sensor',
+ 'lo_lock' : 'get_tx_lo_lock_sensor',
+ 'lo_locked' : 'get_tx_lo_lock_sensor',
}
# Maps the chipselects to the corresponding devices:
spi_chipselect = {"catalina": 0,
@@ -273,21 +273,21 @@ class Neon(DboardManagerBase):
Return LO lock status (Boolean!) of AD9361. 'which' must be
either 'tx' or 'rx'
"""
+ assert which in ('rx', 'tx')
mboard_regs_label = "mboard-regs"
mboard_regs_control = MboardRegsControl(
mboard_regs_label, self.log)
if which == "tx":
locked = mboard_regs_control.get_ad9361_tx_lo_lock()
- elif which == "rx":
- locked = mboard_regs_control.get_ad9361_rx_lo_lock()
else:
- locked = False
+ locked = mboard_regs_control.get_ad9361_rx_lo_lock()
return locked
def get_lo_lock_sensor(self, which):
"""
Get sensor dict with LO lock status
"""
+ assert which in ('rx', 'tx')
self.log.trace("Reading LO Lock.")
lo_locked = self.get_ad9361_lo_lock(which)
return {
@@ -297,6 +297,18 @@ class Neon(DboardManagerBase):
'value': str(lo_locked).lower(),
}
+ def get_rx_lo_lock_sensor(self, _chan):
+ """
+ RX-specific version of get_lo_lock_sensor() (for UHD API)
+ """
+ return self.get_lo_lock_sensor('rx')
+
+ def get_tx_lo_lock_sensor(self, _chan):
+ """
+ TX-specific version of get_lo_lock_sensor() (for UHD API)
+ """
+ return self.get_lo_lock_sensor('tx')
+
def get_catalina_temp_sensor(self, _):
"""
Get temperature sensor reading of Catalina.