diff options
author | Andrej Rode <andrej.rode@ettus.com> | 2017-03-27 17:07:44 -0700 |
---|---|---|
committer | Martin Braun <martin.braun@ettus.com> | 2017-12-22 15:03:44 -0800 |
commit | 8ac9014d5c30836665378d2d088b5c602162f8ac (patch) | |
tree | 21708ce88f72da4818e73afe054b89e7f1589fdd /mpm/python/usrp_mpm/periph_manager | |
parent | 6d332e5ca4a7311406ac285f827c31c9e5b94280 (diff) | |
download | uhd-8ac9014d5c30836665378d2d088b5c602162f8ac.tar.gz uhd-8ac9014d5c30836665378d2d088b5c602162f8ac.tar.bz2 uhd-8ac9014d5c30836665378d2d088b5c602162f8ac.zip |
mpm: CMake cleanup, Python code enhancements
- Send user defined data in ping
- Improve rpc_shell, add mpm_debug.py, fix tracebacks in multiprocessing
Diffstat (limited to 'mpm/python/usrp_mpm/periph_manager')
-rw-r--r-- | mpm/python/usrp_mpm/periph_manager/CMakeLists.txt | 28 | ||||
-rw-r--r-- | mpm/python/usrp_mpm/periph_manager/__init__.py.in (renamed from mpm/python/usrp_mpm/periph_manager/__init__.py) | 4 | ||||
-rw-r--r-- | mpm/python/usrp_mpm/periph_manager/n310.py | 2 | ||||
-rw-r--r-- | mpm/python/usrp_mpm/periph_manager/test.py | 63 |
4 files changed, 94 insertions, 3 deletions
diff --git a/mpm/python/usrp_mpm/periph_manager/CMakeLists.txt b/mpm/python/usrp_mpm/periph_manager/CMakeLists.txt new file mode 100644 index 000000000..879ac20c1 --- /dev/null +++ b/mpm/python/usrp_mpm/periph_manager/CMakeLists.txt @@ -0,0 +1,28 @@ +# +# Copyright 2017 Ettus Research (National Instruments) +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. +# + +######################################################################## +# This file included, use CMake directory variables +######################################################################## +SET(USRP_MPM_FILES ${USRP_MPM_FILES}) +SET(USRP_MPM_PERIPHMGR_FILES + ${CMAKE_CURRENT_SOURCE_DIR}/__init__.py.in + ${CMAKE_CURRENT_SOURCE_DIR}/base.py + ${CMAKE_CURRENT_SOURCE_DIR}/n310.py + ) +LIST(APPEND USRP_MPM_FILES ${USRP_MPM_TOP_FILES}) +SET(USRP_MPM_FILES ${USRP_MPM_FILES} PARENT_SCOPE) diff --git a/mpm/python/usrp_mpm/periph_manager/__init__.py b/mpm/python/usrp_mpm/periph_manager/__init__.py.in index 96eecf62e..0956b849e 100644 --- a/mpm/python/usrp_mpm/periph_manager/__init__.py +++ b/mpm/python/usrp_mpm/periph_manager/__init__.py.in @@ -24,6 +24,6 @@ from .. import dboard_manager from .. import types try: - from n310 import n310 as periph_manager + from ${MPM_DEVICE} import ${MPM_DEVICE} as periph_manager except ImportError: - raise("Could not import n310") + raise Exception("Could not import ${MPM_DEVICE}") diff --git a/mpm/python/usrp_mpm/periph_manager/n310.py b/mpm/python/usrp_mpm/periph_manager/n310.py index e270387f6..d1c31540b 100644 --- a/mpm/python/usrp_mpm/periph_manager/n310.py +++ b/mpm/python/usrp_mpm/periph_manager/n310.py @@ -27,7 +27,7 @@ class n310(periph_manager): dboard_eeprom_addrs = {"A": "something", "B": "else"} dboard_spimaster_addrs = {"A": "something", "B": "else"} - def __init__(self, eeprom_device, *args, **kwargs): + def __init__(self, *args, **kwargs): # First initialize parent class - will populate self._eeprom_head and self._eeprom_rawdata super(n310, self).__init__(*args, **kwargs) data = self.read_eeprom_v1(self._eeprom_rawdata) diff --git a/mpm/python/usrp_mpm/periph_manager/test.py b/mpm/python/usrp_mpm/periph_manager/test.py new file mode 100644 index 000000000..c9cbc1f3f --- /dev/null +++ b/mpm/python/usrp_mpm/periph_manager/test.py @@ -0,0 +1,63 @@ +# +# Copyright 2017 Ettus Research (National Instruments) +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. +# +""" +test periph_manager implementation module +""" +from base import periph_manager +from . import dboard_manager +import random +import string +import struct + + +class test(periph_manager): + hw_pids = "42" + mboard_eeprom_addr = None + dboard_eeprom_addrs = {"A": "something", "B": "else"} + dboard_spimaster_addrs = {"A": "something", "B": "else"} + + def __init__(self, *args, **kwargs): + # First initialize parent class - will populate self._eeprom_head and self._eeprom_rawdata + # super(n310, self).__init__(*args, **kwargs) + # if header.get("dataversion", 0) == 1: + self._eeprom = self.read_eeprom_fake() + self._serial = "AABBCCDDEEFF" + + # I'm the test periph_manager, I know I have test dboards attached + self.dboards = { + "A": dboard_manager.test(self.read_db_eeprom_random()), + "B": dboard_manager.test(self.read_db_eeprom_random()) + } + + def read_eeprom_fake(self): + fake_eeprom = { + "magic": 42, + "crc": 4242, + "data_version": 42, + "hw_pid": 42, + "hw_rev": 5 + } + + return fake_eeprom + + def read_db_eeprom_random(self): + fake_eeprom = { + "serial": ''.join( + random.choice("ABCDEF" + string.digits) + for _ in range(16)) + } + return fake_eeprom |