1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2025-09-04 22:27:53 -04:00

UDP source: use settings class in GUI (1)

This commit is contained in:
f4exb 2017-10-05 08:38:06 +02:00
parent e3284760f8
commit e6892ab7e1
4 changed files with 223 additions and 138 deletions

View File

@ -65,150 +65,167 @@ QString UDPSrcGUI::getName() const
void UDPSrcGUI::resetToDefaults() void UDPSrcGUI::resetToDefaults()
{ {
blockApplySettings(true); m_settings.resetToDefaults();
displaySettings();
applySettingsImmediate(true);
applySettings(true);
ui->sampleFormat->setCurrentIndex(0); // blockApplySettings(true);
ui->sampleRate->setText("48000"); //
ui->rfBandwidth->setText("32000"); // ui->sampleFormat->setCurrentIndex(0);
ui->fmDeviation->setText("2500"); // ui->sampleRate->setText("48000");
ui->spectrumGUI->resetToDefaults(); // ui->rfBandwidth->setText("32000");
ui->gain->setValue(10); // ui->fmDeviation->setText("2500");
ui->volume->setValue(20); // ui->spectrumGUI->resetToDefaults();
ui->audioActive->setChecked(false); // ui->gain->setValue(10);
ui->audioStereo->setChecked(false); // ui->volume->setValue(20);
ui->agc->setChecked(false); // ui->audioActive->setChecked(false);
m_channelMarker.setUDPAddress("127.0.0.1"); // ui->audioStereo->setChecked(false);
m_channelMarker.setUDPSendPort(9999); // ui->agc->setChecked(false);
m_channelMarker.setUDPReceivePort(9998); // m_channelMarker.setUDPAddress("127.0.0.1");
// m_channelMarker.setUDPSendPort(9999);
blockApplySettings(false); // m_channelMarker.setUDPReceivePort(9998);
applySettingsImmediate(); //
applySettings(); // blockApplySettings(false);
// applySettingsImmediate();
// applySettings();
} }
QByteArray UDPSrcGUI::serialize() const QByteArray UDPSrcGUI::serialize() const
{ {
SimpleSerializer s(1); return m_settings.serialize();
s.writeS32(2, m_channelMarker.getCenterFrequency()); // SimpleSerializer s(1);
s.writeS32(3, m_sampleFormat); // s.writeS32(2, m_channelMarker.getCenterFrequency());
s.writeReal(4, m_outputSampleRate); // s.writeS32(3, m_sampleFormat);
s.writeReal(5, m_rfBandwidth); // s.writeReal(4, m_outputSampleRate);
s.writeBlob(6, m_channelMarker.serialize()); // s.writeReal(5, m_rfBandwidth);
s.writeBlob(7, ui->spectrumGUI->serialize()); // s.writeBlob(6, m_channelMarker.serialize());
s.writeS32(8, ui->gain->value()); // s.writeBlob(7, ui->spectrumGUI->serialize());
s.writeBool(11, m_audioActive); // s.writeS32(8, ui->gain->value());
s.writeS32(12, (qint32)m_volume); // s.writeBool(11, m_audioActive);
s.writeBool(14, m_audioStereo); // s.writeS32(12, (qint32)m_volume);
s.writeS32(15, m_fmDeviation); // s.writeBool(14, m_audioStereo);
s.writeS32(16, ui->squelch->value()); // s.writeS32(15, m_fmDeviation);
s.writeS32(17, ui->squelchGate->value()); // s.writeS32(16, ui->squelch->value());
s.writeBool(18, ui->agc->isChecked()); // s.writeS32(17, ui->squelchGate->value());
return s.final(); // s.writeBool(18, ui->agc->isChecked());
// return s.final();
} }
bool UDPSrcGUI::deserialize(const QByteArray& data) bool UDPSrcGUI::deserialize(const QByteArray& data)
{ {
SimpleDeserializer d(data); if(m_settings.deserialize(data))
if (!d.isValid())
{ {
resetToDefaults();
return false;
}
if (d.getVersion() == 1)
{
QByteArray bytetmp;
QString strtmp;
qint32 s32tmp;
Real realtmp;
bool booltmp;
blockApplySettings(true);
m_channelMarker.blockSignals(true);
d.readBlob(6, &bytetmp);
m_channelMarker.deserialize(bytetmp);
d.readS32(2, &s32tmp, 0);
m_channelMarker.setCenterFrequency(s32tmp);
d.readS32(3, &s32tmp, UDPSrcSettings::FormatS16LE);
switch(s32tmp) {
case UDPSrcSettings::FormatS16LE:
ui->sampleFormat->setCurrentIndex(0);
break;
case UDPSrcSettings::FormatNFM:
ui->sampleFormat->setCurrentIndex(1);
break;
case UDPSrcSettings::FormatNFMMono:
ui->sampleFormat->setCurrentIndex(2);
break;
case UDPSrcSettings::FormatLSB:
ui->sampleFormat->setCurrentIndex(3);
break;
case UDPSrcSettings::FormatUSB:
ui->sampleFormat->setCurrentIndex(4);
break;
case UDPSrcSettings::FormatLSBMono:
ui->sampleFormat->setCurrentIndex(5);
break;
case UDPSrcSettings::FormatUSBMono:
ui->sampleFormat->setCurrentIndex(6);
break;
case UDPSrcSettings::FormatAMMono:
ui->sampleFormat->setCurrentIndex(7);
break;
case UDPSrcSettings::FormatAMNoDCMono:
ui->sampleFormat->setCurrentIndex(8);
break;
case UDPSrcSettings::FormatAMBPFMono:
ui->sampleFormat->setCurrentIndex(9);
break;
default:
ui->sampleFormat->setCurrentIndex(0);
break;
}
d.readReal(4, &realtmp, 48000);
ui->sampleRate->setText(QString("%1").arg(realtmp, 0));
d.readReal(5, &realtmp, 32000);
ui->rfBandwidth->setText(QString("%1").arg(realtmp, 0));
d.readBlob(7, &bytetmp);
ui->spectrumGUI->deserialize(bytetmp);
d.readS32(8, &s32tmp, 10);
ui->gain->setValue(s32tmp);
ui->gainText->setText(tr("%1").arg(s32tmp/10.0, 0, 'f', 1));
d.readBool(11, &booltmp, false);
ui->audioActive->setChecked(booltmp);
d.readS32(12, &s32tmp, 20);
ui->volume->setValue(s32tmp);
ui->volumeText->setText(QString("%1").arg(s32tmp));
d.readBool(14, &booltmp, false);
ui->audioStereo->setChecked(booltmp);
d.readS32(15, &s32tmp, 2500);
ui->fmDeviation->setText(QString("%1").arg(s32tmp));
d.readS32(16, &s32tmp, -60);
ui->squelch->setValue(s32tmp);
ui->squelchText->setText(tr("%1").arg(s32tmp*1.0, 0, 'f', 0));
d.readS32(17, &s32tmp, 5);
ui->squelchGate->setValue(s32tmp);
ui->squelchGateText->setText(tr("%1").arg(s32tmp*10.0, 0, 'f', 0));
d.readBool(18, &booltmp, false);
ui->agc->setChecked(booltmp);
blockApplySettings(false);
m_channelMarker.blockSignals(false);
this->setWindowTitle(m_channelMarker.getTitle());
displaySettings(); displaySettings();
applySettingsImmediate(true); applySettingsImmediate(true);
applySettings(true); applySettings(true);
return true; return true;
} } else {
else
{
resetToDefaults(); resetToDefaults();
return false; return false;
} }
// SimpleDeserializer d(data);
//
// if (!d.isValid())
// {
// resetToDefaults();
// return false;
// }
//
// if (d.getVersion() == 1)
// {
// QByteArray bytetmp;
// QString strtmp;
// qint32 s32tmp;
// Real realtmp;
// bool booltmp;
//
// blockApplySettings(true);
// m_channelMarker.blockSignals(true);
//
// d.readBlob(6, &bytetmp);
// m_channelMarker.deserialize(bytetmp);
//
// d.readS32(2, &s32tmp, 0);
// m_channelMarker.setCenterFrequency(s32tmp);
// d.readS32(3, &s32tmp, UDPSrcSettings::FormatS16LE);
// switch(s32tmp) {
// case UDPSrcSettings::FormatS16LE:
// ui->sampleFormat->setCurrentIndex(0);
// break;
// case UDPSrcSettings::FormatNFM:
// ui->sampleFormat->setCurrentIndex(1);
// break;
// case UDPSrcSettings::FormatNFMMono:
// ui->sampleFormat->setCurrentIndex(2);
// break;
// case UDPSrcSettings::FormatLSB:
// ui->sampleFormat->setCurrentIndex(3);
// break;
// case UDPSrcSettings::FormatUSB:
// ui->sampleFormat->setCurrentIndex(4);
// break;
// case UDPSrcSettings::FormatLSBMono:
// ui->sampleFormat->setCurrentIndex(5);
// break;
// case UDPSrcSettings::FormatUSBMono:
// ui->sampleFormat->setCurrentIndex(6);
// break;
// case UDPSrcSettings::FormatAMMono:
// ui->sampleFormat->setCurrentIndex(7);
// break;
// case UDPSrcSettings::FormatAMNoDCMono:
// ui->sampleFormat->setCurrentIndex(8);
// break;
// case UDPSrcSettings::FormatAMBPFMono:
// ui->sampleFormat->setCurrentIndex(9);
// break;
// default:
// ui->sampleFormat->setCurrentIndex(0);
// break;
// }
// d.readReal(4, &realtmp, 48000);
// ui->sampleRate->setText(QString("%1").arg(realtmp, 0));
// d.readReal(5, &realtmp, 32000);
// ui->rfBandwidth->setText(QString("%1").arg(realtmp, 0));
// d.readBlob(7, &bytetmp);
// ui->spectrumGUI->deserialize(bytetmp);
// d.readS32(8, &s32tmp, 10);
// ui->gain->setValue(s32tmp);
// ui->gainText->setText(tr("%1").arg(s32tmp/10.0, 0, 'f', 1));
// d.readBool(11, &booltmp, false);
// ui->audioActive->setChecked(booltmp);
// d.readS32(12, &s32tmp, 20);
// ui->volume->setValue(s32tmp);
// ui->volumeText->setText(QString("%1").arg(s32tmp));
// d.readBool(14, &booltmp, false);
// ui->audioStereo->setChecked(booltmp);
// d.readS32(15, &s32tmp, 2500);
// ui->fmDeviation->setText(QString("%1").arg(s32tmp));
// d.readS32(16, &s32tmp, -60);
// ui->squelch->setValue(s32tmp);
// ui->squelchText->setText(tr("%1").arg(s32tmp*1.0, 0, 'f', 0));
// d.readS32(17, &s32tmp, 5);
// ui->squelchGate->setValue(s32tmp);
// ui->squelchGateText->setText(tr("%1").arg(s32tmp*10.0, 0, 'f', 0));
// d.readBool(18, &booltmp, false);
// ui->agc->setChecked(booltmp);
//
// blockApplySettings(false);
// m_channelMarker.blockSignals(false);
//
// this->setWindowTitle(m_channelMarker.getTitle());
// displaySettings();
// applySettingsImmediate(true);
// applySettings(true);
// return true;
// }
// else
// {
// resetToDefaults();
// return false;
// }
} }
bool UDPSrcGUI::handleMessage(const Message& message __attribute__((unused))) bool UDPSrcGUI::handleMessage(const Message& message __attribute__((unused)))
@ -220,7 +237,11 @@ bool UDPSrcGUI::handleMessage(const Message& message __attribute__((unused)))
void UDPSrcGUI::channelMarkerChanged() void UDPSrcGUI::channelMarkerChanged()
{ {
this->setWindowTitle(m_channelMarker.getTitle()); this->setWindowTitle(m_channelMarker.getTitle());
displaySettings(); m_settings.m_inputFrequencyOffset = m_channelMarker.getCenterFrequency();
m_settings.m_udpAddress = m_channelMarker.getUDPAddress(),
m_settings.m_udpPort = m_channelMarker.getUDPSendPort(),
m_settings.m_rgbColor = m_channelMarker.getColor().rgb();
displayUDPAddress();
applySettings(); applySettings();
} }
@ -325,10 +346,72 @@ void UDPSrcGUI::blockApplySettings(bool block)
void UDPSrcGUI::displaySettings() void UDPSrcGUI::displaySettings()
{ {
m_channelMarker.blockSignals(true);
m_channelMarker.setCenterFrequency(m_settings.m_inputFrequencyOffset);
m_channelMarker.setUDPAddress(m_settings.m_udpAddress);
m_channelMarker.setUDPSendPort(m_settings.m_udpPort);
m_channelMarker.setColor(m_settings.m_rgbColor);
setTitleColor(m_settings.m_rgbColor);
m_channelMarker.blockSignals(false);
ui->deltaFrequency->setValue(m_channelMarker.getCenterFrequency());
ui->sampleRate->setText(QString("%1").arg(m_settings.m_outputSampleRate, 0));
switch(m_settings.m_sampleFormat)
{
case UDPSrcSettings::FormatS16LE:
ui->sampleFormat->setCurrentIndex(0);
break;
case UDPSrcSettings::FormatNFM:
ui->sampleFormat->setCurrentIndex(1);
break;
case UDPSrcSettings::FormatNFMMono:
ui->sampleFormat->setCurrentIndex(2);
break;
case UDPSrcSettings::FormatLSB:
ui->sampleFormat->setCurrentIndex(3);
break;
case UDPSrcSettings::FormatUSB:
ui->sampleFormat->setCurrentIndex(4);
break;
case UDPSrcSettings::FormatLSBMono:
ui->sampleFormat->setCurrentIndex(5);
break;
case UDPSrcSettings::FormatUSBMono:
ui->sampleFormat->setCurrentIndex(6);
break;
case UDPSrcSettings::FormatAMMono:
ui->sampleFormat->setCurrentIndex(7);
break;
case UDPSrcSettings::FormatAMNoDCMono:
ui->sampleFormat->setCurrentIndex(8);
break;
case UDPSrcSettings::FormatAMBPFMono:
ui->sampleFormat->setCurrentIndex(9);
break;
default:
ui->sampleFormat->setCurrentIndex(0);
break;
}
ui->gain->setValue(m_settings.m_gain*10.0);
ui->gainText->setText(tr("%1").arg(ui->gain->value()/10.0, 0, 'f', 1)); ui->gainText->setText(tr("%1").arg(ui->gain->value()/10.0, 0, 'f', 1));
ui->volume->setValue(m_settings.m_volume);
ui->volumeText->setText(QString("%1").arg(ui->volume->value())); ui->volumeText->setText(QString("%1").arg(ui->volume->value()));
ui->squelch->setValue(m_settings.m_squelch);
ui->squelchText->setText(tr("%1").arg(ui->squelch->value()*1.0, 0, 'f', 0)); ui->squelchText->setText(tr("%1").arg(ui->squelch->value()*1.0, 0, 'f', 0));
ui->squelchGate->setValue(m_settings.m_squelchGate*100.0);
ui->squelchGateText->setText(tr("%1").arg(ui->squelchGate->value()*10.0, 0, 'f', 0)); ui->squelchGateText->setText(tr("%1").arg(ui->squelchGate->value()*10.0, 0, 'f', 0));
displayUDPAddress();
}
void UDPSrcGUI::displayUDPAddress()
{
ui->addressText->setText(tr("%1:%2/%3").arg(m_channelMarker.getUDPAddress()).arg(m_channelMarker.getUDPSendPort()).arg(m_channelMarker.getUDPReceivePort())); ui->addressText->setText(tr("%1:%2/%3").arg(m_channelMarker.getUDPAddress()).arg(m_channelMarker.getUDPSendPort()).arg(m_channelMarker.getUDPReceivePort()));
} }

View File

@ -112,6 +112,7 @@ private:
void applySettings(bool force = false); void applySettings(bool force = false);
void applySettingsImmediate(bool force = false); void applySettingsImmediate(bool force = false);
void displaySettings(); void displaySettings();
void displayUDPAddress();
void leaveEvent(QEvent*); void leaveEvent(QEvent*);
void enterEvent(QEvent*); void enterEvent(QEvent*);

View File

@ -43,7 +43,7 @@ void UDPSrcSettings::resetToDefaults()
m_audioActive = false; m_audioActive = false;
m_audioStereo = false; m_audioStereo = false;
m_volume = 20; m_volume = 20;
m_udpAddressStr = "127.0.0.1"; m_udpAddress = "127.0.0.1";
m_udpPort = 9999; m_udpPort = 9999;
m_audioPort = 9998; m_audioPort = 9998;
} }

View File

@ -54,8 +54,9 @@ struct UDPSrcSettings
bool m_audioActive; bool m_audioActive;
bool m_audioStereo; bool m_audioStereo;
int m_volume; int m_volume;
quint32 m_rgbColor;
QString m_udpAddressStr; QString m_udpAddress;
uint16_t m_udpPort; uint16_t m_udpPort;
uint16_t m_audioPort; uint16_t m_audioPort;