diff options
Diffstat (limited to 'mpm/python/usrp_mpm')
| -rw-r--r-- | mpm/python/usrp_mpm/dboard_manager/magnesium.py | 15 | ||||
| -rw-r--r-- | mpm/python/usrp_mpm/mpmutils.py | 15 | 
2 files changed, 24 insertions, 6 deletions
diff --git a/mpm/python/usrp_mpm/dboard_manager/magnesium.py b/mpm/python/usrp_mpm/dboard_manager/magnesium.py index 53341c206..2385b05eb 100644 --- a/mpm/python/usrp_mpm/dboard_manager/magnesium.py +++ b/mpm/python/usrp_mpm/dboard_manager/magnesium.py @@ -21,6 +21,7 @@ from usrp_mpm.dboard_manager.mg_periphs import TCA6408, MgCPLD  from usrp_mpm.dboard_manager.mg_periphs import DboardClockControl  from usrp_mpm.cores import nijesdcore  from usrp_mpm.mpmlog import get_logger +from usrp_mpm.mpmutils import async_exec  from usrp_mpm.sys_utils.uio import open_uio  from usrp_mpm.sys_utils.udev import get_eeprom_paths  from usrp_mpm.cores import ClockSynchronizer @@ -63,6 +64,7 @@ TRACKING_CALIBRATION_TABLE = {"TRACK_RX1_QEC"         :   0x01,                                "ALL"                   :   0xF3,                               } +  def create_spidev_iface_lmk(dev_node):      """      Create a regs iface from a spidev node @@ -513,9 +515,13 @@ class Magnesium(DboardManagerBase):                         .format(self._init_cals_mask))          self.log.debug("args[tracking_cals]=0x{:02X}"                         .format(self._tracking_cals_mask)) -        self.mykonos.setup_cal(self._init_cals_mask, -                               self._tracking_cals_mask, -                               self._init_cals_timeout) +        async_exec( +            self.mykonos, +            "setup_cal", +            self._init_cals_mask, +            self._tracking_cals_mask, +            self._init_cals_timeout +        )      def init_lo_source(self, args):          """Set all LO @@ -561,10 +567,9 @@ class Magnesium(DboardManagerBase):          jesdcore.send_sysref_pulse()          time.sleep(0.001) # 17us... ish.          jesdcore.send_sysref_pulse() -        self.mykonos.finish_initialization() +        async_exec(self.mykonos, "finish_initialization")          # TODO:can we call this after JESD?          self.init_rf_cal(args) -          self.log.trace("Starting JESD204b Link Initialization...")          # Generally, enable the source before the sink. Start with the DAC side.          self.log.trace("Starting FPGA framer...") diff --git a/mpm/python/usrp_mpm/mpmutils.py b/mpm/python/usrp_mpm/mpmutils.py index 539cd8de4..151713988 100644 --- a/mpm/python/usrp_mpm/mpmutils.py +++ b/mpm/python/usrp_mpm/mpmutils.py @@ -8,7 +8,6 @@ Miscellaneous utilities for MPM  """  import time -import sys  def poll_with_timeout(state_check, timeout_ms, interval_ms):      """ @@ -150,3 +149,17 @@ def str2bool(value):      except AttributeError:          return bool(value) + +def async_exec(parent, method_name, *args): +    """Execute method_name asynchronously. +    Requires the parent class to have this feature enabled. +    """ +    async_name = 'async__' + method_name +    await_name = 'await__' + method_name +    # Spawn async +    getattr(parent, async_name)(*args) +    awaitable_method = getattr(parent, await_name) +    # await +    while not awaitable_method(): +        time.sleep(0.1) +  | 
