diff --git a/plugins/samplesource/sdrplay/sdrplayinput.cpp b/plugins/samplesource/sdrplay/sdrplayinput.cpp index f63a91c63..7871b30f0 100644 --- a/plugins/samplesource/sdrplay/sdrplayinput.cpp +++ b/plugins/samplesource/sdrplay/sdrplayinput.cpp @@ -39,6 +39,7 @@ MESSAGE_CLASS_DEFINITION(SDRPlayInput::MsgStartStop, Message) SDRPlayInput::SDRPlayInput(DeviceSourceAPI *deviceAPI) : m_deviceAPI(deviceAPI), + m_variant(SDRPlayUndef), m_settings(), m_dev(0), m_sdrPlayThread(0), @@ -81,13 +82,13 @@ bool SDRPlayInput::openDevice() if (!m_sampleFifo.setSize(96000 * 4)) { - qCritical("SDRPlayInput::start: could not allocate SampleFifo"); + qCritical("SDRPlayInput::openDevice: could not allocate SampleFifo"); return false; } if ((res = mirisdr_open(&m_dev, MIRISDR_HW_SDRPLAY, m_devNumber)) < 0) { - qCritical("SDRPlayInput::start: could not open SDRPlay #%d: %s", m_devNumber, strerror(errno)); + qCritical("SDRPlayInput::openDevice: could not open SDRPlay #%d: %s", m_devNumber, strerror(errno)); return false; } @@ -101,14 +102,22 @@ bool SDRPlayInput::openDevice() if ((res = mirisdr_get_device_usb_strings(m_devNumber, vendor, product, serial)) < 0) { - qCritical("SDRPlayInput::start: error accessing USB device"); + qCritical("SDRPlayInput::openDevice: error accessing USB device"); stop(); return false; } - qWarning("SDRPlayInput::start: open: %s %s, SN: %s", vendor, product, serial); + qWarning("SDRPlayInput::openDevice: %s %s, SN: %s", vendor, product, serial); m_deviceDescription = QString("%1 (SN %2)").arg(product).arg(serial); + if (QString(product) == "RSP1A") { + m_variant = SDRPlayRSP1A; + } else { + m_variant = SDRPlayRSP1; + } + + qDebug("SDRPlayInput::openDevice: m_variant: %d", (int) m_variant); + return true; } diff --git a/plugins/samplesource/sdrplay/sdrplayinput.h b/plugins/samplesource/sdrplay/sdrplayinput.h index eb90331f7..93e2d2d7a 100644 --- a/plugins/samplesource/sdrplay/sdrplayinput.h +++ b/plugins/samplesource/sdrplay/sdrplayinput.h @@ -30,6 +30,13 @@ class FileRecord; class SDRPlayInput : public DeviceSampleSource { public: + enum SDRPlayVariant + { + SDRPlayUndef, + SDRPlayRSP1, + SDRPlayRSP1A + }; + class MsgConfigureSDRPlay : public Message { MESSAGE_CLASS_DECLARATION @@ -142,6 +149,8 @@ public: SWGSDRangel::SWGDeviceState& response, QString& errorMessage); + SDRPlayVariant getVariant() const { return m_variant; } + private: bool openDevice(); void closeDevice(); @@ -150,6 +159,7 @@ private: DeviceSourceAPI *m_deviceAPI; QMutex m_mutex; + SDRPlayVariant m_variant; SDRPlaySettings m_settings; mirisdr_dev_t* m_dev; SDRPlayThread* m_sdrPlayThread; diff --git a/udev-rules/mirisdr.rules b/udev-rules/mirisdr.rules index 5fe494ecb..2b35cb78a 100644 --- a/udev-rules/mirisdr.rules +++ b/udev-rules/mirisdr.rules @@ -20,3 +20,6 @@ SUBSYSTEMS=="usb", ATTRS{idVendor}=="1df7", ATTRS{idProduct}=="2500", MODE:="066 # IO-DATA GV-TV100 stick SUBSYSTEMS=="usb", ATTRS{idVendor}=="04bb", ATTRS{idProduct}=="0537", MODE:="0666" + +# SDRplay RSP1A +SUBSYSTEMS=="usb", ATTRS{idVendor}=="1df7", ATTRS{idProduct}=="3000", MODE:="0666"