Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
Feature Summary Table of Contents
Users can create processing blocks for various kinds of DMA devices such as DSPs, PCIe boards, and GPUs. These devices tend to provide their own device-allocated memory. Pothos supports the integration of this device memory directly with the framework to minimize overhead and uncessary memory copies.
A interconnections of blocks can be distributed across multiple processes and remote hosts. The coding burden to the user to distibute blocks on a remote node is no different in practice than instantiating the block locally. The topology will automatically add network ingress and outgress blocks to the design to support the distributed topology.
Pothos focuses on providing a clean, simple, and well-documented API for users to create processing blocks. The API design is the culmination of years of experience with prior projects. We hope that you find the API intuitive and easy to navigate. For more details, examples, and descriptions, take a look at the blocks coding guide.
Minimal boiler plate: Coding up a new processing block and making it available to the system should be easy. We want to minimize the user's required effort and the amount of code that has to be duplicated. Pothos provides cmake modules to simplify building and installing custom blocks. Making a new block is as simple as a single C++ file and a CMake command.
For an example, take a look at the creating a block example:
Every feature available in the Pothos API is available in the PothosGui. With PothosGui, users can design processing topologies, deploy those topologies on local and remote nodes, monitor and debug the design, author new processing blocks within the GUI...
The Pothos project includes a variety of processing toolkits including graphical plotters, SDR hardware support, FPGA offload support, OpenCl offload support, DSP processing, and more. See the components map for a list of known toolkits.
Pothos supports language bindings through its Proxy interface. Processing IP can be written in any language with the provided bindings. This IP can be connected and interfaced with in any other supported binding.
Current bindings are:
- others on the wishlist...
The following is a list of some of the advanced API features that Pothos can offer to authors of processing IP:
- Stream oriented API
- Stream metadata API
- Discrete messaging API
- Signals and slots API
- Buffer access API