diff --git a/doc/img/AudioCATSISO_plugin.png b/doc/img/AudioCATSISO_plugin.png index 9ac5e2d9c..a29689e6d 100644 Binary files a/doc/img/AudioCATSISO_plugin.png and b/doc/img/AudioCATSISO_plugin.png differ diff --git a/doc/img/AudioCATSISO_plugin.xcf b/doc/img/AudioCATSISO_plugin.xcf index cb29e50c0..28424c00f 100644 Binary files a/doc/img/AudioCATSISO_plugin.xcf and b/doc/img/AudioCATSISO_plugin.xcf differ diff --git a/plugins/samplemimo/audiocatsiso/audiocatsiso.cpp b/plugins/samplemimo/audiocatsiso/audiocatsiso.cpp index 2bfe262ff..a4a7f2c58 100644 --- a/plugins/samplemimo/audiocatsiso/audiocatsiso.cpp +++ b/plugins/samplemimo/audiocatsiso/audiocatsiso.cpp @@ -307,7 +307,7 @@ const QString& AudioCATSISO::getDeviceDescription() const int AudioCATSISO::getSourceSampleRate(int) const { - return m_rxSampleRate / (1<getAudioDeviceManager(); m_rxAudioDeviceIndex = audioDeviceManager->getInputDeviceIndex(settings.m_rxDeviceName); + AudioDeviceManager::InputDeviceInfo deviceInfo; + + if (audioDeviceManager->getInputDeviceInfo(settings.m_rxDeviceName, deviceInfo)) + { + deviceInfo.sampleRate = settings.m_rxSampleRate; + audioDeviceManager->setInputDeviceInfo(m_rxAudioDeviceIndex, deviceInfo); + } + m_rxSampleRate = audioDeviceManager->getInputSampleRate(m_rxAudioDeviceIndex); forwardRxChange = true; @@ -476,10 +484,18 @@ void AudioCATSISO::applySettings(const AudioCATSISOSettings& settings, const QLi } } - if (settingsKeys.contains("txDeviceName") || force) + if (settingsKeys.contains("txDeviceName") || settingsKeys.contains("txSampleRate") || force) { AudioDeviceManager *audioDeviceManager = DSPEngine::instance()->getAudioDeviceManager(); m_txAudioDeviceIndex = audioDeviceManager->getOutputDeviceIndex(settings.m_txDeviceName); + AudioDeviceManager::InputDeviceInfo deviceInfo; + + if (audioDeviceManager->getInputDeviceInfo(settings.m_txDeviceName, deviceInfo)) + { + deviceInfo.sampleRate = settings.m_txSampleRate; + audioDeviceManager->setInputDeviceInfo(m_txAudioDeviceIndex, deviceInfo); + } + m_txSampleRate = audioDeviceManager->getOutputSampleRate(m_txAudioDeviceIndex); forwardTxChange = true; @@ -595,12 +611,13 @@ void AudioCATSISO::applySettings(const AudioCATSISOSettings& settings, const QLi bool realElseComplex = (m_settings.m_rxIQMapping == AudioCATSISOSettings::L) || (m_settings.m_rxIQMapping == AudioCATSISOSettings::R); DSPMIMOSignalNotification *notif = new DSPMIMOSignalNotification( - m_rxSampleRate / (1<getSampleRate(); m_deviceAPI->getDeviceEngineInputMessageQueue()->push(notif); } @@ -613,12 +630,13 @@ void AudioCATSISO::applySettings(const AudioCATSISOSettings& settings, const QLi bool realElseComplex = (m_settings.m_txIQMapping == AudioCATSISOSettings::L) || (m_settings.m_txIQMapping == AudioCATSISOSettings::R); DSPMIMOSignalNotification *notif = new DSPMIMOSignalNotification( - m_txSampleRate, - settings.m_txCenterFrequency, + m_settings.m_txSampleRate, + m_settings.m_txCenterFrequency, false, 0, realElseComplex ); + m_txSampleRate = notif->getSampleRate(); m_deviceAPI->getDeviceEngineInputMessageQueue()->push(notif); } } @@ -713,9 +731,15 @@ void AudioCATSISO::webapiUpdateDeviceSettings( if (deviceSettingsKeys.contains("rxCenterFrequency")) { settings.m_rxCenterFrequency = response.getAudioCatsisoSettings()->getRxCenterFrequency(); } + if (deviceSettingsKeys.contains("rxSampleRate")) { + settings.m_rxSampleRate = response.getAudioCatsisoSettings()->getRxSampleRate(); + } if (deviceSettingsKeys.contains("txCenterFrequency")) { settings.m_txCenterFrequency = response.getAudioCatsisoSettings()->getTxCenterFrequency(); } + if (deviceSettingsKeys.contains("txSampleRate")) { + settings.m_txSampleRate = response.getAudioCatsisoSettings()->getTxSampleRate(); + } if (deviceSettingsKeys.contains("transverterMode")) { settings.m_transverterMode = response.getAudioCatsisoSettings()->getTransverterMode() != 0; } @@ -805,7 +829,9 @@ void AudioCATSISO::webapiUpdateDeviceSettings( void AudioCATSISO::webapiFormatDeviceSettings(SWGSDRangel::SWGDeviceSettings& response, const AudioCATSISOSettings& settings) { response.getAudioCatsisoSettings()->setRxCenterFrequency(settings.m_rxCenterFrequency); + response.getAudioCatsisoSettings()->setRxSampleRate(settings.m_rxSampleRate); response.getAudioCatsisoSettings()->setTxCenterFrequency(settings.m_txCenterFrequency); + response.getAudioCatsisoSettings()->setTxSampleRate(settings.m_txSampleRate); response.getAudioCatsisoSettings()->setIqCorrection(settings.m_iqCorrection ? 1 : 0); response.getAudioCatsisoSettings()->setTransverterDeltaFrequency(settings.m_transverterDeltaFrequency); response.getAudioCatsisoSettings()->setTransverterMode(settings.m_transverterMode ? 1 : 0); @@ -859,9 +885,15 @@ void AudioCATSISO::webapiReverseSendSettings(const QList& deviceSetting if (deviceSettingsKeys.contains("rxCenterFrequency")) { swgAudioCATSISOSettings->setRxCenterFrequency(settings.m_rxCenterFrequency); } + if (deviceSettingsKeys.contains("rxSampleRate") || force) { + swgAudioCATSISOSettings->setRxSampleRate(settings.m_rxSampleRate); + } if (deviceSettingsKeys.contains("txCenterFrequency")) { swgAudioCATSISOSettings->setTxCenterFrequency(settings.m_txCenterFrequency); } + if (deviceSettingsKeys.contains("txSampleRate") || force) { + swgAudioCATSISOSettings->setTxSampleRate(settings.m_txSampleRate); + } if (deviceSettingsKeys.contains("transverterMode")) { swgAudioCATSISOSettings->setTransverterMode(settings.m_transverterMode ? 1 : 0); } diff --git a/plugins/samplemimo/audiocatsiso/audiocatsisogui.cpp b/plugins/samplemimo/audiocatsiso/audiocatsisogui.cpp index 8c3f98f4b..7daec8d5a 100644 --- a/plugins/samplemimo/audiocatsiso/audiocatsisogui.cpp +++ b/plugins/samplemimo/audiocatsiso/audiocatsisogui.cpp @@ -151,6 +151,76 @@ bool AudioCATSISOGUI::deserialize(const QByteArray& data) } } +void AudioCATSISOGUI::refreshRxSampleRates(QString deviceName) +{ + ui->rxSampleRate->blockSignals(true); + ui->rxSampleRate->clear(); + const auto deviceInfos = AudioDeviceInfo::availableInputDevices(); + + for (const AudioDeviceInfo &deviceInfo : deviceInfos) + { + if (deviceName == AudioCATSISOSettings::getFullDeviceName(deviceInfo)) + { + QList sampleRates = deviceInfo.supportedSampleRates(); + + for (int i = 0; i < sampleRates.size(); ++i) + { + qDebug("AudioCATSISOGUI::refreshRxSampleRates: device %s: sample rate %d", qPrintable(deviceName), sampleRates[i]); + ui->rxSampleRate->addItem(QString("%1").arg(sampleRates[i])); + } + } + } + + ui->rxSampleRate->blockSignals(false); + + int index = ui->rxSampleRate->findText(QString("%1").arg(m_settings.m_rxSampleRate)); + + if (index >= 0) { + ui->rxSampleRate->setCurrentIndex(index); + } else { + ui->rxSampleRate->setCurrentIndex(0); + } + + if (ui->rxSampleRate->currentText().toInt() != m_settings.m_rxSampleRate) { + on_rxSampleRate_currentIndexChanged(ui->rxSampleRate->currentIndex()); + } +} + +void AudioCATSISOGUI::refreshTxSampleRates(QString deviceName) +{ + ui->txSampleRate->blockSignals(true); + ui->txSampleRate->clear(); + const auto deviceInfos = AudioDeviceInfo::availableOutputDevices(); + + for (const AudioDeviceInfo &deviceInfo : deviceInfos) + { + if (deviceName == AudioCATSISOSettings::getFullDeviceName(deviceInfo)) + { + QList sampleRates = deviceInfo.supportedSampleRates(); + + for (int i = 0; i < sampleRates.size(); ++i) + { + qDebug("AudioCATSISOGUI::refreshTxSampleRates: device %s: sample rate %d", qPrintable(deviceName), sampleRates[i]); + ui->txSampleRate->addItem(QString("%1").arg(sampleRates[i])); + } + } + } + + ui->txSampleRate->blockSignals(false); + + int index = ui->txSampleRate->findText(QString("%1").arg(m_settings.m_txSampleRate)); + + if (index >= 0) { + ui->txSampleRate->setCurrentIndex(index); + } else { + ui->txSampleRate->setCurrentIndex(0); + } + + if (ui->txSampleRate->currentText().toInt() != m_settings.m_txSampleRate) { + on_txSampleRate_currentIndexChanged(ui->txSampleRate->currentIndex()); + } +} + void AudioCATSISOGUI::on_startStop_toggled(bool checked) { ui->txEnable->setEnabled(!checked); @@ -335,12 +405,22 @@ void AudioCATSISOGUI::on_rxDeviceSelect_clicked() if (audioSelect.m_selected) { m_settings.m_rxDeviceName = audioSelect.m_audioDeviceName; + refreshRxSampleRates(m_settings.m_rxDeviceName); m_settingsKeys.append("rxDeviceName"); ui->rxDeviceLabel->setText(m_settings.m_rxDeviceName); sendSettings(); } } +void AudioCATSISOGUI::on_rxSampleRate_currentIndexChanged(int index) +{ + (void) index; + m_settings.m_rxSampleRate = ui->rxSampleRate->currentText().toInt(); + displayFcRxTooltip(); + m_settingsKeys.append("rxSampleRate"); + sendSettings(); +} + void AudioCATSISOGUI::on_txDeviceSelect_clicked() { AudioSelectDialog audioSelect(DSPEngine::instance()->getAudioDeviceManager(), m_settings.m_txDeviceName, false, this); @@ -350,12 +430,21 @@ void AudioCATSISOGUI::on_txDeviceSelect_clicked() if (audioSelect.m_selected) { m_settings.m_txDeviceName = audioSelect.m_audioDeviceName; + refreshTxSampleRates(m_settings.m_txDeviceName); m_settingsKeys.append("txDeviceName"); ui->txDeviceLabel->setText(m_settings.m_txDeviceName); sendSettings(); } } +void AudioCATSISOGUI::on_txSampleRate_currentIndexChanged(int index) +{ + (void) index; + m_settings.m_txSampleRate = ui->txSampleRate->currentText().toInt(); + m_settingsKeys.append("txSampleRate"); + sendSettings(); +} + void AudioCATSISOGUI::on_rxChannels_currentIndexChanged(int index) { m_settings.m_rxIQMapping = (AudioCATSISOSettings::IQMapping)index; @@ -450,6 +539,8 @@ void AudioCATSISOGUI::displaySettings() displayFcRxTooltip(); displayCatDevice(); displayCatType(); + refreshRxSampleRates(m_settings.m_rxDeviceName); + refreshTxSampleRates(m_settings.m_txDeviceName); } void AudioCATSISOGUI::displayFcRxTooltip() @@ -457,7 +548,7 @@ void AudioCATSISOGUI::displayFcRxTooltip() int32_t fShift = DeviceSampleSource::calculateFrequencyShift( m_settings.m_log2Decim, (DeviceSampleSource::fcPos_t) m_settings.m_fcPosRx, - m_rxSampleRate, + m_settings.m_rxSampleRate, DeviceSampleSource::FrequencyShiftScheme::FSHIFT_STD ); ui->fcPosRx->setToolTip(tr("Relative position of device center frequency: %1 kHz").arg(QString::number(fShift / 1000.0f, 'g', 5))); @@ -576,7 +667,7 @@ bool AudioCATSISOGUI::handleMessage(const Message& message) if (sourceOrSink) { - m_rxSampleRate = notif.getSampleRate() * (1<pttSpectrumLink, &ButtonSwitch::toggled, this, &AudioCATSISOGUI::on_pttSpectrumLinkToggled); QObject::connect(ui->transverter, &TransverterButton::clicked, this, &AudioCATSISOGUI::on_transverter_clicked); QObject::connect(ui->rxDeviceSelect, &QPushButton::clicked, this, &AudioCATSISOGUI::on_rxDeviceSelect_clicked); + QObject::connect(ui->rxSampleRate, QOverload::of(&QComboBox::currentIndexChanged), this, &AudioCATSISOGUI::on_rxSampleRate_currentIndexChanged); QObject::connect(ui->txDeviceSelect, &QPushButton::clicked, this, &AudioCATSISOGUI::on_txDeviceSelect_clicked); + QObject::connect(ui->txSampleRate, QOverload::of(&QComboBox::currentIndexChanged), this, &AudioCATSISOGUI::on_txSampleRate_currentIndexChanged); QObject::connect(ui->rxChannels, QOverload::of(&QComboBox::currentIndexChanged), this, &AudioCATSISOGUI::on_rxChannels_currentIndexChanged); QObject::connect(ui->rxVolume, &QDial::valueChanged, this, &AudioCATSISOGUI::on_rxVolume_valueChanged); QObject::connect(ui->txChannels, QOverload::of(&QComboBox::currentIndexChanged), this, &AudioCATSISOGUI::on_txChannels_currentIndexChanged); diff --git a/plugins/samplemimo/audiocatsiso/audiocatsisogui.h b/plugins/samplemimo/audiocatsiso/audiocatsisogui.h index a8a300140..5554b73be 100644 --- a/plugins/samplemimo/audiocatsiso/audiocatsisogui.h +++ b/plugins/samplemimo/audiocatsiso/audiocatsisogui.h @@ -69,6 +69,8 @@ private: AudioCATSISOSettings::MsgCATReportStatus::Status m_lastCATStatus; void blockApplySettings(bool block) { m_doApplySettings = !block; } + void refreshRxSampleRates(QString deviceName); + void refreshTxSampleRates(QString deviceName); void displaySettings(); void displayFrequency(); void displaySampleRate(); @@ -101,7 +103,9 @@ private slots: void on_txEnable_toggled(bool checked); void on_transverter_clicked(); void on_rxDeviceSelect_clicked(); + void on_rxSampleRate_currentIndexChanged(int index); void on_txDeviceSelect_clicked(); + void on_txSampleRate_currentIndexChanged(int index); void on_rxChannels_currentIndexChanged(int index); void on_rxVolume_valueChanged(int value); void on_txChannels_currentIndexChanged(int index); diff --git a/plugins/samplemimo/audiocatsiso/audiocatsisogui.ui b/plugins/samplemimo/audiocatsiso/audiocatsisogui.ui index 1822c8e3a..ec9493edf 100644 --- a/plugins/samplemimo/audiocatsiso/audiocatsisogui.ui +++ b/plugins/samplemimo/audiocatsiso/audiocatsisogui.ui @@ -32,6 +32,7 @@ Liberation Sans 9 + 50 false false @@ -333,6 +334,7 @@ Liberation Mono 16 + 50 false false @@ -422,6 +424,45 @@ + + + + Qt::Horizontal + + + + 0 + 0 + + + + + + + + SR + + + + + + + + 70 + 0 + + + + + 70 + 16777215 + + + + Audio sample rate in Hz + + + @@ -703,6 +744,45 @@ + + + + Qt::Horizontal + + + + 0 + 0 + + + + + + + + SR + + + + + + + + 70 + 0 + + + + + 70 + 16777215 + + + + Audio sample rate in Hz + + + diff --git a/plugins/samplemimo/audiocatsiso/audiocatsisoplugin.cpp b/plugins/samplemimo/audiocatsiso/audiocatsisoplugin.cpp index 52461528c..53ef8369d 100644 --- a/plugins/samplemimo/audiocatsiso/audiocatsisoplugin.cpp +++ b/plugins/samplemimo/audiocatsiso/audiocatsisoplugin.cpp @@ -89,12 +89,12 @@ PluginInterface::SamplingDevices AudioCATSISOPlugin::enumSampleMIMO(const Origin m_deviceTypeID, it->serial, it->sequence, - PluginInterface::SamplingDevice::PhysicalDevice, + PluginInterface::SamplingDevice::BuiltInDevice, PluginInterface::SamplingDevice::StreamMIMO, 1, // MIMO is always considered as a single device 0) ); - qDebug("MetisMISOPlugin::enumSampleMIMO: enumerated Metis device #%d", it->sequence); + qDebug("AudioCATSISOPlugin::enumSampleMIMO: enumerated AudioCATSISO device #%d", it->sequence); } } diff --git a/plugins/samplemimo/audiocatsiso/audiocatsisosettings.cpp b/plugins/samplemimo/audiocatsiso/audiocatsisosettings.cpp index 276f3f337..5498d7b25 100644 --- a/plugins/samplemimo/audiocatsiso/audiocatsisosettings.cpp +++ b/plugins/samplemimo/audiocatsiso/audiocatsisosettings.cpp @@ -73,6 +73,8 @@ void AudioCATSISOSettings::resetToDefaults() m_pttSpectrumLink = true; m_rxCenterFrequency = 14200000; m_txCenterFrequency = 14200000; + m_rxSampleRate = 48000; // Default sample rate + m_txSampleRate = 48000; // Default sample rate m_transverterMode = false; m_transverterDeltaFrequency = 0; m_rxDeviceName = ""; @@ -108,6 +110,8 @@ AudioCATSISOSettings::AudioCATSISOSettings(const AudioCATSISOSettings& other) m_pttSpectrumLink = other.m_pttSpectrumLink; m_rxCenterFrequency = other.m_rxCenterFrequency; m_txCenterFrequency = other.m_txCenterFrequency; + m_rxSampleRate = other.m_rxSampleRate; + m_txSampleRate = other.m_txSampleRate; m_transverterMode = other.m_transverterMode; m_transverterDeltaFrequency = other.m_transverterDeltaFrequency; m_rxDeviceName = other.m_rxDeviceName; @@ -150,11 +154,13 @@ QByteArray AudioCATSISOSettings::serialize() const s.writeS32(8, (int) m_fcPosRx); s.writeBool(9, m_transverterMode); s.writeS64(10, m_transverterDeltaFrequency); + s.writeS32(11, m_rxSampleRate); // Serialize RX sample rate s.writeString(21, m_txDeviceName); s.writeU64(22, m_txCenterFrequency); s.writeS32(23, m_txVolume); s.writeS32(24, (int)m_txIQMapping); + s.writeS32(25, m_txSampleRate); // Serialize TX sample rate s.writeString(31, m_catDevicePath); s.writeU32(32, m_hamlibModel); @@ -203,11 +209,13 @@ bool AudioCATSISOSettings::deserialize(const QByteArray& data) m_fcPosRx = (fcPos_t) intval; d.readBool(9, &m_transverterMode, false); d.readS64(10, &m_transverterDeltaFrequency, 0); + d.readS32(11, &m_rxSampleRate, 48000); // Deserialize RX sample rate d.readString(21, &m_txDeviceName, ""); d.readU64(22, &m_txCenterFrequency, 14200000); d.readS32(23, &m_txVolume, -10); d.readS32(24,(int *)&m_txIQMapping, IQMapping::LR); + d.readS32(25, &m_txSampleRate, 48000); // Deserialize TX sample rate d.readString(31, &m_catDevicePath, ""); d.readU32(32, &m_hamlibModel, 1); @@ -257,6 +265,9 @@ void AudioCATSISOSettings::applySettings(const QStringList& settingsKeys, const if (settingsKeys.contains("rxDeviceName")) { m_rxDeviceName = settings.m_rxDeviceName; } + if (settingsKeys.contains("rxSampleRate")) { + m_rxSampleRate = settings.m_rxSampleRate; + } if (settingsKeys.contains("rxCenterFrequency")) { m_rxCenterFrequency = settings.m_rxCenterFrequency; } @@ -282,6 +293,9 @@ void AudioCATSISOSettings::applySettings(const QStringList& settingsKeys, const if (settingsKeys.contains("txDeviceName")) { m_txDeviceName = settings.m_txDeviceName; } + if (settingsKeys.contains("txSampleRate")) { + m_txSampleRate = settings.m_txSampleRate; + } if (settingsKeys.contains("txCenterFrequency")) { m_txCenterFrequency = settings.m_txCenterFrequency; } @@ -357,6 +371,9 @@ QString AudioCATSISOSettings::getDebugString(const QStringList& settingsKeys, bo if (settingsKeys.contains("rxDeviceName") || force) { ostr << " m_rxDeviceName: " << m_rxDeviceName.toStdString(); } + if (settingsKeys.contains("rxSampleRate") || force) { + ostr << " m_rxSampleRate: " << m_rxSampleRate; + } if (settingsKeys.contains("rxCenterFrequency") || force) { ostr << " m_rxCenterFrequency: " << m_rxCenterFrequency; } @@ -382,6 +399,9 @@ QString AudioCATSISOSettings::getDebugString(const QStringList& settingsKeys, bo if (settingsKeys.contains("txDeviceName") || force) { ostr << " m_txDeviceName: " << m_txDeviceName.toStdString(); } + if (settingsKeys.contains("txSampleRate") || force) { + ostr << " m_txSampleRate: " << m_txSampleRate; + } if (settingsKeys.contains("txCenterFrequency") || force) { ostr << " m_txCenterFrequency: " << m_txCenterFrequency; } diff --git a/plugins/samplemimo/audiocatsiso/audiocatsisosettings.h b/plugins/samplemimo/audiocatsiso/audiocatsisosettings.h index d93b6d368..edc74891f 100644 --- a/plugins/samplemimo/audiocatsiso/audiocatsisosettings.h +++ b/plugins/samplemimo/audiocatsiso/audiocatsisosettings.h @@ -113,6 +113,7 @@ public: bool m_pttSpectrumLink; QString m_rxDeviceName; // Including realm, as from getFullDeviceName below + int m_rxSampleRate; //!< Sample rate in Hz IQMapping m_rxIQMapping; unsigned int m_log2Decim; fcPos_t m_fcPosRx; @@ -121,6 +122,7 @@ public: float m_rxVolume; QString m_txDeviceName; // Including realm, as from getFullDeviceName below + int m_txSampleRate; //!< Sample rate in Hz IQMapping m_txIQMapping; int m_txVolume; //!< dB diff --git a/plugins/samplemimo/audiocatsiso/readme.md b/plugins/samplemimo/audiocatsiso/readme.md index ca155f535..937416caf 100644 --- a/plugins/samplemimo/audiocatsiso/readme.md +++ b/plugins/samplemimo/audiocatsiso/readme.md @@ -173,3 +173,11 @@ Use this toggle button to connect or disconnect the radio. * **grey**: idle (not connected) * **green**: connected * **red**: error + +

26. Audio input (Rx) sample rate

+ +Select sample rate among presumed supported audio device rates. Check the actual sample rate of your device before starting. + +

27. Audio output (Tx) sample rate

+ +Select sample rate among presumed supported audio device rates. Check the actual sample rate of your device before starting. diff --git a/sdrbase/resources/webapi/doc/html2/index.html b/sdrbase/resources/webapi/doc/html2/index.html index 5c6eb0a63..357da29b9 100644 --- a/sdrbase/resources/webapi/doc/html2/index.html +++ b/sdrbase/resources/webapi/doc/html2/index.html @@ -2582,10 +2582,16 @@ margin-bottom: 20px; "type" : "integer", "format" : "int64" }, + "rxSampleRate" : { + "type" : "integer" + }, "txCenterFrequency" : { "type" : "integer", "format" : "int64" }, + "txSampleRate" : { + "type" : "integer" + }, "transverterMode" : { "type" : "integer" }, @@ -59609,7 +59615,7 @@ except ApiException as e:
- Generated 2025-06-02T13:08:26.366+02:00 + Generated 2025-07-01T22:00:12.093+02:00
diff --git a/sdrbase/resources/webapi/doc/swagger/include/AudioCATSISO.yaml b/sdrbase/resources/webapi/doc/swagger/include/AudioCATSISO.yaml index e4bf3db9d..df5d328bd 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/AudioCATSISO.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/AudioCATSISO.yaml @@ -4,9 +4,13 @@ AudioCATSISOSettings: rxCenterFrequency: type: integer format: int64 + rxSampleRate: + type: integer txCenterFrequency: type: integer format: int64 + txSampleRate: + type: integer transverterMode: type: integer transverterDeltaFrequency: diff --git a/swagger/sdrangel/api/swagger/include/AudioCATSISO.yaml b/swagger/sdrangel/api/swagger/include/AudioCATSISO.yaml index e4bf3db9d..df5d328bd 100644 --- a/swagger/sdrangel/api/swagger/include/AudioCATSISO.yaml +++ b/swagger/sdrangel/api/swagger/include/AudioCATSISO.yaml @@ -4,9 +4,13 @@ AudioCATSISOSettings: rxCenterFrequency: type: integer format: int64 + rxSampleRate: + type: integer txCenterFrequency: type: integer format: int64 + txSampleRate: + type: integer transverterMode: type: integer transverterDeltaFrequency: diff --git a/swagger/sdrangel/code/html2/index.html b/swagger/sdrangel/code/html2/index.html index 5c6eb0a63..357da29b9 100644 --- a/swagger/sdrangel/code/html2/index.html +++ b/swagger/sdrangel/code/html2/index.html @@ -2582,10 +2582,16 @@ margin-bottom: 20px; "type" : "integer", "format" : "int64" }, + "rxSampleRate" : { + "type" : "integer" + }, "txCenterFrequency" : { "type" : "integer", "format" : "int64" }, + "txSampleRate" : { + "type" : "integer" + }, "transverterMode" : { "type" : "integer" }, @@ -59609,7 +59615,7 @@ except ApiException as e:
- Generated 2025-06-02T13:08:26.366+02:00 + Generated 2025-07-01T22:00:12.093+02:00
diff --git a/swagger/sdrangel/code/qt5/client/SWGAudioCATSISOSettings.cpp b/swagger/sdrangel/code/qt5/client/SWGAudioCATSISOSettings.cpp index 24c1c6138..6098456c6 100644 --- a/swagger/sdrangel/code/qt5/client/SWGAudioCATSISOSettings.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGAudioCATSISOSettings.cpp @@ -30,8 +30,12 @@ SWGAudioCATSISOSettings::SWGAudioCATSISOSettings(QString* json) { SWGAudioCATSISOSettings::SWGAudioCATSISOSettings() { rx_center_frequency = 0L; m_rx_center_frequency_isSet = false; + rx_sample_rate = 0; + m_rx_sample_rate_isSet = false; tx_center_frequency = 0L; m_tx_center_frequency_isSet = false; + tx_sample_rate = 0; + m_tx_sample_rate_isSet = false; transverter_mode = 0; m_transverter_mode_isSet = false; transverter_delta_frequency = 0L; @@ -96,8 +100,12 @@ void SWGAudioCATSISOSettings::init() { rx_center_frequency = 0L; m_rx_center_frequency_isSet = false; + rx_sample_rate = 0; + m_rx_sample_rate_isSet = false; tx_center_frequency = 0L; m_tx_center_frequency_isSet = false; + tx_sample_rate = 0; + m_tx_sample_rate_isSet = false; transverter_mode = 0; m_transverter_mode_isSet = false; transverter_delta_frequency = 0L; @@ -163,6 +171,8 @@ SWGAudioCATSISOSettings::cleanup() { + + if(rx_device_name != nullptr) { delete rx_device_name; } @@ -206,8 +216,12 @@ void SWGAudioCATSISOSettings::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&rx_center_frequency, pJson["rxCenterFrequency"], "qint64", ""); + ::SWGSDRangel::setValue(&rx_sample_rate, pJson["rxSampleRate"], "qint32", ""); + ::SWGSDRangel::setValue(&tx_center_frequency, pJson["txCenterFrequency"], "qint64", ""); + ::SWGSDRangel::setValue(&tx_sample_rate, pJson["txSampleRate"], "qint32", ""); + ::SWGSDRangel::setValue(&transverter_mode, pJson["transverterMode"], "qint32", ""); ::SWGSDRangel::setValue(&transverter_delta_frequency, pJson["transverterDeltaFrequency"], "qint64", ""); @@ -281,9 +295,15 @@ SWGAudioCATSISOSettings::asJsonObject() { if(m_rx_center_frequency_isSet){ obj->insert("rxCenterFrequency", QJsonValue(rx_center_frequency)); } + if(m_rx_sample_rate_isSet){ + obj->insert("rxSampleRate", QJsonValue(rx_sample_rate)); + } if(m_tx_center_frequency_isSet){ obj->insert("txCenterFrequency", QJsonValue(tx_center_frequency)); } + if(m_tx_sample_rate_isSet){ + obj->insert("txSampleRate", QJsonValue(tx_sample_rate)); + } if(m_transverter_mode_isSet){ obj->insert("transverterMode", QJsonValue(transverter_mode)); } @@ -379,6 +399,16 @@ SWGAudioCATSISOSettings::setRxCenterFrequency(qint64 rx_center_frequency) { this->m_rx_center_frequency_isSet = true; } +qint32 +SWGAudioCATSISOSettings::getRxSampleRate() { + return rx_sample_rate; +} +void +SWGAudioCATSISOSettings::setRxSampleRate(qint32 rx_sample_rate) { + this->rx_sample_rate = rx_sample_rate; + this->m_rx_sample_rate_isSet = true; +} + qint64 SWGAudioCATSISOSettings::getTxCenterFrequency() { return tx_center_frequency; @@ -389,6 +419,16 @@ SWGAudioCATSISOSettings::setTxCenterFrequency(qint64 tx_center_frequency) { this->m_tx_center_frequency_isSet = true; } +qint32 +SWGAudioCATSISOSettings::getTxSampleRate() { + return tx_sample_rate; +} +void +SWGAudioCATSISOSettings::setTxSampleRate(qint32 tx_sample_rate) { + this->tx_sample_rate = tx_sample_rate; + this->m_tx_sample_rate_isSet = true; +} + qint32 SWGAudioCATSISOSettings::getTransverterMode() { return transverter_mode; @@ -667,9 +707,15 @@ SWGAudioCATSISOSettings::isSet(){ if(m_rx_center_frequency_isSet){ isObjectUpdated = true; break; } + if(m_rx_sample_rate_isSet){ + isObjectUpdated = true; break; + } if(m_tx_center_frequency_isSet){ isObjectUpdated = true; break; } + if(m_tx_sample_rate_isSet){ + isObjectUpdated = true; break; + } if(m_transverter_mode_isSet){ isObjectUpdated = true; break; } diff --git a/swagger/sdrangel/code/qt5/client/SWGAudioCATSISOSettings.h b/swagger/sdrangel/code/qt5/client/SWGAudioCATSISOSettings.h index 8cf8ca60d..e2ade57bd 100644 --- a/swagger/sdrangel/code/qt5/client/SWGAudioCATSISOSettings.h +++ b/swagger/sdrangel/code/qt5/client/SWGAudioCATSISOSettings.h @@ -45,9 +45,15 @@ public: qint64 getRxCenterFrequency(); void setRxCenterFrequency(qint64 rx_center_frequency); + qint32 getRxSampleRate(); + void setRxSampleRate(qint32 rx_sample_rate); + qint64 getTxCenterFrequency(); void setTxCenterFrequency(qint64 tx_center_frequency); + qint32 getTxSampleRate(); + void setTxSampleRate(qint32 tx_sample_rate); + qint32 getTransverterMode(); void setTransverterMode(qint32 transverter_mode); @@ -136,9 +142,15 @@ private: qint64 rx_center_frequency; bool m_rx_center_frequency_isSet; + qint32 rx_sample_rate; + bool m_rx_sample_rate_isSet; + qint64 tx_center_frequency; bool m_tx_center_frequency_isSet; + qint32 tx_sample_rate; + bool m_tx_sample_rate_isSet; + qint32 transverter_mode; bool m_transverter_mode_isSet;