aboutsummaryrefslogtreecommitdiffstats
path: root/mpm/python/usrp_mpm
diff options
context:
space:
mode:
authorAlex Williams <alex.williams@ni.com>2019-10-22 11:51:00 -0500
committerAaron Rossetto <aaron.rossetto@ni.com>2020-07-16 10:00:12 -0500
commit40b563387b0af059a2d565d4cba958cf5e0772fb (patch)
tree35ce0904aa1cd1b7488f12c622c02a7e29b3e2eb /mpm/python/usrp_mpm
parent51bf7717e2fde33087055ff7c5649783e2260981 (diff)
downloaduhd-40b563387b0af059a2d565d4cba958cf5e0772fb.tar.gz
uhd-40b563387b0af059a2d565d4cba958cf5e0772fb.tar.bz2
uhd-40b563387b0af059a2d565d4cba958cf5e0772fb.zip
mpm: Detect number of liberio channels
Instead of using hard-coded values, detect the number of liberio channels, and only offer liberio links if they exist.
Diffstat (limited to 'mpm/python/usrp_mpm')
-rw-r--r--mpm/python/usrp_mpm/periph_manager/e320.py9
-rw-r--r--mpm/python/usrp_mpm/xports/xportmgr_liberio.py14
2 files changed, 18 insertions, 5 deletions
diff --git a/mpm/python/usrp_mpm/periph_manager/e320.py b/mpm/python/usrp_mpm/periph_manager/e320.py
index 82185e51c..0343f7755 100644
--- a/mpm/python/usrp_mpm/periph_manager/e320.py
+++ b/mpm/python/usrp_mpm/periph_manager/e320.py
@@ -54,8 +54,7 @@ class E320XportMgrUDP(XportMgrUDP):
}
class E320XportMgrLiberio(XportMgrLiberio):
- " E320-specific Liberio configuration "
- max_chan = 6
+ "E320-specific liberio configuration"
# pylint: enable=too-few-public-methods
###############################################################################
@@ -375,8 +374,10 @@ class e320(ZynqComponents, PeriphManagerBase):
assert self.mboard_info['rpc_connection'] in ('remote', 'local')
if self.mboard_info['rpc_connection'] == 'remote':
return ["udp"]
- # else:
- return ["liberio"]
+ elif self._xport_mgrs["liberio"].max_chan > 0:
+ return ["liberio"]
+ else:
+ return ["udp"]
def get_chdr_link_options(self, xport_type):
"""
diff --git a/mpm/python/usrp_mpm/xports/xportmgr_liberio.py b/mpm/python/usrp_mpm/xports/xportmgr_liberio.py
index f7c1861af..1b4f87fbf 100644
--- a/mpm/python/usrp_mpm/xports/xportmgr_liberio.py
+++ b/mpm/python/usrp_mpm/xports/xportmgr_liberio.py
@@ -8,6 +8,7 @@ Liberio Transport manager
"""
from builtins import object
+import pyudev
class XportMgrLiberio(object):
"""
@@ -18,8 +19,19 @@ class XportMgrLiberio(object):
# Number of available DMA channels
max_chan = 4
- def __init__(self, log):
+ def __init__(self, log, max_chan=-1):
self.log = log.getChild('Liberio')
+ if max_chan < 0:
+ context = pyudev.Context()
+ rx_of_nodes = list(context.list_devices(subsystem="platform",
+ OF_COMPATIBLE_0="ettus,usrp-rx-dma"))
+ tx_of_nodes = list(context.list_devices(subsystem="platform",
+ OF_COMPATIBLE_0="ettus,usrp-tx-dma"))
+ self.max_chan = min(len(rx_of_nodes), len(tx_of_nodes))
+ self.log.debug("Found {} channels".format(self.max_chan))
+ else:
+ self.max_chan = max_chan
+ self.log.debug("Reporting {} channels".format(self.max_chan))
def init(self, args):
"""