1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2025-07-29 20:22:26 -04:00

AudioCATSISO: fix audio sample rate handling and device enumeration

This commit is contained in:
f4exb 2025-07-02 00:07:31 +02:00
parent 2dbc61a92e
commit 49f2527fcd
16 changed files with 332 additions and 15 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 41 KiB

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

View File

@ -307,7 +307,7 @@ const QString& AudioCATSISO::getDeviceDescription() const
int AudioCATSISO::getSourceSampleRate(int) const
{
return m_rxSampleRate / (1<<m_settings.m_log2Decim);
return m_settings.m_rxSampleRate / (1<<m_settings.m_log2Decim);
}
quint64 AudioCATSISO::getSourceCenterFrequency(int) const
@ -332,7 +332,7 @@ void AudioCATSISO::setSourceCenterFrequency(qint64 centerFrequency, int)
int AudioCATSISO::getSinkSampleRate(int) const
{
return m_txSampleRate;
return m_settings.m_txSampleRate;
}
quint64 AudioCATSISO::getSinkCenterFrequency(int) const
@ -460,10 +460,18 @@ void AudioCATSISO::applySettings(const AudioCATSISOSettings& settings, const QLi
<< " force:" << force
<< settings.getDebugString(settingsKeys, force);
if (settingsKeys.contains("rxDeviceName") || force)
if (settingsKeys.contains("rxDeviceName") || settingsKeys.contains("rxSampleRate") || force)
{
AudioDeviceManager *audioDeviceManager = DSPEngine::instance()->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<<m_settings.m_log2Decim),
settings.m_rxCenterFrequency,
m_settings.m_rxSampleRate / (1<<m_settings.m_log2Decim),
m_settings.m_rxCenterFrequency,
true,
0,
realElseComplex
);
m_rxSampleRate = notif->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<QString>& 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);
}

View File

@ -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<int> 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<int> 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<<m_settings.m_log2Decim);
m_rxSampleRate = notif.getSampleRate();
m_settings.m_rxCenterFrequency = frequency;
}
else
@ -727,7 +818,7 @@ void AudioCATSISOGUI::updateSpectrum(bool rxElseTx)
{
realElseComplex = (m_settings.m_rxIQMapping == AudioCATSISOSettings::L)
|| (m_settings.m_rxIQMapping == AudioCATSISOSettings::R);
sampleRate = m_rxSampleRate/(1<<m_settings.m_log2Decim);
sampleRate = m_rxSampleRate;
centerFrequency = m_settings.m_rxCenterFrequency;
}
else
@ -789,7 +880,9 @@ void AudioCATSISOGUI::makeUIConnections()
QObject::connect(ui->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<int>::of(&QComboBox::currentIndexChanged), this, &AudioCATSISOGUI::on_rxSampleRate_currentIndexChanged);
QObject::connect(ui->txDeviceSelect, &QPushButton::clicked, this, &AudioCATSISOGUI::on_txDeviceSelect_clicked);
QObject::connect(ui->txSampleRate, QOverload<int>::of(&QComboBox::currentIndexChanged), this, &AudioCATSISOGUI::on_txSampleRate_currentIndexChanged);
QObject::connect(ui->rxChannels, QOverload<int>::of(&QComboBox::currentIndexChanged), this, &AudioCATSISOGUI::on_rxChannels_currentIndexChanged);
QObject::connect(ui->rxVolume, &QDial::valueChanged, this, &AudioCATSISOGUI::on_rxVolume_valueChanged);
QObject::connect(ui->txChannels, QOverload<int>::of(&QComboBox::currentIndexChanged), this, &AudioCATSISOGUI::on_txChannels_currentIndexChanged);

View File

@ -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);

View File

@ -32,6 +32,7 @@
<font>
<family>Liberation Sans</family>
<pointsize>9</pointsize>
<weight>50</weight>
<italic>false</italic>
<bold>false</bold>
</font>
@ -333,6 +334,7 @@
<font>
<family>Liberation Mono</family>
<pointsize>16</pointsize>
<weight>50</weight>
<italic>false</italic>
<bold>false</bold>
</font>
@ -422,6 +424,45 @@
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_6">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QLabel" name="rxSampleRateLabel">
<property name="text">
<string>SR</string>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="rxSampleRate">
<property name="minimumSize">
<size>
<width>70</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>70</width>
<height>16777215</height>
</size>
</property>
<property name="toolTip">
<string>Audio sample rate in Hz</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
@ -703,6 +744,45 @@
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_8">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QLabel" name="txSampleRateLabel">
<property name="text">
<string>SR</string>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="txSampleRate">
<property name="minimumSize">
<size>
<width>70</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>70</width>
<height>16777215</height>
</size>
</property>
<property name="toolTip">
<string>Audio sample rate in Hz</string>
</property>
</widget>
</item>
</layout>
</item>
<item>

View File

@ -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);
}
}

View File

@ -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;
}

View File

@ -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

View File

@ -173,3 +173,11 @@ Use this toggle button to connect or disconnect the radio.
* **grey**: idle (not connected)
* **green**: connected
* **red**: error
<h3>26. Audio input (Rx) sample rate</h3>
Select sample rate among presumed supported audio device rates. Check the actual sample rate of your device before starting.
<h3>27. Audio output (Tx) sample rate</h3>
Select sample rate among presumed supported audio device rates. Check the actual sample rate of your device before starting.

View File

@ -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:
</div>
<div id="generator">
<div class="content">
Generated 2025-06-02T13:08:26.366+02:00
Generated 2025-07-01T22:00:12.093+02:00
</div>
</div>
</div>

View File

@ -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:

View File

@ -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:

View File

@ -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:
</div>
<div id="generator">
<div class="content">
Generated 2025-06-02T13:08:26.366+02:00
Generated 2025-07-01T22:00:12.093+02:00
</div>
</div>
</div>

View File

@ -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;
}

View File

@ -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;