1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2025-09-02 21:27:48 -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))
{
displaySettings();
applySettingsImmediate(true);
applySettings(true);
return true;
} else {
resetToDefaults();
return false;
}
if (!d.isValid()) // SimpleDeserializer d(data);
{ //
resetToDefaults(); // if (!d.isValid())
return false; // {
} // resetToDefaults();
// return false;
if (d.getVersion() == 1) // }
{ //
QByteArray bytetmp; // if (d.getVersion() == 1)
QString strtmp; // {
qint32 s32tmp; // QByteArray bytetmp;
Real realtmp; // QString strtmp;
bool booltmp; // qint32 s32tmp;
// Real realtmp;
blockApplySettings(true); // bool booltmp;
m_channelMarker.blockSignals(true); //
// blockApplySettings(true);
d.readBlob(6, &bytetmp); // m_channelMarker.blockSignals(true);
m_channelMarker.deserialize(bytetmp); //
// d.readBlob(6, &bytetmp);
d.readS32(2, &s32tmp, 0); // m_channelMarker.deserialize(bytetmp);
m_channelMarker.setCenterFrequency(s32tmp); //
d.readS32(3, &s32tmp, UDPSrcSettings::FormatS16LE); // d.readS32(2, &s32tmp, 0);
switch(s32tmp) { // m_channelMarker.setCenterFrequency(s32tmp);
case UDPSrcSettings::FormatS16LE: // d.readS32(3, &s32tmp, UDPSrcSettings::FormatS16LE);
ui->sampleFormat->setCurrentIndex(0); // switch(s32tmp) {
break; // case UDPSrcSettings::FormatS16LE:
case UDPSrcSettings::FormatNFM: // ui->sampleFormat->setCurrentIndex(0);
ui->sampleFormat->setCurrentIndex(1); // break;
break; // case UDPSrcSettings::FormatNFM:
case UDPSrcSettings::FormatNFMMono: // ui->sampleFormat->setCurrentIndex(1);
ui->sampleFormat->setCurrentIndex(2); // break;
break; // case UDPSrcSettings::FormatNFMMono:
case UDPSrcSettings::FormatLSB: // ui->sampleFormat->setCurrentIndex(2);
ui->sampleFormat->setCurrentIndex(3); // break;
break; // case UDPSrcSettings::FormatLSB:
case UDPSrcSettings::FormatUSB: // ui->sampleFormat->setCurrentIndex(3);
ui->sampleFormat->setCurrentIndex(4); // break;
break; // case UDPSrcSettings::FormatUSB:
case UDPSrcSettings::FormatLSBMono: // ui->sampleFormat->setCurrentIndex(4);
ui->sampleFormat->setCurrentIndex(5); // break;
break; // case UDPSrcSettings::FormatLSBMono:
case UDPSrcSettings::FormatUSBMono: // ui->sampleFormat->setCurrentIndex(5);
ui->sampleFormat->setCurrentIndex(6); // break;
break; // case UDPSrcSettings::FormatUSBMono:
case UDPSrcSettings::FormatAMMono: // ui->sampleFormat->setCurrentIndex(6);
ui->sampleFormat->setCurrentIndex(7); // break;
break; // case UDPSrcSettings::FormatAMMono:
case UDPSrcSettings::FormatAMNoDCMono: // ui->sampleFormat->setCurrentIndex(7);
ui->sampleFormat->setCurrentIndex(8); // break;
break; // case UDPSrcSettings::FormatAMNoDCMono:
case UDPSrcSettings::FormatAMBPFMono: // ui->sampleFormat->setCurrentIndex(8);
ui->sampleFormat->setCurrentIndex(9); // break;
break; // case UDPSrcSettings::FormatAMBPFMono:
default: // ui->sampleFormat->setCurrentIndex(9);
ui->sampleFormat->setCurrentIndex(0); // break;
break; // default:
} // ui->sampleFormat->setCurrentIndex(0);
d.readReal(4, &realtmp, 48000); // break;
ui->sampleRate->setText(QString("%1").arg(realtmp, 0)); // }
d.readReal(5, &realtmp, 32000); // d.readReal(4, &realtmp, 48000);
ui->rfBandwidth->setText(QString("%1").arg(realtmp, 0)); // ui->sampleRate->setText(QString("%1").arg(realtmp, 0));
d.readBlob(7, &bytetmp); // d.readReal(5, &realtmp, 32000);
ui->spectrumGUI->deserialize(bytetmp); // ui->rfBandwidth->setText(QString("%1").arg(realtmp, 0));
d.readS32(8, &s32tmp, 10); // d.readBlob(7, &bytetmp);
ui->gain->setValue(s32tmp); // ui->spectrumGUI->deserialize(bytetmp);
ui->gainText->setText(tr("%1").arg(s32tmp/10.0, 0, 'f', 1)); // d.readS32(8, &s32tmp, 10);
d.readBool(11, &booltmp, false); // ui->gain->setValue(s32tmp);
ui->audioActive->setChecked(booltmp); // ui->gainText->setText(tr("%1").arg(s32tmp/10.0, 0, 'f', 1));
d.readS32(12, &s32tmp, 20); // d.readBool(11, &booltmp, false);
ui->volume->setValue(s32tmp); // ui->audioActive->setChecked(booltmp);
ui->volumeText->setText(QString("%1").arg(s32tmp)); // d.readS32(12, &s32tmp, 20);
d.readBool(14, &booltmp, false); // ui->volume->setValue(s32tmp);
ui->audioStereo->setChecked(booltmp); // ui->volumeText->setText(QString("%1").arg(s32tmp));
d.readS32(15, &s32tmp, 2500); // d.readBool(14, &booltmp, false);
ui->fmDeviation->setText(QString("%1").arg(s32tmp)); // ui->audioStereo->setChecked(booltmp);
d.readS32(16, &s32tmp, -60); // d.readS32(15, &s32tmp, 2500);
ui->squelch->setValue(s32tmp); // ui->fmDeviation->setText(QString("%1").arg(s32tmp));
ui->squelchText->setText(tr("%1").arg(s32tmp*1.0, 0, 'f', 0)); // d.readS32(16, &s32tmp, -60);
d.readS32(17, &s32tmp, 5); // ui->squelch->setValue(s32tmp);
ui->squelchGate->setValue(s32tmp); // ui->squelchText->setText(tr("%1").arg(s32tmp*1.0, 0, 'f', 0));
ui->squelchGateText->setText(tr("%1").arg(s32tmp*10.0, 0, 'f', 0)); // d.readS32(17, &s32tmp, 5);
d.readBool(18, &booltmp, false); // ui->squelchGate->setValue(s32tmp);
ui->agc->setChecked(booltmp); // ui->squelchGateText->setText(tr("%1").arg(s32tmp*10.0, 0, 'f', 0));
// d.readBool(18, &booltmp, false);
blockApplySettings(false); // ui->agc->setChecked(booltmp);
m_channelMarker.blockSignals(false); //
// blockApplySettings(false);
this->setWindowTitle(m_channelMarker.getTitle()); // m_channelMarker.blockSignals(false);
displaySettings(); //
applySettingsImmediate(true); // this->setWindowTitle(m_channelMarker.getTitle());
applySettings(true); // displaySettings();
return true; // applySettingsImmediate(true);
} // applySettings(true);
else // return true;
{ // }
resetToDefaults(); // else
return false; // {
} // resetToDefaults();
// return false;
// }
} }
bool UDPSrcGUI::handleMessage(const Message& message __attribute__((unused))) bool UDPSrcGUI::handleMessage(const Message& message __attribute__((unused)))
@ -220,8 +237,12 @@ 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();
applySettings(); m_settings.m_udpAddress = m_channelMarker.getUDPAddress(),
m_settings.m_udpPort = m_channelMarker.getUDPSendPort(),
m_settings.m_rgbColor = m_channelMarker.getColor().rgb();
displayUDPAddress();
applySettings();
} }
void UDPSrcGUI::tick() void UDPSrcGUI::tick()
@ -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;