From 94837dbd51b85785593811b6eff46fec4ef64de8 Mon Sep 17 00:00:00 2001 From: f4exb Date: Wed, 19 Sep 2018 06:15:22 +0200 Subject: [PATCH] LibbladeRF2: BladeRF1 specific enumeration --- .../bladerfoutput/bladerfoutputplugin.cpp | 43 ++++++++++++++----- .../bladerfinput/bladerfinputplugin.cpp | 42 +++++++++++++----- 2 files changed, 65 insertions(+), 20 deletions(-) diff --git a/plugins/samplesink/bladerfoutput/bladerfoutputplugin.cpp b/plugins/samplesink/bladerfoutput/bladerfoutputplugin.cpp index 82bd8574f..c404c5020 100644 --- a/plugins/samplesink/bladerfoutput/bladerfoutputplugin.cpp +++ b/plugins/samplesink/bladerfoutput/bladerfoutputplugin.cpp @@ -66,17 +66,40 @@ PluginInterface::SamplingDevices BladerfOutputPlugin::enumSampleSinks() { for(int i = 0; i < count; i++) { - QString displayedName(QString("BladeRF[%1] %2").arg(devinfo[i].instance).arg(devinfo[i].serial)); + struct bladerf *dev; - result.append(SamplingDevice(displayedName, - m_hardwareID, - m_deviceTypeID, - QString(devinfo[i].serial), - i, - PluginInterface::SamplingDevice::PhysicalDevice, - false, - 1, - 0)); + int status = bladerf_open_with_devinfo(&dev, &devinfo[i]); + + if (status == BLADERF_ERR_NODEV) + { + qCritical("BladerfOutputPlugin::enumSampleSinks: No device at index %d", i); + continue; + } + else if (status != 0) + { + qCritical("BladerfOutputPlugin::enumSampleSinks: Failed to open device at index %d", i); + continue; + } + + const char *boardName = bladerf_get_board_name(dev); + + if (strcmp(boardName, "bladerf1") == 0) + { + QString displayedName(QString("BladeRF1[%1] %2").arg(devinfo[i].instance).arg(devinfo[i].serial)); + + result.append(SamplingDevice(displayedName, + m_hardwareID, + m_deviceTypeID, + QString(devinfo[i].serial), + i, + PluginInterface::SamplingDevice::PhysicalDevice, + false, + 1, + 0)); + + } + + bladerf_close(dev); } bladerf_free_device_list(devinfo); // Valgrind memcheck diff --git a/plugins/samplesource/bladerfinput/bladerfinputplugin.cpp b/plugins/samplesource/bladerfinput/bladerfinputplugin.cpp index e6c979d74..a0a9142df 100644 --- a/plugins/samplesource/bladerfinput/bladerfinputplugin.cpp +++ b/plugins/samplesource/bladerfinput/bladerfinputplugin.cpp @@ -66,17 +66,39 @@ PluginInterface::SamplingDevices BlderfInputPlugin::enumSampleSources() { for(int i = 0; i < count; i++) { - QString displayedName(QString("BladeRF[%1] %2").arg(devinfo[i].instance).arg(devinfo[i].serial)); + struct bladerf *dev; - result.append(SamplingDevice(displayedName, - m_hardwareID, - m_deviceTypeID, - QString(devinfo[i].serial), - i, - PluginInterface::SamplingDevice::PhysicalDevice, - true, - 1, - 0)); + int status = bladerf_open_with_devinfo(&dev, &devinfo[i]); + + if (status == BLADERF_ERR_NODEV) + { + qCritical("BlderfInputPlugin::enumSampleSources: No device at index %d", i); + continue; + } + else if (status != 0) + { + qCritical("BlderfInputPlugin::enumSampleSources: Failed to open device at index %d", i); + continue; + } + + const char *boardName = bladerf_get_board_name(dev); + + if (strcmp(boardName, "bladerf1") == 0) + { + QString displayedName(QString("BladeRF1[%1] %2").arg(devinfo[i].instance).arg(devinfo[i].serial)); + + result.append(SamplingDevice(displayedName, + m_hardwareID, + m_deviceTypeID, + QString(devinfo[i].serial), + i, + PluginInterface::SamplingDevice::PhysicalDevice, + true, + 1, + 0)); + } + + bladerf_close(dev); } bladerf_free_device_list(devinfo); // Valgrind memcheck