aboutsummaryrefslogtreecommitdiffstats
path: root/mpm/python/usrp_mpm/periph_manager/base.py
diff options
context:
space:
mode:
authorAndrej Rode <andrej.rode@ettus.com>2017-03-21 19:46:50 -0700
committerMartin Braun <martin.braun@ettus.com>2017-12-22 15:03:44 -0800
commitef6326a174e6880be5e2eaeac26a2c5de0768807 (patch)
treec949545e02390745c3a373e657bcf2404e62e191 /mpm/python/usrp_mpm/periph_manager/base.py
parentb29246a9e2d7ed1e03e44cfc6804615fcfa5a5d8 (diff)
downloaduhd-ef6326a174e6880be5e2eaeac26a2c5de0768807.tar.gz
uhd-ef6326a174e6880be5e2eaeac26a2c5de0768807.tar.bz2
uhd-ef6326a174e6880be5e2eaeac26a2c5de0768807.zip
mpm: python refactoring
Diffstat (limited to 'mpm/python/usrp_mpm/periph_manager/base.py')
-rw-r--r--mpm/python/usrp_mpm/periph_manager/base.py75
1 files changed, 75 insertions, 0 deletions
diff --git a/mpm/python/usrp_mpm/periph_manager/base.py b/mpm/python/usrp_mpm/periph_manager/base.py
new file mode 100644
index 000000000..f19265a05
--- /dev/null
+++ b/mpm/python/usrp_mpm/periph_manager/base.py
@@ -0,0 +1,75 @@
+#
+# 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/>.
+#
+"""
+Mboard implementation base class
+"""
+
+import re
+import os
+from . import lib
+from . import types
+from . import dboard_manager
+
+
+class periph_manager(object):
+ # stores discovered device information in dicts
+ dboards = {}
+ mboard_if_addrs = {}
+ mboard_overlays = {}
+ # this information has to be provided by
+ # the specific periph_manager implementation
+ mboard_eeprom_addr = ""
+ dboard_eeprom_addrs = {}
+ dboard_spimaster_addrs = {}
+
+ def __init__(self):
+ # I know my EEPROM address, lets use it
+ helper = lib.udev_helper.udev_helper()
+ (self._eeprom_head, self._eeprom_rawdata) = types.eeprom().read_eeprom(helper.get_eeprom(self.mboard_eeprom_addr))
+ self._dboard_eeproms = {}
+ for dboard_slot, eeprom_addr in self.dboard_eeprom_addrs.iteritems():
+ spi_devices = []
+ # I know EEPROM adresses for my dboard slots
+ eeprom_data = types.eeprom().read(helper.get_eeprom(eeprom_addr))
+ # I know spidev masters on the dboard slots
+ hw_pid = eeprom_data.get("hw_pid", 0)
+ if hw_pid in dboards.hw_pids:
+ spi_devices = helper.get_spidev_nodes(self.dboard_spimaster_addrs.get(dboard_slot))
+ dboard = dboards.hw_pids.get(hw_pid, dboards.unknown)
+ self.dboards.update({dboard_slot: dboard(spi_devices, eeprom_data)})
+
+ def get_overlays(self):
+ self.mboard_overlays = []
+ for f in os.listdir("/lib/firmware/"):
+ if f.endswith(".dtbo"):
+ self.mboard_overlays.append(f.strip(".dtbo"))
+
+ def check_overlay(self):
+ for f in os.listdir("/sys/kernel/device-tree/overlays/"):
+ pass #do stuff
+
+ def get_serial(self):
+ return self._serial
+
+ def load_fpga_image(self, target=None):
+ pass
+
+ def init_device(self, *args, **kwargs):
+ # Load FPGA
+ # Init dboards
+ pass
+