diff options
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  | 
