Skip to content
Josh Blum edited this page Sep 10, 2017 · 21 revisions

Developing processing IP

http://i.imgur.com/IU7iEkQ.png

The Pothos SDR development environment has almost everything needed to develop new processing blocks and hardware support modules -- except a compiler. To develop IP users must install CMake and Visual Studio 2015 or higher.

Visual C++ ABI compatibility changes between major releases. The Pothos SDR installer is available for several major releases of Visual Studio. The user should be careful to match the installer to their version of Visual Studio.

Users should select the same install prefix as the development environment so that the plugin modules can be automatically loaded. Pass the install prefix into the CMake GUI or via the command line. Command line example:

cd my_build_directory
cmake path_to_source_directory ^
    -DCMAKE_INSTALL_PREFIX="C:/Program Files/PothosSDR"

The Pothos SDR installer is built for the Release build type. Users must build their projects with "Release" or "RelWithDebInfo" set. Otherwise the resting libraries will not be ABI compatible. Command line example:

cmake --build . --config RelWithDebInfo
cmake --build . --config RelWithDebInfo --target install

Users can create processing blocks in C++ that will be usable from the framework APIs and within the Pothos GUI. The Blocks coding guide will guide you through creating a block and compilation scripts, and goes into intricate detail about using the Pothos Framework API.

In addition, users can create and use blocks written in the Python programming language. Read more about creating Python processing blocks on the Python toolkit wiki.

Additional dependencies: The development environment comes pre-built with python bindings, however in addition to the compiler, users must install Python 3.5 and numpy. Make sure to choose the 64-bit Python 3.5 installers both Python and numpy. The wheel installation file for numpy can be installed with the Python pip utility.

SDR Devices are supported through the Soapy SDR abstraction library. Supporting a new device is a matter of creating a plugin module in C++ that bridges calls from the device driver to abstraction calls in Soapy SDR. Read more about the Soapy SDR driver API.