Support multiple SoapySDR devices using soapy=# device_arg

This commit is contained in:
Jason Tang 2020-02-01 22:00:13 +00:00 committed by Andre Puschmann
parent f2851b037e
commit e15eb936fa
1 changed files with 18 additions and 1 deletions

View File

@ -298,7 +298,24 @@ int rf_soapy_open_multi(char* args, void** h, uint32_t num_requested_channels)
printf("\n");
}
SoapySDRDevice* sdr = SoapySDRDevice_make(&(soapy_args[0]));
// Select Soapy device by id
const char dev_arg[] = "id=";
char* dev_ptr = strstr(args, dev_arg);
int dev_id = 0;
if (dev_ptr) {
char dev_str[64] = {0};
copy_subdev_string(dev_str, dev_ptr + strnlen(dev_arg, 64));
printf("Selecting Soapy device: %s\n", dev_str);
dev_id = strtol(dev_str, NULL, 0);
if (dev_id < 0 || dev_id > 10) {
ERROR("Failed to set device. Using 0 as default.\n");
dev_id = 0;
}
remove_substring(args, dev_arg);
remove_substring(args, dev_str);
}
SoapySDRDevice* sdr = SoapySDRDevice_make(&(soapy_args[dev_id]));
if (sdr == NULL) {
printf("Failed to create Soapy object\n");
return SRSLTE_ERROR;