Hi, I'm interested in developing a full-duplex RX + TX capability using SoapySDR, starting with the LimeSDR and hopefully allowing me to migrate to other SDRs. Is there any example SoapySDR C or C++ code showing how SoapySDR does multi-channel full-duplex RX + TX?
Can one simply create multiple streams and then make SoapySDRDevice_readStream() and SoapySDRDevice_writeStream() calls on separate threads?
If yes, has anyone done this with a LimeSDR and has has gotten a feel for achievable bandwidth?
Regarding configuration management... I have noted Myriad's use of the LimeSuiteGUI and .ini file to help manage the LimeSDR's large number of hardware configuration parameters. Their example code for full duplex RX + TX leverages this .ini file to possibly ensure complete hardware configuration. https://github.com/myriadrf/LimeSuite/blob/master/src/examples/dualRXTX.cpp Unfortunately this can't support other SDRs, the .ini is not human readable and one needs the LimeSuiteGUI code to understand parameter types, purpose and permissible values. Can SoapySDR::Device provide a superior approach to generic hardware configuration management, say via the readSetting() and writeSetting() key,value methods? So instead of using various SoapySDR::Device get() and set() calls for the many different types of SDR hardware parameters, can I simply iterate through a list of key,value pairs and call readSetting() and writeSetting() methods to fully configure an SDR? Is there any way to query for all permissible keys and perhaps permissible values for each key? Goal would be to verify that a list of key,value pairs is complete and valid for a particular SDR.
Thanks! Jason