Channel Analyzer: fixed reverse API handling and a few other things. Fixes #1144

pull/1162/head
f4exb 2022-02-11 02:32:27 +01:00
rodzic 04ed8d3d0b
commit 02ec2a4403
3 zmienionych plików z 116 dodań i 9 usunięć

Wyświetl plik

@ -54,11 +54,17 @@ ChannelAnalyzer::ChannelAnalyzer(DeviceAPI *deviceAPI) :
m_deviceAPI->addChannelSink(this);
m_deviceAPI->addChannelSinkAPI(this);
m_networkManager = new QNetworkAccessManager();
connect(m_networkManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(networkManagerFinished(QNetworkReply*)));
}
ChannelAnalyzer::~ChannelAnalyzer()
{
qDebug("ChannelAnalyzer::~ChannelAnalyzer");
disconnect(m_networkManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(networkManagerFinished(QNetworkReply*)));
delete m_networkManager;
m_deviceAPI->removeChannelSinkAPI(this);
m_deviceAPI->removeChannelSink(this);
@ -177,12 +183,103 @@ void ChannelAnalyzer::applySettings(const ChannelAnalyzerSettings& settings, boo
<< " m_pllBandwidth: " << settings.m_pllBandwidth
<< " m_pllDampingFactor: " << settings.m_pllDampingFactor
<< " m_pllLoopGain: " << settings.m_pllLoopGain
<< " m_inputType: " << (int) settings.m_inputType;
<< " m_inputType: " << (int) settings.m_inputType
<< " m_useReverseAPI:" << settings.m_useReverseAPI
<< " m_reverseAPIAddress:" << settings.m_reverseAPIAddress
<< " m_reverseAPIPort:" << settings.m_reverseAPIPort
<< " m_reverseAPIDeviceIndex:" << settings.m_reverseAPIDeviceIndex
<< " m_reverseAPIChannelIndex:" << settings.m_reverseAPIChannelIndex;
QList<QString> reverseAPIKeys;
if ((settings.m_inputFrequencyOffset != m_settings.m_inputFrequencyOffset) || force) {
reverseAPIKeys.append("inputFrequencyOffset");
}
if ((settings.m_rationalDownSample != m_settings.m_rationalDownSample) || force) {
reverseAPIKeys.append("rationalDownSample");
}
if ((settings.m_rationalDownSamplerRate != m_settings.m_rationalDownSamplerRate) || force) {
reverseAPIKeys.append("rationalDownSamplerRate");
}
if ((settings.m_bandwidth != m_settings.m_bandwidth) || force) {
reverseAPIKeys.append("bandwidth");
}
if ((settings.m_lowCutoff != m_settings.m_lowCutoff) || force) {
reverseAPIKeys.append("lowCutoff");
}
if ((settings.m_log2Decim != m_settings.m_log2Decim) || force) {
reverseAPIKeys.append("log2Decim");
}
if ((settings.m_lowCutoff != m_settings.m_lowCutoff) || force) {
reverseAPIKeys.append("lowCutoff");
}
if ((settings.m_ssb != m_settings.m_ssb) || force) {
reverseAPIKeys.append("ssb");
}
if ((settings.m_pll != m_settings.m_pll) || force) {
reverseAPIKeys.append("pll");
}
if ((settings.m_fll != m_settings.m_fll) || force) {
reverseAPIKeys.append("fll");
}
if ((settings.m_costasLoop != m_settings.m_costasLoop) || force) {
reverseAPIKeys.append("costasLoop");
}
if ((settings.m_rrc != m_settings.m_rrc) || force) {
reverseAPIKeys.append("rrc");
}
if ((settings.m_rrcRolloff != m_settings.m_rrcRolloff) || force) {
reverseAPIKeys.append("rrcRolloff");
}
if ((settings.m_pllPskOrder != m_settings.m_pllPskOrder) || force) {
reverseAPIKeys.append("pllPskOrder");
}
if ((settings.m_pllBandwidth != m_settings.m_pllBandwidth) || force) {
reverseAPIKeys.append("pllBandwidth");
}
if ((settings.m_pllDampingFactor != m_settings.m_pllDampingFactor) || force) {
reverseAPIKeys.append("pllDampingFactor");
}
if ((settings.m_pllLoopGain != m_settings.m_pllLoopGain) || force) {
reverseAPIKeys.append("pllLoopGain");
}
if ((settings.m_inputType != m_settings.m_inputType) || force) {
reverseAPIKeys.append("inputType");
}
if ((settings.m_rgbColor != m_settings.m_rgbColor) || force) {
reverseAPIKeys.append("rgbColor");
}
if ((settings.m_title != m_settings.m_title) || force) {
reverseAPIKeys.append("title");
}
if (m_settings.m_streamIndex != settings.m_streamIndex)
{
if (m_deviceAPI->getSampleMIMO()) // change of stream is possible for MIMO devices only
{
m_deviceAPI->removeChannelSinkAPI(this);
m_deviceAPI->removeChannelSink(this, m_settings.m_streamIndex);
m_deviceAPI->addChannelSink(this, settings.m_streamIndex);
m_deviceAPI->addChannelSinkAPI(this);
}
reverseAPIKeys.append("streamIndex");
}
ChannelAnalyzerBaseband::MsgConfigureChannelAnalyzerBaseband *msg
= ChannelAnalyzerBaseband::MsgConfigureChannelAnalyzerBaseband::create(settings, force);
m_basebandSink->getInputMessageQueue()->push(msg);
if (settings.m_useReverseAPI)
{
bool fullUpdate = ((m_settings.m_useReverseAPI != settings.m_useReverseAPI) && settings.m_useReverseAPI) ||
(m_settings.m_reverseAPIAddress != settings.m_reverseAPIAddress) ||
(m_settings.m_reverseAPIPort != settings.m_reverseAPIPort) ||
(m_settings.m_reverseAPIDeviceIndex != settings.m_reverseAPIDeviceIndex) ||
(m_settings.m_reverseAPIChannelIndex != settings.m_reverseAPIChannelIndex);
webapiReverseSendSettings(reverseAPIKeys, settings, fullUpdate || force);
}
m_settings = settings;
}
@ -478,7 +575,7 @@ void ChannelAnalyzer::webapiFormatChannelSettings(
swgChannelSettings->setOriginatorChannelIndex(getIndexInDeviceSet());
swgChannelSettings->setOriginatorDeviceSetIndex(getDeviceSetIndex());
swgChannelSettings->setChannelType(new QString(m_channelId));
swgChannelSettings->setSsbDemodSettings(new SWGSDRangel::SWGSSBDemodSettings());
swgChannelSettings->setChannelAnalyzerSettings(new SWGSDRangel::SWGChannelAnalyzerSettings());
SWGSDRangel::SWGChannelAnalyzerSettings *swgChannelAnalyzerSettings = swgChannelSettings->getChannelAnalyzerSettings();
// transfer data that has been modified. When force is on transfer all data except reverse API data

Wyświetl plik

@ -211,7 +211,7 @@ QByteArray ChannelAnalyzerGUI::serialize() const
bool ChannelAnalyzerGUI::deserialize(const QByteArray& data)
{
if(m_settings.deserialize(data))
if (m_settings.deserialize(data))
{
displaySettings();
applySettings(true); // will have true
@ -459,12 +459,22 @@ void ChannelAnalyzerGUI::onMenuDialogCalled(const QPoint& p)
if (m_contextMenuType == ContextMenuChannelSettings)
{
BasicChannelSettingsDialog dialog(&m_channelMarker, this);
dialog.setUseReverseAPI(m_settings.m_useReverseAPI);
dialog.setReverseAPIAddress(m_settings.m_reverseAPIAddress);
dialog.setReverseAPIPort(m_settings.m_reverseAPIPort);
dialog.setReverseAPIDeviceIndex(m_settings.m_reverseAPIDeviceIndex);
dialog.setReverseAPIChannelIndex(m_settings.m_reverseAPIChannelIndex);
dialog.move(p);
dialog.exec();
m_settings.m_inputFrequencyOffset = m_channelMarker.getCenterFrequency();
m_settings.m_rgbColor = m_channelMarker.getColor().rgb();
m_settings.m_title = m_channelMarker.getTitle();
m_settings.m_useReverseAPI = dialog.useReverseAPI();
m_settings.m_reverseAPIAddress = dialog.getReverseAPIAddress();
m_settings.m_reverseAPIPort = dialog.getReverseAPIPort();
m_settings.m_reverseAPIDeviceIndex = dialog.getReverseAPIDeviceIndex();
m_settings.m_reverseAPIChannelIndex = dialog.getReverseAPIChannelIndex();
setWindowTitle(m_settings.m_title);
setTitleColor(m_settings.m_rgbColor);

Wyświetl plik

@ -164,9 +164,9 @@ bool ChannelAnalyzerSettings::deserialize(const QByteArray& data)
m_rollupState->deserialize(bytetmp);
}
d.readBool(18, &m_useReverseAPI, false);
d.readString(19, &m_reverseAPIAddress, "127.0.0.1");
d.readU32(20, &utmp, 0);
d.readBool(23, &m_useReverseAPI, false);
d.readString(24, &m_reverseAPIAddress, "127.0.0.1");
d.readU32(25, &utmp, 0);
if ((utmp > 1023) && (utmp < 65535)) {
m_reverseAPIPort = utmp;
@ -174,11 +174,11 @@ bool ChannelAnalyzerSettings::deserialize(const QByteArray& data)
m_reverseAPIPort = 8888;
}
d.readU32(21, &utmp, 0);
d.readU32(26, &utmp, 0);
m_reverseAPIDeviceIndex = utmp > 99 ? 99 : utmp;
d.readU32(22, &utmp, 0);
d.readU32(27, &utmp, 0);
m_reverseAPIChannelIndex = utmp > 99 ? 99 : utmp;
d.readS32(23, &m_streamIndex, 0);
d.readS32(28, &m_streamIndex, 0);
return true;
}