Software Architecture ===================== .. image:: images/software_architecture.png On the laptop (henceforth called "client"), signal processing is performed using python. Via API calls, configurations are passed to the :py:class:`Usrp Client `. Under the hood, the Usrp client uses a RPC client for performing remote procedure calls. We use `ZeroRpc `_ that uses `ZeroMQ `_ as a communication protocol. This communication protocol is widely used for high-throughput systems. On the USRP, we run the :py:mod:`RPC server ` which is managed by the :py:class:`USRP server `. In order perform the actual calls against the USRP device, we wrapped the `UH driver `_. To ease the integration into the server, we created a python binding. In the picture above, third party modules are depicted by grey boxes, whereas custom code is highlighted with blue boxes.