diff options
Diffstat (limited to 'mpm/python/usrp_mpm/dboard_manager')
-rw-r--r-- | mpm/python/usrp_mpm/dboard_manager/__init__.py | 5 | ||||
-rw-r--r-- | mpm/python/usrp_mpm/dboard_manager/base.py | 17 | ||||
-rw-r--r-- | mpm/python/usrp_mpm/dboard_manager/eiscat.py | 15 | ||||
-rw-r--r-- | mpm/python/usrp_mpm/dboard_manager/magnesium.py | 12 |
4 files changed, 31 insertions, 18 deletions
diff --git a/mpm/python/usrp_mpm/dboard_manager/__init__.py b/mpm/python/usrp_mpm/dboard_manager/__init__.py index 93de24695..a06591c81 100644 --- a/mpm/python/usrp_mpm/dboard_manager/__init__.py +++ b/mpm/python/usrp_mpm/dboard_manager/__init__.py @@ -18,12 +18,9 @@ dboards module __init__.py """ from .. import libpyusrp_periphs as lib +from .base import DboardManagerBase from .magnesium import Magnesium from .eiscat import EISCAT from .test import test from .unknown import unknown -HW_PIDS = { - EISCAT.hw_pid: EISCAT, - Magnesium.hw_pid: Magnesium, -} diff --git a/mpm/python/usrp_mpm/dboard_manager/base.py b/mpm/python/usrp_mpm/dboard_manager/base.py index 13284f6d3..985c20484 100644 --- a/mpm/python/usrp_mpm/dboard_manager/base.py +++ b/mpm/python/usrp_mpm/dboard_manager/base.py @@ -22,15 +22,20 @@ from ..mpmlog import get_logger class DboardManagerBase(object): """ - Holds shared pointer to wrapped C++ implementation. - Sanitizes arguments before calling C++ functions. - Ties various constants to specific daughterboard class + Base class for daughterboard controls """ - _eeprom = {} + ######################################################################### + # Overridables + # + # These values are meant to be overridden by the according subclasses + ######################################################################### + # Very important: A list of PIDs that apply to the current device. Must be + # list, even if there's only one entry. + pids = [] - def __init__(self, eeprom=None): - self._eeprom = eeprom or {} + def __init__(self, slot_idx, **kwargs): self.log = get_logger('dboardManager') + self.slot_idx = slot_idx def get_serial(self): return self._eeprom.get("serial", "") diff --git a/mpm/python/usrp_mpm/dboard_manager/eiscat.py b/mpm/python/usrp_mpm/dboard_manager/eiscat.py index d293bb706..330e6a605 100644 --- a/mpm/python/usrp_mpm/dboard_manager/eiscat.py +++ b/mpm/python/usrp_mpm/dboard_manager/eiscat.py @@ -338,21 +338,26 @@ class EISCAT(DboardManagerBase): """ EISCAT Daughterboard """ - hw_pid = 3 - special_eeprom_addrs = {"special0": "something"} + ######################################################################### + # Overridables + # + # See DboardManagerBase for documentation on these fields + ######################################################################### + pids = [0x180] + spi_chipselect = { "lmk": 0, "adc0": 1, "adc1": 2 } - def __init__(self, slot_idx, spi_devices, *args, **kwargs): - super(EISCAT, self).__init__(*args, **kwargs) + def __init__(self, slot_idx, **kwargs): + super(EISCAT, self).__init__(slot_idx, **kwargs) self.log = get_logger("EISCAT") - self.slot_idx = slot_idx self.log.trace("Initializing EISCAT daughterboard, slot index {}".format(self.slot_idx)) self.initialized = False self.ref_clock_freq = 10e6 + spi_devices = kwargs['spi_nodes'] if len(spi_devices) < len(self.spi_chipselect): self.log.error("Expected {0} spi devices, found {1} spi devices".format( len(self.spi_chipselect), len(spi_devices), diff --git a/mpm/python/usrp_mpm/dboard_manager/magnesium.py b/mpm/python/usrp_mpm/dboard_manager/magnesium.py index de871abf8..612705ce4 100644 --- a/mpm/python/usrp_mpm/dboard_manager/magnesium.py +++ b/mpm/python/usrp_mpm/dboard_manager/magnesium.py @@ -50,14 +50,20 @@ class Magnesium(DboardManagerBase): """ Holds all dboard specific information and methods of the magnesium dboard """ - hw_pid = 2 - special_eeprom_addrs = {"special0": "something"} + ######################################################################### + # Overridables + # + # See DboardManagerBase for documentation on these fields + ######################################################################### + pids = [0x150] + # Maps the chipselects to the corresponding devices: spi_chipselect = {"lmk": 0, "mykonos": 1} - def __init__(self, slot_idx, spi_devices, eeprom_data, *args, **kwargs): + def __init__(self, slot_idx, **kwargs): super(Magnesium, self).__init__(*args, **kwargs) self.log = get_logger("Magnesium") + spi_devices = kwargs['spi_nodes'] # eeprom_data is a tuple (head_dict, raw_data) if len(spi_devices) != len(self.spi_chipselect): self.log.error("Expected {0} spi devices, found {1} spi devices".format( |