aboutsummaryrefslogtreecommitdiffstats
path: root/mpm/python/usrp_mpm/periph_manager
diff options
context:
space:
mode:
authorSamuel O'Brien <sam.obrien@ni.com>2020-07-30 13:53:44 -0500
committerAaron Rossetto <aaron.rossetto@ni.com>2020-10-28 15:25:48 -0500
commit5df8202c0cb88fb5c7629fbf0ce5bed32c96e70d (patch)
treedb1755242b6f8267bb918c860bd0b2350c229ae9 /mpm/python/usrp_mpm/periph_manager
parent687ed5bba07559a314d56e70b0eb727c7c8d9cbf (diff)
downloaduhd-5df8202c0cb88fb5c7629fbf0ce5bed32c96e70d.tar.gz
uhd-5df8202c0cb88fb5c7629fbf0ce5bed32c96e70d.tar.bz2
uhd-5df8202c0cb88fb5c7629fbf0ce5bed32c96e70d.zip
sim: Move Hardware Specific to Config File
This commit moves various magic numbers and hardware specific settings into the configuration file. It also provides default presets for said configuration files which can be inherited from. Signed-off-by: Samuel O'Brien <sam.obrien@ni.com>
Diffstat (limited to 'mpm/python/usrp_mpm/periph_manager')
-rw-r--r--mpm/python/usrp_mpm/periph_manager/sim.py47
1 files changed, 25 insertions, 22 deletions
diff --git a/mpm/python/usrp_mpm/periph_manager/sim.py b/mpm/python/usrp_mpm/periph_manager/sim.py
index 3e761c809..d909bed34 100644
--- a/mpm/python/usrp_mpm/periph_manager/sim.py
+++ b/mpm/python/usrp_mpm/periph_manager/sim.py
@@ -15,7 +15,7 @@ from usrp_mpm.xports import XportMgrUDP
from usrp_mpm.mpmlog import get_logger
from usrp_mpm.rpc_server import no_claim
from usrp_mpm.periph_manager import PeriphManagerBase
-from usrp_mpm.simulator.sim_dboard_catalina import SimulatedCatalinaDboard
+from usrp_mpm.simulator.sim_dboard import registry as dboards
from usrp_mpm.simulator.chdr_endpoint import ChdrEndpoint
from usrp_mpm.simulator.config import Config
@@ -70,27 +70,30 @@ class sim(PeriphManagerBase):
#########################################################################
# Overridables
#########################################################################
- description = "E320-Series Device - SIMULATED"
- pids = {0xE320: 'e320'}
-
- mboard_info = {"type": "e3xx", "product": "e320"}
- mboard_max_rev = 7 # RevC
mboard_sensor_callback_map = {}
###########################################################################
# Ctor and device initialization tasks
###########################################################################
def __init__(self, args):
- super().__init__()
+ # Logger is initialized in super().__init__ but we need config values
+ # before we call that
+ config_log = get_logger("PeriphConfig")
if 'config' in args:
config_path = args['config']
- self.log.info("Loading config from {}".format(config_path))
- self.config = Config.from_path(config_path)
+ config_log.info("Loading config from {}".format(config_path))
+ self.config = Config.from_path(config_log, config_path)
else:
- self.log.warn("No config specified, using default")
+ config_log.warn("No config specified, using default")
self.config = Config.default()
self.device_id = 1
+ self.description = self.config.hardware.description
+ self.mboard_info = {"type": self.config.hardware.uhd_device_type,
+ "product": self.config.hardware.product}
+ self.pids = {int(self.config.hardware.pid): self.config.hardware.product}
+ # This uses the description, mboard_info, and pids
+ super().__init__()
self.chdr_endpoint = ChdrEndpoint(self.log, self.config)
@@ -105,8 +108,7 @@ class sim(PeriphManagerBase):
self.log.debug("Setting Simulator Sample Rate to {}".format(freq))
self.chdr_endpoint.set_sample_rate(freq)
- @classmethod
- def generate_device_info(cls, eeprom_md, mboard_info, dboard_infos):
+ def generate_device_info(self, eeprom_md, mboard_info, dboard_infos):
"""
Hard-code our product map
"""
@@ -115,25 +117,23 @@ class sim(PeriphManagerBase):
eeprom_md, mboard_info, dboard_infos)
# Then add device-specific information
mb_pid = eeprom_md.get('pid')
- device_info['product'] = cls.pids.get(mb_pid, 'unknown')
+ device_info['product'] = self.pids.get(mb_pid, 'unknown')
return device_info
def _read_mboard_eeprom(self):
"""
Read out a simulated mboard eeprom and saves it to the appropriate member variable
"""
- self._eeprom_head = sim._generate_eeprom_head()
+ self._eeprom_head = self._generate_eeprom_head()
self.log.trace("Found EEPROM metadata: '{}'"
.format(str(self._eeprom_head)))
return (self._eeprom_head, None)
- @staticmethod
- def _generate_eeprom_head(serial=b'3196D2A', rev=2, rev_compat=2):
- return {'pid': 0xE320,
- 'rev': rev,
- 'rev_compat': rev_compat,
- 'serial': serial}
+ def _generate_eeprom_head(self):
+ return {'pid': self.config.hardware.pid,
+ 'rev': 0,
+ 'serial': self.config.hardware.serial_num}
def _init_peripherals(self, args):
"""
@@ -157,8 +157,11 @@ class sim(PeriphManagerBase):
self.log.debug("Device info: {}".format(self.device_info))
def _init_dboards(self, dboard_infos, override_dboard_pids, default_args):
- self.dboards.append(SimulatedCatalinaDboard(
- E320_DBOARD_SLOT_IDX, self._simulator_sample_rate))
+ # TODO: Support more than one Daughter Board
+ # Needs changes here and in config.py
+ dboard_name = self.config.hardware.dboard_class
+ dboard_class = dboards[dboard_name]
+ self.dboards.append(dboard_class(E320_DBOARD_SLOT_IDX, self._simulator_sample_rate))
self.log.info("Found %d daughterboard(s).", len(self.dboards))
###########################################################################