PluginInterface::SamplingDevices SDRPlayPlugin::enumSampleSources() { SamplingDevices result; int count = mirisdr_get_device_count(); char vendor[256]; char product[256]; char serial[256]; for(int i = 0; i < count; i++) { vendor[0] = '\0'; product[0] = '\0'; serial[0] = '\0'; if (mirisdr_get_device_usb_strings((uint32_t)i, vendor, product, serial) != 0) { continue; } qDebug("SDRPlayPlugin::enumSampleSources: found %s:%s (%s)", vendor, product, serial); QString displayedName(QString("SDRPlay[%1] %2").arg(i).arg(serial)); result.append(SamplingDevice(displayedName, m_deviceTypeID, QString(serial), i)); } return result; }
int verbose_device_search(char *s) { int i, device_count, device, offset; char *s2; char vendor[256], product[256], serial[256]; device_count = mirisdr_get_device_count(); if (!device_count) { fprintf(stderr, "No supported devices found.\n"); return -1; } fprintf(stderr, "Found %d device(s):\n", device_count); for (i = 0; i < device_count; i++) { mirisdr_get_device_usb_strings(i, vendor, product, serial); fprintf(stderr, " %d: %s, %s, SN: %s\n", i, vendor, product, serial); } fprintf(stderr, "\n"); /* does string look like raw id number */ device = (int)strtol(s, &s2, 0); if (s2[0] == '\0' && device >= 0 && device < device_count) { fprintf(stderr, "Using device %d: %s\n", device, mirisdr_get_device_name((uint32_t)device)); return device; } /* does string exact match a serial */ for (i = 0; i < device_count; i++) { mirisdr_get_device_usb_strings(i, vendor, product, serial); if (strcmp(s, serial) != 0) { continue;} device = i; fprintf(stderr, "Using device %d: %s\n", device, mirisdr_get_device_name((uint32_t)device)); return device; } /* does string prefix match a serial */ for (i = 0; i < device_count; i++) { mirisdr_get_device_usb_strings(i, vendor, product, serial); if (strncmp(s, serial, strlen(s)) != 0) { continue;} device = i; fprintf(stderr, "Using device %d: %s\n", device, mirisdr_get_device_name((uint32_t)device)); return device; } /* does string suffix match a serial */ for (i = 0; i < device_count; i++) { mirisdr_get_device_usb_strings(i, vendor, product, serial); offset = strlen(serial) - strlen(s); if (offset < 0) { continue;} if (strncmp(s, serial+offset, strlen(s)) != 0) { continue;} device = i; fprintf(stderr, "Using device %d: %s\n", device, mirisdr_get_device_name((uint32_t)device)); return device; } fprintf(stderr, "No matching devices found.\n"); return -1; }
SDRIOEXPORT sdrio_int32 sdrio_get_num_devices() { return mirisdr_get_device_count(); }