Nakon godine razvoja, oblikovano je novo značajno izdanje slobodne platforme za digitalnu obradu signala GNU Radio 3.10. Platforma uključuje skup programa i biblioteka koje omogućuju stvaranje proizvoljnih radiokomunikacijskih sustava, shema modulacije i oblika primljenih i poslanih signala koji se postavljaju putem softvera, dok se za hvatanje i generiranje signala koriste osnovni hardverski uređaji. Projekt se distribuiše pod GPLv3 licencom. Većina komponenti GNU Radio napisana je na Python jeziku, dok su dijelovi kritični za performanse i kašnjenje napisani na C++ jeziku, što omogućava korištenje paketa za rješavanje problema u stvarnom vremenu.
U kombinaciji s univerzalnim programabilnim prijemnicima i odašiljačima, koji nisu vezani uz frekvencijski opseg i tip modulacije signala, platforma može biti korištena za izradu uređaja kao što su osnovne stanice za GSM mreže, uređaji za daljinsko očitanje RFID oznaka (elektroničke iskaznice i propusnice, pametne kartice), GPS prijemnici, WiFi, prijemnici i odašiljači FM radija, TV dekoderi, pasivni radari, spektar analizatori itd. Osim USRP-a, paket može koristiti i druge hardverske komponente za ulaz i izlaz signala, npr. dostupni su drajveri za zvučne kartice, TV tunerima, uređajima BladeRF, Myriad-RF, HackRF, UmTRX, Softrock, Comedi, Funcube, FMCOMMS, USRP i S-Mini.
Uključena je i zbirka filtara, kanalskih kodeka, modula sinhronizacije, demodulatora, ekvalizatora, glasovnih kodeka, dekodera i drugih elemenata potrebnih za izradu radiokomunikacijskih sustava. Navedeni elementi mogu se koristiti kao građevni blokovi za sastavljanje gotovih sustava, što u kombinaciji s mogućnostima definicije tokova podataka između blokova omogućava projektiranje radiokomunikacijskih sustava čak i bez znanja o programiranju.
Glavne promjene:
- Dodan je novi modul gr-pdu, u koji su preneseni alati za manipulaciju objektima tipa PDU (Protocol Data Unit), korištenim za podatke koji se prenose između blokova GNU Radio. Iz modula gr-blocks svi PDU blokovi su premješteni u module gr-network i gr-pdu, a umjesto gr-blocks ostavljena je slojeva za osiguranje unatradne kompatibilnosti. Vektorski tipovi PDU sada su dostupni u imenskom prostoru gr::types, a funkcije za manipulaciju PDU – u imenskom prostoru gr::pdu.
- Dodan je novi modul gr-iio, koji pruža okvir ulaza/izlaza za organizaciju razmjene podataka između GNU Radio i industrijskih uređaja temeljenih na IIO (Industrial I/O) podsustavu, kao što su PlutoSDR, AD-FMCOMMS2-EBZ, AD-FMCOMMS3-EBZ, AD-FMCOMMS4-EBZ, ARRADIO i AD-FMCOMMS5-EBZ.
- Predložena je eksperimentalna podrška za klasu Custom Buffer, koja pojednostavljuje prijenos podataka između GNU Radio blokova i hardverskih akceleratora temeljenih na GPU, FPGA i DSP. Korištenje custom_buffer omogućava izbjegavanje pisanja posebnih blokova za korištenje akceleracije na strani GPU-a, te omogućava direktno premještanje podataka iz prstena GNU Radio u GPU memoriju, pokretanje CUDA jezgri i vraćanje podataka s rezultatom u buffere GNU Radio.
- Infrastruktura za vođenje logova prebačena je na korištenje biblioteke spdlog, što je omogućilo poboljšanu udobnost rada s logovima, uklanjanje poziva iostream i cstdio, osiguranje podrške za libfmt izraze za formatiranje nizova i modernizaciju programskog sučelja. Ranije korištena biblioteka Log4CPP uklonjena je iz zavisnosti.
- Ostvarena je migracija na korištenje C++17 standarda u razvoju. boost::filesystem biblioteka zamijenjena je s std::filesystem.
- Povećani su zahtjevi za kompajlere (GCC 9.3, Clang 11, MSVC 1916) i zavisnosti (Python 3.6.5, numpy 1.17.4, VOLK 2.4.1, CMake 3.16.3, Boost 1.69, Mako 1.1.0, PyBind11 2.4.3, pygccxml 2.0.0).
- Dodani su Python bindingi za RFNoC blokove.
- U blokove za izgradnju grafičkog sučelja gr-qtgui dodana je podrška za Qt 6.2. U grafičko sučelje GRC (GNU Radio Companion) dodana je opcija „—output“ za hijerarhijske blokove.
Izvor: opennet.ru
