aboutsummaryrefslogtreecommitdiffstats
path: root/mpm/python/usrp_mpm/rpc_server.py
diff options
context:
space:
mode:
Diffstat (limited to 'mpm/python/usrp_mpm/rpc_server.py')
-rw-r--r--mpm/python/usrp_mpm/rpc_server.py38
1 files changed, 26 insertions, 12 deletions
diff --git a/mpm/python/usrp_mpm/rpc_server.py b/mpm/python/usrp_mpm/rpc_server.py
index 076103aa9..2310dd814 100644
--- a/mpm/python/usrp_mpm/rpc_server.py
+++ b/mpm/python/usrp_mpm/rpc_server.py
@@ -49,24 +49,37 @@ class MPMServer(RPCServer):
# Compatibility number for MPM
MPM_COMPAT_NUM = (1, 1)
- def __init__(self, state, mgr, mgr_generator=None, *args, **kwargs):
+ def __init__(self, state, default_args):
self.log = get_main_logger().getChild('RPCServer')
self._state = state
self._timer = Greenlet()
self.session_id = None
- self.periph_manager = mgr
- self._mgr_generator = mgr_generator
+ # Create the periph_manager for this device
+ # This call will be forwarded to the device specific implementation
+ # e.g. in periph_manager/n310.py
+ # Which implementation is called will be determined during
+ # configuration with cmake (-DMPM_DEVICE).
+ # mgr is thus derived from PeriphManagerBase
+ # (see periph_manager/base.py)
+ from usrp_mpm.periph_manager import periph_manager
+ self._mgr_generator = lambda: periph_manager(default_args)
+ self.periph_manager = self._mgr_generator()
+ device_info = self.periph_manager.get_device_info()
+ self._state.dev_type.value = \
+ to_binary_str(device_info.get("type", "n/a"))
+ self._state.dev_product.value = \
+ to_binary_str(device_info.get("product", "n/a"))
+ self._state.dev_serial.value = \
+ to_binary_str(device_info.get("serial", "n/a"))
self._db_methods = []
self._mb_methods = []
self.claimed_methods = copy.copy(self.default_claimed_methods)
self._last_error = ""
- self._init_rpc_calls(mgr)
+ self._init_rpc_calls(self.periph_manager)
# We call the server __init__ function here, and not earlier, because
# first the commands need to be registered
super(MPMServer, self).__init__(
- *args,
pack_params={'use_bin_type': True},
- **kwargs
)
def _init_rpc_calls(self, mgr):
@@ -434,14 +447,14 @@ class MPMServer(RPCServer):
]
-def _rpc_server_process(shared_state, port, mgr, mgr_generator):
+def _rpc_server_process(shared_state, port, default_args):
"""
This is the actual process that's running the RPC server.
"""
connections = Pool(1000)
server = StreamServer(
('0.0.0.0', port),
- handle=MPMServer(shared_state, mgr, mgr_generator),
+ handle=MPMServer(shared_state, default_args),
spawn=connections)
# catch signals and stop the stream server
signal(signal.SIGTERM, lambda *args: server.stop())
@@ -449,12 +462,13 @@ def _rpc_server_process(shared_state, port, mgr, mgr_generator):
server.serve_forever()
-def spawn_rpc_process(state, udp_port, mgr, mgr_generator):
+def spawn_rpc_process(state, udp_port, default_args):
"""
Returns a process that contains the RPC server
"""
-
- proc_args = [udp_port, state, mgr, mgr_generator]
- proc = Process(target=_rpc_server_process, args=proc_args)
+ proc = Process(
+ target=_rpc_server_process,
+ args=[udp_port, state, default_args],
+ )
proc.start()
return proc