Equinox: A C++11 platform for realtime SDR applications
Equinox is a block programming platform suitable for SDR applications. It is written in C++11 and targets mainly realtime applications. To accomplish that, it exploits the flowgraph topology trying to optimize the scheduling of the different components and the data exchange between them. Using graph analysis algorithms and based on the available CPU cores, overheads like threading synchronization, as well as data dependencies or memory copies can be reduced.
At the same time, the platform tries to provide such an abstraction so it can easily adapt on the application requirements. To do so, it provides an abstracted scheduling mechanism, that can be easily extended. Currently there are two available schedulers. A simplified one, trying to equally distribute the number of blocks into the available CPU cores and a more sophisticated one, using the spectral graph partitioning algorithm which targets the minimum data dependencies between different CPU cores. Both of them can be used based on a user defined configuration parameter, without altering the flowgraph. For the DSP, Equinox will utilize the liquid-dsp library, abstracted in a visual block programming way.
As block programming platform, it provides a QT5 based GUI (equinox-ui) in order users to be able to develop their application with ease. The UI is responsible for generating the C++ source file and build system, so it can be then compiled and executed.
The code is licensed under the GPLv3 license and is available at the https://gitlab.com/equinox-sdr repository.
Speakers: Manolis Surligas