-
Notifications
You must be signed in to change notification settings - Fork 49
Features
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.
Details:
- https://github.com/pothosware/PothosCore/wiki/BlocksCodingGuide#buffer-resource-api-dma
- https://github.com/pothosware/PothosOpenCL/wiki
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:
- https://github.com/pothosware/PothosPython/wiki
- https://github.com/pothosware/PothosJava/wiki
- 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
- Project overview
- Getting started
- FAQ
- Video screencasts
- Demo applications
- Features summary
- Versioned releases
- Miscellaneous links
- Help and support
- Pothos users' group
- Twitter @pothosware
- IRC chat #pothos
- Slack workspace
- Contract services
- Developer blog
- Contributing
- Donate
- Build guide
- GUI Tutorial
- SDR Tutorial
- Filter Tutorial
- Doxygen docs
- PothosUtil Guide
- Blocks coding guide
- Scheduler explained
- Remote control guide
- Extending serialization