mirror of
https://github.com/f4exb/sdrangel.git
synced 2026-07-26 03:54:30 -04:00
Metis MISO: save stream index and spectrum stream index in settings. Make it available via API. Fixes #1126
This commit is contained in:
@@ -312,6 +312,8 @@ bool MetisMISO::applySettings(const MetisMISOSettings& settings, bool force)
|
||||
<< " m_dcBlock:" << settings.m_dcBlock
|
||||
<< " m_iqCorrection:" << settings.m_iqCorrection
|
||||
<< " m_txDrive:" << settings.m_txDrive
|
||||
<< " m_streamIndex:" << m_settings.m_streamIndex
|
||||
<< " m_spectrumStreamIndex:" << m_settings.m_spectrumStreamIndex
|
||||
<< " m_useReverseAPI: " << settings.m_useReverseAPI
|
||||
<< " m_reverseAPIAddress: " << settings.m_reverseAPIAddress
|
||||
<< " m_reverseAPIPort: " << settings.m_reverseAPIPort
|
||||
@@ -442,6 +444,21 @@ bool MetisMISO::applySettings(const MetisMISOSettings& settings, bool force)
|
||||
m_deviceAPI->getDeviceEngineInputMessageQueue()->push(engineTxNotif);
|
||||
}
|
||||
|
||||
if ((m_settings.m_streamIndex != settings.m_streamIndex) || force) {
|
||||
reverseAPIKeys.append("streamIndex");
|
||||
}
|
||||
|
||||
if ((m_settings.m_spectrumStreamIndex != settings.m_spectrumStreamIndex) || force)
|
||||
{
|
||||
reverseAPIKeys.append("spectrumStreamIndex");
|
||||
|
||||
if (settings.m_spectrumStreamIndex < MetisMISOSettings::m_maxReceivers) {
|
||||
m_deviceAPI->setSpectrumSinkInput(true, m_settings.m_spectrumStreamIndex);
|
||||
} else {
|
||||
m_deviceAPI->setSpectrumSinkInput(false, 0);
|
||||
}
|
||||
}
|
||||
|
||||
if (propagateSettings) {
|
||||
m_udpHandler.applySettings(settings);
|
||||
}
|
||||
@@ -647,6 +664,12 @@ void MetisMISO::webapiUpdateDeviceSettings(
|
||||
if (deviceSettingsKeys.contains("txDrive")) {
|
||||
settings.m_txDrive = response.getMetisMisoSettings()->getTxDrive();
|
||||
}
|
||||
if (deviceSettingsKeys.contains("spectrumStreamIndex")) {
|
||||
settings.m_spectrumStreamIndex = response.getMetisMisoSettings()->getSpectrumStreamIndex();
|
||||
}
|
||||
if (deviceSettingsKeys.contains("streamIndex")) {
|
||||
settings.m_streamIndex = response.getMetisMisoSettings()->getStreamIndex();
|
||||
}
|
||||
if (deviceSettingsKeys.contains("useReverseAPI")) {
|
||||
settings.m_useReverseAPI = response.getMetisMisoSettings()->getUseReverseApi() != 0;
|
||||
}
|
||||
@@ -700,6 +723,8 @@ void MetisMISO::webapiFormatDeviceSettings(SWGSDRangel::SWGDeviceSettings& respo
|
||||
response.getMetisMisoSettings()->setDcBlock(settings.m_dcBlock ? 1 : 0);
|
||||
response.getMetisMisoSettings()->setIqCorrection(settings.m_iqCorrection ? 1 : 0);
|
||||
response.getMetisMisoSettings()->setTxDrive(settings.m_txDrive);
|
||||
response.getMetisMisoSettings()->setSpectrumStreamIndex(settings.m_spectrumStreamIndex);
|
||||
response.getMetisMisoSettings()->setStreamIndex(settings.m_streamIndex);
|
||||
response.getMetisMisoSettings()->setUseReverseApi(settings.m_useReverseAPI ? 1 : 0);
|
||||
|
||||
if (response.getMetisMisoSettings()->getReverseApiAddress()) {
|
||||
@@ -826,6 +851,12 @@ void MetisMISO::webapiReverseSendSettings(const QList<QString>& deviceSettingsKe
|
||||
if (deviceSettingsKeys.contains("txDrive") || force) {
|
||||
swgMetisMISOSettings->setTxDrive(settings.m_txDrive);
|
||||
}
|
||||
if (deviceSettingsKeys.contains("spectrumStreamIndex") || force) {
|
||||
swgMetisMISOSettings->setSpectrumStreamIndex(settings.m_spectrumStreamIndex);
|
||||
}
|
||||
if (deviceSettingsKeys.contains("streamIndex") || force) {
|
||||
swgMetisMISOSettings->setStreamIndex(settings.m_streamIndex);
|
||||
}
|
||||
|
||||
QString channelSettingsURL = QString("http://%1:%2/sdrangel/deviceset/%3/device/settings")
|
||||
.arg(settings.m_reverseAPIAddress)
|
||||
|
||||
@@ -53,8 +53,6 @@ MetisMISOGui::MetisMISOGui(DeviceUISet *deviceUISet, QWidget* parent) :
|
||||
{
|
||||
qDebug("MetisMISOGui::MetisMISOGui");
|
||||
m_sampleMIMO = m_deviceUISet->m_deviceAPI->getSampleMIMO();
|
||||
m_streamIndex = 0;
|
||||
m_spectrumStreamIndex = 0;
|
||||
m_rxSampleRate = 48000;
|
||||
m_txSampleRate = 48000;
|
||||
|
||||
@@ -94,9 +92,9 @@ void MetisMISOGui::resetToDefaults()
|
||||
|
||||
void MetisMISOGui::setCenterFrequency(qint64 centerFrequency)
|
||||
{
|
||||
if (m_streamIndex < MetisMISOSettings::m_maxReceivers) {
|
||||
m_settings.m_rxCenterFrequencies[m_streamIndex] = centerFrequency;
|
||||
} else if (m_streamIndex == MetisMISOSettings::m_maxReceivers) {
|
||||
if (m_settings.m_streamIndex < MetisMISOSettings::m_maxReceivers) {
|
||||
m_settings.m_rxCenterFrequencies[m_settings.m_streamIndex] = centerFrequency;
|
||||
} else if (m_settings.m_streamIndex == MetisMISOSettings::m_maxReceivers) {
|
||||
m_settings.m_txCenterFrequency = centerFrequency;
|
||||
}
|
||||
|
||||
@@ -135,18 +133,16 @@ void MetisMISOGui::on_streamIndex_currentIndexChanged(int index)
|
||||
{
|
||||
if (ui->streamLock->isChecked())
|
||||
{
|
||||
m_spectrumStreamIndex = index;
|
||||
m_settings.m_spectrumStreamIndex = index;
|
||||
|
||||
if (m_spectrumStreamIndex < MetisMISOSettings::m_maxReceivers)
|
||||
if (m_settings.m_spectrumStreamIndex < MetisMISOSettings::m_maxReceivers)
|
||||
{
|
||||
m_deviceUISet->m_spectrum->setDisplayedStream(true, index);
|
||||
m_deviceUISet->m_deviceAPI->setSpectrumSinkInput(true, m_spectrumStreamIndex);
|
||||
m_deviceUISet->setSpectrumScalingFactor(SDR_RX_SCALEF);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_deviceUISet->m_spectrum->setDisplayedStream(false, 0);
|
||||
m_deviceUISet->m_deviceAPI->setSpectrumSinkInput(false, 0);
|
||||
m_deviceUISet->setSpectrumScalingFactor(SDR_TX_SCALEF);
|
||||
}
|
||||
|
||||
@@ -157,7 +153,8 @@ void MetisMISOGui::on_streamIndex_currentIndexChanged(int index)
|
||||
ui->spectrumSource->blockSignals(false);
|
||||
}
|
||||
|
||||
m_streamIndex = index;
|
||||
m_settings.m_streamIndex = index;
|
||||
sendSettings();
|
||||
|
||||
updateSubsamplingIndex();
|
||||
displayFrequency();
|
||||
@@ -166,18 +163,16 @@ void MetisMISOGui::on_streamIndex_currentIndexChanged(int index)
|
||||
|
||||
void MetisMISOGui::on_spectrumSource_currentIndexChanged(int index)
|
||||
{
|
||||
m_spectrumStreamIndex = index;
|
||||
m_settings.m_spectrumStreamIndex = index;
|
||||
|
||||
if (m_spectrumStreamIndex < MetisMISOSettings::m_maxReceivers)
|
||||
if (m_settings.m_spectrumStreamIndex < MetisMISOSettings::m_maxReceivers)
|
||||
{
|
||||
m_deviceUISet->m_spectrum->setDisplayedStream(true, index);
|
||||
m_deviceUISet->m_deviceAPI->setSpectrumSinkInput(true, m_spectrumStreamIndex);
|
||||
m_deviceUISet->setSpectrumScalingFactor(SDR_RX_SCALEF);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_deviceUISet->m_spectrum->setDisplayedStream(false, 0);
|
||||
m_deviceUISet->m_deviceAPI->setSpectrumSinkInput(false, 0);
|
||||
m_deviceUISet->setSpectrumScalingFactor(SDR_TX_SCALEF);
|
||||
}
|
||||
|
||||
@@ -188,11 +183,13 @@ void MetisMISOGui::on_spectrumSource_currentIndexChanged(int index)
|
||||
ui->streamIndex->blockSignals(true);
|
||||
ui->streamIndex->setCurrentIndex(index);
|
||||
ui->streamIndex->blockSignals(false);
|
||||
m_streamIndex = index;
|
||||
m_settings.m_streamIndex = index;
|
||||
updateSubsamplingIndex();
|
||||
displayFrequency();
|
||||
displaySampleRate();
|
||||
}
|
||||
|
||||
sendSettings();
|
||||
}
|
||||
|
||||
void MetisMISOGui::on_streamLock_toggled(bool checked)
|
||||
@@ -211,9 +208,9 @@ void MetisMISOGui::on_LOppm_valueChanged(int value)
|
||||
|
||||
void MetisMISOGui::on_centerFrequency_changed(quint64 value)
|
||||
{
|
||||
if (m_streamIndex < MetisMISOSettings::m_maxReceivers) {
|
||||
m_settings.m_rxCenterFrequencies[m_streamIndex] = value * 1000;
|
||||
} else if (m_streamIndex == MetisMISOSettings::m_maxReceivers) {
|
||||
if (m_settings.m_streamIndex < MetisMISOSettings::m_maxReceivers) {
|
||||
m_settings.m_rxCenterFrequencies[m_settings.m_streamIndex] = value * 1000;
|
||||
} else if (m_settings.m_streamIndex == MetisMISOSettings::m_maxReceivers) {
|
||||
m_settings.m_txCenterFrequency = value * 1000;
|
||||
}
|
||||
|
||||
@@ -235,9 +232,9 @@ void MetisMISOGui::on_log2Decim_currentIndexChanged(int index)
|
||||
|
||||
void MetisMISOGui::on_subsamplingIndex_currentIndexChanged(int index)
|
||||
{
|
||||
if (m_streamIndex < MetisMISOSettings::m_maxReceivers) // valid for Rx only
|
||||
if (m_settings.m_streamIndex < MetisMISOSettings::m_maxReceivers) // valid for Rx only
|
||||
{
|
||||
m_settings.m_rxSubsamplingIndexes[m_streamIndex] = index;
|
||||
m_settings.m_rxSubsamplingIndexes[m_settings.m_streamIndex] = index;
|
||||
ui->subsamplingIndex->setToolTip(tr("Subsampling band index [%1 - %2 MHz]")
|
||||
.arg(index*61.44).arg((index+1)*61.44));
|
||||
displayFrequency();
|
||||
@@ -260,7 +257,7 @@ void MetisMISOGui::on_iqCorrection_toggled(bool checked)
|
||||
|
||||
void MetisMISOGui::on_transverter_clicked()
|
||||
{
|
||||
if (m_streamIndex < MetisMISOSettings::m_maxReceivers)
|
||||
if (m_settings.m_streamIndex < MetisMISOSettings::m_maxReceivers)
|
||||
{
|
||||
m_settings.m_rxTransverterMode = ui->transverter->getDeltaFrequencyAcive();
|
||||
m_settings.m_rxTransverterDeltaFrequency = ui->transverter->getDeltaFrequency();
|
||||
@@ -326,8 +323,8 @@ void MetisMISOGui::displaySettings()
|
||||
{
|
||||
blockApplySettings(true);
|
||||
|
||||
ui->streamIndex->setCurrentIndex(m_streamIndex);
|
||||
ui->spectrumSource->setCurrentIndex(m_spectrumStreamIndex);
|
||||
ui->streamIndex->setCurrentIndex(m_settings.m_streamIndex);
|
||||
ui->spectrumSource->setCurrentIndex(m_settings.m_spectrumStreamIndex);
|
||||
ui->nbRxIndex->setCurrentIndex(m_settings.m_nbReceivers - 1);
|
||||
ui->samplerateIndex->setCurrentIndex(m_settings.m_sampleRateIndex);
|
||||
ui->LOppm->setValue(m_settings.m_LOppmTenths);
|
||||
@@ -405,6 +402,13 @@ bool MetisMISOGui::handleMessage(const Message& message)
|
||||
qDebug("MetisMISOGui::handleMessage: MsgConfigureMetisMISO");
|
||||
const MetisMISO::MsgConfigureMetisMISO& cfg = (MetisMISO::MsgConfigureMetisMISO&) message;
|
||||
m_settings = cfg.getSettings();
|
||||
|
||||
if ((m_settings.m_spectrumStreamIndex != m_settings.m_streamIndex) && (ui->streamLock->isChecked()))
|
||||
{
|
||||
m_settings.m_spectrumStreamIndex = m_settings.m_streamIndex;
|
||||
sendSettings();
|
||||
}
|
||||
|
||||
displaySettings();
|
||||
return true;
|
||||
}
|
||||
@@ -479,14 +483,14 @@ void MetisMISOGui::displayFrequency()
|
||||
qint64 centerFrequency;
|
||||
qint64 fBaseLow, fBaseHigh;
|
||||
|
||||
if (m_streamIndex < MetisMISOSettings::m_maxReceivers)
|
||||
if (m_settings.m_streamIndex < MetisMISOSettings::m_maxReceivers)
|
||||
{
|
||||
int subsamplingIndex = m_settings.m_rxSubsamplingIndexes[m_streamIndex];
|
||||
centerFrequency = m_settings.m_rxCenterFrequencies[m_streamIndex];
|
||||
int subsamplingIndex = m_settings.m_rxSubsamplingIndexes[m_settings.m_streamIndex];
|
||||
centerFrequency = m_settings.m_rxCenterFrequencies[m_settings.m_streamIndex];
|
||||
fBaseLow = subsamplingIndex*m_absMaxFreq;
|
||||
fBaseHigh = (subsamplingIndex+1)*m_absMaxFreq;
|
||||
}
|
||||
else if (m_streamIndex == MetisMISOSettings::m_maxReceivers)
|
||||
else if (m_settings.m_streamIndex == MetisMISOSettings::m_maxReceivers)
|
||||
{
|
||||
centerFrequency = m_settings.m_txCenterFrequency;
|
||||
fBaseLow = 0;
|
||||
@@ -505,7 +509,7 @@ void MetisMISOGui::displayFrequency()
|
||||
|
||||
void MetisMISOGui::displaySampleRate()
|
||||
{
|
||||
if (m_streamIndex < MetisMISOSettings::m_maxReceivers) {
|
||||
if (m_settings.m_streamIndex < MetisMISOSettings::m_maxReceivers) {
|
||||
ui->deviceRateText->setText(tr("%1k").arg((float) m_rxSampleRate / 1000));
|
||||
} else {
|
||||
ui->deviceRateText->setText(tr("%1k").arg((float) m_txSampleRate / 1000));
|
||||
@@ -516,9 +520,9 @@ void MetisMISOGui::updateSpectrum()
|
||||
{
|
||||
qint64 centerFrequency;
|
||||
|
||||
if (m_spectrumStreamIndex < MetisMISOSettings::m_maxReceivers) {
|
||||
centerFrequency = m_settings.m_rxCenterFrequencies[m_spectrumStreamIndex];
|
||||
} else if (m_spectrumStreamIndex == MetisMISOSettings::m_maxReceivers) {
|
||||
if (m_settings.m_spectrumStreamIndex < MetisMISOSettings::m_maxReceivers) {
|
||||
centerFrequency = m_settings.m_rxCenterFrequencies[m_settings.m_spectrumStreamIndex];
|
||||
} else if (m_settings.m_spectrumStreamIndex == MetisMISOSettings::m_maxReceivers) {
|
||||
centerFrequency = m_settings.m_txCenterFrequency;
|
||||
} else {
|
||||
centerFrequency = 0;
|
||||
@@ -526,7 +530,7 @@ void MetisMISOGui::updateSpectrum()
|
||||
|
||||
m_deviceUISet->getSpectrum()->setCenterFrequency(centerFrequency);
|
||||
|
||||
if (m_spectrumStreamIndex < MetisMISOSettings::m_maxReceivers) {
|
||||
if (m_settings.m_spectrumStreamIndex < MetisMISOSettings::m_maxReceivers) {
|
||||
m_deviceUISet->getSpectrum()->setSampleRate(m_rxSampleRate);
|
||||
} else {
|
||||
m_deviceUISet->getSpectrum()->setSampleRate(m_txSampleRate);
|
||||
@@ -535,10 +539,10 @@ void MetisMISOGui::updateSpectrum()
|
||||
|
||||
void MetisMISOGui::updateSubsamplingIndex()
|
||||
{
|
||||
if (m_streamIndex < MetisMISOSettings::m_maxReceivers)
|
||||
if (m_settings.m_streamIndex < MetisMISOSettings::m_maxReceivers)
|
||||
{
|
||||
ui->subsamplingIndex->setEnabled(true);
|
||||
ui->subsamplingIndex->setCurrentIndex(m_settings.m_rxSubsamplingIndexes[m_streamIndex]);
|
||||
ui->subsamplingIndex->setCurrentIndex(m_settings.m_rxSubsamplingIndexes[m_settings.m_streamIndex]);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -51,8 +51,6 @@ private:
|
||||
|
||||
DeviceUISet* m_deviceUISet;
|
||||
MetisMISOSettings m_settings;
|
||||
int m_streamIndex; //!< Current stream index being dealt with
|
||||
int m_spectrumStreamIndex; //!< Index of the stream displayed on main spectrum
|
||||
int m_rxSampleRate;
|
||||
int m_txSampleRate;
|
||||
QTimer m_updateTimer;
|
||||
|
||||
@@ -46,6 +46,8 @@ MetisMISOSettings::MetisMISOSettings(const MetisMISOSettings& other)
|
||||
m_dcBlock = other.m_dcBlock;
|
||||
m_iqCorrection = other.m_iqCorrection;
|
||||
m_txDrive = other.m_txDrive;
|
||||
m_streamIndex = other.m_streamIndex;
|
||||
m_spectrumStreamIndex = other.m_spectrumStreamIndex;
|
||||
m_useReverseAPI = other.m_useReverseAPI;
|
||||
m_reverseAPIAddress = other.m_reverseAPIAddress;
|
||||
m_reverseAPIPort = other.m_reverseAPIPort;
|
||||
@@ -74,6 +76,8 @@ void MetisMISOSettings::resetToDefaults()
|
||||
m_dcBlock = false;
|
||||
m_iqCorrection = false;
|
||||
m_txDrive = 15;
|
||||
m_streamIndex = 0;
|
||||
m_spectrumStreamIndex = 0;
|
||||
m_useReverseAPI = false;
|
||||
m_reverseAPIAddress = "127.0.0.1";
|
||||
m_reverseAPIPort = 8888;
|
||||
@@ -106,6 +110,8 @@ QByteArray MetisMISOSettings::serialize() const
|
||||
s.writeString(20, m_reverseAPIAddress);
|
||||
s.writeU32(21, m_reverseAPIPort);
|
||||
s.writeU32(22, m_reverseAPIDeviceIndex);
|
||||
s.writeS32(23, m_streamIndex);
|
||||
s.writeS32(24, m_spectrumStreamIndex);
|
||||
|
||||
for (int i = 0; i < m_maxReceivers; i++)
|
||||
{
|
||||
@@ -167,6 +173,9 @@ bool MetisMISOSettings::deserialize(const QByteArray& data)
|
||||
d.readU32(50+i, &m_rxSubsamplingIndexes[i], 0);
|
||||
}
|
||||
|
||||
d.readS32(23, &m_streamIndex, 0);
|
||||
d.readS32(24, &m_spectrumStreamIndex, 0);
|
||||
|
||||
return true;
|
||||
}
|
||||
else
|
||||
|
||||
@@ -42,6 +42,8 @@ struct MetisMISOSettings {
|
||||
bool m_dcBlock;
|
||||
bool m_iqCorrection;
|
||||
unsigned int m_txDrive;
|
||||
int m_streamIndex;
|
||||
int m_spectrumStreamIndex; //!< spectrum source
|
||||
bool m_useReverseAPI;
|
||||
QString m_reverseAPIAddress;
|
||||
uint16_t m_reverseAPIPort;
|
||||
|
||||
Reference in New Issue
Block a user