| 31 | In order to support the coordinated spectrum sensing effort on multiple nodes, along with using a scheduled sensing scenario from a single centralized controller node, which implies running RF receivers on specific nodes at given time intervals with sensing parameters determined by the controller node during the process, a tool was developed entirely in C++. This programming language was chosen to avoid the large memory and processing overhead introduced by Python, which can be crucial at higher sampling rates (~200 Msps) with very high processing needs. This moved the bottleneck to the radio device capabilities themselves. The tool was named Wideband Software Extensible Radio Daemon (WiSERd), and was created as a monolithic but modular multi-threaded application. Making it monolithic enabled the best performance, and at the same time different parts of the functionality of the application were create as separate classes, making it modular to facilitate further development and functionality enhancements. The application is able to run a transmitter and a receiver at the same time in separate threads. Transmitter uses a producer class instance to create IQ samples for transmission, and the receiver uses consumer class instances to process the received data. Both of these classes were created using factor patterns, and templates for both the consumer and the producer class are available, making it as simple as possible to add different kinds of transmitted signals, as well as new processing algorithms for the received samples. Additionally, the radio module is implemented as a separate class, which facilitates adding support for different types of radio devices. Currently supported are USRP devices by Ettus Research, as well as Xilinx Zynq. |