mirror of
https://github.com/f4exb/sdrangel.git
synced 2024-12-22 17:45:48 -05:00
100 lines
2.5 KiB
C++
100 lines
2.5 KiB
C++
#include "util/simpleserializer.h"
|
|
#include "settings/preset.h"
|
|
|
|
#include <iostream>
|
|
|
|
Preset::Preset()
|
|
{
|
|
resetToDefaults();
|
|
}
|
|
|
|
void Preset::resetToDefaults()
|
|
{
|
|
m_group = "default";
|
|
m_description = "no name";
|
|
m_centerFrequency = 0;
|
|
m_spectrumConfig.clear();
|
|
m_scopeConfig.clear();
|
|
m_dcOffsetCorrection = false;
|
|
m_iqImbalanceCorrection = false;
|
|
m_showScope = true;
|
|
m_layout.clear();
|
|
m_spectrumConfig.clear();
|
|
m_channelConfigs.clear();
|
|
m_source.clear();
|
|
m_sourceConfig.clear();
|
|
}
|
|
|
|
QByteArray Preset::serialize() const
|
|
{
|
|
std::cerr << "Preset::serialize (" << this->getSource().toStdString()<< ")" << std::endl;
|
|
|
|
SimpleSerializer s(1);
|
|
s.writeString(1, m_group);
|
|
s.writeString(2, m_description);
|
|
s.writeU64(3, m_centerFrequency);
|
|
s.writeBool(4, m_showScope);
|
|
s.writeBlob(5, m_layout);
|
|
s.writeBlob(6, m_spectrumConfig);
|
|
s.writeBool(7, m_dcOffsetCorrection);
|
|
s.writeBool(8, m_iqImbalanceCorrection);
|
|
s.writeBlob(9, m_scopeConfig);
|
|
s.writeString(10, m_source);
|
|
s.writeBlob(11, m_sourceGeneralConfig);
|
|
s.writeBlob(12, m_sourceConfig);
|
|
|
|
s.writeS32(200, m_channelConfigs.size());
|
|
|
|
std::cerr << " m_group: " << m_group.toStdString() << std::endl;
|
|
|
|
for(int i = 0; i < m_channelConfigs.size(); i++) {
|
|
s.writeString(201 + i * 2, m_channelConfigs[i].m_channel);
|
|
s.writeBlob(202 + i * 2, m_channelConfigs[i].m_config);
|
|
}
|
|
|
|
return s.final();
|
|
}
|
|
|
|
bool Preset::deserialize(const QByteArray& data)
|
|
{
|
|
std::cerr << "Preset::deserialize (" << this->getSource().toStdString() << ")" << std::endl;
|
|
SimpleDeserializer d(data);
|
|
|
|
if(!d.isValid()) {
|
|
resetToDefaults();
|
|
return false;
|
|
}
|
|
|
|
if(d.getVersion() == 1) {
|
|
d.readString(1, &m_group, "default");
|
|
d.readString(2, &m_description, "no name");
|
|
d.readU64(3, &m_centerFrequency, 0);
|
|
d.readBool(4, &m_showScope, true);
|
|
d.readBlob(5, &m_layout);
|
|
d.readBlob(6, &m_spectrumConfig);
|
|
d.readBool(7, &m_dcOffsetCorrection, false);
|
|
d.readBool(8, &m_iqImbalanceCorrection, false);
|
|
d.readBlob(9, &m_scopeConfig);
|
|
d.readString(10, &m_source);
|
|
d.readBlob(11, &m_sourceGeneralConfig);
|
|
d.readBlob(12, &m_sourceConfig);
|
|
|
|
std::cerr << " m_group: " << m_group.toStdString() << std::endl;
|
|
|
|
qint32 channelCount = 0;
|
|
d.readS32(200, &channelCount, 0);
|
|
|
|
for(int i = 0; i < channelCount; i++) {
|
|
QString channel;
|
|
QByteArray config;
|
|
d.readString(201 + i * 2, &channel, "unknown-channel");
|
|
d.readBlob(202 + i * 2, &config);
|
|
m_channelConfigs.append(ChannelConfig(channel, config));
|
|
}
|
|
return true;
|
|
} else {
|
|
resetToDefaults();
|
|
return false;
|
|
}
|
|
}
|