aboutsummaryrefslogtreecommitdiffstats
path: root/mpm/python/usrp_mpm/dboard_manager
diff options
context:
space:
mode:
Diffstat (limited to 'mpm/python/usrp_mpm/dboard_manager')
-rw-r--r--mpm/python/usrp_mpm/dboard_manager/__init__.py5
-rw-r--r--mpm/python/usrp_mpm/dboard_manager/base.py17
-rw-r--r--mpm/python/usrp_mpm/dboard_manager/eiscat.py15
-rw-r--r--mpm/python/usrp_mpm/dboard_manager/magnesium.py12
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(