diff --git a/sdrbase/dsp/dspengine.h b/sdrbase/dsp/dspengine.h index acde19900..e7966f12c 100644 --- a/sdrbase/dsp/dspengine.h +++ b/sdrbase/dsp/dspengine.h @@ -79,6 +79,13 @@ public: void setDVSerialSupport(bool support); + void getDVSerialNames(std::vector& deviceNames) + { +#ifdef DSD_USE_SERIALDV + m_dvSerialEngine.getDevicesNames(deviceNames); +#endif + } + void pushMbeFrame(const unsigned char *mbeFrame, int mbeRateIndex, int mbeVolumeIndex, AudioFifo *audioFifo) { #ifdef DSD_USE_SERIALDV diff --git a/sdrbase/dsp/dvserialengine.cpp b/sdrbase/dsp/dvserialengine.cpp index 067d3cd39..1cd895771 100644 --- a/sdrbase/dsp/dvserialengine.cpp +++ b/sdrbase/dsp/dvserialengine.cpp @@ -233,6 +233,17 @@ void DVSerialEngine::release() m_controllers.clear(); } +void DVSerialEngine::getDevicesNames(std::vector& deviceNames) +{ + std::vector::iterator it = m_controllers.begin(); + + while (it != m_controllers.end()) + { + deviceNames.push_back(it->device); + ++it; + } +} + void DVSerialEngine::pushMbeFrame(const unsigned char *mbeFrame, int mbeRateIndex, int mbeVolumeIndex, AudioFifo *audioFifo) { std::vector::iterator it = m_controllers.begin(); diff --git a/sdrbase/dsp/dvserialengine.h b/sdrbase/dsp/dvserialengine.h index bee7a2f5c..97e68ec97 100644 --- a/sdrbase/dsp/dvserialengine.h +++ b/sdrbase/dsp/dvserialengine.h @@ -38,6 +38,8 @@ public: void release(); int getNbDevices() const { return m_controllers.size(); } + void getDevicesNames(std::vector& devicesNames); + void pushMbeFrame(const unsigned char *mbeFrame, int mbeRateIndex, int mbeVolumeIndex, AudioFifo *audioFifo); private: diff --git a/sdrbase/dsp/dvserialworker.cpp b/sdrbase/dsp/dvserialworker.cpp index 16ed7b439..bb44680fc 100644 --- a/sdrbase/dsp/dvserialworker.cpp +++ b/sdrbase/dsp/dvserialworker.cpp @@ -76,7 +76,7 @@ void DVSerialWorker::handleInputMessages() if (MsgMbeDecode::match(*message)) { MsgMbeDecode *decodeMsg = (MsgMbeDecode *) message; - int dBVolume = (decodeMsg->getVolumeIndex() - 50) / 4; + int dBVolume = (decodeMsg->getVolumeIndex() - 50) / 2; if (m_dvController.decode(m_dvAudioSamples, decodeMsg->getMbeFrame(), decodeMsg->getMbeRate(), dBVolume)) { diff --git a/sdrbase/mainwindow.cpp b/sdrbase/mainwindow.cpp index 1be2efb9e..d825df7bf 100644 --- a/sdrbase/mainwindow.cpp +++ b/sdrbase/mainwindow.cpp @@ -23,6 +23,7 @@ #include #include #include +#include #include "mainwindow.h" #include "ui_mainwindow.h" @@ -690,6 +691,34 @@ void MainWindow::on_action_Audio_triggered() void MainWindow::on_action_DV_Serial_triggered(bool checked) { m_dspEngine->setDVSerialSupport(checked); + + if (checked) + { + std::vector deviceNames; + m_dspEngine->getDVSerialNames(deviceNames); + + if (deviceNames.size() == 0) + { + QMessageBox::information(this, tr("Message"), tr("No DV serial devices found")); + } + else + { + std::vector::iterator it = deviceNames.begin(); + std::string deviceNamesStr = "DV Serial devices found: "; + + while (it != deviceNames.end()) + { + if (it != deviceNames.begin()) { + deviceNamesStr += ","; + } + + deviceNamesStr += *it; + ++it; + } + + QMessageBox::information(this, tr("Message"), tr(deviceNamesStr.c_str())); + } + } } void MainWindow::on_sampleSource_currentIndexChanged(int index)