diff options
author | Martin Braun <martin.braun@ettus.com> | 2022-01-07 14:16:42 +0100 |
---|---|---|
committer | Aaron Rossetto <aaron.rossetto@ni.com> | 2022-01-10 08:02:41 -0600 |
commit | 6666f36c267fc9ca908032fb719ec318c142636f (patch) | |
tree | ddfaf98d398e0f51d6cea1da4c61306c680a49f5 /mpm/python/usrp_mpm/dboard_manager/neon.py | |
parent | edf16b3a85507064d42da2021d5eaea4002f7912 (diff) | |
download | uhd-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.py | 26 |
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. |