SoapySDR is an open-source generalized C/C++ API and runtime library for interfacing with SDR devices. Application creators can use SoapySDR to interface with most SDR devices out there, and hardware vendors can easily add support for their hardware using the plugin architecture. Read more about the project at the SoapySDR project webpage.
Pothos dataflow software suite
Design, test, and deploy dataflow topologies. Topologies can be distributed across hosts. Pothos boasts an elegant framework API, as well as a fully-functional graphical topology designer.
- Read more about the project at the Pothos project webpage.
- Checkout my bussiness webpage for Pothos contract services.
Over the years, I have contributed greatly to the GNU Radio project. Check the sections below to read about individual contributions.
GNURadio advanced scheduler
GRAS is a improved scheduler for GNU Radio to support DMA devices, better buffer management, advanced message passing, and mimimal boilerplate when creating new blocks. Many of the concepts developed in GRAS have made their way into Pothos. Read more about GRAS and its features.
GREx is a set of processing blocks that use the GNURadio advanced scheduler. These blocks demonstrate and take advantage of many of the unique features found in GRAS. Read more about GREx and its features.
GRExtras is aset of extensions and features for GNU Radio. GRExtras was at attempt to implement new features on top of GNU Radio without any in-tree modifications. Such features include, message passing, authoring processing blocks in python, and several blocks that demonstrated the GRExtras features. GRExtras was developed along side GRAS, and many of the GRExtras blocks motivated the blocks in the GREx project. Read more about the GRExtras project.
I developed the GNURadio companion (GRC) as a graphical topology designer for GNU Radio. The development begain back in my university days under a technology fellowship, but I continued on with the work as a volunteer effort -- including a major rewrite which is the current incarnation of GRC available today.
Wx display widgets
I developed a set of graphical display widgets for GNURadio using OpenGL and WxPython. These widgets replaced the original display sinks in GNURadio for better looks, better controls, and OpenGL acceleration. Visit my Personal WX GUI showcase.
VOLK - Vector-Optimized Library of Kernels
VOLK is really two parts: 1) a collection of SIMD processing kernels and 2) framework for managing those kernels. I was responsible for the development of the VOLK framework. The framework does the following:
- Compilation of processing kernels across all possible compiler architecture flags
- Rumtime detection of hosts's processing architecture -- which SIMD instructions are supported?
- Runtime selection of processing kernels based on processing architecture.
- Profiling of kernels to select the best performing on a particular host.
Read more about VOLK on the official VOLK wiki page.
GNURadio CMake and MSVC support
The old autotools-based build system was getting out of hand and too complicated to maintain. I converted the entire GNU Radio build project to use CMake, as well as modifications to build under Visual Studio. Both of these developments are now a core part of mainline GNU Radio.
FlexHDR is a graphical tool for creating FPGA topologies in VHDL and Verilog. The design tool is largely based around the GNURadio Companion, and largely responsible for a major rewrite of the GNURadio Companion -- to support both tools.