From d86b6b193a79ecc2435b82813c65d13c8927dad8 Mon Sep 17 00:00:00 2001 From: f4exb Date: Thu, 26 May 2022 18:06:10 +0200 Subject: [PATCH 01/15] FreeDV plugins: fixed spanLog2 GUI connection --- plugins/channelrx/demodfreedv/freedvdemodgui.cpp | 1 + plugins/channeltx/modfreedv/freedvmodgui.cpp | 1 + 2 files changed, 2 insertions(+) diff --git a/plugins/channelrx/demodfreedv/freedvdemodgui.cpp b/plugins/channelrx/demodfreedv/freedvdemodgui.cpp index 6f534d75b..4d11d62bf 100644 --- a/plugins/channelrx/demodfreedv/freedvdemodgui.cpp +++ b/plugins/channelrx/demodfreedv/freedvdemodgui.cpp @@ -520,6 +520,7 @@ void FreeDVDemodGUI::makeUIConnections() QObject::connect(ui->volumeIn, &QDial::valueChanged, this, &FreeDVDemodGUI::on_volumeIn_valueChanged); QObject::connect(ui->agc, &ButtonSwitch::toggled, this, &FreeDVDemodGUI::on_agc_toggled); QObject::connect(ui->audioMute, &QToolButton::toggled, this, &FreeDVDemodGUI::on_audioMute_toggled); + QObject::connect(ui->spanLog2, &QSlider::valueChanged, this, &FreeDVDemodGUI::on_spanLog2_valueChanged); } void FreeDVDemodGUI::updateAbsoluteCenterFrequency() diff --git a/plugins/channeltx/modfreedv/freedvmodgui.cpp b/plugins/channeltx/modfreedv/freedvmodgui.cpp index 19ac57d3e..58325a00a 100644 --- a/plugins/channeltx/modfreedv/freedvmodgui.cpp +++ b/plugins/channeltx/modfreedv/freedvmodgui.cpp @@ -635,6 +635,7 @@ void FreeDVModGUI::makeUIConnections() QObject::connect(ui->morseKeyer, &ButtonSwitch::toggled, this, &FreeDVModGUI::on_morseKeyer_toggled); QObject::connect(ui->navTimeSlider, &QSlider::valueChanged, this, &FreeDVModGUI::on_navTimeSlider_valueChanged); QObject::connect(ui->showFileDialog, &QPushButton::clicked, this, &FreeDVModGUI::on_showFileDialog_clicked); + QObject::connect(ui->spanLog2, &QSlider::valueChanged, this, &FreeDVModGUI::on_spanLog2_valueChanged); } void FreeDVModGUI::updateAbsoluteCenterFrequency() From f4af9f354ef9f4d884de98454f177e0981528aed Mon Sep 17 00:00:00 2001 From: f4exb Date: Thu, 26 May 2022 21:40:19 +0200 Subject: [PATCH 02/15] FreeDV mod: improved output power --- plugins/channeltx/modfreedv/freedvmodsource.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/plugins/channeltx/modfreedv/freedvmodsource.cpp b/plugins/channeltx/modfreedv/freedvmodsource.cpp index 4df1ca2e8..373360614 100644 --- a/plugins/channeltx/modfreedv/freedvmodsource.cpp +++ b/plugins/channeltx/modfreedv/freedvmodsource.cpp @@ -455,7 +455,7 @@ void FreeDVModSource::applyFreeDVMode(FreeDVModSettings::FreeDVMode mode) { case FreeDVModSettings::FreeDVMode700C: fdv_mode = FREEDV_MODE_700C; - m_scaleFactor = SDR_TX_SCALEF / 3.2f; + m_scaleFactor = SDR_TX_SCALEF / 6.4f; break; case FreeDVModSettings::FreeDVMode700D: fdv_mode = FREEDV_MODE_700D; @@ -463,16 +463,16 @@ void FreeDVModSource::applyFreeDVMode(FreeDVModSettings::FreeDVMode mode) break; case FreeDVModSettings::FreeDVMode800XA: fdv_mode = FREEDV_MODE_800XA; - m_scaleFactor = SDR_TX_SCALEF / 8.2f; + m_scaleFactor = SDR_TX_SCALEF / 10.3f; break; case FreeDVModSettings::FreeDVMode1600: fdv_mode = FREEDV_MODE_1600; - m_scaleFactor = SDR_TX_SCALEF / 3.2f; + m_scaleFactor = SDR_TX_SCALEF / 4.0f; break; case FreeDVModSettings::FreeDVMode2400A: default: fdv_mode = FREEDV_MODE_2400A; - m_scaleFactor = SDR_TX_SCALEF / 8.2f; + m_scaleFactor = SDR_TX_SCALEF / 10.3f; break; } From 93e51e140be0e6fe7588923457985ee4d793071f Mon Sep 17 00:00:00 2001 From: f4exb Date: Thu, 26 May 2022 22:35:41 +0200 Subject: [PATCH 03/15] Upgraded codec2 to v1.0.3. Fixes #1256 --- cmake/ci/build_codec2.sh | 2 +- external/CMakeLists.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cmake/ci/build_codec2.sh b/cmake/ci/build_codec2.sh index 15ca607db..dc5b6e364 100644 --- a/cmake/ci/build_codec2.sh +++ b/cmake/ci/build_codec2.sh @@ -9,7 +9,7 @@ mkdir -p drowe67 && cd drowe67 git clone https://github.com/drowe67/codec2.git cd codec2 -git reset --hard "v0.9.2" +git reset --hard "v1.0.3" mkdir -p build && cd build cmake .. sudo make install diff --git a/external/CMakeLists.txt b/external/CMakeLists.txt index 1d656bc0e..6fe418a67 100644 --- a/external/CMakeLists.txt +++ b/external/CMakeLists.txt @@ -8,7 +8,7 @@ # but make the configuration dirty # which version/tag/checkout to use -set(CODEC2_TAG "v0.9.2") +set(CODEC2_TAG "v1.0.3") set(CM256CC_TAG c0e92b92aca3d1d36c990b642b937c64d363c559) set(MBELIB_TAG fe83b32c6a60cdd7bce8cecf3c7a0b9ec87a7667) set(SERIALDV_TAG "v1.1.4") From 6290677889cbd065794da04366a073daca283d36 Mon Sep 17 00:00:00 2001 From: f4exb Date: Fri, 27 May 2022 00:50:38 +0200 Subject: [PATCH 04/15] DOA2: added as copy of Interferometer --- plugins/channelmimo/CMakeLists.txt | 1 + plugins/channelmimo/doa2/CMakeLists.txt | 67 ++ plugins/channelmimo/doa2/doa2.cpp | 600 +++++++++++++++ plugins/channelmimo/doa2/doa2.h | 197 +++++ plugins/channelmimo/doa2/doa2baseband.cpp | 263 +++++++ plugins/channelmimo/doa2/doa2baseband.h | 137 ++++ plugins/channelmimo/doa2/doa2corr.cpp | 725 ++++++++++++++++++ plugins/channelmimo/doa2/doa2corr.h | 109 +++ plugins/channelmimo/doa2/doa2gui.cpp | 372 +++++++++ plugins/channelmimo/doa2/doa2gui.h | 107 +++ plugins/channelmimo/doa2/doa2gui.ui | 529 +++++++++++++ plugins/channelmimo/doa2/doa2plugin.cpp | 94 +++ plugins/channelmimo/doa2/doa2plugin.h | 49 ++ plugins/channelmimo/doa2/doa2settings.cpp | 160 ++++ plugins/channelmimo/doa2/doa2settings.h | 70 ++ plugins/channelmimo/doa2/doa2streamsink.cpp | 49 ++ plugins/channelmimo/doa2/doa2streamsink.h | 51 ++ .../channelmimo/doa2/doa2webapiadapter.cpp | 385 ++++++++++ plugins/channelmimo/doa2/doa2webapiadapter.h | 69 ++ plugins/channelmimo/doa2/readme.md | 160 ++++ sdrbase/resources/webapi.qrc | 1 + sdrbase/resources/webapi/doc/html2/index.html | 54 +- .../doc/swagger/include/ChannelSettings.yaml | 2 + .../webapi/doc/swagger/include/DOA2.yaml | 33 + sdrbase/webapi/webapirequestmapper.cpp | 5 + sdrbase/webapi/webapiutils.cpp | 2 + .../api/swagger/include/ChannelSettings.yaml | 2 + .../sdrangel/api/swagger/include/DOA2.yaml | 33 + swagger/sdrangel/code/html2/index.html | 54 +- .../code/qt5/client/SWGChannelSettings.cpp | 25 + .../code/qt5/client/SWGChannelSettings.h | 7 + .../code/qt5/client/SWGDOA2Settings.cpp | 419 ++++++++++ .../code/qt5/client/SWGDOA2Settings.h | 141 ++++ .../code/qt5/client/SWGModelFactory.h | 6 + 34 files changed, 4976 insertions(+), 2 deletions(-) create mode 100644 plugins/channelmimo/doa2/CMakeLists.txt create mode 100644 plugins/channelmimo/doa2/doa2.cpp create mode 100644 plugins/channelmimo/doa2/doa2.h create mode 100644 plugins/channelmimo/doa2/doa2baseband.cpp create mode 100644 plugins/channelmimo/doa2/doa2baseband.h create mode 100644 plugins/channelmimo/doa2/doa2corr.cpp create mode 100644 plugins/channelmimo/doa2/doa2corr.h create mode 100644 plugins/channelmimo/doa2/doa2gui.cpp create mode 100644 plugins/channelmimo/doa2/doa2gui.h create mode 100644 plugins/channelmimo/doa2/doa2gui.ui create mode 100644 plugins/channelmimo/doa2/doa2plugin.cpp create mode 100644 plugins/channelmimo/doa2/doa2plugin.h create mode 100644 plugins/channelmimo/doa2/doa2settings.cpp create mode 100644 plugins/channelmimo/doa2/doa2settings.h create mode 100644 plugins/channelmimo/doa2/doa2streamsink.cpp create mode 100644 plugins/channelmimo/doa2/doa2streamsink.h create mode 100644 plugins/channelmimo/doa2/doa2webapiadapter.cpp create mode 100644 plugins/channelmimo/doa2/doa2webapiadapter.h create mode 100644 plugins/channelmimo/doa2/readme.md create mode 100644 sdrbase/resources/webapi/doc/swagger/include/DOA2.yaml create mode 100644 swagger/sdrangel/api/swagger/include/DOA2.yaml create mode 100644 swagger/sdrangel/code/qt5/client/SWGDOA2Settings.cpp create mode 100644 swagger/sdrangel/code/qt5/client/SWGDOA2Settings.h diff --git a/plugins/channelmimo/CMakeLists.txt b/plugins/channelmimo/CMakeLists.txt index 5b951ebc6..0465d259a 100644 --- a/plugins/channelmimo/CMakeLists.txt +++ b/plugins/channelmimo/CMakeLists.txt @@ -1,6 +1,7 @@ project(channelmimo) add_subdirectory(beamsteeringcwmod) +add_subdirectory(doa2) if (NOT SERVER_MODE) add_subdirectory(interferometer) diff --git a/plugins/channelmimo/doa2/CMakeLists.txt b/plugins/channelmimo/doa2/CMakeLists.txt new file mode 100644 index 000000000..3192a25b4 --- /dev/null +++ b/plugins/channelmimo/doa2/CMakeLists.txt @@ -0,0 +1,67 @@ +project(doa2) + +set(doa2_SOURCES + doa2.cpp + doa2corr.cpp + doa2settings.cpp + doa2baseband.cpp + doa2streamsink.cpp + doa2plugin.cpp + doa2webapiadapter.cpp +) + +set(doa2_HEADERS + doa2.h + doa2corr.h + doa2settings.h + doa2baseband.h + doa2streamsink.h + doa2plugin.h + doa2webapiadapter.h +) + +include_directories( + ${CMAKE_SOURCE_DIR}/swagger/sdrangel/code/qt5/client + ${Boost_INCLUDE_DIR} +) + +if (NOT SERVER_MODE) + set(doa2_SOURCES + ${doa2_SOURCES} + doa2gui.cpp + doa2gui.ui + ) + set(doa2_HEADERS + ${doa2_HEADERS} + doa2gui.h + ) + + set(TARGET_NAME doa2) + set(TARGET_LIB "Qt5::Widgets") + set(TARGET_LIB_GUI "sdrgui") + set(INSTALL_FOLDER ${INSTALL_PLUGINS_DIR}) +else() + set(TARGET_NAME doa2srv) + set(TARGET_LIB "") + set(TARGET_LIB_GUI "") + set(INSTALL_FOLDER ${INSTALL_PLUGINSSRV_DIR}) +endif() + +add_library(${TARGET_NAME} SHARED + ${doa2_SOURCES} +) + +target_link_libraries(${TARGET_NAME} + Qt5::Core + ${TARGET_LIB} + sdrbase + ${TARGET_LIB_GUI} + swagger +) + +install(TARGETS ${TARGET_NAME} DESTINATION ${INSTALL_FOLDER}) + +# Install debug symbols +if (WIN32) + install(FILES $ CONFIGURATIONS Debug RelWithDebInfo DESTINATION ${INSTALL_FOLDER} ) +endif() diff --git a/plugins/channelmimo/doa2/doa2.cpp b/plugins/channelmimo/doa2/doa2.cpp new file mode 100644 index 000000000..f1e4630f9 --- /dev/null +++ b/plugins/channelmimo/doa2/doa2.cpp @@ -0,0 +1,600 @@ +/////////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2022 Edouard Griffiths, F4EXB // +// // +// This program is free software; you can redistribute it and/or modify // +// it under the terms of the GNU General Public License as published by // +// the Free Software Foundation as version 3 of the License, or // +// (at your option) any later version. // +// // +// This program is distributed in the hope that it will be useful, // +// but WITHOUT ANY WARRANTY; without even the implied warranty of // +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // +// GNU General Public License V3 for more details. // +// // +// You should have received a copy of the GNU General Public License // +// along with this program. If not, see . // +/////////////////////////////////////////////////////////////////////////////////// + +#include +#include +#include +#include +#include + +#include "SWGChannelSettings.h" +#include "SWGWorkspaceInfo.h" + +#include "device/deviceapi.h" +#include "dsp/hbfilterchainconverter.h" +#include "dsp/dspcommands.h" +#include "feature/feature.h" +#include "maincore.h" + +#include "doa2baseband.h" +#include "doa2.h" + +MESSAGE_CLASS_DEFINITION(DOA2::MsgConfigureDOA2, Message) +MESSAGE_CLASS_DEFINITION(DOA2::MsgBasebandNotification, Message) + +const char* const DOA2::m_channelIdURI = "sdrangel.channel.doa2"; +const char* const DOA2::m_channelId = "DOA2"; +const int DOA2::m_fftSize = 4096; + +DOA2::DOA2(DeviceAPI *deviceAPI) : + ChannelAPI(m_channelIdURI, ChannelAPI::StreamMIMO), + m_deviceAPI(deviceAPI), + m_spectrumVis(SDR_RX_SCALEF), + m_guiMessageQueue(nullptr), + m_frequencyOffset(0), + m_deviceSampleRate(48000) +{ + setObjectName(m_channelId); + + m_thread = new QThread(this); + m_basebandSink = new DOA2Baseband(m_fftSize); + m_basebandSink->setSpectrumSink(&m_spectrumVis); + m_basebandSink->setScopeSink(&m_scopeSink); + m_basebandSink->moveToThread(m_thread); + m_deviceAPI->addMIMOChannel(this); + m_deviceAPI->addMIMOChannelAPI(this); + + m_networkManager = new QNetworkAccessManager(); + QObject::connect( + m_networkManager, + &QNetworkAccessManager::finished, + this, + &DOA2::networkManagerFinished + ); +} + +DOA2::~DOA2() +{ + QObject::disconnect( + m_networkManager, + &QNetworkAccessManager::finished, + this, + &DOA2::networkManagerFinished + ); + delete m_networkManager; + + m_deviceAPI->removeChannelSinkAPI(this); + m_deviceAPI->removeMIMOChannel(this); + delete m_basebandSink; + delete m_thread; +} + +void DOA2::setDeviceAPI(DeviceAPI *deviceAPI) +{ + if (deviceAPI != m_deviceAPI) + { + m_deviceAPI->removeChannelSinkAPI(this); + m_deviceAPI->removeMIMOChannel(this); + m_deviceAPI = deviceAPI; + m_deviceAPI->addMIMOChannel(this); + m_deviceAPI->addChannelSinkAPI(this); + } +} + +void DOA2::startSinks() +{ + if (m_deviceSampleRate != 0) { + m_basebandSink->setBasebandSampleRate(m_deviceSampleRate); + } + + m_basebandSink->reset(); + m_thread->start(); + + DOA2Baseband::MsgConfigureChannelizer *msg = DOA2Baseband::MsgConfigureChannelizer::create( + m_settings.m_log2Decim, m_settings.m_filterChainHash); + m_basebandSink->getInputMessageQueue()->push(msg); +} + +void DOA2::stopSinks() +{ + m_thread->exit(); + m_thread->wait(); +} + +void DOA2::feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, unsigned int sinkIndex) +{ + m_basebandSink->feed(begin, end, sinkIndex); +} + +void DOA2::pull(SampleVector::iterator& begin, unsigned int nbSamples, unsigned int sourceIndex) +{ + (void) begin; + (void) nbSamples; + (void) sourceIndex; +} + +void DOA2::applySettings(const DOA2Settings& settings, bool force) +{ + qDebug() << "DOA2::applySettings: " + << "m_correlationType: " << settings.m_correlationType + << "m_filterChainHash: " << settings.m_filterChainHash + << "m_log2Decim: " << settings.m_log2Decim + << "m_phase: " << settings.m_phase + << "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 + << "m_title: " << settings.m_title; + + QList reverseAPIKeys; + + if ((m_settings.m_correlationType != settings.m_correlationType) || force) { + reverseAPIKeys.append("correlationType"); + } + if ((m_settings.m_filterChainHash != settings.m_filterChainHash) || force) { + reverseAPIKeys.append("filterChainHash"); + } + if ((m_settings.m_log2Decim != settings.m_log2Decim) || force) { + reverseAPIKeys.append("log2Decim"); + } + if ((m_settings.m_phase != settings.m_phase) || force) { + reverseAPIKeys.append("phase"); + } + if ((m_settings.m_title != settings.m_title) || force) { + reverseAPIKeys.append("title"); + } + + if ((m_settings.m_log2Decim != settings.m_log2Decim) + || (m_settings.m_filterChainHash != settings.m_filterChainHash) || force) + { + DOA2Baseband::MsgConfigureChannelizer *msg = DOA2Baseband::MsgConfigureChannelizer::create( + settings.m_log2Decim, settings.m_filterChainHash); + m_basebandSink->getInputMessageQueue()->push(msg); + } + + if ((m_settings.m_correlationType != settings.m_correlationType) || force) + { + DOA2Baseband::MsgConfigureCorrelation *msg = DOA2Baseband::MsgConfigureCorrelation::create( + settings.m_correlationType); + m_basebandSink->getInputMessageQueue()->push(msg); + } + + if ((m_settings.m_phase != settings.m_phase) || force) { + m_basebandSink->setPhase(settings.m_phase); + } + + QList pipes; + MainCore::instance()->getMessagePipes().getMessagePipes(this, "settings", pipes); + + if (pipes.size() > 0) { + sendChannelSettings(pipes, reverseAPIKeys, settings, force); + } + + m_settings = settings; +} + +void DOA2::handleInputMessages() +{ + Message* message; + + while ((message = m_inputMessageQueue.pop()) != 0) + { + if (handleMessage(*message)) + { + delete message; + } + } +} + +bool DOA2::handleMessage(const Message& cmd) +{ + if (MsgConfigureDOA2::match(cmd)) + { + MsgConfigureDOA2& cfg = (MsgConfigureDOA2&) cmd; + qDebug() << "DOA2::handleMessage: MsgConfigureDOA2"; + applySettings(cfg.getSettings(), cfg.getForce()); + return true; + } + else if (DSPMIMOSignalNotification::match(cmd)) + { + DSPMIMOSignalNotification& notif = (DSPMIMOSignalNotification&) cmd; + + qDebug() << "DOA2::handleMessage: DSPMIMOSignalNotification:" + << " inputSampleRate: " << notif.getSampleRate() + << " centerFrequency: " << notif.getCenterFrequency() + << " sourceElseSink: " << notif.getSourceOrSink() + << " streamIndex: " << notif.getIndex(); + + if (notif.getSourceOrSink()) // deals with source messages only + { + m_deviceSampleRate = notif.getSampleRate(); + calculateFrequencyOffset(); // This is when device sample rate changes + + // Notify baseband sink of input sample rate change + DOA2Baseband::MsgSignalNotification *sig = DOA2Baseband::MsgSignalNotification::create( + m_deviceSampleRate, notif.getCenterFrequency(), notif.getIndex() + ); + qDebug() << "DOA2::handleMessage: DSPMIMOSignalNotification: push to sink"; + m_basebandSink->getInputMessageQueue()->push(sig); + + if (getMessageQueueToGUI()) + { + qDebug() << "DOA2::handleMessage: DSPMIMOSignalNotification: push to GUI"; + MsgBasebandNotification *msg = MsgBasebandNotification::create( + notif.getSampleRate(), notif.getCenterFrequency()); + getMessageQueueToGUI()->push(msg); + } + } + + return true; + } + else + { + return false; + } +} + +QByteArray DOA2::serialize() const +{ + return m_settings.serialize(); +} + +bool DOA2::deserialize(const QByteArray& data) +{ + (void) data; + if (m_settings.deserialize(data)) + { + MsgConfigureDOA2 *msg = MsgConfigureDOA2::create(m_settings, true); + m_inputMessageQueue.push(msg); + return true; + } + else + { + m_settings.resetToDefaults(); + MsgConfigureDOA2 *msg = MsgConfigureDOA2::create(m_settings, true); + m_inputMessageQueue.push(msg); + return false; + } +} + +void DOA2::validateFilterChainHash(DOA2Settings& settings) +{ + unsigned int s = 1; + + for (unsigned int i = 0; i < settings.m_log2Decim; i++) { + s *= 3; + } + + settings.m_filterChainHash = settings.m_filterChainHash >= s ? s-1 : settings.m_filterChainHash; +} + +void DOA2::calculateFrequencyOffset() +{ + double shiftFactor = HBFilterChainConverter::getShiftFactor(m_settings.m_log2Decim, m_settings.m_filterChainHash); + m_frequencyOffset = m_deviceSampleRate * shiftFactor; +} + +void DOA2::applyChannelSettings(uint32_t log2Decim, uint32_t filterChainHash) +{ + DOA2Baseband::MsgConfigureChannelizer *msg = DOA2Baseband::MsgConfigureChannelizer::create(log2Decim, filterChainHash); + m_basebandSink->getInputMessageQueue()->push(msg); +} + +int DOA2::webapiSettingsGet( + SWGSDRangel::SWGChannelSettings& response, + QString& errorMessage) +{ + (void) errorMessage; + response.setDoa2Settings(new SWGSDRangel::SWGDOA2Settings()); + response.getDoa2Settings()->init(); + webapiFormatChannelSettings(response, m_settings); + return 200; +} + +int DOA2::webapiWorkspaceGet( + SWGSDRangel::SWGWorkspaceInfo& response, + QString& errorMessage) +{ + (void) errorMessage; + response.setIndex(m_settings.m_workspaceIndex); + return 200; +} + +int DOA2::webapiSettingsPutPatch( + bool force, + const QStringList& channelSettingsKeys, + SWGSDRangel::SWGChannelSettings& response, + QString& errorMessage) +{ + (void) errorMessage; + DOA2Settings settings = m_settings; + webapiUpdateChannelSettings(settings, channelSettingsKeys, response); + + MsgConfigureDOA2 *msg = MsgConfigureDOA2::create(settings, force); + m_inputMessageQueue.push(msg); + + if (getMessageQueueToGUI()) // forward to GUI if any + { + MsgConfigureDOA2 *msgToGUI = MsgConfigureDOA2::create(settings, force); + getMessageQueueToGUI()->push(msgToGUI); + } + + webapiFormatChannelSettings(response, settings); + + return 200; +} + +void DOA2::webapiUpdateChannelSettings( + DOA2Settings& settings, + const QStringList& channelSettingsKeys, + SWGSDRangel::SWGChannelSettings& response) +{ + if (channelSettingsKeys.contains("rgbColor")) { + settings.m_rgbColor = response.getDoa2Settings()->getRgbColor(); + } + if (channelSettingsKeys.contains("title")) { + settings.m_title = *response.getDoa2Settings()->getTitle(); + } + if (channelSettingsKeys.contains("log2Decim")) { + settings.m_log2Decim = response.getDoa2Settings()->getLog2Decim(); + } + + if (channelSettingsKeys.contains("filterChainHash")) + { + settings.m_filterChainHash = response.getDoa2Settings()->getFilterChainHash(); + validateFilterChainHash(settings); + } + + if (channelSettingsKeys.contains("useReverseAPI")) { + settings.m_useReverseAPI = response.getDoa2Settings()->getUseReverseApi() != 0; + } + if (channelSettingsKeys.contains("reverseAPIAddress")) { + settings.m_reverseAPIAddress = *response.getDoa2Settings()->getReverseApiAddress(); + } + if (channelSettingsKeys.contains("reverseAPIPort")) { + settings.m_reverseAPIPort = response.getDoa2Settings()->getReverseApiPort(); + } + if (channelSettingsKeys.contains("reverseAPIDeviceIndex")) { + settings.m_reverseAPIDeviceIndex = response.getDoa2Settings()->getReverseApiDeviceIndex(); + } + if (channelSettingsKeys.contains("reverseAPIChannelIndex")) { + settings.m_reverseAPIChannelIndex = response.getDoa2Settings()->getReverseApiChannelIndex(); + } + if (settings.m_spectrumGUI && channelSettingsKeys.contains("spectrumConfig")) { + settings.m_spectrumGUI->updateFrom(channelSettingsKeys, response.getDoa2Settings()->getSpectrumConfig()); + } + if (settings.m_scopeGUI && channelSettingsKeys.contains("scopeConfig")) { + settings.m_scopeGUI->updateFrom(channelSettingsKeys, response.getDoa2Settings()->getScopeConfig()); + } + if (settings.m_channelMarker && channelSettingsKeys.contains("channelMarker")) { + settings.m_channelMarker->updateFrom(channelSettingsKeys, response.getDoa2Settings()->getChannelMarker()); + } + if (settings.m_rollupState && channelSettingsKeys.contains("rollupState")) { + settings.m_rollupState->updateFrom(channelSettingsKeys, response.getDoa2Settings()->getRollupState()); + } +} + +void DOA2::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const DOA2Settings& settings) +{ + response.getDoa2Settings()->setRgbColor(settings.m_rgbColor); + + if (response.getDoa2Settings()->getTitle()) { + *response.getDoa2Settings()->getTitle() = settings.m_title; + } else { + response.getDoa2Settings()->setTitle(new QString(settings.m_title)); + } + + response.getDoa2Settings()->setLog2Decim(settings.m_log2Decim); + response.getDoa2Settings()->setFilterChainHash(settings.m_filterChainHash); + response.getDoa2Settings()->setUseReverseApi(settings.m_useReverseAPI ? 1 : 0); + + if (response.getDoa2Settings()->getReverseApiAddress()) { + *response.getDoa2Settings()->getReverseApiAddress() = settings.m_reverseAPIAddress; + } else { + response.getDoa2Settings()->setReverseApiAddress(new QString(settings.m_reverseAPIAddress)); + } + + response.getDoa2Settings()->setReverseApiPort(settings.m_reverseAPIPort); + response.getDoa2Settings()->setReverseApiDeviceIndex(settings.m_reverseAPIDeviceIndex); + response.getDoa2Settings()->setReverseApiChannelIndex(settings.m_reverseAPIChannelIndex); + + if (settings.m_spectrumGUI) + { + if (response.getDoa2Settings()->getSpectrumConfig()) + { + settings.m_spectrumGUI->formatTo(response.getDoa2Settings()->getSpectrumConfig()); + } + else + { + SWGSDRangel::SWGGLSpectrum *swgGLSpectrum = new SWGSDRangel::SWGGLSpectrum(); + settings.m_spectrumGUI->formatTo(swgGLSpectrum); + response.getDoa2Settings()->setSpectrumConfig(swgGLSpectrum); + } + } + + if (settings.m_scopeGUI) + { + if (response.getDoa2Settings()->getScopeConfig()) + { + settings.m_scopeGUI->formatTo(response.getDoa2Settings()->getScopeConfig()); + } + else + { + SWGSDRangel::SWGGLScope *swgGLScope = new SWGSDRangel::SWGGLScope(); + settings.m_scopeGUI->formatTo(swgGLScope); + response.getDoa2Settings()->setScopeConfig(swgGLScope); + } + } + + if (settings.m_channelMarker) + { + if (response.getDoa2Settings()->getChannelMarker()) + { + settings.m_channelMarker->formatTo(response.getDoa2Settings()->getChannelMarker()); + } + else + { + SWGSDRangel::SWGChannelMarker *swgChannelMarker = new SWGSDRangel::SWGChannelMarker(); + settings.m_channelMarker->formatTo(swgChannelMarker); + response.getDoa2Settings()->setChannelMarker(swgChannelMarker); + } + } + + if (settings.m_rollupState) + { + if (response.getDoa2Settings()->getRollupState()) + { + settings.m_rollupState->formatTo(response.getDoa2Settings()->getRollupState()); + } + else + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + response.getDoa2Settings()->setRollupState(swgRollupState); + } + } +} + +void DOA2::webapiReverseSendSettings(QList& channelSettingsKeys, const DOA2Settings& settings, bool force) +{ + SWGSDRangel::SWGChannelSettings *swgChannelSettings = new SWGSDRangel::SWGChannelSettings(); + webapiFormatChannelSettings(channelSettingsKeys, swgChannelSettings, settings, force); + + QString channelSettingsURL = QString("http://%1:%2/sdrangel/deviceset/%3/channel/%4/settings") + .arg(settings.m_reverseAPIAddress) + .arg(settings.m_reverseAPIPort) + .arg(settings.m_reverseAPIDeviceIndex) + .arg(settings.m_reverseAPIChannelIndex); + m_networkRequest.setUrl(QUrl(channelSettingsURL)); + m_networkRequest.setHeader(QNetworkRequest::ContentTypeHeader, "application/json"); + + QBuffer *buffer = new QBuffer(); + buffer->open((QBuffer::ReadWrite)); + buffer->write(swgChannelSettings->asJson().toUtf8()); + buffer->seek(0); + + // Always use PATCH to avoid passing reverse API settings + QNetworkReply *reply = m_networkManager->sendCustomRequest(m_networkRequest, "PATCH", buffer); + reply->setParent(buffer); + + delete swgChannelSettings; +} + +void DOA2::sendChannelSettings( + const QList& pipes, + QList& channelSettingsKeys, + const DOA2Settings& settings, + bool force) +{ + for (const auto& pipe : pipes) + { + MessageQueue *messageQueue = qobject_cast(pipe->m_element); + + if (messageQueue) + { + SWGSDRangel::SWGChannelSettings *swgChannelSettings = new SWGSDRangel::SWGChannelSettings(); + webapiFormatChannelSettings(channelSettingsKeys, swgChannelSettings, settings, force); + MainCore::MsgChannelSettings *msg = MainCore::MsgChannelSettings::create( + this, + channelSettingsKeys, + swgChannelSettings, + force + ); + messageQueue->push(msg); + } + } +} + +void DOA2::webapiFormatChannelSettings( + QList& channelSettingsKeys, + SWGSDRangel::SWGChannelSettings *swgChannelSettings, + const DOA2Settings& settings, + bool force +) +{ + swgChannelSettings->setDirection(2); // MIMO sink + swgChannelSettings->setOriginatorChannelIndex(getIndexInDeviceSet()); + swgChannelSettings->setOriginatorDeviceSetIndex(getDeviceSetIndex()); + swgChannelSettings->setChannelType(new QString("DOA2")); + swgChannelSettings->setDoa2Settings(new SWGSDRangel::SWGDOA2Settings()); + SWGSDRangel::SWGDOA2Settings *swgDOA2Settings = swgChannelSettings->getDoa2Settings(); + + // transfer data that has been modified. When force is on transfer all data except reverse API data + + if (channelSettingsKeys.contains("rgbColor") || force) { + swgDOA2Settings->setRgbColor(settings.m_rgbColor); + } + if (channelSettingsKeys.contains("title") || force) { + swgDOA2Settings->setTitle(new QString(settings.m_title)); + } + if (channelSettingsKeys.contains("log2Decim") || force) { + swgDOA2Settings->setLog2Decim(settings.m_log2Decim); + } + if (channelSettingsKeys.contains("filterChainHash") || force) { + swgDOA2Settings->setFilterChainHash(settings.m_filterChainHash); + } + + if (settings.m_spectrumGUI) + { + if (channelSettingsKeys.contains("spectrumConfig") || force) { + settings.m_spectrumGUI->formatTo(swgDOA2Settings->getSpectrumConfig()); + } + } + + if (settings.m_scopeGUI) + { + if (channelSettingsKeys.contains("scopeConfig") || force) { + settings.m_scopeGUI->formatTo(swgDOA2Settings->getScopeConfig()); + } + } + + if (settings.m_channelMarker && (channelSettingsKeys.contains("channelMarker") || force)) + { + SWGSDRangel::SWGChannelMarker *swgChannelMarker = new SWGSDRangel::SWGChannelMarker(); + settings.m_channelMarker->formatTo(swgChannelMarker); + swgDOA2Settings->setChannelMarker(swgChannelMarker); + } + + if (settings.m_rollupState && (channelSettingsKeys.contains("rollupState") || force)) + { + SWGSDRangel::SWGRollupState *swgRollupState = new SWGSDRangel::SWGRollupState(); + settings.m_rollupState->formatTo(swgRollupState); + swgDOA2Settings->setRollupState(swgRollupState); + } +} + +void DOA2::networkManagerFinished(QNetworkReply *reply) +{ + QNetworkReply::NetworkError replyError = reply->error(); + + if (replyError) + { + qWarning() << "DOA2::networkManagerFinished:" + << " error(" << (int) replyError + << "): " << replyError + << ": " << reply->errorString(); + } + else + { + QString answer = reply->readAll(); + answer.chop(1); // remove last \n + qDebug("DOA2::networkManagerFinished: reply:\n%s", answer.toStdString().c_str()); + } + + reply->deleteLater(); +} diff --git a/plugins/channelmimo/doa2/doa2.h b/plugins/channelmimo/doa2/doa2.h new file mode 100644 index 000000000..d2ac22d92 --- /dev/null +++ b/plugins/channelmimo/doa2/doa2.h @@ -0,0 +1,197 @@ +/////////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2022 Edouard Griffiths, F4EXB // +// // +// This program is free software; you can redistribute it and/or modify // +// it under the terms of the GNU General Public License as published by // +// the Free Software Foundation as version 3 of the License, or // +// (at your option) any later version. // +// // +// This program is distributed in the hope that it will be useful, // +// but WITHOUT ANY WARRANTY; without even the implied warranty of // +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // +// GNU General Public License V3 for more details. // +// // +// You should have received a copy of the GNU General Public License // +// along with this program. If not, see . // +/////////////////////////////////////////////////////////////////////////////////// + +#ifndef INCLUDE_DOA2_H +#define INCLUDE_DOA2_H + +#include +#include + +#include "dsp/mimochannel.h" +#include "dsp/spectrumvis.h" +#include "dsp/scopevis.h" +#include "channel/channelapi.h" +#include "util/messagequeue.h" +#include "util/message.h" + +#include "doa2settings.h" + +class QThread; +class DeviceAPI; +class DOA2Baseband; +class QNetworkReply; +class QNetworkAccessManager; +class ObjectPipe; + +class DOA2: public MIMOChannel, public ChannelAPI +{ +public: + class MsgConfigureDOA2 : public Message { + MESSAGE_CLASS_DECLARATION + + public: + const DOA2Settings& getSettings() const { return m_settings; } + bool getForce() const { return m_force; } + + static MsgConfigureDOA2* create(const DOA2Settings& settings, bool force) + { + return new MsgConfigureDOA2(settings, force); + } + + private: + DOA2Settings m_settings; + bool m_force; + + MsgConfigureDOA2(const DOA2Settings& settings, bool force) : + Message(), + m_settings(settings), + m_force(force) + { } + }; + + class MsgBasebandNotification : public Message { + MESSAGE_CLASS_DECLARATION + + public: + static MsgBasebandNotification* create(int sampleRate, qint64 centerFrequency) { + return new MsgBasebandNotification(sampleRate, centerFrequency); + } + + int getSampleRate() const { return m_sampleRate; } + qint64 getCenterFrequency() const { return m_centerFrequency; } + + private: + + MsgBasebandNotification(int sampleRate, qint64 centerFrequency) : + Message(), + m_sampleRate(sampleRate), + m_centerFrequency(centerFrequency) + { } + + int m_sampleRate; + qint64 m_centerFrequency; + }; + + DOA2(DeviceAPI *deviceAPI); + virtual ~DOA2(); + virtual void destroy() { delete this; } + virtual void setDeviceAPI(DeviceAPI *deviceAPI); + virtual DeviceAPI *getDeviceAPI() { return m_deviceAPI; } + + virtual void startSinks(); //!< thread start() + virtual void stopSinks(); //!< thread exit() and wait() + virtual void startSources() {} + virtual void stopSources() {} + virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, unsigned int sinkIndex); + virtual void pull(SampleVector::iterator& begin, unsigned int nbSamples, unsigned int sourceIndex); + virtual void pushMessage(Message *msg) { m_inputMessageQueue.push(msg); } + virtual QString getMIMOName() { return objectName(); } + + virtual void getIdentifier(QString& id) { id = objectName(); } + virtual QString getIdentifier() const { return objectName(); } + virtual void getTitle(QString& title) { title = "DOA 2 sources"; } + virtual qint64 getCenterFrequency() const { return m_frequencyOffset; } + virtual void setCenterFrequency(qint64) {} + uint32_t getDeviceSampleRate() const { return m_deviceSampleRate; } + + virtual QByteArray serialize() const; + virtual bool deserialize(const QByteArray& data); + + virtual int getNbSinkStreams() const { return 2; } + virtual int getNbSourceStreams() const { return 0; } + + virtual qint64 getStreamCenterFrequency(int streamIndex, bool sinkElseSource) const + { + (void) streamIndex; + (void) sinkElseSource; + return m_frequencyOffset; + } + + virtual void setMessageQueueToGUI(MessageQueue *queue) { m_guiMessageQueue = queue; } + MessageQueue *getMessageQueueToGUI() { return m_guiMessageQueue; } + + SpectrumVis *getSpectrumVis() { return &m_spectrumVis; } + ScopeVis *getScopeVis() { return &m_scopeSink; } + void applyChannelSettings(uint32_t log2Decim, uint32_t filterChainHash); + + virtual int webapiSettingsGet( + SWGSDRangel::SWGChannelSettings& response, + QString& errorMessage); + + virtual int webapiSettingsPutPatch( + bool force, + const QStringList& channelSettingsKeys, + SWGSDRangel::SWGChannelSettings& response, + QString& errorMessage); + + virtual int webapiWorkspaceGet( + SWGSDRangel::SWGWorkspaceInfo& query, + QString& errorMessage); + + static void webapiFormatChannelSettings( + SWGSDRangel::SWGChannelSettings& response, + const DOA2Settings& settings); + + static void webapiUpdateChannelSettings( + DOA2Settings& settings, + const QStringList& channelSettingsKeys, + SWGSDRangel::SWGChannelSettings& response); + + static const char* const m_channelIdURI; + static const char* const m_channelId; + static const int m_fftSize; + +private: + DeviceAPI *m_deviceAPI; + QThread *m_thread; + SpectrumVis m_spectrumVis; + ScopeVis m_scopeSink; + DOA2Baseband* m_basebandSink; + DOA2Settings m_settings; + MessageQueue *m_guiMessageQueue; //!< Input message queue to the GUI + + QNetworkAccessManager *m_networkManager; + QNetworkRequest m_networkRequest; + + int64_t m_frequencyOffset; + uint32_t m_deviceSampleRate; + int m_count0, m_count1; + + virtual bool handleMessage(const Message& cmd); //!< Processing of a message. Returns true if message has actually been processed + void applySettings(const DOA2Settings& settings, bool force = false); + static void validateFilterChainHash(DOA2Settings& settings); + void calculateFrequencyOffset(); + void webapiReverseSendSettings(QList& channelSettingsKeys, const DOA2Settings& settings, bool force); + void sendChannelSettings( + const QList& pipes, + QList& channelSettingsKeys, + const DOA2Settings& settings, + bool force + ); + void webapiFormatChannelSettings( + QList& channelSettingsKeys, + SWGSDRangel::SWGChannelSettings *swgChannelSettings, + const DOA2Settings& settings, + bool force + ); + +private slots: + void handleInputMessages(); + void networkManagerFinished(QNetworkReply *reply); +}; + +#endif // INCLUDE_DOA2_H diff --git a/plugins/channelmimo/doa2/doa2baseband.cpp b/plugins/channelmimo/doa2/doa2baseband.cpp new file mode 100644 index 000000000..5e68ae239 --- /dev/null +++ b/plugins/channelmimo/doa2/doa2baseband.cpp @@ -0,0 +1,263 @@ +/////////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2022 Edouard Griffiths, F4EXB // +// // +// This program is free software; you can redistribute it and/or modify // +// it under the terms of the GNU General Public License as published by // +// the Free Software Foundation as version 3 of the License, or // +// (at your option) any later version. // +// // +// This program is distributed in the hope that it will be useful, // +// but WITHOUT ANY WARRANTY; without even the implied warranty of // +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // +// GNU General Public License V3 for more details. // +// // +// You should have received a copy of the GNU General Public License // +// along with this program. If not, see . // +/////////////////////////////////////////////////////////////////////////////////// + +#include +#include + +#include "dsp/downchannelizer.h" +#include "dsp/basebandsamplesink.h" +#include "dsp/scopevis.h" +#include "dsp/dspcommands.h" + +#include "doa2baseband.h" +#include "doa2settings.h" + + +MESSAGE_CLASS_DEFINITION(DOA2Baseband::MsgConfigureChannelizer, Message) +MESSAGE_CLASS_DEFINITION(DOA2Baseband::MsgSignalNotification, Message) +MESSAGE_CLASS_DEFINITION(DOA2Baseband::MsgConfigureCorrelation, Message) + +DOA2Baseband::DOA2Baseband(int fftSize) : + m_correlator(fftSize), + m_spectrumSink(nullptr), + m_scopeSink(nullptr), + m_mutex(QMutex::Recursive) +{ + m_sampleMIFifo.init(2, 96000 * 8); + m_vbegin.resize(2); + + for (int i = 0; i < 2; i++) + { + m_sinks[i].setStreamIndex(i); + m_channelizers[i] = new DownChannelizer(&m_sinks[i]); + m_sizes[i] = 0; + } + + QObject::connect( + &m_sampleMIFifo, + &SampleMIFifo::dataSyncReady, + this, + &DOA2Baseband::handleData, + Qt::QueuedConnection + ); + + connect(&m_inputMessageQueue, SIGNAL(messageEnqueued()), this, SLOT(handleInputMessages())); + m_lastStream = 0; +} + +DOA2Baseband::~DOA2Baseband() +{ + for (int i = 0; i < 2; i++) + { + delete m_channelizers[i]; + } +} + +void DOA2Baseband::reset() +{ + QMutexLocker mutexLocker(&m_mutex); + m_sampleMIFifo.reset(); + + for (int i = 0; i < 2; i++) { + m_sinks[i].reset(); + } +} + +void DOA2Baseband::feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, unsigned int streamIndex) +{ + if (streamIndex > 1) { + return; + } + + if (streamIndex == m_lastStream) { + qWarning("DOA2Baseband::feed: twice same stream in a row: %u", streamIndex); + } + + m_lastStream = streamIndex; + m_vbegin[streamIndex] = begin; + m_sizes[streamIndex] = end - begin; + + if (streamIndex == 1) + { + if (m_sizes[0] != m_sizes[1]) + { + qWarning("DOA2Baseband::feed: unequal sizes: [0]: %d [1]: %d", m_sizes[0], m_sizes[1]); + m_sampleMIFifo.writeSync(m_vbegin, std::min(m_sizes[0], m_sizes[1])); + } + else + { + m_sampleMIFifo.writeSync(m_vbegin, m_sizes[0]); + } + } +} + +void DOA2Baseband::handleData() +{ + QMutexLocker mutexLocker(&m_mutex); + + const std::vector& data = m_sampleMIFifo.getData(); + + unsigned int ipart1begin; + unsigned int ipart1end; + unsigned int ipart2begin; + unsigned int ipart2end; + + while ((m_sampleMIFifo.fillSync() > 0) && (m_inputMessageQueue.size() == 0)) + { + m_sampleMIFifo.readSync(ipart1begin, ipart1end, ipart2begin, ipart2end); + + if (ipart1begin != ipart1end) { // first part of FIFO data + processFifo(data, ipart1begin, ipart1end); + } + + if (ipart2begin != ipart2end) { // second part of FIFO data (used when block wraps around) + processFifo(data, ipart2begin, ipart2end); + } + } +} + +void DOA2Baseband::processFifo(const std::vector& data, unsigned int ibegin, unsigned int iend) +{ + for (unsigned int stream = 0; stream < 2; stream++) { + m_channelizers[stream]->feed(data[stream].begin() + ibegin, data[stream].begin() + iend); + } + + run(); +} + +void DOA2Baseband::run() +{ + if (m_correlator.performCorr(m_sinks[0].getData(), m_sinks[0].getSize(), m_sinks[1].getData(), m_sinks[1].getSize())) + { + if (m_scopeSink) + { + std::vector vbegin; + vbegin.push_back(m_correlator.m_tcorr.begin()); + m_scopeSink->feed(vbegin, m_correlator.m_processed); + } + + if (m_spectrumSink) + { + if ((m_correlator.getCorrType() == DOA2Settings::CorrelationFFT) + || (m_correlator.getCorrType() == DOA2Settings::CorrelationIFFT) + || (m_correlator.getCorrType() == DOA2Settings::CorrelationIFFT2) + || (m_correlator.getCorrType() == DOA2Settings::CorrelationIFFTStar)) + { + m_spectrumSink->feed(m_correlator.m_scorr.begin(), m_correlator.m_scorr.begin() + m_correlator.m_processed, false); + } + else + { + m_spectrumSink->feed(m_correlator.m_tcorr.begin(), m_correlator.m_tcorr.begin() + m_correlator.m_processed, false); + } + } + } + + for (int i = 0; i < 2; i++) + { + std::copy( + m_sinks[i].getData().begin() + m_correlator.m_processed, + m_sinks[i].getData().begin() + m_correlator.m_processed + m_correlator.m_remaining[i], + m_sinks[i].getData().begin() + ); + + m_sinks[i].setDataStart(m_correlator.m_remaining[i]); + } +} + +void DOA2Baseband::handleInputMessages() +{ + qDebug("DOA2Baseband::handleInputMessage"); + Message* message; + + while ((message = m_inputMessageQueue.pop()) != 0) + { + if (handleMessage(*message)) { + delete message; + } + } +} + +bool DOA2Baseband::handleMessage(const Message& cmd) +{ + if (MsgConfigureChannelizer::match(cmd)) + { + QMutexLocker mutexLocker(&m_mutex); + MsgConfigureChannelizer& cfg = (MsgConfigureChannelizer&) cmd; + int log2Decim = cfg.getLog2Decim(); + int filterChainHash = cfg.getFilterChainHash(); + + qDebug() << "DOA2Baseband::handleMessage: MsgConfigureChannelizer:" + << " log2Decim: " << log2Decim + << " filterChainHash: " << filterChainHash; + + for (int i = 0; i < 2; i++) + { + m_channelizers[i]->setDecimation(log2Decim, filterChainHash); + m_sinks[i].reset(); + } + + return true; + } + else if (MsgSignalNotification::match(cmd)) + { + QMutexLocker mutexLocker(&m_mutex); + MsgSignalNotification& cfg = (MsgSignalNotification&) cmd; + int inputSampleRate = cfg.getInputSampleRate(); + qint64 centerFrequency = cfg.getCenterFrequency(); + int streamIndex = cfg.getStreamIndex(); + + qDebug() << "DOA2Baseband::handleMessage: MsgSignalNotification:" + << " inputSampleRate: " << inputSampleRate + << " centerFrequency: " << centerFrequency + << " streamIndex: " << streamIndex; + + if (streamIndex < 2) + { + m_channelizers[streamIndex]->setBasebandSampleRate(inputSampleRate); + m_sinks[streamIndex].reset(); + } + + return true; + } + else if (MsgConfigureCorrelation::match(cmd)) + { + QMutexLocker mutexLocker(&m_mutex); + MsgConfigureCorrelation& cfg = (MsgConfigureCorrelation&) cmd; + DOA2Settings::CorrelationType correlationType = cfg.getCorrelationType(); + + qDebug() << "DOA2Baseband::handleMessage: MsgConfigureCorrelation:" + << " correlationType: " << correlationType; + + m_correlator.setCorrType(correlationType); + + return true; + } + else + { + qDebug("DOA2Baseband::handleMessage: unhandled: %s", cmd.getIdentifier()); + return false; + } +} + +void DOA2Baseband ::setBasebandSampleRate(unsigned int sampleRate) +{ + for (int istream = 0; istream < 2; istream++) + { + m_channelizers[istream]->setBasebandSampleRate(sampleRate); + m_sinks[istream].reset(); + } +} diff --git a/plugins/channelmimo/doa2/doa2baseband.h b/plugins/channelmimo/doa2/doa2baseband.h new file mode 100644 index 000000000..7a290a081 --- /dev/null +++ b/plugins/channelmimo/doa2/doa2baseband.h @@ -0,0 +1,137 @@ +/////////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2022 Edouard Griffiths, F4EXB // +// // +// This program is free software; you can redistribute it and/or modify // +// it under the terms of the GNU General Public License as published by // +// the Free Software Foundation as version 3 of the License, or // +// (at your option) any later version. // +// // +// This program is distributed in the hope that it will be useful, // +// but WITHOUT ANY WARRANTY; without even the implied warranty of // +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // +// GNU General Public License V3 for more details. // +// // +// You should have received a copy of the GNU General Public License // +// along with this program. If not, see . // +/////////////////////////////////////////////////////////////////////////////////// + +#ifndef INCLUDE_DOA2BASEBAND_H +#define INCLUDE_DOA2BASEBAND_H + +#include +#include + +#include "dsp/samplemififo.h" +#include "util/messagequeue.h" +#include "doa2streamsink.h" +#include "doa2corr.h" + +class DownChannelizer; +class BasebandSampleSink; +class ScopeVis; + +class DOA2Baseband : public QObject +{ + Q_OBJECT +public: + class MsgConfigureChannelizer : public Message { + MESSAGE_CLASS_DECLARATION + + public: + int getLog2Decim() const { return m_log2Decim; } + int getFilterChainHash() const { return m_filterChainHash; } + + static MsgConfigureChannelizer* create(unsigned int log2Decim, unsigned int filterChainHash) { + return new MsgConfigureChannelizer(log2Decim, filterChainHash); + } + + private: + unsigned int m_log2Decim; + unsigned int m_filterChainHash; + + MsgConfigureChannelizer(unsigned int log2Decim, unsigned int filterChainHash) : + Message(), + m_log2Decim(log2Decim), + m_filterChainHash(filterChainHash) + { } + }; + + class MsgConfigureCorrelation : public Message { + MESSAGE_CLASS_DECLARATION + + public: + DOA2Settings::CorrelationType getCorrelationType() const { return m_correlationType; } + + static MsgConfigureCorrelation *create(DOA2Settings::CorrelationType correlationType) { + return new MsgConfigureCorrelation(correlationType); + } + + private: + DOA2Settings::CorrelationType m_correlationType; + + MsgConfigureCorrelation(DOA2Settings::CorrelationType correlationType) : + Message(), + m_correlationType(correlationType) + {} + }; + + class MsgSignalNotification : public Message { + MESSAGE_CLASS_DECLARATION + + public: + int getInputSampleRate() const { return m_inputSampleRate; } + qint64 getCenterFrequency() const { return m_centerFrequency; } + int getStreamIndex() const { return m_streamIndex; } + + static MsgSignalNotification* create(int inputSampleRate, qint64 centerFrequency, int streamIndex) { + return new MsgSignalNotification(inputSampleRate, centerFrequency, streamIndex); + } + private: + int m_inputSampleRate; + qint64 m_centerFrequency; + int m_streamIndex; + + MsgSignalNotification(int inputSampleRate, qint64 centerFrequency, int streamIndex) : + Message(), + m_inputSampleRate(inputSampleRate), + m_centerFrequency(centerFrequency), + m_streamIndex(streamIndex) + { } + }; + + DOA2Baseband(int fftSize); + ~DOA2Baseband(); + void reset(); + + MessageQueue *getInputMessageQueue() { return &m_inputMessageQueue; } //!< Get the queue for asynchronous inbound communication + + void setSpectrumSink(BasebandSampleSink *spectrumSink) { m_spectrumSink = spectrumSink; } + void setScopeSink(ScopeVis *scopeSink) { m_scopeSink = scopeSink; } + void setPhase(int phase) { m_correlator.setPhase(phase); } + + void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, unsigned int streamIndex); + void setBasebandSampleRate(unsigned int sampleRate); + +private: + void processFifo(const std::vector& data, unsigned int ibegin, unsigned int iend); + void run(); + bool handleMessage(const Message& cmd); + + DOA2Correlator m_correlator; + SampleMIFifo m_sampleMIFifo; + std::vector m_vbegin; + int m_sizes[2]; + DOA2StreamSink m_sinks[2]; + DownChannelizer *m_channelizers[2]; + BasebandSampleSink *m_spectrumSink; + ScopeVis *m_scopeSink; + MessageQueue m_inputMessageQueue; //!< Queue for asynchronous inbound communication + QMutex m_mutex; + unsigned int m_lastStream; + +private slots: + void handleInputMessages(); + void handleData(); //!< Handle data when samples have to be processed +}; + +#endif // INCLUDE_DOA2BASEBAND_H diff --git a/plugins/channelmimo/doa2/doa2corr.cpp b/plugins/channelmimo/doa2/doa2corr.cpp new file mode 100644 index 000000000..1892d00c5 --- /dev/null +++ b/plugins/channelmimo/doa2/doa2corr.cpp @@ -0,0 +1,725 @@ +/////////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2022 Edouard Griffiths, F4EXB // +// // +// This program is free software; you can redistribute it and/or modify // +// it under the terms of the GNU General Public License as published by // +// the Free Software Foundation as version 3 of the License, or // +// (at your option) any later version. // +// // +// This program is distributed in the hope that it will be useful, // +// but WITHOUT ANY WARRANTY; without even the implied warranty of // +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // +// GNU General Public License V3 for more details. // +// // +// You should have received a copy of the GNU General Public License // +// along with this program. If not, see . // +/////////////////////////////////////////////////////////////////////////////////// + +#include +#include + +#include "dsp/dspengine.h" +#include "dsp/fftfactory.h" +#include "dsp/fftengine.h" + +#include "doa2corr.h" + +std::complex s2c(const Sample& s) +{ + return std::complex{s.real() / SDR_RX_SCALEF, s.imag() / SDR_RX_SCALEF}; +} + +std::complex s2cNorm(const Sample& s) +{ + float x = s.real() / SDR_RX_SCALEF; + float y = s.imag() / SDR_RX_SCALEF; + float m = sqrt(x*x + y*y); + return std::complex{x/m, y/m}; +} + +Sample sFirst(const Sample& a, const Sample& b) { + (void) b; + return a; +} + +Sample sSecond(const Sample& a, const Sample& b) { + (void) a; + return b; +} + +Sample sSecondInv(const Sample& a, const Sample& b) { + (void) a; + return Sample{-b.real(), -b.imag()}; +} + +Sample sAdd(const Sample& a, const Sample& b) { //!< Sample addition + return Sample{(a.real()+b.real())/2, (a.imag()+b.imag())/2}; +} + +Sample sAddInv(const Sample& a, const Sample& b) { //!< Sample addition + return Sample{(a.real()-b.real())/2, (a.imag()+b.imag())/2}; +} + +Sample sMulConj(const Sample& a, const Sample& b) { //!< Sample multiply with conjugate + Sample s; + // Integer processing + int64_t ax = a.real(); + int64_t ay = a.imag(); + int64_t bx = b.real(); + int64_t by = b.imag(); + int64_t x = ax*bx + ay*by; + int64_t y = ay*bx - ax*by; + s.setReal(x>>(SDR_RX_SAMP_SZ-1)); + s.setImag(y>>(SDR_RX_SAMP_SZ-1)); + // Floating point processing (in practice there is no significant performance difference) + // float ax = a.real() / SDR_RX_SCALEF; + // float ay = a.imag() / SDR_RX_SCALEF; + // float bx = b.real() / SDR_RX_SCALEF; + // float by = b.imag() / SDR_RX_SCALEF; + // float x = ax*bx + ay*by; + // float y = ay*bx - ax*by; + // s.setReal(x*SDR_RX_SCALEF); + // s.setImag(y*SDR_RX_SCALEF); + return s; +} + +Sample sMulConjInv(const Sample& a, const Sample& b) { //!< Sample multiply with conjugate + Sample s; + // Integer processing + int64_t ax = a.real(); + int64_t ay = a.imag(); + int64_t bx = -b.real(); + int64_t by = -b.imag(); + int64_t x = ax*bx + ay*by; + int64_t y = ay*bx - ax*by; + s.setReal(x>>(SDR_RX_SAMP_SZ-1)); + s.setImag(y>>(SDR_RX_SAMP_SZ-1)); + return s; +} + +Sample invfft2s(const std::complex& a) { //!< Complex float to Sample for 1 side time correlation + Sample s; + s.setReal(a.real()/2.0f); + s.setImag(a.imag()/2.0f); + return s; +} + +Sample invfft2s2(const std::complex& a) { //!< Complex float to Sample for 2 sides time correlation + Sample s; + s.setReal(a.real()); + s.setImag(a.imag()); + return s; +} + +Sample invfft2star(const std::complex& a) { //!< Complex float to Sample for 1 side time correlation + Sample s; + s.setReal(a.real()/2.82842712475f); // 2*sqrt(2) + s.setImag(a.imag()/2.82842712475f); + return s; +} + +DOA2Correlator::DOA2Correlator(int fftSize) : + m_corrType(DOA2Settings::CorrelationAdd), + m_fftSize(fftSize) +{ + setPhase(0); + FFTFactory *fftFactory = DSPEngine::instance()->getFFTFactory(); + m_window.create(FFTWindow::Function::Hanning, fftSize); + m_data0w.resize(m_fftSize); + m_data1w.resize(m_fftSize); + + for (int i = 0; i < 2; i++) + { + m_fftSequences[i] = fftFactory->getEngine(2*fftSize, false, &m_fft[i]); // internally twice the data FFT size + m_fft2Sequences[i] = fftFactory->getEngine(fftSize, false, &m_fft2[i]); + } + + m_invFFTSequence = fftFactory->getEngine(2*fftSize, true, &m_invFFT); + m_invFFT2Sequence = fftFactory->getEngine(fftSize, true, &m_invFFT2); + + m_dataj = new std::complex[2*fftSize]; // receives actual FFT result hence twice the data FFT size + m_scorr.resize(fftSize); + m_tcorr.resize(fftSize); + m_scorrSize = fftSize; + m_tcorrSize = fftSize; +} + +DOA2Correlator::~DOA2Correlator() +{ + FFTFactory *fftFactory = DSPEngine::instance()->getFFTFactory(); + fftFactory->releaseEngine(2*m_fftSize, true, m_invFFTSequence); + fftFactory->releaseEngine(m_fftSize, true, m_invFFT2Sequence); + delete[] m_dataj; + + for (int i = 0; i < 2; i++) + { + fftFactory->releaseEngine(2*m_fftSize, false, m_fftSequences[i]); + fftFactory->releaseEngine(m_fftSize, false, m_fft2Sequences[i]); + } +} + +bool DOA2Correlator::performCorr( + const SampleVector& data0, + unsigned int size0, + const SampleVector& data1, + unsigned int size1 +) +{ + bool results = false; + + if (m_phase == 0) + { + switch (m_corrType) + { + case DOA2Settings::Correlation0: + results = performOpCorr(data0, size0, data1, size1, sFirst); + break; + case DOA2Settings::Correlation1: + results = performOpCorr(data0, size0, data1, size1, sSecond); + break; + case DOA2Settings::CorrelationAdd: + results = performOpCorr(data0, size0, data1, size1, sAdd); + break; + case DOA2Settings::CorrelationMultiply: + results = performOpCorr(data0, size0, data1, size1, sMulConj); + break; + case DOA2Settings::CorrelationIFFT: + results = performIFFTCorr(data0, size0, data1, size1); + break; + case DOA2Settings::CorrelationIFFTStar: + results = performIFFTCorr(data0, size0, data1, size1, true); + break; + case DOA2Settings::CorrelationFFT: + results = performFFTProd(data0, size0, data1, size1); + break; + case DOA2Settings::CorrelationIFFT2: + results = performIFFT2Corr(data0, size0, data1, size1); + break; + default: + break; + } + } + else if ((m_phase == -180) || (m_phase == 180)) + { + if ((m_corrType == DOA2Settings::CorrelationIFFT) + || (m_corrType == DOA2Settings::CorrelationIFFT2) + || (m_corrType == DOA2Settings::CorrelationIFFTStar) + || (m_corrType == DOA2Settings::CorrelationFFT)) + { + if (size1 > m_data1p.size()) { + m_data1p.resize(size1); + } + + std::transform( + data1.begin(), + data1.begin() + size1, + m_data1p.begin(), + [](const Sample& s) -> Sample { + return Sample{-s.real(), -s.imag()}; + } + ); + } + + switch (m_corrType) + { + case DOA2Settings::Correlation0: + results = performOpCorr(data0, size0, data1, size1, sFirst); + break; + case DOA2Settings::Correlation1: + results = performOpCorr(data0, size0, data1, size1, sSecondInv); + break; + case DOA2Settings::CorrelationAdd: + results = performOpCorr(data0, size0, data1, size1, sAddInv); + break; + case DOA2Settings::CorrelationMultiply: + results = performOpCorr(data0, size0, data1, size1, sMulConjInv); + break; + case DOA2Settings::CorrelationIFFT: + results = performIFFTCorr(data0, size0, m_data1p, size1); + break; + case DOA2Settings::CorrelationIFFTStar: + results = performIFFTCorr(data0, size0, m_data1p, size1, true); + break; + case DOA2Settings::CorrelationFFT: + results = performFFTProd(data0, size0, m_data1p, size1); + break; + case DOA2Settings::CorrelationIFFT2: + results = performIFFT2Corr(data0, size0, m_data1p, size1); + break; + default: + break; + } + } + else + { + if (size1 > m_data1p.size()) { + m_data1p.resize(size1); + } + + std::transform( + data1.begin(), + data1.begin() + size1, + m_data1p.begin(), + [this](const Sample& s) -> Sample { + Sample t; + int64_t sx = s.real(); + int64_t sy = s.imag(); + int64_t x = sx*m_cos + sy*m_sin; + int64_t y = sy*m_cos - sx*m_sin; + t.setReal(x>>(SDR_RX_SAMP_SZ-1)); + t.setImag(y>>(SDR_RX_SAMP_SZ-1)); + return t; + } + ); + + switch (m_corrType) + { + case DOA2Settings::Correlation0: + results = performOpCorr(data0, size0, m_data1p, size1, sFirst); + break; + case DOA2Settings::Correlation1: + results = performOpCorr(data0, size0, m_data1p, size1, sSecond); + break; + case DOA2Settings::CorrelationAdd: + results = performOpCorr(data0, size0, m_data1p, size1, sAdd); + break; + case DOA2Settings::CorrelationMultiply: + results = performOpCorr(data0, size0, m_data1p, size1, sMulConj); + break; + case DOA2Settings::CorrelationIFFT: + results = performIFFTCorr(data0, size0, m_data1p, size1); + break; + case DOA2Settings::CorrelationIFFTStar: + results = performIFFTCorr(data0, size0, m_data1p, size1, true); + break; + case DOA2Settings::CorrelationFFT: + results = performFFTProd(data0, size0, m_data1p, size1); + break; + case DOA2Settings::CorrelationIFFT2: + results = performIFFT2Corr(data0, size0, m_data1p, size1); + break; + default: + break; + } + } + + return results; +} + +bool DOA2Correlator::performOpCorr( + const SampleVector& data0, + unsigned int size0, + const SampleVector& data1, + unsigned int size1, + Sample sampleOp(const Sample& a, const Sample& b) +) +{ + unsigned int size = std::min(size0, size1); + adjustTCorrSize(size); + + std::transform( + data0.begin(), + data0.begin() + size, + data1.begin(), + m_tcorr.begin(), + sampleOp + ); + + m_processed = size; + m_remaining[0] = size0 - size; + m_remaining[1] = size1 - size; + return true; +} + +bool DOA2Correlator::performIFFTCorr( + const SampleVector& data0, + unsigned int size0, + const SampleVector& data1, + unsigned int size1, + bool star +) +{ + unsigned int size = std::min(size0, size1); + int nfft = 0; + SampleVector::const_iterator begin0 = data0.begin(); + SampleVector::const_iterator begin1 = data1.begin(); + adjustSCorrSize(size); + adjustTCorrSize(size); + + while (size >= m_fftSize) + { + // FFT[0] + std::transform( + begin0, + begin0 + m_fftSize, + m_fft[0]->in(), + s2c + ); + m_window.apply(m_fft[0]->in()); + std::fill(m_fft[0]->in() + m_fftSize, m_fft[0]->in() + 2*m_fftSize, std::complex{0, 0}); + m_fft[0]->transform(); + + // FFT[1] + std::transform( + begin1, + begin1 + m_fftSize, + m_fft[1]->in(), + s2c + ); + m_window.apply(m_fft[1]->in()); + std::fill(m_fft[1]->in() + m_fftSize, m_fft[1]->in() + 2*m_fftSize, std::complex{0, 0}); + m_fft[1]->transform(); + + // conjugate FFT[1] + std::transform( + m_fft[1]->out(), + m_fft[1]->out() + 2*m_fftSize, + m_dataj, + [](const std::complex& c) -> std::complex { + return std::conj(c); + } + ); + + // product of FFT[1]* with FFT[0] and store in inverse FFT input + std::transform( + m_fft[0]->out(), + m_fft[0]->out() + 2*m_fftSize, + m_dataj, + m_invFFT->in(), + [](std::complex& a, const std::complex& b) -> std::complex { + return (a*b); + } + ); + + // copy product to correlation spectrum - convert and scale to FFT size and Hanning window + std::transform( + m_invFFT->in(), + m_invFFT->in() + m_fftSize, + m_scorr.begin() + nfft*m_fftSize, + [this](const std::complex& a) -> Sample { + Sample s; + s.setReal(a.real()*(SDR_RX_SCALEF/m_fftSize)); + s.setImag(a.imag()*(SDR_RX_SCALEF/m_fftSize)); + return s; + } + ); + + // do the inverse FFT to get time correlation + m_invFFT->transform(); + + if (star) + { + // sum first half with the reversed second half as one is the conjugate of the other this should yield constant phase + *m_tcorr.begin() = invfft2star(m_invFFT->out()[0]); // t = 0 + std::reverse(m_invFFT->out() + m_fftSize, m_invFFT->out() + 2*m_fftSize); + std::transform( + m_invFFT->out() + 1, + m_invFFT->out() + m_fftSize, + m_invFFT->out() + m_fftSize, + m_tcorr.begin() + nfft*m_fftSize, + [](const std::complex& a, const std::complex& b) -> Sample { + Sample s; + std::complex sum = a + b; + s.setReal(sum.real()/12.0f); + s.setImag(sum.imag()/12.0f); + return s; + } + ); + } + else + { + std::transform( + m_invFFT->out(), + m_invFFT->out() + m_fftSize, + m_tcorr.begin() + nfft*m_fftSize, + [](const std::complex& a) -> Sample { + Sample s; + s.setReal(a.real()/6.0f); + s.setImag(a.imag()/6.0f); + return s; + } + ); + } + + size -= m_fftSize; + begin0 += m_fftSize; + begin1 += m_fftSize; + nfft++; + } + + // update the samples counters + m_processed = nfft*m_fftSize; + m_remaining[0] = size0 - nfft*m_fftSize; + m_remaining[1] = size1 - nfft*m_fftSize; + + return nfft > 0; +} + +bool DOA2Correlator::performIFFT2Corr( + const SampleVector& data0, + unsigned int size0, + const SampleVector& data1, + unsigned int size1 +) +{ + unsigned int size = std::min(size0, size1); + int nfft = 0; + SampleVector::const_iterator begin0 = data0.begin(); + SampleVector::const_iterator begin1 = data1.begin(); + adjustSCorrSize(size); + adjustTCorrSize(size); + + while (size >= m_fftSize) + { + // FFT[0] + std::transform( + begin0, + begin0 + m_fftSize, + m_fft2[0]->in(), + s2c + ); + m_window.apply(m_fft2[0]->in()); + m_fft2[0]->transform(); + + // FFT[1] + std::transform( + begin1, + begin1 + m_fftSize, + m_fft2[1]->in(), + s2c + ); + m_window.apply(m_fft2[1]->in()); + m_fft2[1]->transform(); + + // conjugate FFT[1] + std::transform( + m_fft2[1]->out(), + m_fft2[1]->out() + m_fftSize, + m_dataj, + [](const std::complex& c) -> std::complex { + return std::conj(c); + } + ); + + // product of FFT[1]* with FFT[0] and store in inverse FFT input + std::transform( + m_fft2[0]->out(), + m_fft2[0]->out() + m_fftSize, + m_dataj, + m_invFFT2->in(), + [](std::complex& a, const std::complex& b) -> std::complex { + return (a*b); + } + ); + + // copy product to correlation spectrum - convert and scale to FFT size + std::transform( + m_invFFT2->in(), + m_invFFT2->in() + m_fftSize, + m_scorr.begin() + nfft*m_fftSize, + [this](const std::complex& a) -> Sample { + Sample s; + s.setReal(a.real()*(SDR_RX_SCALEF/m_fftSize)); + s.setImag(a.imag()*(SDR_RX_SCALEF/m_fftSize)); + return s; + } + ); + + // do the inverse FFT to get time correlation + m_invFFT2->transform(); + std::transform( + m_invFFT2->out() + m_fftSize/2, + m_invFFT2->out() + m_fftSize, + m_tcorr.begin() + nfft*m_fftSize, + [](const std::complex& a) -> Sample { + Sample s; + s.setReal(a.real()/3.0f); + s.setImag(a.imag()/3.0f); + return s; + } + ); + std::transform( + m_invFFT2->out(), + m_invFFT2->out() + m_fftSize/2, + m_tcorr.begin() + nfft*m_fftSize + m_fftSize/2, + [](const std::complex& a) -> Sample { + Sample s; + s.setReal(a.real()/3.0f); + s.setImag(a.imag()/3.0f); + return s; + } + ); + + size -= m_fftSize; + begin0 += m_fftSize; + begin1 += m_fftSize; + nfft++; + } + + // update the samples counters + m_processed = nfft*m_fftSize; + m_remaining[0] = size0 - nfft*m_fftSize; + m_remaining[1] = size1 - nfft*m_fftSize; + + return nfft > 0; +} + +bool DOA2Correlator::performFFTProd( + const SampleVector& data0, + unsigned int size0, + const SampleVector& data1, + unsigned int size1 +) +{ + unsigned int size = std::min(size0, size1); + int nfft = 0; + SampleVector::const_iterator begin0 = data0.begin(); + SampleVector::const_iterator begin1 = data1.begin(); + adjustSCorrSize(size); + adjustTCorrSize(size); + + while (size >= m_fftSize) + { + // FFT[0] + std::transform( + begin0, + begin0 + m_fftSize, + m_fft2[0]->in(), + s2cNorm + ); + m_window.apply(m_fft2[0]->in()); + m_fft2[0]->transform(); + + // FFT[1] + std::transform( + begin1, + begin1 + m_fftSize, + m_fft2[1]->in(), + s2cNorm + ); + m_window.apply(m_fft2[1]->in()); + m_fft2[1]->transform(); + + // conjugate FFT[1] + std::transform( + m_fft2[1]->out(), + m_fft2[1]->out() + m_fftSize, + m_dataj, + [](const std::complex& c) -> std::complex { + return std::conj(c); + } + ); + + // product of FFT[1]* with FFT[0] and store in both results + std::transform( + m_fft2[0]->out(), + m_fft2[0]->out() + m_fftSize, + m_dataj, + m_invFFT2->in(), + [this](std::complex& a, const std::complex& b) -> std::complex { + return (a*b); + } + ); + + // copy product to time domain - re-order, convert and scale to FFT size + std::transform( + m_invFFT2->in(), + m_invFFT2->in() + m_fftSize/2, + m_tcorr.begin() + nfft*m_fftSize + m_fftSize/2, + [](const std::complex& a) -> Sample { + Sample s; + s.setReal(a.real()/2.0f); + s.setImag(a.imag()/2.0f); + return s; + } + ); + std::transform( + m_invFFT2->in() + m_fftSize/2, + m_invFFT2->in() + m_fftSize, + m_tcorr.begin() + nfft*m_fftSize, + [](const std::complex& a) -> Sample { + Sample s; + s.setReal(a.real()/2.0f); + s.setImag(a.imag()/2.0f); + return s; + } + ); + + // feed spectrum with the sum + std::transform( + begin0, + begin0 + m_fftSize, + begin1, + m_scorr.begin() + nfft*m_fftSize, + sAdd + ); + + size -= m_fftSize; + begin0 += m_fftSize; + begin1 += m_fftSize; + nfft++; + } + + // update the samples counters + m_processed = nfft*m_fftSize; + m_remaining[0] = size0 - nfft*m_fftSize; + m_remaining[1] = size1 - nfft*m_fftSize; + + return nfft > 0; +} + +void DOA2Correlator::adjustSCorrSize(int size) +{ + int nFFTSize = (size/m_fftSize)*m_fftSize; + + if (nFFTSize > m_scorrSize) + { + m_scorr.resize(nFFTSize); + m_scorrSize = nFFTSize; + } +} + +void DOA2Correlator::adjustTCorrSize(int size) +{ + int nFFTSize = (size/m_fftSize)*m_fftSize; + + if (nFFTSize > m_tcorrSize) + { + m_tcorr.resize(nFFTSize); + m_tcorrSize = nFFTSize; + } +} + +void DOA2Correlator::setPhase(int phase) +{ + m_phase = phase; + + if (phase == 0) + { + m_sin = 0; + m_cos = 1<<(SDR_RX_SAMP_SZ-1); + } + else if (phase == 90) + { + m_sin = 1<<(SDR_RX_SAMP_SZ-1); + m_cos = 0; + } + else if (phase == -90) + { + m_sin = -(1<<(SDR_RX_SAMP_SZ-1)); + m_cos = 0; + } + else if ((phase == -180) || (phase == 180)) + { + m_sin = 0; + m_cos = -(1<<(SDR_RX_SAMP_SZ-1)); + } + else + { + m_phase = phase % 180; + double d_sin = sin(M_PI*(m_phase/180.0)) * (1<<(SDR_RX_SAMP_SZ-1)); + double d_cos = cos(M_PI*(m_phase/180.0)) * (1<<(SDR_RX_SAMP_SZ-1)); + m_sin = d_sin; + m_cos = d_cos; + } +} diff --git a/plugins/channelmimo/doa2/doa2corr.h b/plugins/channelmimo/doa2/doa2corr.h new file mode 100644 index 000000000..d08f0aacd --- /dev/null +++ b/plugins/channelmimo/doa2/doa2corr.h @@ -0,0 +1,109 @@ +/////////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2022 Edouard Griffiths, F4EXB // +// // +// This program is free software; you can redistribute it and/or modify // +// it under the terms of the GNU General Public License as published by // +// the Free Software Foundation as version 3 of the License, or // +// (at your option) any later version. // +// // +// This program is distributed in the hope that it will be useful, // +// but WITHOUT ANY WARRANTY; without even the implied warranty of // +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // +// GNU General Public License V3 for more details. // +// // +// You should have received a copy of the GNU General Public License // +// along with this program. If not, see . // +/////////////////////////////////////////////////////////////////////////////////// + +#ifndef INCLUDE_DOA2CORR_H +#define INCLUDE_DOA2CORR_H + +#include +#include + +#include "dsp/dsptypes.h" +#include "dsp/fftwindow.h" +#include "util/message.h" + +#include "doa2settings.h" + +class FFTEngine; + +class DOA2Correlator : public QObject { + Q_OBJECT +public: + DOA2Correlator(int fftSize); + ~DOA2Correlator(); + + void setCorrType(DOA2Settings::CorrelationType corrType) { m_corrType = corrType; } + DOA2Settings::CorrelationType getCorrType() const { return m_corrType; } + bool performCorr( //!< Returns true if results were produced + const SampleVector& data0, + unsigned int size0, + const SampleVector& data1, + unsigned int size1 + ); + int getFullFFTSize() const { return 2*m_fftSize; } + void setPhase(int phase); + + SampleVector m_scorr; //!< raw correlation result (spectrum) - Sample vector expected + SampleVector m_tcorr; //!< correlation result (time or spectrum inverse FFT) - Sample vector expected + int m_processed; //!< number of samples processed at the end of correlation + int m_remaining[2]; //!< number of samples remaining per member at the end of correlation + +signals: + void dataReady(int start, int stop); + +private: + bool performOpCorr( //!< Returns true if results were produced + const SampleVector& data0, + unsigned int size0, + const SampleVector& data1, + unsigned int size1, + Sample sampleOp(const Sample& a, const Sample& b) + ); + bool performIFFTCorr( //!< Returns true if results were produced + const SampleVector& data0, + unsigned int size0, + const SampleVector& data1, + unsigned int size1, + bool star = false + ); + bool performIFFT2Corr( //!< Returns true if results were produced + const SampleVector& data0, + unsigned int size0, + const SampleVector& data1, + unsigned int size1 + ); + bool performFFTProd( //!< Returns true if results were produced + const SampleVector& data0, + unsigned int size0, + const SampleVector& data1, + unsigned int size1 + ); + void adjustSCorrSize(int size); + void adjustTCorrSize(int size); + + DOA2Settings::CorrelationType m_corrType; + unsigned int m_fftSize; //!< FFT length + FFTEngine *m_fft[2]; //!< FFT engines (double FFT) + FFTEngine *m_invFFT; //!< Inverse FFT engine (double FFT) + FFTEngine *m_fft2[2]; //!< FFT engines + FFTEngine *m_invFFT2; //!< Inverse FFT engine + unsigned int m_fftSequences[2]; //!< FFT factory engine sequences + unsigned int m_invFFTSequence; //!< Inverse FFT engine sequence + unsigned int m_fft2Sequences[2]; //!< FFT engines sequences + unsigned int m_invFFT2Sequence; //!< Inverse FFT engine sequence + FFTWindow m_window; //!< FFT window + std::complex *m_dataj; //!< conjuate of FFT transform + SampleVector m_data0w; //!< windowed data 0 + SampleVector m_data1w; //!< windowed data 1 + SampleVector m_data1p; //!< data1 with phase correction + int m_scorrSize; //!< spectrum correlations vector size + int m_tcorrSize; //!< time correlations vector size + int m_phase; //!< phase correction + int64_t m_sin; //!< scaled sine of phase correction + int64_t m_cos; //!< scaled cosine of phase correction +}; + +#endif // INCLUDE_DOA2CORR_H diff --git a/plugins/channelmimo/doa2/doa2gui.cpp b/plugins/channelmimo/doa2/doa2gui.cpp new file mode 100644 index 000000000..d5df47dc3 --- /dev/null +++ b/plugins/channelmimo/doa2/doa2gui.cpp @@ -0,0 +1,372 @@ +/////////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2022 Edouard Griffiths, F4EXB // +// // +// This program is free software; you can redistribute it and/or modify // +// it under the terms of the GNU General Public License as published by // +// the Free Software Foundation as version 3 of the License, or // +// (at your option) any later version. // +// // +// This program is distributed in the hope that it will be useful, // +// but WITHOUT ANY WARRANTY; without even the implied warranty of // +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // +// GNU General Public License V3 for more details. // +// // +// You should have received a copy of the GNU General Public License // +// along with this program. If not, see . // +/////////////////////////////////////////////////////////////////////////////////// + +#include + +#include "device/deviceuiset.h" +#include "gui/basicchannelsettingsdialog.h" +#include "dsp/hbfilterchainconverter.h" +#include "dsp/scopevis.h" +#include "dsp/spectrumvis.h" +#include "maincore.h" + +#include "doa2gui.h" +#include "doa2.h" +#include "ui_doa2gui.h" + +DOA2GUI* DOA2GUI::create(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, MIMOChannel *channelMIMO) +{ + DOA2GUI* gui = new DOA2GUI(pluginAPI, deviceUISet, channelMIMO); + return gui; +} + +void DOA2GUI::destroy() +{ + delete this; +} + +void DOA2GUI::resetToDefaults() +{ + m_settings.resetToDefaults(); + displaySettings(); + applySettings(true); +} + +QByteArray DOA2GUI::serialize() const +{ + return m_settings.serialize(); +} + +bool DOA2GUI::deserialize(const QByteArray& data) +{ + if (m_settings.deserialize(data)) + { + displaySettings(); + applySettings(true); + return true; + } + else + { + resetToDefaults(); + return false; + } +} + +MessageQueue* DOA2GUI::getInputMessageQueue() +{ + return &m_inputMessageQueue; +} + +bool DOA2GUI::handleMessage(const Message& message) +{ + if (DOA2::MsgBasebandNotification::match(message)) + { + DOA2::MsgBasebandNotification& notif = (DOA2::MsgBasebandNotification&) message; + m_sampleRate = notif.getSampleRate(); + m_centerFrequency = notif.getCenterFrequency(); + displayRateAndShift(); + updateAbsoluteCenterFrequency(); + return true; + } + else if (DOA2::MsgConfigureDOA2::match(message)) + { + const DOA2::MsgConfigureDOA2& notif = (const DOA2::MsgConfigureDOA2&) message; + m_settings = notif.getSettings(); + ui->scopeGUI->updateSettings(); + ui->spectrumGUI->updateSettings(); + m_channelMarker.updateSettings(static_cast(m_settings.m_channelMarker)); + displaySettings(); + return true; + } + else + { + return false; + } +} + +DOA2GUI::DOA2GUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, MIMOChannel *channelMIMO, QWidget* parent) : + ChannelGUI(parent), + ui(new Ui::DOA2GUI), + m_pluginAPI(pluginAPI), + m_deviceUISet(deviceUISet), + m_sampleRate(48000), + m_centerFrequency(435000000), + m_tickCount(0) +{ + setAttribute(Qt::WA_DeleteOnClose, true); + m_helpURL = "plugins/channelmimo/doa2/readme.md"; + RollupContents *rollupContents = getRollupContents(); + ui->setupUi(rollupContents); + setSizePolicy(rollupContents->sizePolicy()); + rollupContents->arrangeRollups(); + connect(rollupContents, SIGNAL(widgetRolled(QWidget*,bool)), this, SLOT(onWidgetRolled(QWidget*,bool))); + connect(this, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(onMenuDialogCalled(const QPoint &))); + + m_doa2 = (DOA2*) channelMIMO; + m_spectrumVis = m_doa2->getSpectrumVis(); + m_spectrumVis->setGLSpectrum(ui->glSpectrum); + m_scopeVis = m_doa2->getScopeVis(); + m_scopeVis->setGLScope(ui->glScope); + m_doa2->setMessageQueueToGUI(getInputMessageQueue()); + m_sampleRate = m_doa2->getDeviceSampleRate(); + + ui->glSpectrum->setDisplayWaterfall(true); + ui->glSpectrum->setDisplayMaxHold(true); + ui->glSpectrum->setCenterFrequency(0); + ui->glSpectrum->setSampleRate(m_sampleRate); + ui->glSpectrum->setSsbSpectrum(false); + ui->glSpectrum->setLsbDisplay(false); + ui->glScope->setTraceModulo(DOA2::m_fftSize); + + ui->glScope->connectTimer(MainCore::instance()->getMasterTimer()); + connect(&MainCore::instance()->getMasterTimer(), SIGNAL(timeout()), this, SLOT(tick())); + + m_channelMarker.blockSignals(true); + m_channelMarker.addStreamIndex(1); + m_channelMarker.setColor(m_settings.m_rgbColor); + m_channelMarker.setCenterFrequency(0); + m_channelMarker.setTitle("DOA 2 source"); + m_channelMarker.blockSignals(false); + m_channelMarker.setVisible(true); // activate signal on the last setting only + + m_settings.setChannelMarker(&m_channelMarker); + m_settings.setRollupState(&m_rollupState); + m_settings.setScopeGUI(ui->scopeGUI); + m_settings.setSpectrumGUI(ui->spectrumGUI); + + m_deviceUISet->addChannelMarker(&m_channelMarker); + + ui->spectrumGUI->setBuddies(m_spectrumVis, ui->glSpectrum); + ui->scopeGUI->setBuddies(m_scopeVis->getInputMessageQueue(), m_scopeVis, ui->glScope); + + m_scopeVis->setTraceChunkSize(DOA2::m_fftSize); // Set scope trace length unit to FFT size + ui->scopeGUI->traceLengthChange(); + + connect(getInputMessageQueue(), SIGNAL(messageEnqueued()), this, SLOT(handleSourceMessages())); + + displaySettings(); + makeUIConnections(); + displayRateAndShift(); + applySettings(true); +} + +DOA2GUI::~DOA2GUI() +{ + delete ui; +} + +void DOA2GUI::blockApplySettings(bool block) +{ + m_doApplySettings = !block; +} + +void DOA2GUI::applySettings(bool force) +{ + if (m_doApplySettings) + { + setTitleColor(m_channelMarker.getColor()); + + DOA2::MsgConfigureDOA2* message = DOA2::MsgConfigureDOA2::create(m_settings, force); + m_doa2->getInputMessageQueue()->push(message); + } +} + +void DOA2GUI::displaySettings() +{ + ui->correlationType->setCurrentIndex((int) m_settings.m_correlationType); + + m_channelMarker.blockSignals(true); + m_channelMarker.setCenterFrequency(0); + m_channelMarker.setTitle(m_settings.m_title); + m_channelMarker.setBandwidth(m_sampleRate); + m_channelMarker.setMovable(false); // do not let user move the center arbitrarily + m_channelMarker.blockSignals(false); + m_channelMarker.setColor(m_settings.m_rgbColor); // activate signal on the last setting only + + setTitleColor(m_settings.m_rgbColor); + setWindowTitle(m_channelMarker.getTitle()); + setTitle(m_channelMarker.getTitle()); + + blockApplySettings(true); + ui->decimationFactor->setCurrentIndex(m_settings.m_log2Decim); + applyDecimation(); + ui->phaseCorrection->setValue(m_settings.m_phase); + ui->phaseCorrectionText->setText(tr("%1").arg(m_settings.m_phase)); + getRollupContents()->restoreState(m_rollupState); + updateAbsoluteCenterFrequency(); + blockApplySettings(false); +} + +void DOA2GUI::displayRateAndShift() +{ + int shift = m_shiftFrequencyFactor * m_sampleRate; + double channelSampleRate = ((double) m_sampleRate) / (1<offsetFrequencyText->setText(tr("%1 Hz").arg(loc.toString(shift))); + ui->channelRateText->setText(tr("%1k").arg(QString::number(channelSampleRate / 1000.0, 'g', 5))); + m_channelMarker.setCenterFrequency(shift); + m_channelMarker.setBandwidth(channelSampleRate); + ui->glSpectrum->setSampleRate(channelSampleRate); + m_scopeVis->setLiveRate(channelSampleRate); +} + +void DOA2GUI::leaveEvent(QEvent*) +{ + m_channelMarker.setHighlighted(false); +} + +void DOA2GUI::enterEvent(QEvent*) +{ + m_channelMarker.setHighlighted(true); +} + +void DOA2GUI::handleSourceMessages() +{ + Message* message; + + while ((message = getInputMessageQueue()->pop()) != 0) + { + if (handleMessage(*message)) + { + delete message; + } + } +} + +void DOA2GUI::onWidgetRolled(QWidget* widget, bool rollDown) +{ + (void) widget; + (void) rollDown; + + RollupContents *rollupContents = getRollupContents(); + + if (rollupContents->hasExpandableWidgets()) { + setSizePolicy(sizePolicy().horizontalPolicy(), QSizePolicy::Expanding); + } else { + setSizePolicy(sizePolicy().horizontalPolicy(), QSizePolicy::Fixed); + } + + int h = rollupContents->height() + getAdditionalHeight(); + resize(width(), h); + + rollupContents->saveState(m_rollupState); + applySettings(); +} + +void DOA2GUI::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.setDefaultTitle(m_displayedName); + + dialog.move(p); + dialog.exec(); + + 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); + setTitle(m_channelMarker.getTitle()); + setTitleColor(m_settings.m_rgbColor); + + applySettings(); + } + + resetContextMenuType(); +} + +void DOA2GUI::on_decimationFactor_currentIndexChanged(int index) +{ + m_settings.m_log2Decim = index; + applyDecimation(); +} + +void DOA2GUI::on_position_valueChanged(int value) +{ + m_settings.m_filterChainHash = value; + applyPosition(); +} + +void DOA2GUI::on_phaseCorrection_valueChanged(int value) +{ + m_settings.m_phase = value; + ui->phaseCorrectionText->setText(tr("%1").arg(value)); + applySettings(); +} + +void DOA2GUI::on_correlationType_currentIndexChanged(int index) +{ + m_settings.m_correlationType = (DOA2Settings::CorrelationType) index; + applySettings(); +} + +void DOA2GUI::applyDecimation() +{ + uint32_t maxHash = 1; + + for (uint32_t i = 0; i < m_settings.m_log2Decim; i++) { + maxHash *= 3; + } + + ui->position->setMaximum(maxHash-1); + ui->position->setValue(m_settings.m_filterChainHash); + m_settings.m_filterChainHash = ui->position->value(); + applyPosition(); +} + +void DOA2GUI::applyPosition() +{ + ui->filterChainIndex->setText(tr("%1").arg(m_settings.m_filterChainHash)); + QString s; + m_shiftFrequencyFactor = HBFilterChainConverter::convertToString(m_settings.m_log2Decim, m_settings.m_filterChainHash, s); + ui->filterChainText->setText(s); + + displayRateAndShift(); + updateAbsoluteCenterFrequency(); + applySettings(); +} + +void DOA2GUI::tick() +{ + if (++m_tickCount == 20) { // once per second + m_tickCount = 0; + } +} + +void DOA2GUI::makeUIConnections() +{ + QObject::connect(ui->decimationFactor, QOverload::of(&QComboBox::currentIndexChanged), this, &DOA2GUI::on_decimationFactor_currentIndexChanged); + QObject::connect(ui->position, &QSlider::valueChanged, this, &DOA2GUI::on_position_valueChanged); + QObject::connect(ui->phaseCorrection, &QSlider::valueChanged, this, &DOA2GUI::on_phaseCorrection_valueChanged); + QObject::connect(ui->correlationType, QOverload::of(&QComboBox::currentIndexChanged), this, &DOA2GUI::on_correlationType_currentIndexChanged); +} + +void DOA2GUI::updateAbsoluteCenterFrequency() +{ + setStatusFrequency(m_centerFrequency + m_shiftFrequencyFactor * m_sampleRate); +} diff --git a/plugins/channelmimo/doa2/doa2gui.h b/plugins/channelmimo/doa2/doa2gui.h new file mode 100644 index 000000000..524b67b04 --- /dev/null +++ b/plugins/channelmimo/doa2/doa2gui.h @@ -0,0 +1,107 @@ +/////////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2022 Edouard Griffiths, F4EXB // +// // +// This program is free software; you can redistribute it and/or modify // +// it under the terms of the GNU General Public License as published by // +// the Free Software Foundation as version 3 of the License, or // +// (at your option) any later version. // +// // +// This program is distributed in the hope that it will be useful, // +// but WITHOUT ANY WARRANTY; without even the implied warranty of // +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // +// GNU General Public License V3 for more details. // +// // +// You should have received a copy of the GNU General Public License // +// along with this program. If not, see . // +/////////////////////////////////////////////////////////////////////////////////// + +#ifndef INCLUDE_DOA2GUI_H +#define INCLUDE_DOA2GUI_H + +#include "channel/channelgui.h" +#include "dsp/channelmarker.h" +#include "util/movingaverage.h" +#include "util/messagequeue.h" +#include "settings/rollupstate.h" + +#include "doa2settings.h" + +class PluginAPI; +class DeviceUISet; +class MIMOChannel; +class DOA2; +class SpectrumVis; +class ScopeVis; + +namespace Ui { + class DOA2GUI; +} + +class DOA2GUI : public ChannelGUI { + Q_OBJECT +public: + static DOA2GUI* create(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, MIMOChannel *mimoChannel); + + virtual void destroy(); + virtual void resetToDefaults(); + virtual QByteArray serialize() const; + virtual bool deserialize(const QByteArray& data); + virtual MessageQueue* getInputMessageQueue(); + virtual void setWorkspaceIndex(int index) { m_settings.m_workspaceIndex = index; }; + virtual int getWorkspaceIndex() const { return m_settings.m_workspaceIndex; }; + virtual void setGeometryBytes(const QByteArray& blob) { m_settings.m_geometryBytes = blob; }; + virtual QByteArray getGeometryBytes() const { return m_settings.m_geometryBytes; }; + virtual QString getTitle() const { return m_settings.m_title; }; + virtual QColor getTitleColor() const { return m_settings.m_rgbColor; }; + virtual void zetHidden(bool hidden) { m_settings.m_hidden = hidden; } + virtual bool getHidden() const { return m_settings.m_hidden; } + virtual ChannelMarker& getChannelMarker() { return m_channelMarker; } + virtual int getStreamIndex() const { return -1; } + virtual void setStreamIndex(int streamIndex) { (void) streamIndex; } + +private: + Ui::DOA2GUI* ui; + PluginAPI* m_pluginAPI; + DeviceUISet* m_deviceUISet; + ChannelMarker m_channelMarker; + RollupState m_rollupState; + DOA2Settings m_settings; + int m_sampleRate; + qint64 m_centerFrequency; + double m_shiftFrequencyFactor; //!< Channel frequency shift factor + bool m_doApplySettings; + MovingAverageUtil m_channelPowerAvg; + DOA2 *m_doa2; + SpectrumVis* m_spectrumVis; + ScopeVis* m_scopeVis; + MessageQueue m_inputMessageQueue; + uint32_t m_tickCount; + + explicit DOA2GUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, MIMOChannel *rxChannel, QWidget* parent = nullptr); + virtual ~DOA2GUI(); + + void blockApplySettings(bool block); + void applySettings(bool force = false); + void applyDecimation(); + void applyPosition(); + void displaySettings(); + void displayRateAndShift(); + bool handleMessage(const Message& message); + void makeUIConnections(); + void updateAbsoluteCenterFrequency(); + + void leaveEvent(QEvent*); + void enterEvent(QEvent*); + +private slots: + void handleSourceMessages(); + void on_decimationFactor_currentIndexChanged(int index); + void on_position_valueChanged(int value); + void on_phaseCorrection_valueChanged(int value); + void on_correlationType_currentIndexChanged(int index); + void onWidgetRolled(QWidget* widget, bool rollDown); + void onMenuDialogCalled(const QPoint& p); + void tick(); +}; + +#endif // INCLUDE_DOA2GUI_H diff --git a/plugins/channelmimo/doa2/doa2gui.ui b/plugins/channelmimo/doa2/doa2gui.ui new file mode 100644 index 000000000..2c74e8f9f --- /dev/null +++ b/plugins/channelmimo/doa2/doa2gui.ui @@ -0,0 +1,529 @@ + + + DOA2GUI + + + + 0 + 0 + 720 + 770 + + + + + 0 + 0 + + + + + 720 + 0 + + + + + Liberation Sans + 9 + + + + DOA 2 Sources + + + + + 0 + 10 + 718 + 81 + + + + + 718 + 0 + + + + Settings + + + + 3 + + + 2 + + + 2 + + + 2 + + + 2 + + + + + 3 + + + + + + + Dec + + + + + + + + 55 + 16777215 + + + + Decimation factor + + + + 1 + + + + + 2 + + + + + 4 + + + + + 8 + + + + + 16 + + + + + 32 + + + + + 64 + + + + + + + + + 50 + 0 + + + + Effective channel rate (kS/s) + + + 0000k + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 50 + 0 + + + + Filter chain stages left to right (L: low, C: center, H: high) + + + LLLLLL + + + + + + + Qt::Vertical + + + + + + + Corr + + + + + + + Correlation type + + + + A + + + + + B + + + + + A+B + + + + + A.B* + + + + + IFFT + + + + + IFFT* + + + + + FFT + + + + + IFFT2 + + + + + + + + Ph + + + + + + + Phase correction on stream 1 + + + -180 + + + 180 + + + 1 + + + Qt::Horizontal + + + + + + + + 28 + 0 + + + + Phase correction on stream 1 in degrees + + + -180 + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 85 + 0 + + + + Offset frequency with thousands separator (Hz) + + + -9,999,999 Hz + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + 10 + + + + + Pos + + + + + + + Center frequency position + + + 2 + + + 1 + + + Qt::Horizontal + + + + + + + + 24 + 0 + + + + Filter chain hash code + + + 000 + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + + + + 0 + 98 + 720 + 284 + + + + + 0 + 0 + + + + + 718 + 0 + + + + Frequency domain + + + + 2 + + + 2 + + + 2 + + + 2 + + + 2 + + + + + + 0 + 0 + + + + + 200 + 250 + + + + + Liberation Mono + 8 + + + + + + + + + + + + + 0 + 390 + 720 + 334 + + + + + 0 + 0 + + + + + 718 + 0 + + + + Time domain + + + + 2 + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + 0 + 0 + + + + + 200 + 300 + + + + + Liberation Mono + 8 + + + + + + + + + + + + + RollupContents + QWidget +
gui/rollupcontents.h
+ 1 +
+ + GLSpectrum + QWidget +
gui/glspectrum.h
+ 1 +
+ + GLSpectrumGUI + QWidget +
gui/glspectrumgui.h
+ 1 +
+ + GLScope + QWidget +
gui/glscope.h
+ 1 +
+ + GLScopeGUI + QWidget +
gui/glscopegui.h
+ 1 +
+
+ + + + +
diff --git a/plugins/channelmimo/doa2/doa2plugin.cpp b/plugins/channelmimo/doa2/doa2plugin.cpp new file mode 100644 index 000000000..5461a0cd4 --- /dev/null +++ b/plugins/channelmimo/doa2/doa2plugin.cpp @@ -0,0 +1,94 @@ +/////////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2022 Edouard Griffiths, F4EXB // +// // +// This program is free software; you can redistribute it and/or modify // +// it under the terms of the GNU General Public License as published by // +// the Free Software Foundation as version 3 of the License, or // +// (at your option) any later version. // +// // +// This program is distributed in the hope that it will be useful, // +// but WITHOUT ANY WARRANTY; without even the implied warranty of // +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // +// GNU General Public License V3 for more details. // +// // +// You should have received a copy of the GNU General Public License // +// along with this program. If not, see . // +/////////////////////////////////////////////////////////////////////////////////// + +#include "doa2plugin.h" + +#include +#include "plugin/pluginapi.h" + +#ifndef SERVER_MODE +#include "doa2gui.h" +#endif +#include "doa2.h" +#include "doa2webapiadapter.h" +#include "doa2plugin.h" + +const PluginDescriptor DOA2Plugin::m_pluginDescriptor = { + DOA2::m_channelId, + QStringLiteral("DOA 2 sources"), + QStringLiteral("7.3.0"), + QStringLiteral("(c) Edouard Griffiths, F4EXB"), + QStringLiteral("https://github.com/f4exb/sdrangel"), + true, + QStringLiteral("https://github.com/f4exb/sdrangel") +}; + +DOA2Plugin::DOA2Plugin(QObject* parent) : + QObject(parent), + m_pluginAPI(0) +{ +} + +const PluginDescriptor& DOA2Plugin::getPluginDescriptor() const +{ + return m_pluginDescriptor; +} + +void DOA2Plugin::initPlugin(PluginAPI* pluginAPI) +{ + m_pluginAPI = pluginAPI; + + // register channel MIMO + m_pluginAPI->registerMIMOChannel(DOA2::m_channelIdURI, DOA2::m_channelId, this); +} + +void DOA2Plugin::createMIMOChannel(DeviceAPI *deviceAPI, MIMOChannel **bs, ChannelAPI **cs) const +{ + if (bs || cs) + { + DOA2 *instance = new DOA2(deviceAPI); + + if (bs) { + *bs = instance; + } + + if (cs) { + *cs = instance; + } + } +} + +#ifdef SERVER_MODE +ChannelGUI* DOA2Plugin::createMIMOChannelGUI( + DeviceUISet *deviceUISet, + MIMOChannel *mimoChannel) const +{ + (void) deviceUISet; + (void) mimoChannel; + return nullptr; +} +#else +ChannelGUI* DOA2Plugin::createMIMOChannelGUI(DeviceUISet *deviceUISet, MIMOChannel *mimoChannel) const +{ + return DOA2GUI::create(m_pluginAPI, deviceUISet, mimoChannel); +} +#endif + +ChannelWebAPIAdapter* DOA2Plugin::createChannelWebAPIAdapter() const +{ + return new DOA2WebAPIAdapter(); +} diff --git a/plugins/channelmimo/doa2/doa2plugin.h b/plugins/channelmimo/doa2/doa2plugin.h new file mode 100644 index 000000000..384e6d22c --- /dev/null +++ b/plugins/channelmimo/doa2/doa2plugin.h @@ -0,0 +1,49 @@ +/////////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2022 Edouard Griffiths, F4EXB // +// // +// This program is free software; you can redistribute it and/or modify // +// it under the terms of the GNU General Public License as published by // +// the Free Software Foundation as version 3 of the License, or // +// (at your option) any later version. // +// // +// This program is distributed in the hope that it will be useful, // +// but WITHOUT ANY WARRANTY; without even the implied warranty of // +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // +// GNU General Public License V3 for more details. // +// // +// You should have received a copy of the GNU General Public License // +// along with this program. If not, see . // +/////////////////////////////////////////////////////////////////////////////////// + +#ifndef PLUGINS_CHANNELMIMO_DOA2_DOA2PLUGIN_H_ +#define PLUGINS_CHANNELMIMO_DOA2_DOA2PLUGIN_H_ + + +#include +#include "plugin/plugininterface.h" + +class DeviceUISet; +class MIMOChannel; + +class DOA2Plugin : public QObject, PluginInterface { + Q_OBJECT + Q_INTERFACES(PluginInterface) + Q_PLUGIN_METADATA(IID "sdrangel.channelmimo.doa2") + +public: + explicit DOA2Plugin(QObject* parent = nullptr); + + const PluginDescriptor& getPluginDescriptor() const; + void initPlugin(PluginAPI* pluginAPI); + + virtual void createMIMOChannel(DeviceAPI *deviceAPI, MIMOChannel **bs, ChannelAPI **cs) const; + virtual ChannelGUI* createMIMOChannelGUI(DeviceUISet *deviceUISet, MIMOChannel *mimoChannel) const; + virtual ChannelWebAPIAdapter* createChannelWebAPIAdapter() const; + +private: + static const PluginDescriptor m_pluginDescriptor; + + PluginAPI* m_pluginAPI; +}; + +#endif /* PLUGINS_CHANNELMIMO_DOA2_DOA2PLUGIN_H_ */ diff --git a/plugins/channelmimo/doa2/doa2settings.cpp b/plugins/channelmimo/doa2/doa2settings.cpp new file mode 100644 index 000000000..8aaf66475 --- /dev/null +++ b/plugins/channelmimo/doa2/doa2settings.cpp @@ -0,0 +1,160 @@ +/////////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2022 Edouard Griffiths, F4EXB // +// // +// This program is free software; you can redistribute it and/or modify // +// it under the terms of the GNU General Public License as published by // +// the Free Software Foundation as version 3 of the License, or // +// (at your option) any later version. // +// // +// This program is distributed in the hope that it will be useful, // +// but WITHOUT ANY WARRANTY; without even the implied warranty of // +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // +// GNU General Public License V3 for more details. // +// // +// You should have received a copy of the GNU General Public License // +// along with this program. If not, see . // +/////////////////////////////////////////////////////////////////////////////////// + +#include + +#include "dsp/dspengine.h" +#include "util/simpleserializer.h" +#include "settings/serializable.h" + +#include "doa2settings.h" + +DOA2Settings::DOA2Settings() : + m_channelMarker(nullptr), + m_spectrumGUI(nullptr), + m_scopeGUI(nullptr), + m_rollupState(nullptr) +{ + resetToDefaults(); +} + +void DOA2Settings::resetToDefaults() +{ + m_correlationType = CorrelationAdd; + m_rgbColor = QColor(250, 174, 120).rgb(); + m_title = "DOA 2 sources"; + m_log2Decim = 0; + m_filterChainHash = 0; + m_phase = 0; + m_reverseAPIAddress = "127.0.0.1"; + m_reverseAPIPort = 8888; + m_reverseAPIDeviceIndex = 0; + m_reverseAPIChannelIndex = 0; + m_workspaceIndex = 0; + m_hidden = false; +} + +QByteArray DOA2Settings::serialize() const +{ + SimpleSerializer s(1); + + s.writeS32(2, (int) m_correlationType); + s.writeU32(3, m_rgbColor); + s.writeString(4, m_title); + s.writeU32(5, m_log2Decim); + s.writeU32(6, m_filterChainHash); + s.writeBool(7, m_useReverseAPI); + s.writeString(8, m_reverseAPIAddress); + s.writeU32(9, m_reverseAPIPort); + s.writeU32(10, m_reverseAPIDeviceIndex); + s.writeU32(11, m_reverseAPIChannelIndex); + s.writeS32(12, m_phase); + s.writeS32(13,m_workspaceIndex); + s.writeBlob(14, m_geometryBytes); + s.writeBool(15, m_hidden); + + if (m_spectrumGUI) { + s.writeBlob(20, m_spectrumGUI->serialize()); + } + if (m_scopeGUI) { + s.writeBlob(21, m_scopeGUI->serialize()); + } + if (m_channelMarker) { + s.writeBlob(22, m_channelMarker->serialize()); + } + if (m_rollupState) { + s.writeBlob(23, m_rollupState->serialize()); + } + + return s.final(); +} + +bool DOA2Settings::deserialize(const QByteArray& data) +{ + SimpleDeserializer d(data); + + if(!d.isValid()) + { + resetToDefaults(); + return false; + } + + if(d.getVersion() == 1) + { + QByteArray bytetmp; + int tmp; + quint32 utmp; + + d.readS32(2, &tmp, 0); + m_correlationType = (CorrelationType) tmp; + d.readU32(3, &m_rgbColor); + d.readString(4, &m_title, "Interpolator"); + d.readU32(5, &utmp, 0); + m_log2Decim = utmp > 6 ? 6 : utmp; + d.readU32(6, &m_filterChainHash, 0); + d.readBool(7, &m_useReverseAPI, false); + d.readString(8, &m_reverseAPIAddress, "127.0.0.1"); + d.readU32(9, &utmp, 0); + + if ((utmp > 1023) && (utmp < 65535)) { + m_reverseAPIPort = utmp; + } else { + m_reverseAPIPort = 8888; + } + + d.readU32(10, &utmp, 0); + m_reverseAPIDeviceIndex = utmp > 99 ? 99 : utmp; + d.readU32(11, &utmp, 0); + m_reverseAPIChannelIndex = utmp > 99 ? 99 : utmp; + d.readS32(12, &tmp, 0); + m_phase = tmp < -180 ? -180 : tmp > 180 ? 180 : tmp; + d.readS32(13, &m_workspaceIndex); + d.readBlob(14, &m_geometryBytes); + d.readBool(15, &m_hidden, false); + + if (m_spectrumGUI) + { + d.readBlob(20, &bytetmp); + m_spectrumGUI->deserialize(bytetmp); + } + + if (m_scopeGUI) + { + d.readBlob(21, &bytetmp); + m_scopeGUI->deserialize(bytetmp); + } + + if (m_channelMarker) + { + d.readBlob(22, &bytetmp); + m_channelMarker->deserialize(bytetmp); + } + + if (m_rollupState) + { + d.readBlob(23, &bytetmp); + m_rollupState->deserialize(bytetmp); + } + + return true; + } + else + { + resetToDefaults(); + return false; + } +} diff --git a/plugins/channelmimo/doa2/doa2settings.h b/plugins/channelmimo/doa2/doa2settings.h new file mode 100644 index 000000000..591b02ffc --- /dev/null +++ b/plugins/channelmimo/doa2/doa2settings.h @@ -0,0 +1,70 @@ +/////////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2022 Edouard Griffiths, F4EXB // +// // +// This program is free software; you can redistribute it and/or modify // +// it under the terms of the GNU General Public License as published by // +// the Free Software Foundation as version 3 of the License, or // +// (at your option) any later version. // +// // +// This program is distributed in the hope that it will be useful, // +// but WITHOUT ANY WARRANTY; without even the implied warranty of // +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // +// GNU General Public License V3 for more details. // +// // +// You should have received a copy of the GNU General Public License // +// along with this program. If not, see . // +/////////////////////////////////////////////////////////////////////////////////// + +#ifndef INCLUDE_DOA2SETTINGS_H +#define INCLUDE_DOA2SETTINGS_H + +#include +#include + +class Serializable; + +struct DOA2Settings +{ + enum CorrelationType + { + Correlation0, + Correlation1, + CorrelationAdd, + CorrelationMultiply, + CorrelationIFFT, + CorrelationIFFTStar, + CorrelationFFT, + CorrelationIFFT2 + }; + + CorrelationType m_correlationType; + quint32 m_rgbColor; + QString m_title; + uint32_t m_log2Decim; + uint32_t m_filterChainHash; + int m_phase; + bool m_useReverseAPI; + QString m_reverseAPIAddress; + uint16_t m_reverseAPIPort; + uint16_t m_reverseAPIDeviceIndex; + uint16_t m_reverseAPIChannelIndex; + int m_workspaceIndex; + QByteArray m_geometryBytes; + bool m_hidden; + + Serializable *m_channelMarker; + Serializable *m_spectrumGUI; + Serializable *m_scopeGUI; + Serializable *m_rollupState; + + DOA2Settings(); + void resetToDefaults(); + void setRollupState(Serializable *rollupState) { m_rollupState = rollupState; } + void setChannelMarker(Serializable *channelMarker) { m_channelMarker = channelMarker; } + void setSpectrumGUI(Serializable *spectrumGUI) { m_spectrumGUI = spectrumGUI; } + void setScopeGUI(Serializable *scopeGUI) { m_scopeGUI = scopeGUI; } + QByteArray serialize() const; + bool deserialize(const QByteArray& data); +}; + +#endif // INCLUDE_DOA2SETTINGS_H diff --git a/plugins/channelmimo/doa2/doa2streamsink.cpp b/plugins/channelmimo/doa2/doa2streamsink.cpp new file mode 100644 index 000000000..0c83eb2a5 --- /dev/null +++ b/plugins/channelmimo/doa2/doa2streamsink.cpp @@ -0,0 +1,49 @@ +/////////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2022 Edouard Griffiths, F4EXB // +// // +// This program is free software; you can redistribute it and/or modify // +// it under the terms of the GNU General Public License as published by // +// the Free Software Foundation as version 3 of the License, or // +// (at your option) any later version. // +// // +// This program is distributed in the hope that it will be useful, // +// but WITHOUT ANY WARRANTY; without even the implied warranty of // +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // +// GNU General Public License V3 for more details. // +// // +// You should have received a copy of the GNU General Public License // +// along with this program. If not, see . // +/////////////////////////////////////////////////////////////////////////////////// + +#include +#include + +#include "doa2streamsink.h" + +DOA2StreamSink::DOA2StreamSink() : + m_streamIndex(0), + m_dataSize(0), + m_bufferSize(0), + m_dataStart(0) +{} + +DOA2StreamSink::~DOA2StreamSink() +{} + +void DOA2StreamSink::feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end) +{ + m_dataSize = (end - begin) + m_dataStart; + + if (m_dataSize > m_bufferSize) + { + m_data.resize(m_dataSize); + m_bufferSize = m_dataSize; + } + + std::copy(begin, end, m_data.begin() + m_dataStart); +} + +void DOA2StreamSink::reset() +{ + m_dataStart = 0; +} diff --git a/plugins/channelmimo/doa2/doa2streamsink.h b/plugins/channelmimo/doa2/doa2streamsink.h new file mode 100644 index 000000000..01829b992 --- /dev/null +++ b/plugins/channelmimo/doa2/doa2streamsink.h @@ -0,0 +1,51 @@ +/////////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2022 Edouard Griffiths, F4EXB // +// // +// This program is free software; you can redistribute it and/or modify // +// it under the terms of the GNU General Public License as published by // +// the Free Software Foundation as version 3 of the License, or // +// (at your option) any later version. // +// // +// This program is distributed in the hope that it will be useful, // +// but WITHOUT ANY WARRANTY; without even the implied warranty of // +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // +// GNU General Public License V3 for more details. // +// // +// You should have received a copy of the GNU General Public License // +// along with this program. If not, see . // +/////////////////////////////////////////////////////////////////////////////////// + +#ifndef SDRBASE_DOA2STREAMSINK_H_ +#define SDRBASE_DOA2STREAMSINK_H_ + +#include "dsp/channelsamplesink.h" + + +class DOA2StreamSink : public ChannelSampleSink +{ +public: + DOA2StreamSink(); + virtual ~DOA2StreamSink(); + + virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end); + + void reset(); + unsigned int getStreamIndex() const { return m_streamIndex; } + void setStreamIndex(unsigned int streamIndex) { m_streamIndex = streamIndex; } + SampleVector& getData() { return m_data; } + int getSize() const { return m_dataSize; } + void setDataStart(int dataStart) { m_dataStart = dataStart; } + +private: + unsigned int m_streamIndex; + SampleVector m_data; + int m_dataSize; + int m_bufferSize; + int m_dataStart; + + uint32_t m_log2Decim; + uint32_t m_filterChainHash; +}; + + +#endif // SDRBASE_DOA2STREAMSINK_H_ diff --git a/plugins/channelmimo/doa2/doa2webapiadapter.cpp b/plugins/channelmimo/doa2/doa2webapiadapter.cpp new file mode 100644 index 000000000..d27cce89e --- /dev/null +++ b/plugins/channelmimo/doa2/doa2webapiadapter.cpp @@ -0,0 +1,385 @@ +/////////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2022 Edouard Griffiths, F4EXB. // +// // +// This program is free software; you can redistribute it and/or modify // +// it under the terms of the GNU General Public License as published by // +// the Free Software Foundation as version 3 of the License, or // +// (at your option) any later version. // +// // +// This program is distributed in the hope that it will be useful, // +// but WITHOUT ANY WARRANTY; without even the implied warranty of // +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // +// GNU General Public License V3 for more details. // +// // +// You should have received a copy of the GNU General Public License // +// along with this program. If not, see . // +/////////////////////////////////////////////////////////////////////////////////// + +#include + +#include "SWGChannelSettings.h" +#include "doa2webapiadapter.h" + +DOA2WebAPIAdapter::DOA2WebAPIAdapter() +{ + m_settings.setScopeGUI(&m_glScopeSettings); + m_settings.setSpectrumGUI(&m_SpectrumSettings); +} + +DOA2WebAPIAdapter::~DOA2WebAPIAdapter() +{} + +int DOA2WebAPIAdapter::webapiSettingsGet( + SWGSDRangel::SWGChannelSettings& response, + QString& errorMessage) +{ + (void) errorMessage; + response.setDoa2Settings(new SWGSDRangel::SWGDOA2Settings()); + response.getDoa2Settings()->init(); + webapiFormatChannelSettings(response, m_settings, m_glScopeSettings, m_SpectrumSettings); + return 200; +} + +void DOA2WebAPIAdapter::webapiFormatChannelSettings( + SWGSDRangel::SWGChannelSettings& response, + const DOA2Settings& settings, + const GLScopeSettings& scopeSettings, + const SpectrumSettings& spectrumSettings) +{ + response.getDoa2Settings()->setCorrelationType((int) settings.m_correlationType); + response.getDoa2Settings()->setRgbColor(settings.m_rgbColor); + response.getDoa2Settings()->setTitle(new QString(settings.m_title)); + + // scope + SWGSDRangel::SWGGLScope *swgScope = new SWGSDRangel::SWGGLScope(); + swgScope->init(); + response.getDoa2Settings()->setScopeConfig(swgScope); + swgScope->setDisplayMode(scopeSettings.m_displayMode); + swgScope->setGridIntensity(scopeSettings.m_gridIntensity); + swgScope->setTime(scopeSettings.m_time); + swgScope->setTimeOfs(scopeSettings.m_timeOfs); + swgScope->setTraceIntensity(scopeSettings.m_traceIntensity); + swgScope->setTraceLenMult(scopeSettings.m_traceLenMult); + swgScope->setTrigPre(scopeSettings.m_trigPre); + + // array of traces + swgScope->setTracesData(new QList); + std::vector::const_iterator traceIt = scopeSettings.m_tracesData.begin(); + + for (; traceIt != scopeSettings.m_tracesData.end(); ++traceIt) + { + swgScope->getTracesData()->append(new SWGSDRangel::SWGTraceData); + swgScope->getTracesData()->back()->setAmp(traceIt->m_amp); + swgScope->getTracesData()->back()->setHasTextOverlay(traceIt->m_hasTextOverlay ? 1 : 0); + swgScope->getTracesData()->back()->setStreamIndex(traceIt->m_streamIndex); + swgScope->getTracesData()->back()->setOfs(traceIt->m_ofs); + swgScope->getTracesData()->back()->setProjectionType((int) traceIt->m_projectionType); + swgScope->getTracesData()->back()->setTextOverlay(new QString(traceIt->m_textOverlay)); + swgScope->getTracesData()->back()->setTraceColor(qColorToInt(traceIt->m_traceColor)); + swgScope->getTracesData()->back()->setTraceColorB(traceIt->m_traceColorB); + swgScope->getTracesData()->back()->setTraceColorG(traceIt->m_traceColorG); + swgScope->getTracesData()->back()->setTraceColorR(traceIt->m_traceColorR); + swgScope->getTracesData()->back()->setTraceDelay(traceIt->m_traceDelay); + swgScope->getTracesData()->back()->setTraceDelayCoarse(traceIt->m_traceDelayCoarse); + swgScope->getTracesData()->back()->setTraceDelayFine(traceIt->m_traceDelayFine); + swgScope->getTracesData()->back()->setTriggerDisplayLevel(traceIt->m_triggerDisplayLevel); + swgScope->getTracesData()->back()->setViewTrace(traceIt->m_viewTrace ? 1 : 0); + } + + // array of triggers + swgScope->setTriggersData(new QList); + std::vector::const_iterator triggerIt = scopeSettings.m_triggersData.begin(); + + for (; triggerIt != scopeSettings.m_triggersData.end(); ++triggerIt) + { + swgScope->getTriggersData()->append(new SWGSDRangel::SWGTriggerData); + swgScope->getTriggersData()->back()->setInputIndex(triggerIt->m_inputIndex); + swgScope->getTriggersData()->back()->setProjectionType((int) triggerIt->m_projectionType); + swgScope->getTriggersData()->back()->setTriggerBothEdges(triggerIt->m_triggerBothEdges ? 1 : 0); + swgScope->getTriggersData()->back()->setTriggerColor(qColorToInt(triggerIt->m_triggerColor)); + swgScope->getTriggersData()->back()->setTriggerColorB(triggerIt->m_triggerColorB); + swgScope->getTriggersData()->back()->setTriggerColorG(triggerIt->m_triggerColorG); + swgScope->getTriggersData()->back()->setTriggerColorR(triggerIt->m_triggerColorR); + swgScope->getTriggersData()->back()->setTriggerDelay(triggerIt->m_triggerDelay); + swgScope->getTriggersData()->back()->setTriggerDelayCoarse(triggerIt->m_triggerDelayCoarse); + swgScope->getTriggersData()->back()->setTriggerDelayFine(triggerIt->m_triggerDelayFine); + swgScope->getTriggersData()->back()->setTriggerDelayMult(triggerIt->m_triggerDelayMult); + swgScope->getTriggersData()->back()->setTriggerHoldoff(triggerIt->m_triggerHoldoff ? 1 : 0); + swgScope->getTriggersData()->back()->setTriggerLevel(triggerIt->m_triggerLevel); + swgScope->getTriggersData()->back()->setTriggerLevelCoarse(triggerIt->m_triggerLevelCoarse); + swgScope->getTriggersData()->back()->setTriggerLevelFine(triggerIt->m_triggerLevelFine); + swgScope->getTriggersData()->back()->setTriggerPositiveEdge(triggerIt->m_triggerPositiveEdge ? 1 : 0); + swgScope->getTriggersData()->back()->setTriggerRepeat(triggerIt->m_triggerRepeat); + } + + // spectrum + SWGSDRangel::SWGGLSpectrum *swgSpectrum = new SWGSDRangel::SWGGLSpectrum(); + swgSpectrum->init(); + response.getDoa2Settings()->setSpectrumConfig(swgSpectrum); + swgSpectrum->setAveragingMode((int) spectrumSettings.m_averagingMode); + swgSpectrum->setAveragingValue(SpectrumSettings::getAveragingValue(spectrumSettings.m_averagingIndex, spectrumSettings.m_averagingMode)); + swgSpectrum->setDecay(spectrumSettings.m_decay); + swgSpectrum->setDecayDivisor(spectrumSettings.m_decayDivisor); + swgSpectrum->setDisplayCurrent(spectrumSettings.m_displayCurrent ? 1 : 0); + swgSpectrum->setDisplayGrid(spectrumSettings.m_displayGrid ? 1 : 0); + swgSpectrum->setDisplayGridIntensity(spectrumSettings.m_displayGridIntensity); + swgSpectrum->setDisplayHistogram(spectrumSettings.m_displayHistogram ? 1 : 0); + swgSpectrum->setDisplayMaxHold(spectrumSettings.m_displayMaxHold ? 1 : 0); + swgSpectrum->setDisplayTraceIntensity(spectrumSettings.m_displayTraceIntensity); + swgSpectrum->setDisplayWaterfall(spectrumSettings.m_displayWaterfall ? 1 : 0); + swgSpectrum->setFftOverlap(spectrumSettings.m_fftOverlap); + swgSpectrum->setFftSize(spectrumSettings.m_fftSize); + swgSpectrum->setFpsPeriodMs(spectrumSettings.m_fpsPeriodMs); +} + +int DOA2WebAPIAdapter::webapiSettingsPutPatch( + bool force, + const QStringList& channelSettingsKeys, + SWGSDRangel::SWGChannelSettings& response, + QString& errorMessage) +{ + (void) force; // no action + (void) errorMessage; + webapiUpdateChannelSettings(m_settings, m_glScopeSettings, m_SpectrumSettings, channelSettingsKeys, response); + return 200; +} + +void DOA2WebAPIAdapter::webapiUpdateChannelSettings( + DOA2Settings& settings, + GLScopeSettings& scopeSettings, + SpectrumSettings& spectrumSettings, + const QStringList& channelSettingsKeys, + SWGSDRangel::SWGChannelSettings& response) +{ + if (channelSettingsKeys.contains("correlationType")) { + settings.m_correlationType = (DOA2Settings::CorrelationType) response.getDoa2Settings()->getCorrelationType(); + } + if (channelSettingsKeys.contains("rgbColor")) { + settings.m_rgbColor = response.getDoa2Settings()->getRgbColor(); + } + if (channelSettingsKeys.contains("title")) { + settings.m_title = *response.getDoa2Settings()->getTitle(); + } + // scope + if (channelSettingsKeys.contains("scopeConfig")) + { + if (channelSettingsKeys.contains("scopeConfig.displayMode")) { + scopeSettings.m_displayMode = (GLScopeSettings::DisplayMode) response.getDoa2Settings()->getScopeConfig()->getDisplayMode(); + } + if (channelSettingsKeys.contains("scopeConfig.gridIntensity")) { + scopeSettings.m_gridIntensity = response.getDoa2Settings()->getScopeConfig()->getGridIntensity(); + } + if (channelSettingsKeys.contains("scopeConfig.time")) { + scopeSettings.m_time = response.getDoa2Settings()->getScopeConfig()->getTime(); + } + if (channelSettingsKeys.contains("scopeConfig.timeOfs")) { + scopeSettings.m_timeOfs = response.getDoa2Settings()->getScopeConfig()->getTimeOfs(); + } + if (channelSettingsKeys.contains("scopeConfig.traceIntensity")) { + scopeSettings.m_traceIntensity = response.getDoa2Settings()->getScopeConfig()->getTraceIntensity(); + } + if (channelSettingsKeys.contains("scopeConfig.traceLenMult")) { + scopeSettings.m_traceLenMult = response.getDoa2Settings()->getScopeConfig()->getTraceLenMult(); + } + if (channelSettingsKeys.contains("scopeConfig.trigPre")) { + scopeSettings.m_trigPre = response.getDoa2Settings()->getScopeConfig()->getTrigPre(); + } + // traces + if (channelSettingsKeys.contains("scopeConfig.tracesData")) + { + QList *tracesData = response.getDoa2Settings()->getScopeConfig()->getTracesData(); + scopeSettings.m_tracesData.clear(); + + for (int i = 0; i < 10; i++) // no more than 10 traces anyway + { + if (channelSettingsKeys.contains(QString("scopeConfig.tracesData[%1]").arg(i))) + { + SWGSDRangel::SWGTraceData *traceData = tracesData->at(i); + scopeSettings.m_tracesData.push_back(GLScopeSettings::TraceData()); + + if (channelSettingsKeys.contains(QString("scopeConfig.tracesData[%1].streamIndex").arg(i))) { + scopeSettings.m_tracesData.back().m_streamIndex = traceData->getStreamIndex(); + } + if (channelSettingsKeys.contains(QString("scopeConfig.tracesData[%1].amp").arg(i))) { + scopeSettings.m_tracesData.back().m_amp = traceData->getAmp(); + } + if (channelSettingsKeys.contains(QString("scopeConfig.tracesData[%1].hasTextOverlay").arg(i))) { + scopeSettings.m_tracesData.back().m_hasTextOverlay = traceData->getHasTextOverlay() != 0; + } + if (channelSettingsKeys.contains(QString("scopeConfig.tracesData[%1].streamIndex").arg(i))) { + scopeSettings.m_tracesData.back().m_streamIndex = traceData->getStreamIndex(); + } + if (channelSettingsKeys.contains(QString("scopeConfig.tracesData[%1].ofs").arg(i))) { + scopeSettings.m_tracesData.back().m_ofs = traceData->getOfs(); + } + if (channelSettingsKeys.contains(QString("scopeConfig.tracesData[%1].projectionType").arg(i))) { + scopeSettings.m_tracesData.back().m_projectionType = (Projector::ProjectionType) traceData->getProjectionType(); + } + if (channelSettingsKeys.contains(QString("scopeConfig.tracesData[%1].traceColor").arg(i))) { + scopeSettings.m_tracesData.back().m_traceColor = intToQColor(traceData->getTraceColor()); + } + if (channelSettingsKeys.contains(QString("scopeConfig.tracesData[%1].traceColorB").arg(i))) { + scopeSettings.m_tracesData.back().m_traceColorB = traceData->getTraceColorB(); + } + if (channelSettingsKeys.contains(QString("scopeConfig.tracesData[%1].traceColorG").arg(i))) { + scopeSettings.m_tracesData.back().m_traceColorG = traceData->getTraceColorG(); + } + if (channelSettingsKeys.contains(QString("scopeConfig.tracesData[%1].traceColorR").arg(i))) { + scopeSettings.m_tracesData.back().m_traceColorR = traceData->getTraceColorR(); + } + if (channelSettingsKeys.contains(QString("scopeConfig.tracesData[%1].traceDelay").arg(i))) { + scopeSettings.m_tracesData.back().m_traceDelay = traceData->getTraceDelay(); + } + if (channelSettingsKeys.contains(QString("scopeConfig.tracesData[%1].traceDelayCoarse").arg(i))) { + scopeSettings.m_tracesData.back().m_traceDelayCoarse = traceData->getTraceDelayCoarse(); + } + if (channelSettingsKeys.contains(QString("scopeConfig.tracesData[%1].traceDelayFine").arg(i))) { + scopeSettings.m_tracesData.back().m_traceDelayFine = traceData->getTraceDelayFine(); + } + if (channelSettingsKeys.contains(QString("scopeConfig.tracesData[%1].triggerDisplayLevel").arg(i))) { + scopeSettings.m_tracesData.back().m_triggerDisplayLevel = traceData->getTriggerDisplayLevel(); + } + if (channelSettingsKeys.contains(QString("scopeConfig.tracesData[%1].viewTrace").arg(i))) { + scopeSettings.m_tracesData.back().m_viewTrace = traceData->getViewTrace() != 0; + } + } + else + { + break; + } + } + } + // triggers + if (channelSettingsKeys.contains("scopeConfig.triggersData")) + { + QList *triggersData = response.getDoa2Settings()->getScopeConfig()->getTriggersData(); + scopeSettings.m_triggersData.clear(); + + for (int i = 0; i < 10; i++) // no more than 10 triggers anyway + { + if (channelSettingsKeys.contains(QString("scopeConfig.triggersData[%1]").arg(i))) + { + SWGSDRangel::SWGTriggerData *triggerData = triggersData->at(i); + scopeSettings.m_triggersData.push_back(GLScopeSettings::TriggerData()); + + if (channelSettingsKeys.contains(QString("scopeConfig.triggersData[%1].streamIndex").arg(i))) { + scopeSettings.m_triggersData.back().m_streamIndex = triggerData->getStreamIndex(); + } + if (channelSettingsKeys.contains(QString("scopeConfig.triggersData[%1].inputIndex").arg(i))) { + scopeSettings.m_triggersData.back().m_inputIndex = triggerData->getInputIndex(); + } + if (channelSettingsKeys.contains(QString("scopeConfig.triggersData[%1].projectionType").arg(i))) { + scopeSettings.m_triggersData.back().m_projectionType = (Projector::ProjectionType) triggerData->getProjectionType(); + } + if (channelSettingsKeys.contains(QString("scopeConfig.triggersData[%1].triggerBothEdges").arg(i))) { + scopeSettings.m_triggersData.back().m_triggerBothEdges = triggerData->getTriggerBothEdges() != 0; + } + if (channelSettingsKeys.contains(QString("scopeConfig.tracesData[%1].triggerColor").arg(i))) { + scopeSettings.m_tracesData.back().m_traceColor = intToQColor(triggerData->getTriggerColor()); + } + if (channelSettingsKeys.contains(QString("scopeConfig.triggersData[%1].triggerColorB").arg(i))) { + scopeSettings.m_triggersData.back().m_triggerColorB = triggerData->getTriggerColorB(); + } + if (channelSettingsKeys.contains(QString("scopeConfig.triggersData[%1].triggerColorG").arg(i))) { + scopeSettings.m_triggersData.back().m_triggerColorG = triggerData->getTriggerColorG(); + } + if (channelSettingsKeys.contains(QString("scopeConfig.triggersData[%1].triggerColorR").arg(i))) { + scopeSettings.m_triggersData.back().m_triggerColorR = triggerData->getTriggerColorR(); + } + if (channelSettingsKeys.contains(QString("scopeConfig.triggersData[%1].triggerDelay").arg(i))) { + scopeSettings.m_triggersData.back().m_triggerDelay = triggerData->getTriggerDelay(); + } + if (channelSettingsKeys.contains(QString("scopeConfig.triggersData[%1].triggerDelayCoarse").arg(i))) { + scopeSettings.m_triggersData.back().m_triggerDelayCoarse = triggerData->getTriggerDelayCoarse(); + } + if (channelSettingsKeys.contains(QString("scopeConfig.triggersData[%1].triggerDelayFine").arg(i))) { + scopeSettings.m_triggersData.back().m_triggerDelayFine = triggerData->getTriggerDelayFine(); + } + if (channelSettingsKeys.contains(QString("scopeConfig.triggersData[%1].triggerDelayMult").arg(i))) { + scopeSettings.m_triggersData.back().m_triggerDelayMult = triggerData->getTriggerDelayMult(); + } + if (channelSettingsKeys.contains(QString("scopeConfig.triggersData[%1].triggerHoldoff").arg(i))) { + scopeSettings.m_triggersData.back().m_triggerHoldoff = triggerData->getTriggerHoldoff(); + } + if (channelSettingsKeys.contains(QString("scopeConfig.triggersData[%1].triggerLevel").arg(i))) { + scopeSettings.m_triggersData.back().m_triggerLevel = triggerData->getTriggerLevel(); + } + if (channelSettingsKeys.contains(QString("scopeConfig.triggersData[%1].triggerLevelCoarse").arg(i))) { + scopeSettings.m_triggersData.back().m_triggerLevelCoarse = triggerData->getTriggerLevelCoarse(); + } + if (channelSettingsKeys.contains(QString("scopeConfig.triggersData[%1].triggerLevelFine").arg(i))) { + scopeSettings.m_triggersData.back().m_triggerLevelFine = triggerData->getTriggerLevelFine(); + } + if (channelSettingsKeys.contains(QString("scopeConfig.triggersData[%1].triggerPositiveEdge").arg(i))) { + scopeSettings.m_triggersData.back().m_triggerPositiveEdge = triggerData->getTriggerPositiveEdge() != 0; + } + if (channelSettingsKeys.contains(QString("scopeConfig.triggersData[%1].triggerRepeat").arg(i))) { + scopeSettings.m_triggersData.back().m_triggerRepeat = triggerData->getTriggerRepeat() != 0; + } + } + } + } + } + // spectrum + if (channelSettingsKeys.contains("spectrumConfig")) + { + if (channelSettingsKeys.contains("spectrumConfig.averagingMode")) { + spectrumSettings.m_averagingMode = (SpectrumSettings::AveragingMode) response.getDoa2Settings()->getSpectrumConfig()->getAveragingMode(); + } + if (channelSettingsKeys.contains("spectrumConfig.averagingValue")) + { + spectrumSettings.m_averagingValue = response.getDoa2Settings()->getSpectrumConfig()->getAveragingValue(); + spectrumSettings.m_averagingIndex = SpectrumSettings::getAveragingIndex(spectrumSettings.m_averagingValue, spectrumSettings.m_averagingMode); + } + if (channelSettingsKeys.contains("spectrumConfig.decay")) { + spectrumSettings.m_decay = response.getDoa2Settings()->getSpectrumConfig()->getDecay(); + } + if (channelSettingsKeys.contains("spectrumConfig.decayDivisor")) { + spectrumSettings.m_decayDivisor = response.getDoa2Settings()->getSpectrumConfig()->getDecayDivisor(); + } + if (channelSettingsKeys.contains("spectrumConfig.displayCurrent")) { + spectrumSettings.m_displayCurrent = response.getDoa2Settings()->getSpectrumConfig()->getDisplayCurrent() != 0; + } + if (channelSettingsKeys.contains("spectrumConfig.displayGrid")) { + spectrumSettings.m_displayGrid = response.getDoa2Settings()->getSpectrumConfig()->getDisplayGrid() != 0; + } + if (channelSettingsKeys.contains("spectrumConfig.displayGridIntensity")) { + spectrumSettings.m_displayGridIntensity = response.getDoa2Settings()->getSpectrumConfig()->getDisplayGridIntensity(); + } + if (channelSettingsKeys.contains("spectrumConfig.displayHistogram")) { + spectrumSettings.m_displayHistogram = response.getDoa2Settings()->getSpectrumConfig()->getDisplayHistogram() != 0; + } + if (channelSettingsKeys.contains("spectrumConfig.displayMaxHold")) { + spectrumSettings.m_displayMaxHold = response.getDoa2Settings()->getSpectrumConfig()->getDisplayMaxHold() != 0; + } + if (channelSettingsKeys.contains("spectrumConfig.displayTraceIntensity")) { + spectrumSettings.m_displayTraceIntensity = response.getDoa2Settings()->getSpectrumConfig()->getDisplayTraceIntensity(); + } + if (channelSettingsKeys.contains("spectrumConfig.displayWaterfall")) { + spectrumSettings.m_displayWaterfall = response.getDoa2Settings()->getSpectrumConfig()->getDisplayWaterfall() != 0; + } + if (channelSettingsKeys.contains("spectrumConfig.fftOverlap")) { + spectrumSettings.m_fftOverlap = response.getDoa2Settings()->getSpectrumConfig()->getFftOverlap(); + } + if (channelSettingsKeys.contains("spectrumConfig.fftSize")) { + spectrumSettings.m_fftSize = response.getDoa2Settings()->getSpectrumConfig()->getFftSize(); + } + if (channelSettingsKeys.contains("spectrumConfig.fpsPeriodMs")) { + spectrumSettings.m_fpsPeriodMs = response.getDoa2Settings()->getSpectrumConfig()->getFpsPeriodMs(); + } + } +} + +int DOA2WebAPIAdapter::qColorToInt(const QColor& color) +{ + return 256*256*color.blue() + 256*color.green() + color.red(); +} + +QColor DOA2WebAPIAdapter::intToQColor(int intColor) +{ + int r = intColor % 256; + int bg = intColor / 256; + int g = bg % 256; + int b = bg / 256; + return QColor(r, g, b); +} diff --git a/plugins/channelmimo/doa2/doa2webapiadapter.h b/plugins/channelmimo/doa2/doa2webapiadapter.h new file mode 100644 index 000000000..305650a3f --- /dev/null +++ b/plugins/channelmimo/doa2/doa2webapiadapter.h @@ -0,0 +1,69 @@ +/////////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2022 Edouard Griffiths, F4EXB. // +// // +// This program is free software; you can redistribute it and/or modify // +// it under the terms of the GNU General Public License as published by // +// the Free Software Foundation as version 3 of the License, or // +// (at your option) any later version. // +// // +// This program is distributed in the hope that it will be useful, // +// but WITHOUT ANY WARRANTY; without even the implied warranty of // +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // +// GNU General Public License V3 for more details. // +// // +// You should have received a copy of the GNU General Public License // +// along with this program. If not, see . // +/////////////////////////////////////////////////////////////////////////////////// + +#ifndef INCLUDE_DOA2_WEBAPIADAPTER_H +#define INCLUDE_DOA2_WEBAPIADAPTER_H + +#include "channel/channelwebapiadapter.h" +#include "dsp/glscopesettings.h" +#include "dsp/spectrumsettings.h" +#include "doa2settings.h" + +/** + * Standalone API adapter only for the settings + */ +class DOA2WebAPIAdapter : public ChannelWebAPIAdapter { +public: + DOA2WebAPIAdapter(); + virtual ~DOA2WebAPIAdapter(); + + virtual QByteArray serialize() const { return m_settings.serialize(); } + virtual bool deserialize(const QByteArray& data) { return m_settings.deserialize(data); } + + virtual int webapiSettingsGet( + SWGSDRangel::SWGChannelSettings& response, + QString& errorMessage); + + virtual int webapiSettingsPutPatch( + bool force, + const QStringList& channelSettingsKeys, + SWGSDRangel::SWGChannelSettings& response, + QString& errorMessage); + + static void webapiFormatChannelSettings( + SWGSDRangel::SWGChannelSettings& response, + const DOA2Settings& settings, + const GLScopeSettings& scopeSettings, + const SpectrumSettings& spectrumSettings); + + static void webapiUpdateChannelSettings( + DOA2Settings& settings, + GLScopeSettings& scopeSettings, + SpectrumSettings& spectrumSettings, + const QStringList& channelSettingsKeys, + SWGSDRangel::SWGChannelSettings& response); + +private: + DOA2Settings m_settings; + GLScopeSettings m_glScopeSettings; + SpectrumSettings m_SpectrumSettings; + + static int qColorToInt(const QColor& color); + static QColor intToQColor(int intColor); +}; + +#endif // INCLUDE_DOA2_WEBAPIADAPTER_H diff --git a/plugins/channelmimo/doa2/readme.md b/plugins/channelmimo/doa2/readme.md new file mode 100644 index 000000000..2d7b8b006 --- /dev/null +++ b/plugins/channelmimo/doa2/readme.md @@ -0,0 +1,160 @@ +

Interferometer plugin

+ +

Introduction

+ +This MIMO reception only (MI) plugin can be used to study phase difference between two coherent streams. It must be connected to a device that exposes at least two input streams and will connect to streams 0 and 1 as channels A and B respectively. + +

Interface

+ +The top and bottom bars of the channel window are described [here](../../../sdrgui/channel/readme.md) + +![Interferometer plugin GUI](../../../doc/img/Interferometer_plugin.png) + +The interface is divided in 3 sections that will be detailed next: + - A: settings. These are the plugin controls + - B: spectrum (frequency domain). This is a spectrum display analogous to other spectrum displays. Its input varies depending on the correlation function selected. Details on the spectrum view and controls can be found [here](../../../sdrgui/gui/spectrum.md) + - C: scope (time domain). This is a scope display analogous to other scope displays. Its input varies depending on the correlation function selected. For FFT type correlation this is not a time domain but a frequency domain display transposed to time analogous to a frequency sweep. + +

A. Settings section

+ +![Interferometer plugin settings GUI](../../../doc/img/Interferometer_settings.png) + +

A.1. Decimation

+ +Input streams from baseband are decimated by a power of two. Use this combo to select from 0 (no decimation) to 64 (2^6). The resulting channel sample rate is displayed next (A.2) + +

A.2. Channel sample rate

+ +This is the channel sample rate in kilo or mega samples per second indicated by the `k` or `M` letter. + +

A.3. Half-band filter chain sequence display

+ +This string represents the sequence of half-band filters used in the decimation from device baseband to channel stream and controlled by (A.7). Each character represents a filter type: + + - **L**: lower half-band + - **H**: higher half-band + - **C**: centered + +

A.4. Correlation function

+ +This combo selects which function is applied to A and B channel inputs to obtain resulting correlation signal. + - **A**: A channel only (no correlation) + - **B**: B channel only (no correlation) + - **A+B**: This is the complex sum of A and B + - **A.B***: This is the complex multiplication of A with the conjugate of B + - **IFFT**: This is a time correlation obtained by FFT. The FFT of A is multiplied by the conjugate of the FFT of B and the result is passed to an IFFT to obtain the final result. This can be used for passive radar. + - **IFFT***: Same FFT operations as above but the IFFT is handled differently: sums the first half of IFFT with the reversed second half as one is the conjugate of the other so this should yield constant phase + - **FFT**: The FFT of A is multiplied by the conjugate of the FFT of B (no IFFT) thus the result is in the frequency domain. This is sometimes called "interspectrum". It can be used in practice to evaluate the direction of arrival (DOA) of a plane wave (see next) + - **IFFT2**: Same as IFFT but looks at the entire time domain including "negative" times. + +

Spectrum and scope inputs

+ +The spectrum and scope displays inputs vary depending on the correlation types and are summarized in the table below: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Correlation typeSpectrumScope
AFFT(A)A(t)
BFFT(B)B(t)
A+BFFT(A+B)(A+B)(t)
A.B*FFT(A.B*)(A.B*)(t)
IFFTFFT(A)*FFT(B)*IFFT(FFT(A).FFT(B)*)
IFFTFFT(A)*FFT(B)*IFFT(FFT(A).FFT(B)*) with special manipulation (see above)
FFTFFT(A)*FFT(B)* over 1 FFT lengthFFT(A)*FFT(B)* possibly over several FFT lengths depending on trace length
IFFT2FFT(A)*FFT(B)*IFFT(FFT(A).FFT(B)*) with positive and negative times
+ +

Direction Of Arrival (DOA) estimation with FFT correlation

+ +The "FFT" correlation function can be selected for DOA estimation. "A.B*" should yield similar results but is less precise because FFT analysis helps in removing non essential contributions. The FFT analysis can also show different DOAs for signals at different frequencies. + +It assumes that channel A is connected to the antenna of reference (device stream 0) and channel B is connected to the second antenna (device stream 1) in the following configuration: + +![Interferometer antennas](../../../doc/img/interferometer_antennas.png) + +The scope is configured to have X and Y displays with Y1 set to a magnitude display projection and X to a phase related projection. See scope controls in C section for setup. Here are the different possibilities: + - **X**: Phi, DOAP, DOAN + - **Y1**: Mag, MagSq, MagDB (this one is usually the most convenient) + +You will select the XY display on the scope and you can use the polar grid display to show phase or direction angles directly. + +Angles are counted from -π to π and normalized to π for display thus displayed from -1.0 to 1.0 + +The phase difference on X input (`Phi` selected) is then the actual phase difference between the reference signal A and the second signal B. Thus for a given phase difference the wave may come from the positive side of angles (0 to π) or the negative side (-π to 0). Angles of arrival are referenced to the axis perpendicular to the axis passing by the two antennas. + +![Interferometer DOA](../../../doc/img/interferometer_doa.png) + +Thus when antennas are separated by half the wavelength the relation between the angle of arrival θ and the phase difference φ can be expressed as: + +φ = π cos(θ) thus θ = acos(φ / π) + +This angle can be displayed directly when `DOAP` (positive angles) or `DOAN` (negative angles) is selected for X input. + +Thus a possible procedure to determine DOA could be the following: + +1. Arrange antennas axis so that the phase difference φ or DOA angle θ is roughly π/2 (zero phase difference) +2. Make an assumption for the wave to come from the positive or negative angles side +3. Rotate the antennas axis slightly and if the DOA angle moves in the direction corresponding to your assumption (2) then the assumption is correct and the wave is coming from the side corresponding to your assumption. You can then refine the antenna axis direction to obtain a π/2 or -π/2 angle depending from which side the wave is coming. The scope `DOAP` projection is for waves coming from the positive angles side and `DOAN` for the negative angles side +4. If when performing previous step (3) the DOA angle moves in the opposite direction to the one corresponding to your assumption then the wave is coming from the opposite side w.r to your assumption. You can then refine the antenna axis direction to obtain a ±π/2 DOA as in (3). +5. Once the ±π/2 DOA angle (zero phase difference) is obtained at λ/2 distance between antennas you can move your antennas further apart to refine the ±π/2 DOA angle. + +

A.5. Phase difference correction

+ +This is the phase correction in degrees applied to signal in channel B. + +

A.6 Center frequency shift

+ +This is the shift of the channel center frequency from the device center frequency. Its value is driven by the baseband sample rate, the decimation factor (A.1) and the filter chain sequence (A.7). + +

A.7. Half-band filter chain sequence adjust

+ +The slider moves the channel center frequency roughly from the lower to the higher frequency in the device baseband. The number on the right represents the filter sequence as the decimal value of a base 3 number. Each base 3 digit represents the filter type and its sequence from MSB to LSB in the filter chain: + + - **0**: lower half-band + - **1**: centered + - **2**: higher half-band + +The resulting filter chain sequence is represented in (A.3) + +

B. Spectrum display

+ +This is the spectrum (frequency domain) display. This display and controls are identical to all spectrum displays in the software. Further details on spectrum controls can be found [here](https://github.com/f4exb/sdrangel/tree/master/sdrgui#4-spectrum-display-control) + +

C. Scope display

+ +This is the scope (mainly time domain) display. This display and controls are identical to all scope displays in the software. Further details can be found in [Channel Analyzer documentation](../../channelrx/chanalyzer/readme.md) diff --git a/sdrbase/resources/webapi.qrc b/sdrbase/resources/webapi.qrc index 5c38b5c68..7e941bf14 100644 --- a/sdrbase/resources/webapi.qrc +++ b/sdrbase/resources/webapi.qrc @@ -36,6 +36,7 @@ webapi/doc/swagger/include/DATVDemod.yaml webapi/doc/swagger/include/DATVMod.yaml webapi/doc/swagger/include/DemodAnalyzer.yaml + webapi/doc/swagger/include/DOA2.yaml webapi/doc/swagger/include/DSDDemod.yaml webapi/doc/swagger/include/DeviceActions.yaml webapi/doc/swagger/include/DeviceSettings.yaml diff --git a/sdrbase/resources/webapi/doc/html2/index.html b/sdrbase/resources/webapi/doc/html2/index.html index 120b8e2ef..2f5bdb038 100644 --- a/sdrbase/resources/webapi/doc/html2/index.html +++ b/sdrbase/resources/webapi/doc/html2/index.html @@ -3543,6 +3543,9 @@ margin-bottom: 20px; "DABDemodSettings" : { "$ref" : "#/definitions/DABDemodSettings" }, + "DOA2Settings" : { + "$ref" : "#/definitions/DOA2Settings" + }, "DSDDemodSettings" : { "$ref" : "#/definitions/DSDDemodSettings" }, @@ -4522,6 +4525,55 @@ margin-bottom: 20px; } }, "description" : "DATVMod" +}; + defs.DOA2Settings = { + "properties" : { + "correlationType" : { + "type" : "integer", + "description" : "see DOA2Settings::CorrelationType" + }, + "rgbColor" : { + "type" : "integer" + }, + "title" : { + "type" : "string" + }, + "log2Decim" : { + "type" : "integer" + }, + "filterChainHash" : { + "type" : "integer" + }, + "useReverseAPI" : { + "type" : "integer", + "description" : "Synchronize with reverse API (1 for yes, 0 for no)" + }, + "reverseAPIAddress" : { + "type" : "string" + }, + "reverseAPIPort" : { + "type" : "integer" + }, + "reverseAPIDeviceIndex" : { + "type" : "integer" + }, + "reverseAPIChannelIndex" : { + "type" : "integer" + }, + "spectrumConfig" : { + "$ref" : "#/definitions/GLSpectrum" + }, + "scopeConfig" : { + "$ref" : "#/definitions/GLScope" + }, + "channelMarker" : { + "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" + } + }, + "description" : "DOA2" }; defs.DSDDemodReport = { "properties" : { @@ -56060,7 +56112,7 @@ except ApiException as e:
- Generated 2022-05-25T12:47:57.273+02:00 + Generated 2022-05-27T00:17:01.671+02:00
diff --git a/sdrbase/resources/webapi/doc/swagger/include/ChannelSettings.yaml b/sdrbase/resources/webapi/doc/swagger/include/ChannelSettings.yaml index 126328d40..c3a73c9d5 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/ChannelSettings.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/ChannelSettings.yaml @@ -49,6 +49,8 @@ ChannelSettings: $ref: "/doc/swagger/include/DATVDemod.yaml#/DATVDemodSettings" DABDemodSettings: $ref: "/doc/swagger/include/DABDemod.yaml#/DABDemodSettings" + DOA2Settings: + $ref: "/doc/swagger/include/DOA2.yaml#/DOA2Settings" DSDDemodSettings: $ref: "/doc/swagger/include/DSDDemod.yaml#/DSDDemodSettings" FileSinkSettings: diff --git a/sdrbase/resources/webapi/doc/swagger/include/DOA2.yaml b/sdrbase/resources/webapi/doc/swagger/include/DOA2.yaml new file mode 100644 index 000000000..daa432d49 --- /dev/null +++ b/sdrbase/resources/webapi/doc/swagger/include/DOA2.yaml @@ -0,0 +1,33 @@ +DOA2Settings: + description: DOA2 + properties: + correlationType: + description: see DOA2Settings::CorrelationType + type: integer + rgbColor: + type: integer + title: + type: string + log2Decim: + type: integer + filterChainHash: + type: integer + useReverseAPI: + description: Synchronize with reverse API (1 for yes, 0 for no) + type: integer + reverseAPIAddress: + type: string + reverseAPIPort: + type: integer + reverseAPIDeviceIndex: + type: integer + reverseAPIChannelIndex: + type: integer + spectrumConfig: + $ref: "/doc/swagger/include/GLSpectrum.yaml#/GLSpectrum" + scopeConfig: + $ref: "/doc/swagger/include/GLScope.yaml#/GLScope" + channelMarker: + $ref: "/doc/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "/doc/swagger/include/RollupState.yaml#/RollupState" diff --git a/sdrbase/webapi/webapirequestmapper.cpp b/sdrbase/webapi/webapirequestmapper.cpp index 291ccb590..17b2e8d6d 100644 --- a/sdrbase/webapi/webapirequestmapper.cpp +++ b/sdrbase/webapi/webapirequestmapper.cpp @@ -4471,6 +4471,11 @@ bool WebAPIRequestMapper::getChannelSettings( channelSettings->setDabDemodSettings(new SWGSDRangel::SWGDABDemodSettings()); channelSettings->getDabDemodSettings()->fromJsonObject(settingsJsonObject); } + else if (channelSettingsKey == "DOA2Settings") + { + channelSettings->setDoa2Settings(new SWGSDRangel::SWGDOA2Settings()); + channelSettings->getDoa2Settings()->fromJsonObject(settingsJsonObject); + } else if (channelSettingsKey == "DSDDemodSettings") { channelSettings->setDsdDemodSettings(new SWGSDRangel::SWGDSDDemodSettings()); diff --git a/sdrbase/webapi/webapiutils.cpp b/sdrbase/webapi/webapiutils.cpp index 8708cf012..fdbb0024b 100644 --- a/sdrbase/webapi/webapiutils.cpp +++ b/sdrbase/webapi/webapiutils.cpp @@ -40,6 +40,7 @@ const QMap WebAPIUtils::m_channelURIToSettingsKey = { {"sdrangel.channel.demodatv", "ATVDemodSettings"}, {"sdrangel.channel.demoddatv", "DATVDemodSettings"}, {"sdrangel.channel.dabdemod", "DABDemodSettings"}, + {"sdrangel.channel.doa2", "DOA2Settings"}, {"sdrangel.channel.dsddemod", "DSDDemodSettings"}, {"sdrangel.channel.filesink", "FileSinkSettings"}, {"sdrangel.channeltx.filesource", "FileSourceSettings"}, @@ -144,6 +145,7 @@ const QMap WebAPIUtils::m_channelTypeToSettingsKey = { {"DATVDemod", "DATVDemodSettings"}, {"DATVMod", "DATVModSettings"}, {"DABDemod", "DABDemodSettings"}, + {"DOA2", "DOA2Settings"}, {"DSDDemod", "DSDDemodSettings"}, {"FileSink", "FileSinkSettings"}, {"FileSource", "FileSourceSettings"}, diff --git a/swagger/sdrangel/api/swagger/include/ChannelSettings.yaml b/swagger/sdrangel/api/swagger/include/ChannelSettings.yaml index b7c594db1..5125d53ad 100644 --- a/swagger/sdrangel/api/swagger/include/ChannelSettings.yaml +++ b/swagger/sdrangel/api/swagger/include/ChannelSettings.yaml @@ -49,6 +49,8 @@ ChannelSettings: $ref: "http://swgserver:8081/api/swagger/include/DATVDemod.yaml#/DATVDemodSettings" DABDemodSettings: $ref: "http://swgserver:8081/api/swagger/include/DABDemod.yaml#/DABDemodSettings" + DOA2Settings: + $ref: "http://swgserver:8081/api/swagger/include/DOA2.yaml#/DOA2Settings" DSDDemodSettings: $ref: "http://swgserver:8081/api/swagger/include/DSDDemod.yaml#/DSDDemodSettings" FileSinkSettings: diff --git a/swagger/sdrangel/api/swagger/include/DOA2.yaml b/swagger/sdrangel/api/swagger/include/DOA2.yaml new file mode 100644 index 000000000..07ba23a9d --- /dev/null +++ b/swagger/sdrangel/api/swagger/include/DOA2.yaml @@ -0,0 +1,33 @@ +DOA2Settings: + description: DOA2 + properties: + correlationType: + description: see DOA2Settings::CorrelationType + type: integer + rgbColor: + type: integer + title: + type: string + log2Decim: + type: integer + filterChainHash: + type: integer + useReverseAPI: + description: Synchronize with reverse API (1 for yes, 0 for no) + type: integer + reverseAPIAddress: + type: string + reverseAPIPort: + type: integer + reverseAPIDeviceIndex: + type: integer + reverseAPIChannelIndex: + type: integer + spectrumConfig: + $ref: "http://swgserver:8081/api/swagger/include/GLSpectrum.yaml#/GLSpectrum" + scopeConfig: + $ref: "http://swgserver:8081/api/swagger/include/GLScope.yaml#/GLScope" + channelMarker: + $ref: "http://swgserver:8081/api/swagger/include/ChannelMarker.yaml#/ChannelMarker" + rollupState: + $ref: "http://swgserver:8081/api/swagger/include/RollupState.yaml#/RollupState" diff --git a/swagger/sdrangel/code/html2/index.html b/swagger/sdrangel/code/html2/index.html index 120b8e2ef..2f5bdb038 100644 --- a/swagger/sdrangel/code/html2/index.html +++ b/swagger/sdrangel/code/html2/index.html @@ -3543,6 +3543,9 @@ margin-bottom: 20px; "DABDemodSettings" : { "$ref" : "#/definitions/DABDemodSettings" }, + "DOA2Settings" : { + "$ref" : "#/definitions/DOA2Settings" + }, "DSDDemodSettings" : { "$ref" : "#/definitions/DSDDemodSettings" }, @@ -4522,6 +4525,55 @@ margin-bottom: 20px; } }, "description" : "DATVMod" +}; + defs.DOA2Settings = { + "properties" : { + "correlationType" : { + "type" : "integer", + "description" : "see DOA2Settings::CorrelationType" + }, + "rgbColor" : { + "type" : "integer" + }, + "title" : { + "type" : "string" + }, + "log2Decim" : { + "type" : "integer" + }, + "filterChainHash" : { + "type" : "integer" + }, + "useReverseAPI" : { + "type" : "integer", + "description" : "Synchronize with reverse API (1 for yes, 0 for no)" + }, + "reverseAPIAddress" : { + "type" : "string" + }, + "reverseAPIPort" : { + "type" : "integer" + }, + "reverseAPIDeviceIndex" : { + "type" : "integer" + }, + "reverseAPIChannelIndex" : { + "type" : "integer" + }, + "spectrumConfig" : { + "$ref" : "#/definitions/GLSpectrum" + }, + "scopeConfig" : { + "$ref" : "#/definitions/GLScope" + }, + "channelMarker" : { + "$ref" : "#/definitions/ChannelMarker" + }, + "rollupState" : { + "$ref" : "#/definitions/RollupState" + } + }, + "description" : "DOA2" }; defs.DSDDemodReport = { "properties" : { @@ -56060,7 +56112,7 @@ except ApiException as e:
- Generated 2022-05-25T12:47:57.273+02:00 + Generated 2022-05-27T00:17:01.671+02:00
diff --git a/swagger/sdrangel/code/qt5/client/SWGChannelSettings.cpp b/swagger/sdrangel/code/qt5/client/SWGChannelSettings.cpp index dc4f16b84..7c77c3aba 100644 --- a/swagger/sdrangel/code/qt5/client/SWGChannelSettings.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGChannelSettings.cpp @@ -68,6 +68,8 @@ SWGChannelSettings::SWGChannelSettings() { m_datv_demod_settings_isSet = false; dab_demod_settings = nullptr; m_dab_demod_settings_isSet = false; + doa2_settings = nullptr; + m_doa2_settings_isSet = false; dsd_demod_settings = nullptr; m_dsd_demod_settings_isSet = false; file_sink_settings = nullptr; @@ -174,6 +176,8 @@ SWGChannelSettings::init() { m_datv_demod_settings_isSet = false; dab_demod_settings = new SWGDABDemodSettings(); m_dab_demod_settings_isSet = false; + doa2_settings = new SWGDOA2Settings(); + m_doa2_settings_isSet = false; dsd_demod_settings = new SWGDSDDemodSettings(); m_dsd_demod_settings_isSet = false; file_sink_settings = new SWGFileSinkSettings(); @@ -290,6 +294,9 @@ SWGChannelSettings::cleanup() { if(dab_demod_settings != nullptr) { delete dab_demod_settings; } + if(doa2_settings != nullptr) { + delete doa2_settings; + } if(dsd_demod_settings != nullptr) { delete dsd_demod_settings; } @@ -430,6 +437,8 @@ SWGChannelSettings::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&dab_demod_settings, pJson["DABDemodSettings"], "SWGDABDemodSettings", "SWGDABDemodSettings"); + ::SWGSDRangel::setValue(&doa2_settings, pJson["DOA2Settings"], "SWGDOA2Settings", "SWGDOA2Settings"); + ::SWGSDRangel::setValue(&dsd_demod_settings, pJson["DSDDemodSettings"], "SWGDSDDemodSettings", "SWGDSDDemodSettings"); ::SWGSDRangel::setValue(&file_sink_settings, pJson["FileSinkSettings"], "SWGFileSinkSettings", "SWGFileSinkSettings"); @@ -564,6 +573,9 @@ SWGChannelSettings::asJsonObject() { if((dab_demod_settings != nullptr) && (dab_demod_settings->isSet())){ toJsonValue(QString("DABDemodSettings"), dab_demod_settings, obj, QString("SWGDABDemodSettings")); } + if((doa2_settings != nullptr) && (doa2_settings->isSet())){ + toJsonValue(QString("DOA2Settings"), doa2_settings, obj, QString("SWGDOA2Settings")); + } if((dsd_demod_settings != nullptr) && (dsd_demod_settings->isSet())){ toJsonValue(QString("DSDDemodSettings"), dsd_demod_settings, obj, QString("SWGDSDDemodSettings")); } @@ -855,6 +867,16 @@ SWGChannelSettings::setDabDemodSettings(SWGDABDemodSettings* dab_demod_settings) this->m_dab_demod_settings_isSet = true; } +SWGDOA2Settings* +SWGChannelSettings::getDoa2Settings() { + return doa2_settings; +} +void +SWGChannelSettings::setDoa2Settings(SWGDOA2Settings* doa2_settings) { + this->doa2_settings = doa2_settings; + this->m_doa2_settings_isSet = true; +} + SWGDSDDemodSettings* SWGChannelSettings::getDsdDemodSettings() { return dsd_demod_settings; @@ -1210,6 +1232,9 @@ SWGChannelSettings::isSet(){ if(dab_demod_settings && dab_demod_settings->isSet()){ isObjectUpdated = true; break; } + if(doa2_settings && doa2_settings->isSet()){ + isObjectUpdated = true; break; + } if(dsd_demod_settings && dsd_demod_settings->isSet()){ isObjectUpdated = true; break; } diff --git a/swagger/sdrangel/code/qt5/client/SWGChannelSettings.h b/swagger/sdrangel/code/qt5/client/SWGChannelSettings.h index a791d64fe..a5411e9f6 100644 --- a/swagger/sdrangel/code/qt5/client/SWGChannelSettings.h +++ b/swagger/sdrangel/code/qt5/client/SWGChannelSettings.h @@ -38,6 +38,7 @@ #include "SWGDABDemodSettings.h" #include "SWGDATVDemodSettings.h" #include "SWGDATVModSettings.h" +#include "SWGDOA2Settings.h" #include "SWGDSDDemodSettings.h" #include "SWGFileSinkSettings.h" #include "SWGFileSourceSettings.h" @@ -147,6 +148,9 @@ public: SWGDABDemodSettings* getDabDemodSettings(); void setDabDemodSettings(SWGDABDemodSettings* dab_demod_settings); + SWGDOA2Settings* getDoa2Settings(); + void setDoa2Settings(SWGDOA2Settings* doa2_settings); + SWGDSDDemodSettings* getDsdDemodSettings(); void setDsdDemodSettings(SWGDSDDemodSettings* dsd_demod_settings); @@ -298,6 +302,9 @@ private: SWGDABDemodSettings* dab_demod_settings; bool m_dab_demod_settings_isSet; + SWGDOA2Settings* doa2_settings; + bool m_doa2_settings_isSet; + SWGDSDDemodSettings* dsd_demod_settings; bool m_dsd_demod_settings_isSet; diff --git a/swagger/sdrangel/code/qt5/client/SWGDOA2Settings.cpp b/swagger/sdrangel/code/qt5/client/SWGDOA2Settings.cpp new file mode 100644 index 000000000..6c665512d --- /dev/null +++ b/swagger/sdrangel/code/qt5/client/SWGDOA2Settings.cpp @@ -0,0 +1,419 @@ +/** + * SDRangel + * This is the web REST/JSON API of SDRangel SDR software. SDRangel is an Open Source Qt5/OpenGL 3.0+ (4.3+ in Windows) GUI and server Software Defined Radio and signal analyzer in software. It supports Airspy, BladeRF, HackRF, LimeSDR, PlutoSDR, RTL-SDR, SDRplay RSP1 and FunCube --- Limitations and specifcities: * In SDRangel GUI the first Rx device set cannot be deleted. Conversely the server starts with no device sets and its number of device sets can be reduced to zero by as many calls as necessary to /sdrangel/deviceset with DELETE method. * Preset import and export from/to file is a server only feature. * Device set focus is a GUI only feature. * The following channels are not implemented (status 501 is returned): ATV and DATV demodulators, Channel Analyzer NG, LoRa demodulator * The device settings and report structures contains only the sub-structure corresponding to the device type. The DeviceSettings and DeviceReport structures documented here shows all of them but only one will be or should be present at a time * The channel settings and report structures contains only the sub-structure corresponding to the channel type. The ChannelSettings and ChannelReport structures documented here shows all of them but only one will be or should be present at a time --- + * + * OpenAPI spec version: 7.0.0 + * Contact: f4exb06@gmail.com + * + * NOTE: This class is auto generated by the swagger code generator program. + * https://github.com/swagger-api/swagger-codegen.git + * Do not edit the class manually. + */ + + +#include "SWGDOA2Settings.h" + +#include "SWGHelpers.h" + +#include +#include +#include +#include + +namespace SWGSDRangel { + +SWGDOA2Settings::SWGDOA2Settings(QString* json) { + init(); + this->fromJson(*json); +} + +SWGDOA2Settings::SWGDOA2Settings() { + correlation_type = 0; + m_correlation_type_isSet = false; + rgb_color = 0; + m_rgb_color_isSet = false; + title = nullptr; + m_title_isSet = false; + log2_decim = 0; + m_log2_decim_isSet = false; + filter_chain_hash = 0; + m_filter_chain_hash_isSet = false; + use_reverse_api = 0; + m_use_reverse_api_isSet = false; + reverse_api_address = nullptr; + m_reverse_api_address_isSet = false; + reverse_api_port = 0; + m_reverse_api_port_isSet = false; + reverse_api_device_index = 0; + m_reverse_api_device_index_isSet = false; + reverse_api_channel_index = 0; + m_reverse_api_channel_index_isSet = false; + spectrum_config = nullptr; + m_spectrum_config_isSet = false; + scope_config = nullptr; + m_scope_config_isSet = false; + channel_marker = nullptr; + m_channel_marker_isSet = false; + rollup_state = nullptr; + m_rollup_state_isSet = false; +} + +SWGDOA2Settings::~SWGDOA2Settings() { + this->cleanup(); +} + +void +SWGDOA2Settings::init() { + correlation_type = 0; + m_correlation_type_isSet = false; + rgb_color = 0; + m_rgb_color_isSet = false; + title = new QString(""); + m_title_isSet = false; + log2_decim = 0; + m_log2_decim_isSet = false; + filter_chain_hash = 0; + m_filter_chain_hash_isSet = false; + use_reverse_api = 0; + m_use_reverse_api_isSet = false; + reverse_api_address = new QString(""); + m_reverse_api_address_isSet = false; + reverse_api_port = 0; + m_reverse_api_port_isSet = false; + reverse_api_device_index = 0; + m_reverse_api_device_index_isSet = false; + reverse_api_channel_index = 0; + m_reverse_api_channel_index_isSet = false; + spectrum_config = new SWGGLSpectrum(); + m_spectrum_config_isSet = false; + scope_config = new SWGGLScope(); + m_scope_config_isSet = false; + channel_marker = new SWGChannelMarker(); + m_channel_marker_isSet = false; + rollup_state = new SWGRollupState(); + m_rollup_state_isSet = false; +} + +void +SWGDOA2Settings::cleanup() { + + + if(title != nullptr) { + delete title; + } + + + + if(reverse_api_address != nullptr) { + delete reverse_api_address; + } + + + + if(spectrum_config != nullptr) { + delete spectrum_config; + } + if(scope_config != nullptr) { + delete scope_config; + } + if(channel_marker != nullptr) { + delete channel_marker; + } + if(rollup_state != nullptr) { + delete rollup_state; + } +} + +SWGDOA2Settings* +SWGDOA2Settings::fromJson(QString &json) { + QByteArray array (json.toStdString().c_str()); + QJsonDocument doc = QJsonDocument::fromJson(array); + QJsonObject jsonObject = doc.object(); + this->fromJsonObject(jsonObject); + return this; +} + +void +SWGDOA2Settings::fromJsonObject(QJsonObject &pJson) { + ::SWGSDRangel::setValue(&correlation_type, pJson["correlationType"], "qint32", ""); + + ::SWGSDRangel::setValue(&rgb_color, pJson["rgbColor"], "qint32", ""); + + ::SWGSDRangel::setValue(&title, pJson["title"], "QString", "QString"); + + ::SWGSDRangel::setValue(&log2_decim, pJson["log2Decim"], "qint32", ""); + + ::SWGSDRangel::setValue(&filter_chain_hash, pJson["filterChainHash"], "qint32", ""); + + ::SWGSDRangel::setValue(&use_reverse_api, pJson["useReverseAPI"], "qint32", ""); + + ::SWGSDRangel::setValue(&reverse_api_address, pJson["reverseAPIAddress"], "QString", "QString"); + + ::SWGSDRangel::setValue(&reverse_api_port, pJson["reverseAPIPort"], "qint32", ""); + + ::SWGSDRangel::setValue(&reverse_api_device_index, pJson["reverseAPIDeviceIndex"], "qint32", ""); + + ::SWGSDRangel::setValue(&reverse_api_channel_index, pJson["reverseAPIChannelIndex"], "qint32", ""); + + ::SWGSDRangel::setValue(&spectrum_config, pJson["spectrumConfig"], "SWGGLSpectrum", "SWGGLSpectrum"); + + ::SWGSDRangel::setValue(&scope_config, pJson["scopeConfig"], "SWGGLScope", "SWGGLScope"); + + ::SWGSDRangel::setValue(&channel_marker, pJson["channelMarker"], "SWGChannelMarker", "SWGChannelMarker"); + + ::SWGSDRangel::setValue(&rollup_state, pJson["rollupState"], "SWGRollupState", "SWGRollupState"); + +} + +QString +SWGDOA2Settings::asJson () +{ + QJsonObject* obj = this->asJsonObject(); + + QJsonDocument doc(*obj); + QByteArray bytes = doc.toJson(); + delete obj; + return QString(bytes); +} + +QJsonObject* +SWGDOA2Settings::asJsonObject() { + QJsonObject* obj = new QJsonObject(); + if(m_correlation_type_isSet){ + obj->insert("correlationType", QJsonValue(correlation_type)); + } + if(m_rgb_color_isSet){ + obj->insert("rgbColor", QJsonValue(rgb_color)); + } + if(title != nullptr && *title != QString("")){ + toJsonValue(QString("title"), title, obj, QString("QString")); + } + if(m_log2_decim_isSet){ + obj->insert("log2Decim", QJsonValue(log2_decim)); + } + if(m_filter_chain_hash_isSet){ + obj->insert("filterChainHash", QJsonValue(filter_chain_hash)); + } + if(m_use_reverse_api_isSet){ + obj->insert("useReverseAPI", QJsonValue(use_reverse_api)); + } + if(reverse_api_address != nullptr && *reverse_api_address != QString("")){ + toJsonValue(QString("reverseAPIAddress"), reverse_api_address, obj, QString("QString")); + } + if(m_reverse_api_port_isSet){ + obj->insert("reverseAPIPort", QJsonValue(reverse_api_port)); + } + if(m_reverse_api_device_index_isSet){ + obj->insert("reverseAPIDeviceIndex", QJsonValue(reverse_api_device_index)); + } + if(m_reverse_api_channel_index_isSet){ + obj->insert("reverseAPIChannelIndex", QJsonValue(reverse_api_channel_index)); + } + if((spectrum_config != nullptr) && (spectrum_config->isSet())){ + toJsonValue(QString("spectrumConfig"), spectrum_config, obj, QString("SWGGLSpectrum")); + } + if((scope_config != nullptr) && (scope_config->isSet())){ + toJsonValue(QString("scopeConfig"), scope_config, obj, QString("SWGGLScope")); + } + if((channel_marker != nullptr) && (channel_marker->isSet())){ + toJsonValue(QString("channelMarker"), channel_marker, obj, QString("SWGChannelMarker")); + } + if((rollup_state != nullptr) && (rollup_state->isSet())){ + toJsonValue(QString("rollupState"), rollup_state, obj, QString("SWGRollupState")); + } + + return obj; +} + +qint32 +SWGDOA2Settings::getCorrelationType() { + return correlation_type; +} +void +SWGDOA2Settings::setCorrelationType(qint32 correlation_type) { + this->correlation_type = correlation_type; + this->m_correlation_type_isSet = true; +} + +qint32 +SWGDOA2Settings::getRgbColor() { + return rgb_color; +} +void +SWGDOA2Settings::setRgbColor(qint32 rgb_color) { + this->rgb_color = rgb_color; + this->m_rgb_color_isSet = true; +} + +QString* +SWGDOA2Settings::getTitle() { + return title; +} +void +SWGDOA2Settings::setTitle(QString* title) { + this->title = title; + this->m_title_isSet = true; +} + +qint32 +SWGDOA2Settings::getLog2Decim() { + return log2_decim; +} +void +SWGDOA2Settings::setLog2Decim(qint32 log2_decim) { + this->log2_decim = log2_decim; + this->m_log2_decim_isSet = true; +} + +qint32 +SWGDOA2Settings::getFilterChainHash() { + return filter_chain_hash; +} +void +SWGDOA2Settings::setFilterChainHash(qint32 filter_chain_hash) { + this->filter_chain_hash = filter_chain_hash; + this->m_filter_chain_hash_isSet = true; +} + +qint32 +SWGDOA2Settings::getUseReverseApi() { + return use_reverse_api; +} +void +SWGDOA2Settings::setUseReverseApi(qint32 use_reverse_api) { + this->use_reverse_api = use_reverse_api; + this->m_use_reverse_api_isSet = true; +} + +QString* +SWGDOA2Settings::getReverseApiAddress() { + return reverse_api_address; +} +void +SWGDOA2Settings::setReverseApiAddress(QString* reverse_api_address) { + this->reverse_api_address = reverse_api_address; + this->m_reverse_api_address_isSet = true; +} + +qint32 +SWGDOA2Settings::getReverseApiPort() { + return reverse_api_port; +} +void +SWGDOA2Settings::setReverseApiPort(qint32 reverse_api_port) { + this->reverse_api_port = reverse_api_port; + this->m_reverse_api_port_isSet = true; +} + +qint32 +SWGDOA2Settings::getReverseApiDeviceIndex() { + return reverse_api_device_index; +} +void +SWGDOA2Settings::setReverseApiDeviceIndex(qint32 reverse_api_device_index) { + this->reverse_api_device_index = reverse_api_device_index; + this->m_reverse_api_device_index_isSet = true; +} + +qint32 +SWGDOA2Settings::getReverseApiChannelIndex() { + return reverse_api_channel_index; +} +void +SWGDOA2Settings::setReverseApiChannelIndex(qint32 reverse_api_channel_index) { + this->reverse_api_channel_index = reverse_api_channel_index; + this->m_reverse_api_channel_index_isSet = true; +} + +SWGGLSpectrum* +SWGDOA2Settings::getSpectrumConfig() { + return spectrum_config; +} +void +SWGDOA2Settings::setSpectrumConfig(SWGGLSpectrum* spectrum_config) { + this->spectrum_config = spectrum_config; + this->m_spectrum_config_isSet = true; +} + +SWGGLScope* +SWGDOA2Settings::getScopeConfig() { + return scope_config; +} +void +SWGDOA2Settings::setScopeConfig(SWGGLScope* scope_config) { + this->scope_config = scope_config; + this->m_scope_config_isSet = true; +} + +SWGChannelMarker* +SWGDOA2Settings::getChannelMarker() { + return channel_marker; +} +void +SWGDOA2Settings::setChannelMarker(SWGChannelMarker* channel_marker) { + this->channel_marker = channel_marker; + this->m_channel_marker_isSet = true; +} + +SWGRollupState* +SWGDOA2Settings::getRollupState() { + return rollup_state; +} +void +SWGDOA2Settings::setRollupState(SWGRollupState* rollup_state) { + this->rollup_state = rollup_state; + this->m_rollup_state_isSet = true; +} + + +bool +SWGDOA2Settings::isSet(){ + bool isObjectUpdated = false; + do{ + if(m_correlation_type_isSet){ + isObjectUpdated = true; break; + } + if(m_rgb_color_isSet){ + isObjectUpdated = true; break; + } + if(title && *title != QString("")){ + isObjectUpdated = true; break; + } + if(m_log2_decim_isSet){ + isObjectUpdated = true; break; + } + if(m_filter_chain_hash_isSet){ + isObjectUpdated = true; break; + } + if(m_use_reverse_api_isSet){ + isObjectUpdated = true; break; + } + if(reverse_api_address && *reverse_api_address != QString("")){ + isObjectUpdated = true; break; + } + if(m_reverse_api_port_isSet){ + isObjectUpdated = true; break; + } + if(m_reverse_api_device_index_isSet){ + isObjectUpdated = true; break; + } + if(m_reverse_api_channel_index_isSet){ + isObjectUpdated = true; break; + } + if(spectrum_config && spectrum_config->isSet()){ + isObjectUpdated = true; break; + } + if(scope_config && scope_config->isSet()){ + isObjectUpdated = true; break; + } + if(channel_marker && channel_marker->isSet()){ + isObjectUpdated = true; break; + } + if(rollup_state && rollup_state->isSet()){ + isObjectUpdated = true; break; + } + }while(false); + return isObjectUpdated; +} +} + diff --git a/swagger/sdrangel/code/qt5/client/SWGDOA2Settings.h b/swagger/sdrangel/code/qt5/client/SWGDOA2Settings.h new file mode 100644 index 000000000..c828a9587 --- /dev/null +++ b/swagger/sdrangel/code/qt5/client/SWGDOA2Settings.h @@ -0,0 +1,141 @@ +/** + * SDRangel + * This is the web REST/JSON API of SDRangel SDR software. SDRangel is an Open Source Qt5/OpenGL 3.0+ (4.3+ in Windows) GUI and server Software Defined Radio and signal analyzer in software. It supports Airspy, BladeRF, HackRF, LimeSDR, PlutoSDR, RTL-SDR, SDRplay RSP1 and FunCube --- Limitations and specifcities: * In SDRangel GUI the first Rx device set cannot be deleted. Conversely the server starts with no device sets and its number of device sets can be reduced to zero by as many calls as necessary to /sdrangel/deviceset with DELETE method. * Preset import and export from/to file is a server only feature. * Device set focus is a GUI only feature. * The following channels are not implemented (status 501 is returned): ATV and DATV demodulators, Channel Analyzer NG, LoRa demodulator * The device settings and report structures contains only the sub-structure corresponding to the device type. The DeviceSettings and DeviceReport structures documented here shows all of them but only one will be or should be present at a time * The channel settings and report structures contains only the sub-structure corresponding to the channel type. The ChannelSettings and ChannelReport structures documented here shows all of them but only one will be or should be present at a time --- + * + * OpenAPI spec version: 7.0.0 + * Contact: f4exb06@gmail.com + * + * NOTE: This class is auto generated by the swagger code generator program. + * https://github.com/swagger-api/swagger-codegen.git + * Do not edit the class manually. + */ + +/* + * SWGDOA2Settings.h + * + * DOA2 + */ + +#ifndef SWGDOA2Settings_H_ +#define SWGDOA2Settings_H_ + +#include + + +#include "SWGChannelMarker.h" +#include "SWGGLScope.h" +#include "SWGGLSpectrum.h" +#include "SWGRollupState.h" +#include + +#include "SWGObject.h" +#include "export.h" + +namespace SWGSDRangel { + +class SWG_API SWGDOA2Settings: public SWGObject { +public: + SWGDOA2Settings(); + SWGDOA2Settings(QString* json); + virtual ~SWGDOA2Settings(); + void init(); + void cleanup(); + + virtual QString asJson () override; + virtual QJsonObject* asJsonObject() override; + virtual void fromJsonObject(QJsonObject &json) override; + virtual SWGDOA2Settings* fromJson(QString &jsonString) override; + + qint32 getCorrelationType(); + void setCorrelationType(qint32 correlation_type); + + qint32 getRgbColor(); + void setRgbColor(qint32 rgb_color); + + QString* getTitle(); + void setTitle(QString* title); + + qint32 getLog2Decim(); + void setLog2Decim(qint32 log2_decim); + + qint32 getFilterChainHash(); + void setFilterChainHash(qint32 filter_chain_hash); + + qint32 getUseReverseApi(); + void setUseReverseApi(qint32 use_reverse_api); + + QString* getReverseApiAddress(); + void setReverseApiAddress(QString* reverse_api_address); + + qint32 getReverseApiPort(); + void setReverseApiPort(qint32 reverse_api_port); + + qint32 getReverseApiDeviceIndex(); + void setReverseApiDeviceIndex(qint32 reverse_api_device_index); + + qint32 getReverseApiChannelIndex(); + void setReverseApiChannelIndex(qint32 reverse_api_channel_index); + + SWGGLSpectrum* getSpectrumConfig(); + void setSpectrumConfig(SWGGLSpectrum* spectrum_config); + + SWGGLScope* getScopeConfig(); + void setScopeConfig(SWGGLScope* scope_config); + + SWGChannelMarker* getChannelMarker(); + void setChannelMarker(SWGChannelMarker* channel_marker); + + SWGRollupState* getRollupState(); + void setRollupState(SWGRollupState* rollup_state); + + + virtual bool isSet() override; + +private: + qint32 correlation_type; + bool m_correlation_type_isSet; + + qint32 rgb_color; + bool m_rgb_color_isSet; + + QString* title; + bool m_title_isSet; + + qint32 log2_decim; + bool m_log2_decim_isSet; + + qint32 filter_chain_hash; + bool m_filter_chain_hash_isSet; + + qint32 use_reverse_api; + bool m_use_reverse_api_isSet; + + QString* reverse_api_address; + bool m_reverse_api_address_isSet; + + qint32 reverse_api_port; + bool m_reverse_api_port_isSet; + + qint32 reverse_api_device_index; + bool m_reverse_api_device_index_isSet; + + qint32 reverse_api_channel_index; + bool m_reverse_api_channel_index_isSet; + + SWGGLSpectrum* spectrum_config; + bool m_spectrum_config_isSet; + + SWGGLScope* scope_config; + bool m_scope_config_isSet; + + SWGChannelMarker* channel_marker; + bool m_channel_marker_isSet; + + SWGRollupState* rollup_state; + bool m_rollup_state_isSet; + +}; + +} + +#endif /* SWGDOA2Settings_H_ */ diff --git a/swagger/sdrangel/code/qt5/client/SWGModelFactory.h b/swagger/sdrangel/code/qt5/client/SWGModelFactory.h index cf694db10..e0ba50888 100644 --- a/swagger/sdrangel/code/qt5/client/SWGModelFactory.h +++ b/swagger/sdrangel/code/qt5/client/SWGModelFactory.h @@ -95,6 +95,7 @@ #include "SWGDATVDemodSettings.h" #include "SWGDATVModReport.h" #include "SWGDATVModSettings.h" +#include "SWGDOA2Settings.h" #include "SWGDSDDemodReport.h" #include "SWGDSDDemodSettings.h" #include "SWGDVSerialDevice.h" @@ -738,6 +739,11 @@ namespace SWGSDRangel { obj->init(); return obj; } + if(QString("SWGDOA2Settings").compare(type) == 0) { + SWGDOA2Settings *obj = new SWGDOA2Settings(); + obj->init(); + return obj; + } if(QString("SWGDSDDemodReport").compare(type) == 0) { SWGDSDDemodReport *obj = new SWGDSDDemodReport(); obj->init(); From 5557c5b67c6628c4a46ce9cdd1a6f7c31234c0bf Mon Sep 17 00:00:00 2001 From: f4exb Date: Fri, 27 May 2022 10:59:25 +0200 Subject: [PATCH 05/15] DOA2: replaced spectrum by compass --- plugins/channelmimo/doa2/CMakeLists.txt | 2 + plugins/channelmimo/doa2/doa2.cpp | 26 -- plugins/channelmimo/doa2/doa2.h | 3 - plugins/channelmimo/doa2/doa2baseband.cpp | 16 - plugins/channelmimo/doa2/doa2baseband.h | 2 - plugins/channelmimo/doa2/doa2compass.cpp | 277 ++++++++++++++++++ plugins/channelmimo/doa2/doa2compass.h | 119 ++++++++ plugins/channelmimo/doa2/doa2gui.cpp | 12 - plugins/channelmimo/doa2/doa2gui.h | 2 - plugins/channelmimo/doa2/doa2gui.ui | 136 ++++----- plugins/channelmimo/doa2/doa2settings.cpp | 12 +- plugins/channelmimo/doa2/doa2settings.h | 2 - .../channelmimo/doa2/doa2webapiadapter.cpp | 76 +---- plugins/channelmimo/doa2/doa2webapiadapter.h | 5 +- sdrbase/resources/webapi/doc/html2/index.html | 5 +- .../webapi/doc/swagger/include/DOA2.yaml | 2 - .../sdrangel/api/swagger/include/DOA2.yaml | 2 - swagger/sdrangel/code/html2/index.html | 5 +- .../code/qt5/client/SWGDOA2Settings.cpp | 25 -- .../code/qt5/client/SWGDOA2Settings.h | 7 - 20 files changed, 461 insertions(+), 275 deletions(-) create mode 100644 plugins/channelmimo/doa2/doa2compass.cpp create mode 100644 plugins/channelmimo/doa2/doa2compass.h diff --git a/plugins/channelmimo/doa2/CMakeLists.txt b/plugins/channelmimo/doa2/CMakeLists.txt index 3192a25b4..42cc6d2f0 100644 --- a/plugins/channelmimo/doa2/CMakeLists.txt +++ b/plugins/channelmimo/doa2/CMakeLists.txt @@ -29,11 +29,13 @@ if (NOT SERVER_MODE) set(doa2_SOURCES ${doa2_SOURCES} doa2gui.cpp + doa2compass.cpp doa2gui.ui ) set(doa2_HEADERS ${doa2_HEADERS} doa2gui.h + doa2compass.cpp ) set(TARGET_NAME doa2) diff --git a/plugins/channelmimo/doa2/doa2.cpp b/plugins/channelmimo/doa2/doa2.cpp index f1e4630f9..c5fde8a3f 100644 --- a/plugins/channelmimo/doa2/doa2.cpp +++ b/plugins/channelmimo/doa2/doa2.cpp @@ -43,7 +43,6 @@ const int DOA2::m_fftSize = 4096; DOA2::DOA2(DeviceAPI *deviceAPI) : ChannelAPI(m_channelIdURI, ChannelAPI::StreamMIMO), m_deviceAPI(deviceAPI), - m_spectrumVis(SDR_RX_SCALEF), m_guiMessageQueue(nullptr), m_frequencyOffset(0), m_deviceSampleRate(48000) @@ -52,7 +51,6 @@ DOA2::DOA2(DeviceAPI *deviceAPI) : m_thread = new QThread(this); m_basebandSink = new DOA2Baseband(m_fftSize); - m_basebandSink->setSpectrumSink(&m_spectrumVis); m_basebandSink->setScopeSink(&m_scopeSink); m_basebandSink->moveToThread(m_thread); m_deviceAPI->addMIMOChannel(this); @@ -375,9 +373,6 @@ void DOA2::webapiUpdateChannelSettings( if (channelSettingsKeys.contains("reverseAPIChannelIndex")) { settings.m_reverseAPIChannelIndex = response.getDoa2Settings()->getReverseApiChannelIndex(); } - if (settings.m_spectrumGUI && channelSettingsKeys.contains("spectrumConfig")) { - settings.m_spectrumGUI->updateFrom(channelSettingsKeys, response.getDoa2Settings()->getSpectrumConfig()); - } if (settings.m_scopeGUI && channelSettingsKeys.contains("scopeConfig")) { settings.m_scopeGUI->updateFrom(channelSettingsKeys, response.getDoa2Settings()->getScopeConfig()); } @@ -413,20 +408,6 @@ void DOA2::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response response.getDoa2Settings()->setReverseApiDeviceIndex(settings.m_reverseAPIDeviceIndex); response.getDoa2Settings()->setReverseApiChannelIndex(settings.m_reverseAPIChannelIndex); - if (settings.m_spectrumGUI) - { - if (response.getDoa2Settings()->getSpectrumConfig()) - { - settings.m_spectrumGUI->formatTo(response.getDoa2Settings()->getSpectrumConfig()); - } - else - { - SWGSDRangel::SWGGLSpectrum *swgGLSpectrum = new SWGSDRangel::SWGGLSpectrum(); - settings.m_spectrumGUI->formatTo(swgGLSpectrum); - response.getDoa2Settings()->setSpectrumConfig(swgGLSpectrum); - } - } - if (settings.m_scopeGUI) { if (response.getDoa2Settings()->getScopeConfig()) @@ -549,13 +530,6 @@ void DOA2::webapiFormatChannelSettings( swgDOA2Settings->setFilterChainHash(settings.m_filterChainHash); } - if (settings.m_spectrumGUI) - { - if (channelSettingsKeys.contains("spectrumConfig") || force) { - settings.m_spectrumGUI->formatTo(swgDOA2Settings->getSpectrumConfig()); - } - } - if (settings.m_scopeGUI) { if (channelSettingsKeys.contains("scopeConfig") || force) { diff --git a/plugins/channelmimo/doa2/doa2.h b/plugins/channelmimo/doa2/doa2.h index d2ac22d92..c6ea41e6b 100644 --- a/plugins/channelmimo/doa2/doa2.h +++ b/plugins/channelmimo/doa2/doa2.h @@ -22,7 +22,6 @@ #include #include "dsp/mimochannel.h" -#include "dsp/spectrumvis.h" #include "dsp/scopevis.h" #include "channel/channelapi.h" #include "util/messagequeue.h" @@ -124,7 +123,6 @@ public: virtual void setMessageQueueToGUI(MessageQueue *queue) { m_guiMessageQueue = queue; } MessageQueue *getMessageQueueToGUI() { return m_guiMessageQueue; } - SpectrumVis *getSpectrumVis() { return &m_spectrumVis; } ScopeVis *getScopeVis() { return &m_scopeSink; } void applyChannelSettings(uint32_t log2Decim, uint32_t filterChainHash); @@ -158,7 +156,6 @@ public: private: DeviceAPI *m_deviceAPI; QThread *m_thread; - SpectrumVis m_spectrumVis; ScopeVis m_scopeSink; DOA2Baseband* m_basebandSink; DOA2Settings m_settings; diff --git a/plugins/channelmimo/doa2/doa2baseband.cpp b/plugins/channelmimo/doa2/doa2baseband.cpp index 5e68ae239..d81d82edc 100644 --- a/plugins/channelmimo/doa2/doa2baseband.cpp +++ b/plugins/channelmimo/doa2/doa2baseband.cpp @@ -33,7 +33,6 @@ MESSAGE_CLASS_DEFINITION(DOA2Baseband::MsgConfigureCorrelation, Message) DOA2Baseband::DOA2Baseband(int fftSize) : m_correlator(fftSize), - m_spectrumSink(nullptr), m_scopeSink(nullptr), m_mutex(QMutex::Recursive) { @@ -149,21 +148,6 @@ void DOA2Baseband::run() vbegin.push_back(m_correlator.m_tcorr.begin()); m_scopeSink->feed(vbegin, m_correlator.m_processed); } - - if (m_spectrumSink) - { - if ((m_correlator.getCorrType() == DOA2Settings::CorrelationFFT) - || (m_correlator.getCorrType() == DOA2Settings::CorrelationIFFT) - || (m_correlator.getCorrType() == DOA2Settings::CorrelationIFFT2) - || (m_correlator.getCorrType() == DOA2Settings::CorrelationIFFTStar)) - { - m_spectrumSink->feed(m_correlator.m_scorr.begin(), m_correlator.m_scorr.begin() + m_correlator.m_processed, false); - } - else - { - m_spectrumSink->feed(m_correlator.m_tcorr.begin(), m_correlator.m_tcorr.begin() + m_correlator.m_processed, false); - } - } } for (int i = 0; i < 2; i++) diff --git a/plugins/channelmimo/doa2/doa2baseband.h b/plugins/channelmimo/doa2/doa2baseband.h index 7a290a081..06d23dbdf 100644 --- a/plugins/channelmimo/doa2/doa2baseband.h +++ b/plugins/channelmimo/doa2/doa2baseband.h @@ -105,7 +105,6 @@ public: MessageQueue *getInputMessageQueue() { return &m_inputMessageQueue; } //!< Get the queue for asynchronous inbound communication - void setSpectrumSink(BasebandSampleSink *spectrumSink) { m_spectrumSink = spectrumSink; } void setScopeSink(ScopeVis *scopeSink) { m_scopeSink = scopeSink; } void setPhase(int phase) { m_correlator.setPhase(phase); } @@ -123,7 +122,6 @@ private: int m_sizes[2]; DOA2StreamSink m_sinks[2]; DownChannelizer *m_channelizers[2]; - BasebandSampleSink *m_spectrumSink; ScopeVis *m_scopeSink; MessageQueue m_inputMessageQueue; //!< Queue for asynchronous inbound communication QMutex m_mutex; diff --git a/plugins/channelmimo/doa2/doa2compass.cpp b/plugins/channelmimo/doa2/doa2compass.cpp new file mode 100644 index 000000000..0b2fcfb8b --- /dev/null +++ b/plugins/channelmimo/doa2/doa2compass.cpp @@ -0,0 +1,277 @@ +/////////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2022 Edouard Griffiths, F4EXB // +// // +// This program is free software; you can redistribute it and/or modify // +// it under the terms of the GNU General Public License as published by // +// the Free Software Foundation as version 3 of the License, or // +// (at your option) any later version. // +// // +// This program is distributed in the hope that it will be useful, // +// but WITHOUT ANY WARRANTY; without even the implied warranty of // +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // +// GNU General Public License V3 for more details. // +// // +// You should have received a copy of the GNU General Public License // +// along with this program. If not, see . // +/////////////////////////////////////////////////////////////////////////////////// + +#include +#include +#include + +#include "doa2compass.h" + +DOA2Compass::DOA2Compass(QWidget *parent) + : QWidget(parent) +{ + connect(this, SIGNAL(canvasReplot(void)), this, SLOT(canvasReplot_slot(void))); + + m_sizeMin = 200; + m_sizeMax = 600; + m_offset = 2; + m_size = m_sizeMin - 2*m_offset; + + setMinimumSize(m_sizeMin, m_sizeMin); + setMaximumSize(m_sizeMax, m_sizeMax); + resize(m_sizeMin, m_sizeMin); + + setFocusPolicy(Qt::NoFocus); + + m_yaw = 0.0; + m_alt = 0.0; + m_h = 0.0; +} + +DOA2Compass::~DOA2Compass() +{ + +} + + +void DOA2Compass::canvasReplot_slot(void) +{ + update(); +} + +void DOA2Compass::resizeEvent(QResizeEvent *event) +{ + m_size = qMin(width(),height()) - 2*m_offset; +} + +void DOA2Compass::paintEvent(QPaintEvent *) +{ + QPainter painter(this); + + QBrush bgGround(QColor(48,172,220)); + + QPen whitePen(Qt::white); + QPen blackPen(Qt::black); + QPen redPen(Qt::red); + QPen bluePen(Qt::blue); + QPen greenPen(Qt::green); + + whitePen.setWidth(1); + blackPen.setWidth(2); + redPen.setWidth(2); + bluePen.setWidth(2); + greenPen.setWidth(2); + + painter.setRenderHint(QPainter::Antialiasing); + + painter.translate(width() / 2, height() / 2); + + + // draw background + { + painter.setPen(blackPen); + painter.setBrush(bgGround); + + painter.drawEllipse(-m_size/2, -m_size/2, m_size, m_size); + } + + + // draw yaw lines + { + int nyawLines = 36; + float rotAng = 360.0 / nyawLines; + int yawLineLeng = m_size/25; + double fx1, fy1, fx2, fy2; + int fontSize = 8; + QString s; + + blackPen.setWidth(1); + painter.setPen(blackPen); + + for(int i=0; ikey()) { + case Qt::Key_Left: + m_yaw -= 1.0; + break; + case Qt::Key_Right: + m_yaw += 1.0; + break; + case Qt::Key_Down: + m_alt -= 1.0; + break; + case Qt::Key_Up: + m_alt += 1.0; + break; + case Qt::Key_W: + m_h += 1.0; + break; + case Qt::Key_S: + m_h -= 1.0; + break; + + default: + QWidget::keyPressEvent(event); + break; + } + + update(); +} diff --git a/plugins/channelmimo/doa2/doa2compass.h b/plugins/channelmimo/doa2/doa2compass.h new file mode 100644 index 000000000..2ad71f6d3 --- /dev/null +++ b/plugins/channelmimo/doa2/doa2compass.h @@ -0,0 +1,119 @@ +/////////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2022 Edouard Griffiths, F4EXB // +// // +// This program is free software; you can redistribute it and/or modify // +// it under the terms of the GNU General Public License as published by // +// the Free Software Foundation as version 3 of the License, or // +// (at your option) any later version. // +// // +// This program is distributed in the hope that it will be useful, // +// but WITHOUT ANY WARRANTY; without even the implied warranty of // +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // +// GNU General Public License V3 for more details. // +// // +// You should have received a copy of the GNU General Public License // +// along with this program. If not, see . // +/////////////////////////////////////////////////////////////////////////////////// + +#ifndef INCLUDE_DOA2COMPASS_H +#define INCLUDE_DOA2COMPASS_H + +#include + +class DOA2Compass : public QWidget +{ + Q_OBJECT + +public: + DOA2Compass(QWidget *parent = nullptr); + ~DOA2Compass(); + + /// + /// \brief Set all data (yaw, alt, height) + /// + /// \param y - yaw ( in degree) + /// \param a - altitude ( in m) + /// \param h - height from ground (in m) + /// + void setData(double y, double a, double h) { + m_yaw = y; + m_alt = a; + m_h = h; + + if( m_yaw < 0 ) m_yaw = 360 + m_yaw; + if( m_yaw > 360 ) m_yaw = m_yaw - 360; + + emit canvasReplot(); + } + + /// + /// \brief Set yaw angle (in degree) + /// \param val - yaw angle (in degree) + /// + void setYaw(double val) { + m_yaw = val; + if( m_yaw < 0 ) m_yaw = 360 + m_yaw; + if( m_yaw > 360 ) m_yaw = m_yaw - 360; + + emit canvasReplot(); + } + + /// + /// \brief Set altitude value + /// \param val - altitude (in m) + /// + void setAlt(double val) { + m_alt = val; + + emit canvasReplot(); + } + + /// + /// \brief Set height from ground + /// \param val - height (in m) + /// + void setH(double val) { + m_h = val; + + emit canvasReplot(); + } + + /// + /// \brief Get yaw angle + /// \return yaw angle (in degree) + /// + double getYaw() {return m_yaw;} + + /// + /// \brief Get altitude value + /// \return altitude (in m) + /// + double getAlt() {return m_alt;} + + /// + /// \brief Get height from ground + /// \return height from ground (in m) + /// + double getH() {return m_h;} + +signals: + void canvasReplot(void); + +protected slots: + void canvasReplot_slot(void); + +protected: + void paintEvent(QPaintEvent *event); + void resizeEvent(QResizeEvent *event); + void keyPressEvent(QKeyEvent *event); + +protected: + int m_sizeMin, m_sizeMax; ///< widget min/max size (in pixel) + int m_size, m_offset; ///< widget size and offset size + + double m_yaw; ///< yaw angle (in degree) + double m_alt; ///< altitude (in m) + double m_h; ///< height from ground (in m) +}; + +#endif // INCLUDE_DOA2COMPASS_H diff --git a/plugins/channelmimo/doa2/doa2gui.cpp b/plugins/channelmimo/doa2/doa2gui.cpp index d5df47dc3..27ea8b4a0 100644 --- a/plugins/channelmimo/doa2/doa2gui.cpp +++ b/plugins/channelmimo/doa2/doa2gui.cpp @@ -87,7 +87,6 @@ bool DOA2GUI::handleMessage(const Message& message) const DOA2::MsgConfigureDOA2& notif = (const DOA2::MsgConfigureDOA2&) message; m_settings = notif.getSettings(); ui->scopeGUI->updateSettings(); - ui->spectrumGUI->updateSettings(); m_channelMarker.updateSettings(static_cast(m_settings.m_channelMarker)); displaySettings(); return true; @@ -117,19 +116,11 @@ DOA2GUI::DOA2GUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, MIMOChannel *ch connect(this, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(onMenuDialogCalled(const QPoint &))); m_doa2 = (DOA2*) channelMIMO; - m_spectrumVis = m_doa2->getSpectrumVis(); - m_spectrumVis->setGLSpectrum(ui->glSpectrum); m_scopeVis = m_doa2->getScopeVis(); m_scopeVis->setGLScope(ui->glScope); m_doa2->setMessageQueueToGUI(getInputMessageQueue()); m_sampleRate = m_doa2->getDeviceSampleRate(); - ui->glSpectrum->setDisplayWaterfall(true); - ui->glSpectrum->setDisplayMaxHold(true); - ui->glSpectrum->setCenterFrequency(0); - ui->glSpectrum->setSampleRate(m_sampleRate); - ui->glSpectrum->setSsbSpectrum(false); - ui->glSpectrum->setLsbDisplay(false); ui->glScope->setTraceModulo(DOA2::m_fftSize); ui->glScope->connectTimer(MainCore::instance()->getMasterTimer()); @@ -146,11 +137,9 @@ DOA2GUI::DOA2GUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, MIMOChannel *ch m_settings.setChannelMarker(&m_channelMarker); m_settings.setRollupState(&m_rollupState); m_settings.setScopeGUI(ui->scopeGUI); - m_settings.setSpectrumGUI(ui->spectrumGUI); m_deviceUISet->addChannelMarker(&m_channelMarker); - ui->spectrumGUI->setBuddies(m_spectrumVis, ui->glSpectrum); ui->scopeGUI->setBuddies(m_scopeVis->getInputMessageQueue(), m_scopeVis, ui->glScope); m_scopeVis->setTraceChunkSize(DOA2::m_fftSize); // Set scope trace length unit to FFT size @@ -220,7 +209,6 @@ void DOA2GUI::displayRateAndShift() ui->channelRateText->setText(tr("%1k").arg(QString::number(channelSampleRate / 1000.0, 'g', 5))); m_channelMarker.setCenterFrequency(shift); m_channelMarker.setBandwidth(channelSampleRate); - ui->glSpectrum->setSampleRate(channelSampleRate); m_scopeVis->setLiveRate(channelSampleRate); } diff --git a/plugins/channelmimo/doa2/doa2gui.h b/plugins/channelmimo/doa2/doa2gui.h index 524b67b04..90204d457 100644 --- a/plugins/channelmimo/doa2/doa2gui.h +++ b/plugins/channelmimo/doa2/doa2gui.h @@ -30,7 +30,6 @@ class PluginAPI; class DeviceUISet; class MIMOChannel; class DOA2; -class SpectrumVis; class ScopeVis; namespace Ui { @@ -72,7 +71,6 @@ private: bool m_doApplySettings; MovingAverageUtil m_channelPowerAvg; DOA2 *m_doa2; - SpectrumVis* m_spectrumVis; ScopeVis* m_scopeVis; MessageQueue m_inputMessageQueue; uint32_t m_tickCount; diff --git a/plugins/channelmimo/doa2/doa2gui.ui b/plugins/channelmimo/doa2/doa2gui.ui index 2c74e8f9f..ac415b4bb 100644 --- a/plugins/channelmimo/doa2/doa2gui.ui +++ b/plugins/channelmimo/doa2/doa2gui.ui @@ -355,78 +355,11 @@ - - - - 0 - 98 - 720 - 284 - - - - - 0 - 0 - - - - - 718 - 0 - - - - Frequency domain - - - - 2 - - - 2 - - - 2 - - - 2 - - - 2 - - - - - - 0 - 0 - - - - - 200 - 250 - - - - - Liberation Mono - 8 - - - - - - - - - 0 - 390 + 98 720 334 @@ -489,6 +422,55 @@ + + + + 0 + 432 + 720 + 284 + + + + + 0 + 0 + + + + + 718 + 0 + + + + DOA + + + + 2 + + + 2 + + + 2 + + + 12 + + + 2 + + + + + + + + + + @@ -497,18 +479,6 @@
gui/rollupcontents.h
1
- - GLSpectrum - QWidget -
gui/glspectrum.h
- 1 -
- - GLSpectrumGUI - QWidget -
gui/glspectrumgui.h
- 1 -
GLScope QWidget @@ -521,6 +491,12 @@
gui/glscopegui.h
1
+ + DOA2Compass + QWidget +
doa2compass.h
+ 1 +
diff --git a/plugins/channelmimo/doa2/doa2settings.cpp b/plugins/channelmimo/doa2/doa2settings.cpp index 8aaf66475..22a786dd6 100644 --- a/plugins/channelmimo/doa2/doa2settings.cpp +++ b/plugins/channelmimo/doa2/doa2settings.cpp @@ -25,7 +25,6 @@ DOA2Settings::DOA2Settings() : m_channelMarker(nullptr), - m_spectrumGUI(nullptr), m_scopeGUI(nullptr), m_rollupState(nullptr) { @@ -35,7 +34,7 @@ DOA2Settings::DOA2Settings() : void DOA2Settings::resetToDefaults() { m_correlationType = CorrelationAdd; - m_rgbColor = QColor(250, 174, 120).rgb(); + m_rgbColor = QColor(250, 120, 120).rgb(); m_title = "DOA 2 sources"; m_log2Decim = 0; m_filterChainHash = 0; @@ -67,9 +66,6 @@ QByteArray DOA2Settings::serialize() const s.writeBlob(14, m_geometryBytes); s.writeBool(15, m_hidden); - if (m_spectrumGUI) { - s.writeBlob(20, m_spectrumGUI->serialize()); - } if (m_scopeGUI) { s.writeBlob(21, m_scopeGUI->serialize()); } @@ -126,12 +122,6 @@ bool DOA2Settings::deserialize(const QByteArray& data) d.readBlob(14, &m_geometryBytes); d.readBool(15, &m_hidden, false); - if (m_spectrumGUI) - { - d.readBlob(20, &bytetmp); - m_spectrumGUI->deserialize(bytetmp); - } - if (m_scopeGUI) { d.readBlob(21, &bytetmp); diff --git a/plugins/channelmimo/doa2/doa2settings.h b/plugins/channelmimo/doa2/doa2settings.h index 591b02ffc..c37db45b3 100644 --- a/plugins/channelmimo/doa2/doa2settings.h +++ b/plugins/channelmimo/doa2/doa2settings.h @@ -53,7 +53,6 @@ struct DOA2Settings bool m_hidden; Serializable *m_channelMarker; - Serializable *m_spectrumGUI; Serializable *m_scopeGUI; Serializable *m_rollupState; @@ -61,7 +60,6 @@ struct DOA2Settings void resetToDefaults(); void setRollupState(Serializable *rollupState) { m_rollupState = rollupState; } void setChannelMarker(Serializable *channelMarker) { m_channelMarker = channelMarker; } - void setSpectrumGUI(Serializable *spectrumGUI) { m_spectrumGUI = spectrumGUI; } void setScopeGUI(Serializable *scopeGUI) { m_scopeGUI = scopeGUI; } QByteArray serialize() const; bool deserialize(const QByteArray& data); diff --git a/plugins/channelmimo/doa2/doa2webapiadapter.cpp b/plugins/channelmimo/doa2/doa2webapiadapter.cpp index d27cce89e..d51487b27 100644 --- a/plugins/channelmimo/doa2/doa2webapiadapter.cpp +++ b/plugins/channelmimo/doa2/doa2webapiadapter.cpp @@ -23,7 +23,6 @@ DOA2WebAPIAdapter::DOA2WebAPIAdapter() { m_settings.setScopeGUI(&m_glScopeSettings); - m_settings.setSpectrumGUI(&m_SpectrumSettings); } DOA2WebAPIAdapter::~DOA2WebAPIAdapter() @@ -36,15 +35,14 @@ int DOA2WebAPIAdapter::webapiSettingsGet( (void) errorMessage; response.setDoa2Settings(new SWGSDRangel::SWGDOA2Settings()); response.getDoa2Settings()->init(); - webapiFormatChannelSettings(response, m_settings, m_glScopeSettings, m_SpectrumSettings); + webapiFormatChannelSettings(response, m_settings, m_glScopeSettings); return 200; } void DOA2WebAPIAdapter::webapiFormatChannelSettings( SWGSDRangel::SWGChannelSettings& response, const DOA2Settings& settings, - const GLScopeSettings& scopeSettings, - const SpectrumSettings& spectrumSettings) + const GLScopeSettings& scopeSettings) { response.getDoa2Settings()->setCorrelationType((int) settings.m_correlationType); response.getDoa2Settings()->setRgbColor(settings.m_rgbColor); @@ -111,25 +109,6 @@ void DOA2WebAPIAdapter::webapiFormatChannelSettings( swgScope->getTriggersData()->back()->setTriggerPositiveEdge(triggerIt->m_triggerPositiveEdge ? 1 : 0); swgScope->getTriggersData()->back()->setTriggerRepeat(triggerIt->m_triggerRepeat); } - - // spectrum - SWGSDRangel::SWGGLSpectrum *swgSpectrum = new SWGSDRangel::SWGGLSpectrum(); - swgSpectrum->init(); - response.getDoa2Settings()->setSpectrumConfig(swgSpectrum); - swgSpectrum->setAveragingMode((int) spectrumSettings.m_averagingMode); - swgSpectrum->setAveragingValue(SpectrumSettings::getAveragingValue(spectrumSettings.m_averagingIndex, spectrumSettings.m_averagingMode)); - swgSpectrum->setDecay(spectrumSettings.m_decay); - swgSpectrum->setDecayDivisor(spectrumSettings.m_decayDivisor); - swgSpectrum->setDisplayCurrent(spectrumSettings.m_displayCurrent ? 1 : 0); - swgSpectrum->setDisplayGrid(spectrumSettings.m_displayGrid ? 1 : 0); - swgSpectrum->setDisplayGridIntensity(spectrumSettings.m_displayGridIntensity); - swgSpectrum->setDisplayHistogram(spectrumSettings.m_displayHistogram ? 1 : 0); - swgSpectrum->setDisplayMaxHold(spectrumSettings.m_displayMaxHold ? 1 : 0); - swgSpectrum->setDisplayTraceIntensity(spectrumSettings.m_displayTraceIntensity); - swgSpectrum->setDisplayWaterfall(spectrumSettings.m_displayWaterfall ? 1 : 0); - swgSpectrum->setFftOverlap(spectrumSettings.m_fftOverlap); - swgSpectrum->setFftSize(spectrumSettings.m_fftSize); - swgSpectrum->setFpsPeriodMs(spectrumSettings.m_fpsPeriodMs); } int DOA2WebAPIAdapter::webapiSettingsPutPatch( @@ -140,14 +119,13 @@ int DOA2WebAPIAdapter::webapiSettingsPutPatch( { (void) force; // no action (void) errorMessage; - webapiUpdateChannelSettings(m_settings, m_glScopeSettings, m_SpectrumSettings, channelSettingsKeys, response); + webapiUpdateChannelSettings(m_settings, m_glScopeSettings, channelSettingsKeys, response); return 200; } void DOA2WebAPIAdapter::webapiUpdateChannelSettings( DOA2Settings& settings, GLScopeSettings& scopeSettings, - SpectrumSettings& spectrumSettings, const QStringList& channelSettingsKeys, SWGSDRangel::SWGChannelSettings& response) { @@ -320,54 +298,6 @@ void DOA2WebAPIAdapter::webapiUpdateChannelSettings( } } } - // spectrum - if (channelSettingsKeys.contains("spectrumConfig")) - { - if (channelSettingsKeys.contains("spectrumConfig.averagingMode")) { - spectrumSettings.m_averagingMode = (SpectrumSettings::AveragingMode) response.getDoa2Settings()->getSpectrumConfig()->getAveragingMode(); - } - if (channelSettingsKeys.contains("spectrumConfig.averagingValue")) - { - spectrumSettings.m_averagingValue = response.getDoa2Settings()->getSpectrumConfig()->getAveragingValue(); - spectrumSettings.m_averagingIndex = SpectrumSettings::getAveragingIndex(spectrumSettings.m_averagingValue, spectrumSettings.m_averagingMode); - } - if (channelSettingsKeys.contains("spectrumConfig.decay")) { - spectrumSettings.m_decay = response.getDoa2Settings()->getSpectrumConfig()->getDecay(); - } - if (channelSettingsKeys.contains("spectrumConfig.decayDivisor")) { - spectrumSettings.m_decayDivisor = response.getDoa2Settings()->getSpectrumConfig()->getDecayDivisor(); - } - if (channelSettingsKeys.contains("spectrumConfig.displayCurrent")) { - spectrumSettings.m_displayCurrent = response.getDoa2Settings()->getSpectrumConfig()->getDisplayCurrent() != 0; - } - if (channelSettingsKeys.contains("spectrumConfig.displayGrid")) { - spectrumSettings.m_displayGrid = response.getDoa2Settings()->getSpectrumConfig()->getDisplayGrid() != 0; - } - if (channelSettingsKeys.contains("spectrumConfig.displayGridIntensity")) { - spectrumSettings.m_displayGridIntensity = response.getDoa2Settings()->getSpectrumConfig()->getDisplayGridIntensity(); - } - if (channelSettingsKeys.contains("spectrumConfig.displayHistogram")) { - spectrumSettings.m_displayHistogram = response.getDoa2Settings()->getSpectrumConfig()->getDisplayHistogram() != 0; - } - if (channelSettingsKeys.contains("spectrumConfig.displayMaxHold")) { - spectrumSettings.m_displayMaxHold = response.getDoa2Settings()->getSpectrumConfig()->getDisplayMaxHold() != 0; - } - if (channelSettingsKeys.contains("spectrumConfig.displayTraceIntensity")) { - spectrumSettings.m_displayTraceIntensity = response.getDoa2Settings()->getSpectrumConfig()->getDisplayTraceIntensity(); - } - if (channelSettingsKeys.contains("spectrumConfig.displayWaterfall")) { - spectrumSettings.m_displayWaterfall = response.getDoa2Settings()->getSpectrumConfig()->getDisplayWaterfall() != 0; - } - if (channelSettingsKeys.contains("spectrumConfig.fftOverlap")) { - spectrumSettings.m_fftOverlap = response.getDoa2Settings()->getSpectrumConfig()->getFftOverlap(); - } - if (channelSettingsKeys.contains("spectrumConfig.fftSize")) { - spectrumSettings.m_fftSize = response.getDoa2Settings()->getSpectrumConfig()->getFftSize(); - } - if (channelSettingsKeys.contains("spectrumConfig.fpsPeriodMs")) { - spectrumSettings.m_fpsPeriodMs = response.getDoa2Settings()->getSpectrumConfig()->getFpsPeriodMs(); - } - } } int DOA2WebAPIAdapter::qColorToInt(const QColor& color) diff --git a/plugins/channelmimo/doa2/doa2webapiadapter.h b/plugins/channelmimo/doa2/doa2webapiadapter.h index 305650a3f..62b249646 100644 --- a/plugins/channelmimo/doa2/doa2webapiadapter.h +++ b/plugins/channelmimo/doa2/doa2webapiadapter.h @@ -47,20 +47,17 @@ public: static void webapiFormatChannelSettings( SWGSDRangel::SWGChannelSettings& response, const DOA2Settings& settings, - const GLScopeSettings& scopeSettings, - const SpectrumSettings& spectrumSettings); + const GLScopeSettings& scopeSettings); static void webapiUpdateChannelSettings( DOA2Settings& settings, GLScopeSettings& scopeSettings, - SpectrumSettings& spectrumSettings, const QStringList& channelSettingsKeys, SWGSDRangel::SWGChannelSettings& response); private: DOA2Settings m_settings; GLScopeSettings m_glScopeSettings; - SpectrumSettings m_SpectrumSettings; static int qColorToInt(const QColor& color); static QColor intToQColor(int intColor); diff --git a/sdrbase/resources/webapi/doc/html2/index.html b/sdrbase/resources/webapi/doc/html2/index.html index 2f5bdb038..fe4c2a9b6 100644 --- a/sdrbase/resources/webapi/doc/html2/index.html +++ b/sdrbase/resources/webapi/doc/html2/index.html @@ -4560,9 +4560,6 @@ margin-bottom: 20px; "reverseAPIChannelIndex" : { "type" : "integer" }, - "spectrumConfig" : { - "$ref" : "#/definitions/GLSpectrum" - }, "scopeConfig" : { "$ref" : "#/definitions/GLScope" }, @@ -56112,7 +56109,7 @@ except ApiException as e:
- Generated 2022-05-27T00:17:01.671+02:00 + Generated 2022-05-27T09:54:03.529+02:00
diff --git a/sdrbase/resources/webapi/doc/swagger/include/DOA2.yaml b/sdrbase/resources/webapi/doc/swagger/include/DOA2.yaml index daa432d49..355331e39 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/DOA2.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/DOA2.yaml @@ -23,8 +23,6 @@ DOA2Settings: type: integer reverseAPIChannelIndex: type: integer - spectrumConfig: - $ref: "/doc/swagger/include/GLSpectrum.yaml#/GLSpectrum" scopeConfig: $ref: "/doc/swagger/include/GLScope.yaml#/GLScope" channelMarker: diff --git a/swagger/sdrangel/api/swagger/include/DOA2.yaml b/swagger/sdrangel/api/swagger/include/DOA2.yaml index 07ba23a9d..bd4f8262a 100644 --- a/swagger/sdrangel/api/swagger/include/DOA2.yaml +++ b/swagger/sdrangel/api/swagger/include/DOA2.yaml @@ -23,8 +23,6 @@ DOA2Settings: type: integer reverseAPIChannelIndex: type: integer - spectrumConfig: - $ref: "http://swgserver:8081/api/swagger/include/GLSpectrum.yaml#/GLSpectrum" scopeConfig: $ref: "http://swgserver:8081/api/swagger/include/GLScope.yaml#/GLScope" channelMarker: diff --git a/swagger/sdrangel/code/html2/index.html b/swagger/sdrangel/code/html2/index.html index 2f5bdb038..fe4c2a9b6 100644 --- a/swagger/sdrangel/code/html2/index.html +++ b/swagger/sdrangel/code/html2/index.html @@ -4560,9 +4560,6 @@ margin-bottom: 20px; "reverseAPIChannelIndex" : { "type" : "integer" }, - "spectrumConfig" : { - "$ref" : "#/definitions/GLSpectrum" - }, "scopeConfig" : { "$ref" : "#/definitions/GLScope" }, @@ -56112,7 +56109,7 @@ except ApiException as e:
- Generated 2022-05-27T00:17:01.671+02:00 + Generated 2022-05-27T09:54:03.529+02:00
diff --git a/swagger/sdrangel/code/qt5/client/SWGDOA2Settings.cpp b/swagger/sdrangel/code/qt5/client/SWGDOA2Settings.cpp index 6c665512d..26c5340a8 100644 --- a/swagger/sdrangel/code/qt5/client/SWGDOA2Settings.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGDOA2Settings.cpp @@ -48,8 +48,6 @@ SWGDOA2Settings::SWGDOA2Settings() { m_reverse_api_device_index_isSet = false; reverse_api_channel_index = 0; m_reverse_api_channel_index_isSet = false; - spectrum_config = nullptr; - m_spectrum_config_isSet = false; scope_config = nullptr; m_scope_config_isSet = false; channel_marker = nullptr; @@ -84,8 +82,6 @@ SWGDOA2Settings::init() { m_reverse_api_device_index_isSet = false; reverse_api_channel_index = 0; m_reverse_api_channel_index_isSet = false; - spectrum_config = new SWGGLSpectrum(); - m_spectrum_config_isSet = false; scope_config = new SWGGLScope(); m_scope_config_isSet = false; channel_marker = new SWGChannelMarker(); @@ -110,9 +106,6 @@ SWGDOA2Settings::cleanup() { - if(spectrum_config != nullptr) { - delete spectrum_config; - } if(scope_config != nullptr) { delete scope_config; } @@ -155,8 +148,6 @@ SWGDOA2Settings::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&reverse_api_channel_index, pJson["reverseAPIChannelIndex"], "qint32", ""); - ::SWGSDRangel::setValue(&spectrum_config, pJson["spectrumConfig"], "SWGGLSpectrum", "SWGGLSpectrum"); - ::SWGSDRangel::setValue(&scope_config, pJson["scopeConfig"], "SWGGLScope", "SWGGLScope"); ::SWGSDRangel::setValue(&channel_marker, pJson["channelMarker"], "SWGChannelMarker", "SWGChannelMarker"); @@ -209,9 +200,6 @@ SWGDOA2Settings::asJsonObject() { if(m_reverse_api_channel_index_isSet){ obj->insert("reverseAPIChannelIndex", QJsonValue(reverse_api_channel_index)); } - if((spectrum_config != nullptr) && (spectrum_config->isSet())){ - toJsonValue(QString("spectrumConfig"), spectrum_config, obj, QString("SWGGLSpectrum")); - } if((scope_config != nullptr) && (scope_config->isSet())){ toJsonValue(QString("scopeConfig"), scope_config, obj, QString("SWGGLScope")); } @@ -325,16 +313,6 @@ SWGDOA2Settings::setReverseApiChannelIndex(qint32 reverse_api_channel_index) { this->m_reverse_api_channel_index_isSet = true; } -SWGGLSpectrum* -SWGDOA2Settings::getSpectrumConfig() { - return spectrum_config; -} -void -SWGDOA2Settings::setSpectrumConfig(SWGGLSpectrum* spectrum_config) { - this->spectrum_config = spectrum_config; - this->m_spectrum_config_isSet = true; -} - SWGGLScope* SWGDOA2Settings::getScopeConfig() { return scope_config; @@ -400,9 +378,6 @@ SWGDOA2Settings::isSet(){ if(m_reverse_api_channel_index_isSet){ isObjectUpdated = true; break; } - if(spectrum_config && spectrum_config->isSet()){ - isObjectUpdated = true; break; - } if(scope_config && scope_config->isSet()){ isObjectUpdated = true; break; } diff --git a/swagger/sdrangel/code/qt5/client/SWGDOA2Settings.h b/swagger/sdrangel/code/qt5/client/SWGDOA2Settings.h index c828a9587..39aee1bbf 100644 --- a/swagger/sdrangel/code/qt5/client/SWGDOA2Settings.h +++ b/swagger/sdrangel/code/qt5/client/SWGDOA2Settings.h @@ -24,7 +24,6 @@ #include "SWGChannelMarker.h" #include "SWGGLScope.h" -#include "SWGGLSpectrum.h" #include "SWGRollupState.h" #include @@ -76,9 +75,6 @@ public: qint32 getReverseApiChannelIndex(); void setReverseApiChannelIndex(qint32 reverse_api_channel_index); - SWGGLSpectrum* getSpectrumConfig(); - void setSpectrumConfig(SWGGLSpectrum* spectrum_config); - SWGGLScope* getScopeConfig(); void setScopeConfig(SWGGLScope* scope_config); @@ -122,9 +118,6 @@ private: qint32 reverse_api_channel_index; bool m_reverse_api_channel_index_isSet; - SWGGLSpectrum* spectrum_config; - bool m_spectrum_config_isSet; - SWGGLScope* scope_config; bool m_scope_config_isSet; From 4e373478e7c232878999ccbfd7382fd9d105e513 Mon Sep 17 00:00:00 2001 From: f4exb Date: Fri, 27 May 2022 14:02:52 +0200 Subject: [PATCH 06/15] DOA2: Compass widget updates --- plugins/channelmimo/doa2/doa2compass.cpp | 187 +++++++++++------------ plugins/channelmimo/doa2/doa2compass.h | 95 +++++++----- plugins/channelmimo/doa2/doa2gui.cpp | 5 + 3 files changed, 150 insertions(+), 137 deletions(-) diff --git a/plugins/channelmimo/doa2/doa2compass.cpp b/plugins/channelmimo/doa2/doa2compass.cpp index 0b2fcfb8b..c210d010e 100644 --- a/plugins/channelmimo/doa2/doa2compass.cpp +++ b/plugins/channelmimo/doa2/doa2compass.cpp @@ -30,6 +30,7 @@ DOA2Compass::DOA2Compass(QWidget *parent) m_sizeMax = 600; m_offset = 2; m_size = m_sizeMin - 2*m_offset; + m_drawLegend = false; setMinimumSize(m_sizeMin, m_sizeMin); setMaximumSize(m_sizeMax, m_sizeMax); @@ -37,17 +38,15 @@ DOA2Compass::DOA2Compass(QWidget *parent) setFocusPolicy(Qt::NoFocus); - m_yaw = 0.0; - m_alt = 0.0; - m_h = 0.0; + m_azPos = 0.0; + m_azNeg = 0.0; + m_azAnt = 0.0; } DOA2Compass::~DOA2Compass() { - } - void DOA2Compass::canvasReplot_slot(void) { update(); @@ -56,13 +55,14 @@ void DOA2Compass::canvasReplot_slot(void) void DOA2Compass::resizeEvent(QResizeEvent *event) { m_size = qMin(width(),height()) - 2*m_offset; + QWidget::resizeEvent(event); } void DOA2Compass::paintEvent(QPaintEvent *) { QPainter painter(this); - QBrush bgGround(QColor(48,172,220)); + QBrush bgGround(palette().button().color()); QPen whitePen(Qt::white); QPen blackPen(Qt::black); @@ -77,15 +77,12 @@ void DOA2Compass::paintEvent(QPaintEvent *) greenPen.setWidth(2); painter.setRenderHint(QPainter::Antialiasing); - painter.translate(width() / 2, height() / 2); - // draw background { - painter.setPen(blackPen); + painter.setPen(whitePen); painter.setBrush(bgGround); - painter.drawEllipse(-m_size/2, -m_size/2, m_size, m_size); } @@ -100,60 +97,47 @@ void DOA2Compass::paintEvent(QPaintEvent *) QString s; blackPen.setWidth(1); - painter.setPen(blackPen); + painter.setPen(whitePen); + painter.setFont(font()); for(int i=0; ikey()) { - case Qt::Key_Left: - m_yaw -= 1.0; - break; - case Qt::Key_Right: - m_yaw += 1.0; - break; - case Qt::Key_Down: - m_alt -= 1.0; - break; - case Qt::Key_Up: - m_alt += 1.0; - break; - case Qt::Key_W: - m_h += 1.0; - break; - case Qt::Key_S: - m_h -= 1.0; - break; - - default: - QWidget::keyPressEvent(event); - break; - } - - update(); -} diff --git a/plugins/channelmimo/doa2/doa2compass.h b/plugins/channelmimo/doa2/doa2compass.h index 2ad71f6d3..68279adee 100644 --- a/plugins/channelmimo/doa2/doa2compass.h +++ b/plugins/channelmimo/doa2/doa2compass.h @@ -31,70 +31,93 @@ public: /// /// \brief Set all data (yaw, alt, height) /// - /// \param y - yaw ( in degree) - /// \param a - altitude ( in m) - /// \param h - height from ground (in m) + /// \param azPos - forward (positive angles side relative to antennas direction) azimuth (in degrees) + /// \param azNeg - reverse (negatve angles side relative to antennas direction) azimuth (in degrees) + /// \param azAnt - antennas azimuth from 1 (connected to stream 0) to 2 (connected to stream 1) /// - void setData(double y, double a, double h) { - m_yaw = y; - m_alt = a; - m_h = h; + void setData(double azPos, double azNeg, double azAnt) { + m_azPos = azPos; + m_azNeg = azNeg; + m_azAnt = azAnt; - if( m_yaw < 0 ) m_yaw = 360 + m_yaw; - if( m_yaw > 360 ) m_yaw = m_yaw - 360; + if( m_azPos < 0 ) m_azPos = 360 + m_azPos; + if( m_azPos > 360 ) m_azPos = m_azPos - 360; + + if( m_azNeg < 0 ) m_azNeg = 360 + m_azNeg; + if( m_azNeg > 360 ) m_azNeg = m_azNeg - 360; + + if( azAnt < 0 ) azAnt = 360 + azAnt; + if( azAnt > 360 ) azAnt = azAnt - 360; emit canvasReplot(); } /// - /// \brief Set yaw angle (in degree) - /// \param val - yaw angle (in degree) + /// \brief Set forward azimoth (in degree) + /// \param val - forward azimoth (in degree) /// - void setYaw(double val) { - m_yaw = val; - if( m_yaw < 0 ) m_yaw = 360 + m_yaw; - if( m_yaw > 360 ) m_yaw = m_yaw - 360; + void setAzPos(double val) + { + m_azPos = val; + if( m_azPos < 0 ) m_azPos = 360 + m_azPos; + if( m_azPos > 360 ) m_azPos = m_azPos - 360; emit canvasReplot(); } /// - /// \brief Set altitude value - /// \param val - altitude (in m) + /// \brief Set reverse azimoth (in degree) + /// \param val - reverse azimoth (in degree) /// - void setAlt(double val) { - m_alt = val; + void setAzNeg(double val) + { + m_azNeg = val; + if( m_azNeg < 0 ) m_azNeg = 360 + m_azNeg; + if( m_azNeg > 360 ) m_azNeg = m_azNeg - 360; emit canvasReplot(); } /// - /// \brief Set height from ground - /// \param val - height (in m) + /// \brief Set antennas azimoth (in degree) + /// \param val - antennas azimoth (in degree) /// - void setH(double val) { - m_h = val; + void setAzAnt(double val) + { + m_azAnt = val; + if( m_azAnt < 0 ) m_azAnt = 360 + m_azAnt; + if( m_azAnt > 360 ) m_azAnt = m_azAnt - 360; emit canvasReplot(); } /// - /// \brief Get yaw angle - /// \return yaw angle (in degree) + /// \brief Draw legend in the center of the compass + /// \param drawLegend - true to draw legend else false /// - double getYaw() {return m_yaw;} + void drawLegend(bool drawLegend) + { + m_drawLegend = drawLegend; + emit canvasReplot(); + } /// - /// \brief Get altitude value - /// \return altitude (in m) + /// \brief Get forward azimuth + /// \return forward azimuth (in degree) /// - double getAlt() {return m_alt;} + double getAzPos() const {return m_azPos; } /// - /// \brief Get height from ground - /// \return height from ground (in m) + /// \brief Get reverse azimuth + /// \return reverse azimuth (in degree) /// - double getH() {return m_h;} + double getAzNeg() const {return m_azNeg; } + + /// + /// \brief Get antennas azimuth + /// \return antennas azimuth (in degree) + /// + double getAzAnt() const {return m_azAnt; } signals: void canvasReplot(void); @@ -105,15 +128,15 @@ protected slots: protected: void paintEvent(QPaintEvent *event); void resizeEvent(QResizeEvent *event); - void keyPressEvent(QKeyEvent *event); protected: int m_sizeMin, m_sizeMax; ///< widget min/max size (in pixel) int m_size, m_offset; ///< widget size and offset size + bool m_drawLegend; ///< draw legend in the center - double m_yaw; ///< yaw angle (in degree) - double m_alt; ///< altitude (in m) - double m_h; ///< height from ground (in m) + double m_azPos; ///< forward (+) azimuth (in degree) + double m_azNeg; ///< reverse (-) azimuth (in degree) + double m_azAnt; ///< antennas azimuth from 1 (connected to stream 0) to 2 (connected to stream 1) }; #endif // INCLUDE_DOA2COMPASS_H diff --git a/plugins/channelmimo/doa2/doa2gui.cpp b/plugins/channelmimo/doa2/doa2gui.cpp index 27ea8b4a0..ad51a4c32 100644 --- a/plugins/channelmimo/doa2/doa2gui.cpp +++ b/plugins/channelmimo/doa2/doa2gui.cpp @@ -151,6 +151,11 @@ DOA2GUI::DOA2GUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, MIMOChannel *ch makeUIConnections(); displayRateAndShift(); applySettings(true); + + // Test + ui->compass->setAzNeg(85); + ui->compass->setAzPos(315); + ui->compass->setAzAnt(20); } DOA2GUI::~DOA2GUI() From 0e08a35d49dd9d706f46907a09ee0513849d0aea Mon Sep 17 00:00:00 2001 From: f4exb Date: Fri, 27 May 2022 16:49:32 +0200 Subject: [PATCH 07/15] DOA2: removed useless scope modes --- plugins/channelmimo/doa2/doa2corr.cpp | 285 +--------------------- plugins/channelmimo/doa2/doa2corr.h | 13 - plugins/channelmimo/doa2/doa2gui.ui | 38 +-- plugins/channelmimo/doa2/doa2settings.cpp | 4 +- plugins/channelmimo/doa2/doa2settings.h | 5 - 5 files changed, 14 insertions(+), 331 deletions(-) diff --git a/plugins/channelmimo/doa2/doa2corr.cpp b/plugins/channelmimo/doa2/doa2corr.cpp index 1892d00c5..8b2411f1f 100644 --- a/plugins/channelmimo/doa2/doa2corr.cpp +++ b/plugins/channelmimo/doa2/doa2corr.cpp @@ -119,7 +119,7 @@ Sample invfft2star(const std::complex& a) { //!< Complex float to Sample } DOA2Correlator::DOA2Correlator(int fftSize) : - m_corrType(DOA2Settings::CorrelationAdd), + m_corrType(DOA2Settings::CorrelationFFT), m_fftSize(fftSize) { setPhase(0); @@ -177,34 +177,16 @@ bool DOA2Correlator::performCorr( case DOA2Settings::Correlation1: results = performOpCorr(data0, size0, data1, size1, sSecond); break; - case DOA2Settings::CorrelationAdd: - results = performOpCorr(data0, size0, data1, size1, sAdd); - break; - case DOA2Settings::CorrelationMultiply: - results = performOpCorr(data0, size0, data1, size1, sMulConj); - break; - case DOA2Settings::CorrelationIFFT: - results = performIFFTCorr(data0, size0, data1, size1); - break; - case DOA2Settings::CorrelationIFFTStar: - results = performIFFTCorr(data0, size0, data1, size1, true); - break; case DOA2Settings::CorrelationFFT: results = performFFTProd(data0, size0, data1, size1); break; - case DOA2Settings::CorrelationIFFT2: - results = performIFFT2Corr(data0, size0, data1, size1); - break; default: break; } } else if ((m_phase == -180) || (m_phase == 180)) { - if ((m_corrType == DOA2Settings::CorrelationIFFT) - || (m_corrType == DOA2Settings::CorrelationIFFT2) - || (m_corrType == DOA2Settings::CorrelationIFFTStar) - || (m_corrType == DOA2Settings::CorrelationFFT)) + if (m_corrType == DOA2Settings::CorrelationFFT) { if (size1 > m_data1p.size()) { m_data1p.resize(size1); @@ -228,24 +210,9 @@ bool DOA2Correlator::performCorr( case DOA2Settings::Correlation1: results = performOpCorr(data0, size0, data1, size1, sSecondInv); break; - case DOA2Settings::CorrelationAdd: - results = performOpCorr(data0, size0, data1, size1, sAddInv); - break; - case DOA2Settings::CorrelationMultiply: - results = performOpCorr(data0, size0, data1, size1, sMulConjInv); - break; - case DOA2Settings::CorrelationIFFT: - results = performIFFTCorr(data0, size0, m_data1p, size1); - break; - case DOA2Settings::CorrelationIFFTStar: - results = performIFFTCorr(data0, size0, m_data1p, size1, true); - break; case DOA2Settings::CorrelationFFT: results = performFFTProd(data0, size0, m_data1p, size1); break; - case DOA2Settings::CorrelationIFFT2: - results = performIFFT2Corr(data0, size0, m_data1p, size1); - break; default: break; } @@ -280,24 +247,9 @@ bool DOA2Correlator::performCorr( case DOA2Settings::Correlation1: results = performOpCorr(data0, size0, m_data1p, size1, sSecond); break; - case DOA2Settings::CorrelationAdd: - results = performOpCorr(data0, size0, m_data1p, size1, sAdd); - break; - case DOA2Settings::CorrelationMultiply: - results = performOpCorr(data0, size0, m_data1p, size1, sMulConj); - break; - case DOA2Settings::CorrelationIFFT: - results = performIFFTCorr(data0, size0, m_data1p, size1); - break; - case DOA2Settings::CorrelationIFFTStar: - results = performIFFTCorr(data0, size0, m_data1p, size1, true); - break; case DOA2Settings::CorrelationFFT: results = performFFTProd(data0, size0, m_data1p, size1); break; - case DOA2Settings::CorrelationIFFT2: - results = performIFFT2Corr(data0, size0, m_data1p, size1); - break; default: break; } @@ -331,239 +283,6 @@ bool DOA2Correlator::performOpCorr( return true; } -bool DOA2Correlator::performIFFTCorr( - const SampleVector& data0, - unsigned int size0, - const SampleVector& data1, - unsigned int size1, - bool star -) -{ - unsigned int size = std::min(size0, size1); - int nfft = 0; - SampleVector::const_iterator begin0 = data0.begin(); - SampleVector::const_iterator begin1 = data1.begin(); - adjustSCorrSize(size); - adjustTCorrSize(size); - - while (size >= m_fftSize) - { - // FFT[0] - std::transform( - begin0, - begin0 + m_fftSize, - m_fft[0]->in(), - s2c - ); - m_window.apply(m_fft[0]->in()); - std::fill(m_fft[0]->in() + m_fftSize, m_fft[0]->in() + 2*m_fftSize, std::complex{0, 0}); - m_fft[0]->transform(); - - // FFT[1] - std::transform( - begin1, - begin1 + m_fftSize, - m_fft[1]->in(), - s2c - ); - m_window.apply(m_fft[1]->in()); - std::fill(m_fft[1]->in() + m_fftSize, m_fft[1]->in() + 2*m_fftSize, std::complex{0, 0}); - m_fft[1]->transform(); - - // conjugate FFT[1] - std::transform( - m_fft[1]->out(), - m_fft[1]->out() + 2*m_fftSize, - m_dataj, - [](const std::complex& c) -> std::complex { - return std::conj(c); - } - ); - - // product of FFT[1]* with FFT[0] and store in inverse FFT input - std::transform( - m_fft[0]->out(), - m_fft[0]->out() + 2*m_fftSize, - m_dataj, - m_invFFT->in(), - [](std::complex& a, const std::complex& b) -> std::complex { - return (a*b); - } - ); - - // copy product to correlation spectrum - convert and scale to FFT size and Hanning window - std::transform( - m_invFFT->in(), - m_invFFT->in() + m_fftSize, - m_scorr.begin() + nfft*m_fftSize, - [this](const std::complex& a) -> Sample { - Sample s; - s.setReal(a.real()*(SDR_RX_SCALEF/m_fftSize)); - s.setImag(a.imag()*(SDR_RX_SCALEF/m_fftSize)); - return s; - } - ); - - // do the inverse FFT to get time correlation - m_invFFT->transform(); - - if (star) - { - // sum first half with the reversed second half as one is the conjugate of the other this should yield constant phase - *m_tcorr.begin() = invfft2star(m_invFFT->out()[0]); // t = 0 - std::reverse(m_invFFT->out() + m_fftSize, m_invFFT->out() + 2*m_fftSize); - std::transform( - m_invFFT->out() + 1, - m_invFFT->out() + m_fftSize, - m_invFFT->out() + m_fftSize, - m_tcorr.begin() + nfft*m_fftSize, - [](const std::complex& a, const std::complex& b) -> Sample { - Sample s; - std::complex sum = a + b; - s.setReal(sum.real()/12.0f); - s.setImag(sum.imag()/12.0f); - return s; - } - ); - } - else - { - std::transform( - m_invFFT->out(), - m_invFFT->out() + m_fftSize, - m_tcorr.begin() + nfft*m_fftSize, - [](const std::complex& a) -> Sample { - Sample s; - s.setReal(a.real()/6.0f); - s.setImag(a.imag()/6.0f); - return s; - } - ); - } - - size -= m_fftSize; - begin0 += m_fftSize; - begin1 += m_fftSize; - nfft++; - } - - // update the samples counters - m_processed = nfft*m_fftSize; - m_remaining[0] = size0 - nfft*m_fftSize; - m_remaining[1] = size1 - nfft*m_fftSize; - - return nfft > 0; -} - -bool DOA2Correlator::performIFFT2Corr( - const SampleVector& data0, - unsigned int size0, - const SampleVector& data1, - unsigned int size1 -) -{ - unsigned int size = std::min(size0, size1); - int nfft = 0; - SampleVector::const_iterator begin0 = data0.begin(); - SampleVector::const_iterator begin1 = data1.begin(); - adjustSCorrSize(size); - adjustTCorrSize(size); - - while (size >= m_fftSize) - { - // FFT[0] - std::transform( - begin0, - begin0 + m_fftSize, - m_fft2[0]->in(), - s2c - ); - m_window.apply(m_fft2[0]->in()); - m_fft2[0]->transform(); - - // FFT[1] - std::transform( - begin1, - begin1 + m_fftSize, - m_fft2[1]->in(), - s2c - ); - m_window.apply(m_fft2[1]->in()); - m_fft2[1]->transform(); - - // conjugate FFT[1] - std::transform( - m_fft2[1]->out(), - m_fft2[1]->out() + m_fftSize, - m_dataj, - [](const std::complex& c) -> std::complex { - return std::conj(c); - } - ); - - // product of FFT[1]* with FFT[0] and store in inverse FFT input - std::transform( - m_fft2[0]->out(), - m_fft2[0]->out() + m_fftSize, - m_dataj, - m_invFFT2->in(), - [](std::complex& a, const std::complex& b) -> std::complex { - return (a*b); - } - ); - - // copy product to correlation spectrum - convert and scale to FFT size - std::transform( - m_invFFT2->in(), - m_invFFT2->in() + m_fftSize, - m_scorr.begin() + nfft*m_fftSize, - [this](const std::complex& a) -> Sample { - Sample s; - s.setReal(a.real()*(SDR_RX_SCALEF/m_fftSize)); - s.setImag(a.imag()*(SDR_RX_SCALEF/m_fftSize)); - return s; - } - ); - - // do the inverse FFT to get time correlation - m_invFFT2->transform(); - std::transform( - m_invFFT2->out() + m_fftSize/2, - m_invFFT2->out() + m_fftSize, - m_tcorr.begin() + nfft*m_fftSize, - [](const std::complex& a) -> Sample { - Sample s; - s.setReal(a.real()/3.0f); - s.setImag(a.imag()/3.0f); - return s; - } - ); - std::transform( - m_invFFT2->out(), - m_invFFT2->out() + m_fftSize/2, - m_tcorr.begin() + nfft*m_fftSize + m_fftSize/2, - [](const std::complex& a) -> Sample { - Sample s; - s.setReal(a.real()/3.0f); - s.setImag(a.imag()/3.0f); - return s; - } - ); - - size -= m_fftSize; - begin0 += m_fftSize; - begin1 += m_fftSize; - nfft++; - } - - // update the samples counters - m_processed = nfft*m_fftSize; - m_remaining[0] = size0 - nfft*m_fftSize; - m_remaining[1] = size1 - nfft*m_fftSize; - - return nfft > 0; -} - bool DOA2Correlator::performFFTProd( const SampleVector& data0, unsigned int size0, diff --git a/plugins/channelmimo/doa2/doa2corr.h b/plugins/channelmimo/doa2/doa2corr.h index d08f0aacd..e89cab324 100644 --- a/plugins/channelmimo/doa2/doa2corr.h +++ b/plugins/channelmimo/doa2/doa2corr.h @@ -62,19 +62,6 @@ private: unsigned int size1, Sample sampleOp(const Sample& a, const Sample& b) ); - bool performIFFTCorr( //!< Returns true if results were produced - const SampleVector& data0, - unsigned int size0, - const SampleVector& data1, - unsigned int size1, - bool star = false - ); - bool performIFFT2Corr( //!< Returns true if results were produced - const SampleVector& data0, - unsigned int size0, - const SampleVector& data1, - unsigned int size1 - ); bool performFFTProd( //!< Returns true if results were produced const SampleVector& data0, unsigned int size0, diff --git a/plugins/channelmimo/doa2/doa2gui.ui b/plugins/channelmimo/doa2/doa2gui.ui index ac415b4bb..519c0e879 100644 --- a/plugins/channelmimo/doa2/doa2gui.ui +++ b/plugins/channelmimo/doa2/doa2gui.ui @@ -179,7 +179,7 @@ - Correlation type + Scope correlation type @@ -191,36 +191,11 @@ B - - - A+B - - - - - A.B* - - - - - IFFT - - - - - IFFT* - - FFT - - - IFFT2 - - @@ -377,7 +352,7 @@ - Time domain + Scope @@ -465,7 +440,14 @@ - + + + + Liberation Sans + 9 + + + diff --git a/plugins/channelmimo/doa2/doa2settings.cpp b/plugins/channelmimo/doa2/doa2settings.cpp index 22a786dd6..eb4e63b5a 100644 --- a/plugins/channelmimo/doa2/doa2settings.cpp +++ b/plugins/channelmimo/doa2/doa2settings.cpp @@ -33,7 +33,7 @@ DOA2Settings::DOA2Settings() : void DOA2Settings::resetToDefaults() { - m_correlationType = CorrelationAdd; + m_correlationType = CorrelationFFT; m_rgbColor = QColor(250, 120, 120).rgb(); m_title = "DOA 2 sources"; m_log2Decim = 0; @@ -98,7 +98,7 @@ bool DOA2Settings::deserialize(const QByteArray& data) d.readS32(2, &tmp, 0); m_correlationType = (CorrelationType) tmp; d.readU32(3, &m_rgbColor); - d.readString(4, &m_title, "Interpolator"); + d.readString(4, &m_title, "DOA 2 sources"); d.readU32(5, &utmp, 0); m_log2Decim = utmp > 6 ? 6 : utmp; d.readU32(6, &m_filterChainHash, 0); diff --git a/plugins/channelmimo/doa2/doa2settings.h b/plugins/channelmimo/doa2/doa2settings.h index c37db45b3..3aea5c945 100644 --- a/plugins/channelmimo/doa2/doa2settings.h +++ b/plugins/channelmimo/doa2/doa2settings.h @@ -29,12 +29,7 @@ struct DOA2Settings { Correlation0, Correlation1, - CorrelationAdd, - CorrelationMultiply, - CorrelationIFFT, - CorrelationIFFTStar, CorrelationFFT, - CorrelationIFFT2 }; CorrelationType m_correlationType; From 0f7972856f6507339323440c70d820b36f912cf7 Mon Sep 17 00:00:00 2001 From: f4exb Date: Fri, 27 May 2022 23:31:43 +0200 Subject: [PATCH 08/15] DOA2: DOA implementation --- plugins/channelmimo/doa2/doa2.cpp | 10 ++ plugins/channelmimo/doa2/doa2.h | 2 + plugins/channelmimo/doa2/doa2baseband.cpp | 37 ++++++- plugins/channelmimo/doa2/doa2baseband.h | 8 ++ plugins/channelmimo/doa2/doa2compass.cpp | 4 +- plugins/channelmimo/doa2/doa2corr.cpp | 81 +++++++++------ plugins/channelmimo/doa2/doa2corr.h | 12 +-- plugins/channelmimo/doa2/doa2gui.cpp | 28 +++++- plugins/channelmimo/doa2/doa2gui.h | 2 + plugins/channelmimo/doa2/doa2gui.ui | 116 +++++++++++++++++++++- plugins/channelmimo/doa2/doa2settings.cpp | 4 + plugins/channelmimo/doa2/doa2settings.h | 1 + 12 files changed, 256 insertions(+), 49 deletions(-) diff --git a/plugins/channelmimo/doa2/doa2.cpp b/plugins/channelmimo/doa2/doa2.cpp index c5fde8a3f..3b471436a 100644 --- a/plugins/channelmimo/doa2/doa2.cpp +++ b/plugins/channelmimo/doa2/doa2.cpp @@ -293,6 +293,16 @@ void DOA2::applyChannelSettings(uint32_t log2Decim, uint32_t filterChainHash) m_basebandSink->getInputMessageQueue()->push(msg); } +float DOA2::getPhi() const +{ + return m_basebandSink ? m_basebandSink->getPhi() : 0.0f; +} + +float DOA2::getPositiveDOA() const +{ + return std::acos(getPhi()/M_PI)*(180/M_PI); +} + int DOA2::webapiSettingsGet( SWGSDRangel::SWGChannelSettings& response, QString& errorMessage) diff --git a/plugins/channelmimo/doa2/doa2.h b/plugins/channelmimo/doa2/doa2.h index c6ea41e6b..e596acfab 100644 --- a/plugins/channelmimo/doa2/doa2.h +++ b/plugins/channelmimo/doa2/doa2.h @@ -125,6 +125,8 @@ public: ScopeVis *getScopeVis() { return &m_scopeSink; } void applyChannelSettings(uint32_t log2Decim, uint32_t filterChainHash); + float getPhi() const; + float getPositiveDOA() const; virtual int webapiSettingsGet( SWGSDRangel::SWGChannelSettings& response, diff --git a/plugins/channelmimo/doa2/doa2baseband.cpp b/plugins/channelmimo/doa2/doa2baseband.cpp index d81d82edc..c1aaa1163 100644 --- a/plugins/channelmimo/doa2/doa2baseband.cpp +++ b/plugins/channelmimo/doa2/doa2baseband.cpp @@ -33,6 +33,12 @@ MESSAGE_CLASS_DEFINITION(DOA2Baseband::MsgConfigureCorrelation, Message) DOA2Baseband::DOA2Baseband(int fftSize) : m_correlator(fftSize), + m_correlationType(DOA2Settings::CorrelationFFT), + m_fftSize(fftSize), + m_samplesCount(0), + m_magSum(0.0f), + m_wphSum(0.0f), + m_phi(0.0f), m_scopeSink(nullptr), m_mutex(QMutex::Recursive) { @@ -142,6 +148,10 @@ void DOA2Baseband::run() { if (m_correlator.performCorr(m_sinks[0].getData(), m_sinks[0].getSize(), m_sinks[1].getData(), m_sinks[1].getSize())) { + if (m_correlationType == DOA2Settings::CorrelationType::CorrelationFFT) { + processDOA(m_correlator.m_xcorr.begin(), m_correlator.m_processed); + } + if (m_scopeSink) { std::vector vbegin; @@ -221,12 +231,12 @@ bool DOA2Baseband::handleMessage(const Message& cmd) { QMutexLocker mutexLocker(&m_mutex); MsgConfigureCorrelation& cfg = (MsgConfigureCorrelation&) cmd; - DOA2Settings::CorrelationType correlationType = cfg.getCorrelationType(); + m_correlationType = cfg.getCorrelationType(); qDebug() << "DOA2Baseband::handleMessage: MsgConfigureCorrelation:" - << " correlationType: " << correlationType; + << " correlationType: " << m_correlationType; - m_correlator.setCorrType(correlationType); + m_correlator.setCorrType(m_correlationType); return true; } @@ -245,3 +255,24 @@ void DOA2Baseband ::setBasebandSampleRate(unsigned int sampleRate) m_sinks[istream].reset(); } } + +void DOA2Baseband::processDOA(const std::vector::iterator& begin, int nbSamples) +{ + const std::vector::iterator end = begin + nbSamples; + + for (std::vector::iterator it = begin; it != end; ++it) + { + float ph = std::arg(*it); + float mag = std::norm(*it); + m_magSum += mag; + m_wphSum += mag*ph; + + if (++m_samplesCount == m_fftSize) + { + m_phi = m_wphSum / m_magSum; + m_magSum = 0; + m_wphSum = 0; + m_samplesCount = 0; + } + } +} diff --git a/plugins/channelmimo/doa2/doa2baseband.h b/plugins/channelmimo/doa2/doa2baseband.h index 06d23dbdf..3a7473b7d 100644 --- a/plugins/channelmimo/doa2/doa2baseband.h +++ b/plugins/channelmimo/doa2/doa2baseband.h @@ -110,13 +110,21 @@ public: void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, unsigned int streamIndex); void setBasebandSampleRate(unsigned int sampleRate); + float getPhi() const { return m_phi; } private: void processFifo(const std::vector& data, unsigned int ibegin, unsigned int iend); void run(); bool handleMessage(const Message& cmd); + void processDOA(const std::vector::iterator& begin, int nbSamples); DOA2Correlator m_correlator; + DOA2Settings::CorrelationType m_correlationType; + int m_fftSize; + int m_samplesCount; + float m_magSum; + float m_wphSum; + float m_phi; SampleMIFifo m_sampleMIFifo; std::vector m_vbegin; int m_sizes[2]; diff --git a/plugins/channelmimo/doa2/doa2compass.cpp b/plugins/channelmimo/doa2/doa2compass.cpp index c210d010e..72930bc44 100644 --- a/plugins/channelmimo/doa2/doa2compass.cpp +++ b/plugins/channelmimo/doa2/doa2compass.cpp @@ -87,7 +87,7 @@ void DOA2Compass::paintEvent(QPaintEvent *) } - // draw yaw lines + // draw compass lines { int nyawLines = 36; float rotAng = 360.0 / nyawLines; @@ -150,7 +150,7 @@ void DOA2Compass::paintEvent(QPaintEvent *) painter.rotate(m_azAnt); painter.setPen(Qt::NoPen); - painter.setBrush(QBrush(Qt::white)); + painter.setBrush(QBrush(QColor(192, 192, 192))); QPointF pointsN[3] = { QPointF(fx1, fy1), QPointF(fx2, fy2), diff --git a/plugins/channelmimo/doa2/doa2corr.cpp b/plugins/channelmimo/doa2/doa2corr.cpp index 8b2411f1f..a02f7c887 100644 --- a/plugins/channelmimo/doa2/doa2corr.cpp +++ b/plugins/channelmimo/doa2/doa2corr.cpp @@ -138,10 +138,10 @@ DOA2Correlator::DOA2Correlator(int fftSize) : m_invFFT2Sequence = fftFactory->getEngine(fftSize, true, &m_invFFT2); m_dataj = new std::complex[2*fftSize]; // receives actual FFT result hence twice the data FFT size - m_scorr.resize(fftSize); m_tcorr.resize(fftSize); - m_scorrSize = fftSize; + m_xcorr.resize(fftSize); m_tcorrSize = fftSize; + m_xcorrSize = fftSize; } DOA2Correlator::~DOA2Correlator() @@ -268,6 +268,7 @@ bool DOA2Correlator::performOpCorr( { unsigned int size = std::min(size0, size1); adjustTCorrSize(size); + adjustXCorrSize(size); std::transform( data0.begin(), @@ -294,8 +295,8 @@ bool DOA2Correlator::performFFTProd( int nfft = 0; SampleVector::const_iterator begin0 = data0.begin(); SampleVector::const_iterator begin1 = data1.begin(); - adjustSCorrSize(size); adjustTCorrSize(size); + adjustXCorrSize(size); while (size >= m_fftSize) { @@ -340,21 +341,22 @@ bool DOA2Correlator::performFFTProd( } ); - // copy product to time domain - re-order, convert and scale to FFT size - std::transform( + // copy to complex vector for DOA with re-orderong + std::copy( m_invFFT2->in(), m_invFFT2->in() + m_fftSize/2, - m_tcorr.begin() + nfft*m_fftSize + m_fftSize/2, - [](const std::complex& a) -> Sample { - Sample s; - s.setReal(a.real()/2.0f); - s.setImag(a.imag()/2.0f); - return s; - } + m_xcorr.begin() + nfft*m_fftSize + m_fftSize/2 ); - std::transform( + std::copy( m_invFFT2->in() + m_fftSize/2, m_invFFT2->in() + m_fftSize, + m_xcorr.begin() + nfft*m_fftSize + ); + + // convert and scale to FFT size for scope time domain display + std::transform( + m_xcorr.begin() + nfft*m_fftSize, + m_xcorr.begin() + nfft*m_fftSize + m_fftSize, m_tcorr.begin() + nfft*m_fftSize, [](const std::complex& a) -> Sample { Sample s; @@ -364,14 +366,29 @@ bool DOA2Correlator::performFFTProd( } ); - // feed spectrum with the sum - std::transform( - begin0, - begin0 + m_fftSize, - begin1, - m_scorr.begin() + nfft*m_fftSize, - sAdd - ); + // copy product to time domain - re-order, convert and scale to FFT size + // std::transform( + // m_invFFT2->in(), + // m_invFFT2->in() + m_fftSize/2, + // m_tcorr.begin() + nfft*m_fftSize + m_fftSize/2, + // [](const std::complex& a) -> Sample { + // Sample s; + // s.setReal(a.real()/2.0f); + // s.setImag(a.imag()/2.0f); + // return s; + // } + // ); + // std::transform( + // m_invFFT2->in() + m_fftSize/2, + // m_invFFT2->in() + m_fftSize, + // m_tcorr.begin() + nfft*m_fftSize, + // [](const std::complex& a) -> Sample { + // Sample s; + // s.setReal(a.real()/2.0f); + // s.setImag(a.imag()/2.0f); + // return s; + // } + // ); size -= m_fftSize; begin0 += m_fftSize; @@ -387,17 +404,6 @@ bool DOA2Correlator::performFFTProd( return nfft > 0; } -void DOA2Correlator::adjustSCorrSize(int size) -{ - int nFFTSize = (size/m_fftSize)*m_fftSize; - - if (nFFTSize > m_scorrSize) - { - m_scorr.resize(nFFTSize); - m_scorrSize = nFFTSize; - } -} - void DOA2Correlator::adjustTCorrSize(int size) { int nFFTSize = (size/m_fftSize)*m_fftSize; @@ -409,6 +415,17 @@ void DOA2Correlator::adjustTCorrSize(int size) } } +void DOA2Correlator::adjustXCorrSize(int size) +{ + int nFFTSize = (size/m_fftSize)*m_fftSize; + + if (nFFTSize > m_xcorrSize) + { + m_xcorr.resize(nFFTSize); + m_xcorrSize = nFFTSize; + } +} + void DOA2Correlator::setPhase(int phase) { m_phase = phase; diff --git a/plugins/channelmimo/doa2/doa2corr.h b/plugins/channelmimo/doa2/doa2corr.h index e89cab324..df086586e 100644 --- a/plugins/channelmimo/doa2/doa2corr.h +++ b/plugins/channelmimo/doa2/doa2corr.h @@ -46,10 +46,10 @@ public: int getFullFFTSize() const { return 2*m_fftSize; } void setPhase(int phase); - SampleVector m_scorr; //!< raw correlation result (spectrum) - Sample vector expected - SampleVector m_tcorr; //!< correlation result (time or spectrum inverse FFT) - Sample vector expected - int m_processed; //!< number of samples processed at the end of correlation - int m_remaining[2]; //!< number of samples remaining per member at the end of correlation + SampleVector m_tcorr; //!< correlation result (time or spectrum inverse FFT) - Sample vector expected + std::vector m_xcorr; //!< correlation result of inverse FFT of FFT prod with conjugate (performFFTProd) for DOA processing + int m_processed; //!< number of samples processed at the end of correlation + int m_remaining[2]; //!< number of samples remaining per member at the end of correlation signals: void dataReady(int start, int stop); @@ -68,8 +68,8 @@ private: const SampleVector& data1, unsigned int size1 ); - void adjustSCorrSize(int size); void adjustTCorrSize(int size); + void adjustXCorrSize(int size); DOA2Settings::CorrelationType m_corrType; unsigned int m_fftSize; //!< FFT length @@ -86,8 +86,8 @@ private: SampleVector m_data0w; //!< windowed data 0 SampleVector m_data1w; //!< windowed data 1 SampleVector m_data1p; //!< data1 with phase correction - int m_scorrSize; //!< spectrum correlations vector size int m_tcorrSize; //!< time correlations vector size + int m_xcorrSize; //!< DOA correlations vector size int m_phase; //!< phase correction int64_t m_sin; //!< scaled sine of phase correction int64_t m_cos; //!< scaled cosine of phase correction diff --git a/plugins/channelmimo/doa2/doa2gui.cpp b/plugins/channelmimo/doa2/doa2gui.cpp index ad51a4c32..137f5db5d 100644 --- a/plugins/channelmimo/doa2/doa2gui.cpp +++ b/plugins/channelmimo/doa2/doa2gui.cpp @@ -152,6 +152,8 @@ DOA2GUI::DOA2GUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, MIMOChannel *ch displayRateAndShift(); applySettings(true); + connect(&MainCore::instance()->getMasterTimer(), SIGNAL(timeout()), this, SLOT(tick())); + // Test ui->compass->setAzNeg(85); ui->compass->setAzPos(315); @@ -200,6 +202,8 @@ void DOA2GUI::displaySettings() applyDecimation(); ui->phaseCorrection->setValue(m_settings.m_phase); ui->phaseCorrectionText->setText(tr("%1").arg(m_settings.m_phase)); + ui->compass->setAzAnt(m_settings.m_antennaAz); + ui->antAz->setValue(m_settings.m_antennaAz); getRollupContents()->restoreState(m_rollupState); updateAbsoluteCenterFrequency(); blockApplySettings(false); @@ -318,6 +322,14 @@ void DOA2GUI::on_correlationType_currentIndexChanged(int index) applySettings(); } +void DOA2GUI::on_antAz_valueChanged(int value) +{ + m_settings.m_antennaAz = value; + ui->compass->setAzAnt(value); + updateDOA(); + applySettings(); +} + void DOA2GUI::applyDecimation() { uint32_t maxHash = 1; @@ -346,7 +358,9 @@ void DOA2GUI::applyPosition() void DOA2GUI::tick() { - if (++m_tickCount == 20) { // once per second + if (++m_tickCount == 20) // once per second + { + updateDOA(); m_tickCount = 0; } } @@ -357,9 +371,21 @@ void DOA2GUI::makeUIConnections() QObject::connect(ui->position, &QSlider::valueChanged, this, &DOA2GUI::on_position_valueChanged); QObject::connect(ui->phaseCorrection, &QSlider::valueChanged, this, &DOA2GUI::on_phaseCorrection_valueChanged); QObject::connect(ui->correlationType, QOverload::of(&QComboBox::currentIndexChanged), this, &DOA2GUI::on_correlationType_currentIndexChanged); + QObject::connect(ui->antAz, QOverload::of(&QSpinBox::valueChanged), this, &DOA2GUI::on_antAz_valueChanged); } void DOA2GUI::updateAbsoluteCenterFrequency() { setStatusFrequency(m_centerFrequency + m_shiftFrequencyFactor * m_sampleRate); } + +void DOA2GUI::updateDOA() +{ + float doaAngle = m_doa2->getPositiveDOA(); + float posAngle = ui->antAz->value() - doaAngle; // DOA angles are trigonometric but displayed angles are clockwise + float negAngle = ui->antAz->value() + doaAngle; + ui->compass->setAzPos(posAngle); + ui->compass->setAzNeg(negAngle); + ui->posText->setText(tr("%1").arg(ui->compass->getAzPos(), 0, 'f', 0)); + ui->negText->setText(tr("%1").arg(ui->compass->getAzNeg(), 0, 'f', 0)); +} diff --git a/plugins/channelmimo/doa2/doa2gui.h b/plugins/channelmimo/doa2/doa2gui.h index 90204d457..a8d314b14 100644 --- a/plugins/channelmimo/doa2/doa2gui.h +++ b/plugins/channelmimo/doa2/doa2gui.h @@ -87,6 +87,7 @@ private: bool handleMessage(const Message& message); void makeUIConnections(); void updateAbsoluteCenterFrequency(); + void updateDOA(); void leaveEvent(QEvent*); void enterEvent(QEvent*); @@ -97,6 +98,7 @@ private slots: void on_position_valueChanged(int value); void on_phaseCorrection_valueChanged(int value); void on_correlationType_currentIndexChanged(int index); + void on_antAz_valueChanged(int value); void onWidgetRolled(QWidget* widget, bool rollDown); void onMenuDialogCalled(const QPoint& p); void tick(); diff --git a/plugins/channelmimo/doa2/doa2gui.ui b/plugins/channelmimo/doa2/doa2gui.ui index 519c0e879..5f085cbfc 100644 --- a/plugins/channelmimo/doa2/doa2gui.ui +++ b/plugins/channelmimo/doa2/doa2gui.ui @@ -335,7 +335,7 @@ 0 98 - 720 + 718 334 @@ -402,8 +402,8 @@ 0 432 - 720 - 284 + 718 + 85 @@ -438,9 +438,115 @@ 2 - - + + + + + + + Pos + + + + + + + 000 + + + + + + + + 10 + 0 + + + + + + + + + + + Neg + + + + + + + 000 + + + + + + + + 10 + 0 + + + + + + + + + + + Ant + + + + + + + + 60 + 0 + + + + true + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + 359 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + 359 + 200 + + Liberation Sans diff --git a/plugins/channelmimo/doa2/doa2settings.cpp b/plugins/channelmimo/doa2/doa2settings.cpp index eb4e63b5a..ace849550 100644 --- a/plugins/channelmimo/doa2/doa2settings.cpp +++ b/plugins/channelmimo/doa2/doa2settings.cpp @@ -45,6 +45,7 @@ void DOA2Settings::resetToDefaults() m_reverseAPIChannelIndex = 0; m_workspaceIndex = 0; m_hidden = false; + m_antennaAz = 0; } QByteArray DOA2Settings::serialize() const @@ -65,6 +66,7 @@ QByteArray DOA2Settings::serialize() const s.writeS32(13,m_workspaceIndex); s.writeBlob(14, m_geometryBytes); s.writeBool(15, m_hidden); + s.writeS32(16, m_antennaAz); if (m_scopeGUI) { s.writeBlob(21, m_scopeGUI->serialize()); @@ -121,6 +123,8 @@ bool DOA2Settings::deserialize(const QByteArray& data) d.readS32(13, &m_workspaceIndex); d.readBlob(14, &m_geometryBytes); d.readBool(15, &m_hidden, false); + d.readS32(16, &tmp, 0); + m_antennaAz = tmp < 0 ? 0 : tmp > 359 ? 359 : tmp; if (m_scopeGUI) { diff --git a/plugins/channelmimo/doa2/doa2settings.h b/plugins/channelmimo/doa2/doa2settings.h index 3aea5c945..cf0496b4f 100644 --- a/plugins/channelmimo/doa2/doa2settings.h +++ b/plugins/channelmimo/doa2/doa2settings.h @@ -38,6 +38,7 @@ struct DOA2Settings uint32_t m_log2Decim; uint32_t m_filterChainHash; int m_phase; + int m_antennaAz; bool m_useReverseAPI; QString m_reverseAPIAddress; uint16_t m_reverseAPIPort; From 1edf7a008d0f6b63c8b331c21dd8b6ab1efd010f Mon Sep 17 00:00:00 2001 From: f4exb Date: Sat, 28 May 2022 05:48:49 +0200 Subject: [PATCH 09/15] DOA2: added more controls and details --- plugins/channelmimo/doa2/doa2.cpp | 16 + plugins/channelmimo/doa2/doa2baseband.cpp | 16 +- plugins/channelmimo/doa2/doa2baseband.h | 2 + plugins/channelmimo/doa2/doa2compass.cpp | 19 +- plugins/channelmimo/doa2/doa2compass.h | 14 + plugins/channelmimo/doa2/doa2gui.cpp | 39 ++- plugins/channelmimo/doa2/doa2gui.h | 3 + plugins/channelmimo/doa2/doa2gui.ui | 393 ++++++++++++++++------ plugins/channelmimo/doa2/doa2settings.cpp | 7 + plugins/channelmimo/doa2/doa2settings.h | 2 + 10 files changed, 398 insertions(+), 113 deletions(-) diff --git a/plugins/channelmimo/doa2/doa2.cpp b/plugins/channelmimo/doa2/doa2.cpp index 3b471436a..afb07781b 100644 --- a/plugins/channelmimo/doa2/doa2.cpp +++ b/plugins/channelmimo/doa2/doa2.cpp @@ -28,6 +28,7 @@ #include "dsp/hbfilterchainconverter.h" #include "dsp/dspcommands.h" #include "feature/feature.h" +#include "util/db.h" #include "maincore.h" #include "doa2baseband.h" @@ -132,6 +133,9 @@ void DOA2::applySettings(const DOA2Settings& settings, bool force) << "m_filterChainHash: " << settings.m_filterChainHash << "m_log2Decim: " << settings.m_log2Decim << "m_phase: " << settings.m_phase + << "m_antennaAz:" << settings.m_antennaAz + << "m_basebandDistance: " << settings.m_basebandDistance + << "m_squelchdB: " << settings.m_squelchdB << "m_useReverseAPI: " << settings.m_useReverseAPI << "m_reverseAPIAddress: " << settings.m_reverseAPIAddress << "m_reverseAPIPort: " << settings.m_reverseAPIPort @@ -156,6 +160,18 @@ void DOA2::applySettings(const DOA2Settings& settings, bool force) if ((m_settings.m_title != settings.m_title) || force) { reverseAPIKeys.append("title"); } + if ((m_settings.m_antennaAz != settings.m_antennaAz) || force) { + reverseAPIKeys.append("antennaAz"); + } + if ((m_settings.m_basebandDistance != settings.m_basebandDistance) || force) { + reverseAPIKeys.append("basebandDistance"); + } + + if ((m_settings.m_squelchdB != settings.m_squelchdB) || force) + { + reverseAPIKeys.append("squelchdB"); + m_basebandSink->setMagThreshold(CalcDb::powerFromdB(settings.m_squelchdB)); + } if ((m_settings.m_log2Decim != settings.m_log2Decim) || (m_settings.m_filterChainHash != settings.m_filterChainHash) || force) diff --git a/plugins/channelmimo/doa2/doa2baseband.cpp b/plugins/channelmimo/doa2/doa2baseband.cpp index c1aaa1163..baef35435 100644 --- a/plugins/channelmimo/doa2/doa2baseband.cpp +++ b/plugins/channelmimo/doa2/doa2baseband.cpp @@ -39,6 +39,7 @@ DOA2Baseband::DOA2Baseband(int fftSize) : m_magSum(0.0f), m_wphSum(0.0f), m_phi(0.0f), + m_magThreshold(0.0f), m_scopeSink(nullptr), m_mutex(QMutex::Recursive) { @@ -263,13 +264,20 @@ void DOA2Baseband::processDOA(const std::vector::iterator& begin, int n for (std::vector::iterator it = begin; it != end; ++it) { float ph = std::arg(*it); - float mag = std::norm(*it); - m_magSum += mag; - m_wphSum += mag*ph; + double mag = std::norm(*it); + + if (mag > m_magThreshold) + { + m_magSum += mag; + m_wphSum += mag*ph; + } if (++m_samplesCount == m_fftSize) { - m_phi = m_wphSum / m_magSum; + if (m_wphSum != 0) { + m_phi = m_wphSum / m_magSum; + } + m_magSum = 0; m_wphSum = 0; m_samplesCount = 0; diff --git a/plugins/channelmimo/doa2/doa2baseband.h b/plugins/channelmimo/doa2/doa2baseband.h index 3a7473b7d..6d713a771 100644 --- a/plugins/channelmimo/doa2/doa2baseband.h +++ b/plugins/channelmimo/doa2/doa2baseband.h @@ -111,6 +111,7 @@ public: void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, unsigned int streamIndex); void setBasebandSampleRate(unsigned int sampleRate); float getPhi() const { return m_phi; } + void setMagThreshold(float threshold) { m_magThreshold = threshold * SDR_RX_SCALED * SDR_RX_SCALED; } private: void processFifo(const std::vector& data, unsigned int ibegin, unsigned int iend); @@ -125,6 +126,7 @@ private: float m_magSum; float m_wphSum; float m_phi; + double m_magThreshold; SampleMIFifo m_sampleMIFifo; std::vector m_vbegin; int m_sizes[2]; diff --git a/plugins/channelmimo/doa2/doa2compass.cpp b/plugins/channelmimo/doa2/doa2compass.cpp index 72930bc44..c32cf9426 100644 --- a/plugins/channelmimo/doa2/doa2compass.cpp +++ b/plugins/channelmimo/doa2/doa2compass.cpp @@ -41,6 +41,7 @@ DOA2Compass::DOA2Compass(QWidget *parent) m_azPos = 0.0; m_azNeg = 0.0; m_azAnt = 0.0; + m_blindAngle = 0.0; } DOA2Compass::~DOA2Compass() @@ -86,6 +87,20 @@ void DOA2Compass::paintEvent(QPaintEvent *) painter.drawEllipse(-m_size/2, -m_size/2, m_size, m_size); } + // draw blind angle + if (m_blindAngle != 0) + { + painter.setBrush(QColor(48, 48, 48)); + painter.setPen(Qt::NoPen); + painter.rotate(m_azAnt - 90); + painter.drawPie(-m_size/2, -m_size/2, m_size, m_size, -m_blindAngle*16, m_blindAngle*32); + painter.rotate(180); + painter.drawPie(-m_size/2, -m_size/2, m_size, m_size, -m_blindAngle*16, m_blindAngle*32); + painter.rotate(-m_azAnt - 90); + painter.setBrush(Qt::NoBrush); + painter.setPen(whitePen); + painter.drawEllipse(-m_size/2, -m_size/2, m_size, m_size); + } // draw compass lines { @@ -222,7 +237,7 @@ void DOA2Compass::paintEvent(QPaintEvent *) painter.rotate(m_azNeg); painter.setPen(Qt::NoPen); - painter.setBrush(QBrush(QColor(0x80, 0x80, 0xFF, 0xA0))); + painter.setBrush(QBrush(QColor(0x80, 0xFF, 0x80, 0xA0))); QPointF points[3] = { QPointF(fx1, fy1), QPointF(fx2, fy2), @@ -230,7 +245,7 @@ void DOA2Compass::paintEvent(QPaintEvent *) }; painter.drawPolygon(points, 3); - painter.setPen(QColor(0x80, 0x80, 0xFF, 0xE0)); + painter.setPen(QColor(0x80, 0xFF, 0x80, 0xE0)); painter.drawLine(0, 0, 0, fyl); painter.rotate(-m_azNeg); diff --git a/plugins/channelmimo/doa2/doa2compass.h b/plugins/channelmimo/doa2/doa2compass.h index 68279adee..0b7571a88 100644 --- a/plugins/channelmimo/doa2/doa2compass.h +++ b/plugins/channelmimo/doa2/doa2compass.h @@ -91,6 +91,19 @@ public: emit canvasReplot(); } + /// + /// \brief Set half blind angle (in degree) + /// \param val - half blind angle (in degree) + /// + void setBlindAngle(double val) + { + m_blindAngle = val; + if( m_blindAngle < 0 ) m_blindAngle = 360 + m_blindAngle; + if( m_blindAngle > 360 ) m_blindAngle = m_blindAngle - 360; + + emit canvasReplot(); + } + /// /// \brief Draw legend in the center of the compass /// \param drawLegend - true to draw legend else false @@ -137,6 +150,7 @@ protected: double m_azPos; ///< forward (+) azimuth (in degree) double m_azNeg; ///< reverse (-) azimuth (in degree) double m_azAnt; ///< antennas azimuth from 1 (connected to stream 0) to 2 (connected to stream 1) + double m_blindAngle; //!< half the angle around antenna direction where DOA cannot be processed (when baseline distance exceeds half wavelength) }; #endif // INCLUDE_DOA2COMPASS_H diff --git a/plugins/channelmimo/doa2/doa2gui.cpp b/plugins/channelmimo/doa2/doa2gui.cpp index 137f5db5d..3a64ba1d4 100644 --- a/plugins/channelmimo/doa2/doa2gui.cpp +++ b/plugins/channelmimo/doa2/doa2gui.cpp @@ -154,10 +154,8 @@ DOA2GUI::DOA2GUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, MIMOChannel *ch connect(&MainCore::instance()->getMasterTimer(), SIGNAL(timeout()), this, SLOT(tick())); - // Test - ui->compass->setAzNeg(85); - ui->compass->setAzPos(315); - ui->compass->setAzAnt(20); + ui->halfWLLabel->setText(QString("%1/2").arg(QChar(0xBB, 0x03))); + ui->azUnits->setText(QString("%1").arg(QChar(0260))); } DOA2GUI::~DOA2GUI() @@ -204,6 +202,9 @@ void DOA2GUI::displaySettings() ui->phaseCorrectionText->setText(tr("%1").arg(m_settings.m_phase)); ui->compass->setAzAnt(m_settings.m_antennaAz); ui->antAz->setValue(m_settings.m_antennaAz); + ui->baselineDistance->setValue(m_settings.m_basebandDistance); + ui->squelch->setValue(m_settings.m_squelchdB); + ui->squelchText->setText(tr("%1").arg(m_settings.m_squelchdB, 3)); getRollupContents()->restoreState(m_rollupState); updateAbsoluteCenterFrequency(); blockApplySettings(false); @@ -330,6 +331,20 @@ void DOA2GUI::on_antAz_valueChanged(int value) applySettings(); } +void DOA2GUI::on_baselineDistance_valueChanged(int value) +{ + m_settings.m_basebandDistance = value < 1 ? 1 : value; + updateDOA(); + applySettings(); +} + +void DOA2GUI::on_squelch_valueChanged(int value) +{ + m_settings.m_squelchdB = value; + ui->squelchText->setText(tr("%1").arg(m_settings.m_squelchdB, 3)); + applySettings(); +} + void DOA2GUI::applyDecimation() { uint32_t maxHash = 1; @@ -372,20 +387,28 @@ void DOA2GUI::makeUIConnections() QObject::connect(ui->phaseCorrection, &QSlider::valueChanged, this, &DOA2GUI::on_phaseCorrection_valueChanged); QObject::connect(ui->correlationType, QOverload::of(&QComboBox::currentIndexChanged), this, &DOA2GUI::on_correlationType_currentIndexChanged); QObject::connect(ui->antAz, QOverload::of(&QSpinBox::valueChanged), this, &DOA2GUI::on_antAz_valueChanged); + QObject::connect(ui->baselineDistance, QOverload::of(&QSpinBox::valueChanged), this, &DOA2GUI::on_baselineDistance_valueChanged); + QObject::connect(ui->squelch, &QDial::valueChanged, this, &DOA2GUI::on_squelch_valueChanged); } void DOA2GUI::updateAbsoluteCenterFrequency() { - setStatusFrequency(m_centerFrequency + m_shiftFrequencyFactor * m_sampleRate); + qint64 cf = m_centerFrequency + m_shiftFrequencyFactor * m_sampleRate; + setStatusFrequency(cf); + m_hwl = 1.5e+8 / cf; + ui->halfWLText->setText(tr("%1").arg(m_hwl*1000, 5, 'f', 0)); } void DOA2GUI::updateDOA() { - float doaAngle = m_doa2->getPositiveDOA(); + float cosTheta = (m_doa2->getPhi() * m_hwl * 1000.0) / (M_PI * m_settings.m_basebandDistance); + float blindAngle = ((cosTheta < -1.0) || (cosTheta > 1.0) ? 0 : std::acos(m_hwl * 1000.0 / m_settings.m_basebandDistance)) * (180/M_PI); + float doaAngle = std::acos(cosTheta < -1.0 ? -1.0 : cosTheta > 1.0 ? 1.0 : cosTheta) * (180/M_PI); float posAngle = ui->antAz->value() - doaAngle; // DOA angles are trigonometric but displayed angles are clockwise float negAngle = ui->antAz->value() + doaAngle; + ui->compass->setBlindAngle(blindAngle); ui->compass->setAzPos(posAngle); ui->compass->setAzNeg(negAngle); - ui->posText->setText(tr("%1").arg(ui->compass->getAzPos(), 0, 'f', 0)); - ui->negText->setText(tr("%1").arg(ui->compass->getAzNeg(), 0, 'f', 0)); + ui->posText->setText(tr("%1").arg(ui->compass->getAzPos(), 3, 'f', 0, QLatin1Char('0'))); + ui->negText->setText(tr("%1").arg(ui->compass->getAzNeg(), 3, 'f', 0, QLatin1Char('0'))); } diff --git a/plugins/channelmimo/doa2/doa2gui.h b/plugins/channelmimo/doa2/doa2gui.h index a8d314b14..fdc9e13bd 100644 --- a/plugins/channelmimo/doa2/doa2gui.h +++ b/plugins/channelmimo/doa2/doa2gui.h @@ -74,6 +74,7 @@ private: ScopeVis* m_scopeVis; MessageQueue m_inputMessageQueue; uint32_t m_tickCount; + double m_hwl; //!< Half wavelength at center frequency explicit DOA2GUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, MIMOChannel *rxChannel, QWidget* parent = nullptr); virtual ~DOA2GUI(); @@ -99,6 +100,8 @@ private slots: void on_phaseCorrection_valueChanged(int value); void on_correlationType_currentIndexChanged(int index); void on_antAz_valueChanged(int value); + void on_baselineDistance_valueChanged(int value); + void on_squelch_valueChanged(int value); void onWidgetRolled(QWidget* widget, bool rollDown); void onMenuDialogCalled(const QPoint& p); void tick(); diff --git a/plugins/channelmimo/doa2/doa2gui.ui b/plugins/channelmimo/doa2/doa2gui.ui index 5f085cbfc..e4d4a1322 100644 --- a/plugins/channelmimo/doa2/doa2gui.ui +++ b/plugins/channelmimo/doa2/doa2gui.ui @@ -7,7 +7,7 @@ 0 0 720 - 770 + 642 @@ -403,7 +403,7 @@ 0 432 718 - 85 + 202 @@ -428,133 +428,328 @@ 2 - - 2 - - - 12 - 2 - - - + + + - - - Pos + + + + 0 + 0 + - - - - - - 000 - - - - - - 10 - 0 + 359 + 200 - - + + + Liberation Sans + 9 + + + + + + + 6 + - - - Neg - - + + + + + Pos + + + + + + + Port side arrival angle (degrees) + + + 000 + + + + + + + + 10 + 0 + + + + + + + + + + + Neg + + + + + + + Starboard side arrival angle (degrees) + + + 000 + + + + + + + + 10 + 0 + + + + + + + + + + + Ant + + + + + + + + 60 + 0 + + + + Antennas line azimuth (degrees) + + + true + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + 359 + + + + + + + d + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + - - - 000 - - + + + + + L/2 + + + + + + + Half wavelength (mm) + + + 00000 + + + + + + + + 10 + 0 + + + + + + + + + + + D + + + + + + + Baseline distance (mm) + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + 1 + + + 99999 + + + 500 + + + + + + + mm + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + - - - - 10 - 0 - - - - - - + + + + + Sq + + + + + + + + 24 + 24 + + + + Squelch threshold (dB) + + + -140 + + + 0 + + + 1 + + + 1 + + + -50 + + + + + + + + 28 + 0 + + + + Squelch threshold (dB) + + + -100 + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + dB + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + - - - Ant - - - - - - - - 60 - 0 - - - - true - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - 359 - - - - - + - Qt::Horizontal + Qt::Vertical - 40 - 20 + 20 + 40 - - - - - - - - 359 - 200 - - - - - Liberation Sans - 9 - - - - diff --git a/plugins/channelmimo/doa2/doa2settings.cpp b/plugins/channelmimo/doa2/doa2settings.cpp index ace849550..75e3e6efd 100644 --- a/plugins/channelmimo/doa2/doa2settings.cpp +++ b/plugins/channelmimo/doa2/doa2settings.cpp @@ -46,6 +46,8 @@ void DOA2Settings::resetToDefaults() m_workspaceIndex = 0; m_hidden = false; m_antennaAz = 0; + m_basebandDistance = 500; + m_squelchdB = -50; } QByteArray DOA2Settings::serialize() const @@ -67,6 +69,8 @@ QByteArray DOA2Settings::serialize() const s.writeBlob(14, m_geometryBytes); s.writeBool(15, m_hidden); s.writeS32(16, m_antennaAz); + s.writeU32(17, m_basebandDistance); + s.writeS32(18, m_squelchdB); if (m_scopeGUI) { s.writeBlob(21, m_scopeGUI->serialize()); @@ -125,6 +129,9 @@ bool DOA2Settings::deserialize(const QByteArray& data) d.readBool(15, &m_hidden, false); d.readS32(16, &tmp, 0); m_antennaAz = tmp < 0 ? 0 : tmp > 359 ? 359 : tmp; + d.readU32(17, &utmp, 500); + m_basebandDistance = utmp == 0 ? 1 : utmp; + d.readS32(18, &m_squelchdB, -50); if (m_scopeGUI) { diff --git a/plugins/channelmimo/doa2/doa2settings.h b/plugins/channelmimo/doa2/doa2settings.h index cf0496b4f..4e4f7bc49 100644 --- a/plugins/channelmimo/doa2/doa2settings.h +++ b/plugins/channelmimo/doa2/doa2settings.h @@ -39,6 +39,8 @@ struct DOA2Settings uint32_t m_filterChainHash; int m_phase; int m_antennaAz; + uint32_t m_basebandDistance; //!< in millimeters + int m_squelchdB; bool m_useReverseAPI; QString m_reverseAPIAddress; uint16_t m_reverseAPIPort; From b48db22e842142aee00da3d9bf5b0da395e9d324 Mon Sep 17 00:00:00 2001 From: f4exb Date: Sat, 28 May 2022 20:15:07 +0200 Subject: [PATCH 10/15] DOA2: API implementation --- plugins/channelmimo/doa2/doa2.cpp | 86 +++++++- plugins/channelmimo/doa2/doa2.h | 7 + plugins/channelmimo/doa2/doa2baseband.cpp | 21 +- plugins/channelmimo/doa2/doa2baseband.h | 13 +- plugins/channelmimo/doa2/doa2compass.cpp | 3 +- plugins/channelmimo/doa2/doa2compass.h | 11 + plugins/channelmimo/doa2/doa2gui.cpp | 45 +++- plugins/channelmimo/doa2/doa2gui.h | 3 + plugins/channelmimo/doa2/doa2gui.ui | 138 +++++++++++- plugins/channelmimo/doa2/doa2settings.cpp | 61 ++++++ plugins/channelmimo/doa2/doa2settings.h | 4 + sdrbase/resources/webapi/doc/html2/index.html | 50 ++++- .../doc/swagger/include/ChannelReport.yaml | 2 + .../webapi/doc/swagger/include/DOA2.yaml | 34 +++ .../api/swagger/include/ChannelReport.yaml | 2 + .../sdrangel/api/swagger/include/DOA2.yaml | 34 +++ swagger/sdrangel/code/html2/index.html | 50 ++++- .../code/qt5/client/SWGChannelReport.cpp | 25 +++ .../code/qt5/client/SWGChannelReport.h | 7 + .../code/qt5/client/SWGDOA2Report.cpp | 200 ++++++++++++++++++ .../sdrangel/code/qt5/client/SWGDOA2Report.h | 82 +++++++ .../code/qt5/client/SWGDOA2Settings.cpp | 115 ++++++++++ .../code/qt5/client/SWGDOA2Settings.h | 30 +++ .../code/qt5/client/SWGModelFactory.h | 6 + 24 files changed, 1014 insertions(+), 15 deletions(-) create mode 100644 swagger/sdrangel/code/qt5/client/SWGDOA2Report.cpp create mode 100644 swagger/sdrangel/code/qt5/client/SWGDOA2Report.h diff --git a/plugins/channelmimo/doa2/doa2.cpp b/plugins/channelmimo/doa2/doa2.cpp index afb07781b..8fe43811e 100644 --- a/plugins/channelmimo/doa2/doa2.cpp +++ b/plugins/channelmimo/doa2/doa2.cpp @@ -23,6 +23,7 @@ #include "SWGChannelSettings.h" #include "SWGWorkspaceInfo.h" +#include "SWGChannelReport.h" #include "device/deviceapi.h" #include "dsp/hbfilterchainconverter.h" @@ -46,7 +47,8 @@ DOA2::DOA2(DeviceAPI *deviceAPI) : m_deviceAPI(deviceAPI), m_guiMessageQueue(nullptr), m_frequencyOffset(0), - m_deviceSampleRate(48000) + m_deviceSampleRate(48000), + m_deviceCenterFrequency(435000000) { setObjectName(m_channelId); @@ -136,6 +138,7 @@ void DOA2::applySettings(const DOA2Settings& settings, bool force) << "m_antennaAz:" << settings.m_antennaAz << "m_basebandDistance: " << settings.m_basebandDistance << "m_squelchdB: " << settings.m_squelchdB + << "m_fftAveragingIndex: "<< settings.m_fftAveragingIndex << "m_useReverseAPI: " << settings.m_useReverseAPI << "m_reverseAPIAddress: " << settings.m_reverseAPIAddress << "m_reverseAPIPort: " << settings.m_reverseAPIPort @@ -173,6 +176,12 @@ void DOA2::applySettings(const DOA2Settings& settings, bool force) m_basebandSink->setMagThreshold(CalcDb::powerFromdB(settings.m_squelchdB)); } + if ((m_settings.m_fftAveragingIndex != settings.m_fftAveragingIndex) || force) + { + reverseAPIKeys.append("m_fftAveragingIndex"); + m_basebandSink->setFFTAveraging(DOA2Settings::getAveragingValue(settings.m_fftAveragingIndex)); + } + if ((m_settings.m_log2Decim != settings.m_log2Decim) || (m_settings.m_filterChainHash != settings.m_filterChainHash) || force) { @@ -237,6 +246,7 @@ bool DOA2::handleMessage(const Message& cmd) if (notif.getSourceOrSink()) // deals with source messages only { m_deviceSampleRate = notif.getSampleRate(); + m_deviceCenterFrequency = notif.getCenterFrequency(); calculateFrequencyOffset(); // This is when device sample rate changes // Notify baseband sink of input sample rate change @@ -363,6 +373,17 @@ int DOA2::webapiSettingsPutPatch( return 200; } +int DOA2::webapiReportGet( + SWGSDRangel::SWGChannelReport& response, + QString& errorMessage) +{ + (void) errorMessage; + response.setDoa2Report(new SWGSDRangel::SWGDOA2Report()); + response.getDoa2Report()->init(); + webapiFormatChannelReport(response); + return 200; +} + void DOA2::webapiUpdateChannelSettings( DOA2Settings& settings, const QStringList& channelSettingsKeys, @@ -384,6 +405,22 @@ void DOA2::webapiUpdateChannelSettings( validateFilterChainHash(settings); } + if (channelSettingsKeys.contains("phase")) { + settings.m_phase = response.getDoa2Settings()->getPhase(); + } + if (channelSettingsKeys.contains("antennaAz")) { + settings.m_antennaAz = response.getDoa2Settings()->getAntennaAz(); + } + if (channelSettingsKeys.contains("basebandDistance")) { + settings.m_basebandDistance = response.getDoa2Settings()->getBasebandDistance(); + } + if (channelSettingsKeys.contains("squelchdB")) { + settings.m_squelchdB = response.getDoa2Settings()->getSquelchdB(); + } + if (channelSettingsKeys.contains("fftAveragingValue")) { + settings.m_fftAveragingIndex = DOA2Settings::getAveragingIndex(response.getDoa2Settings()->getFftAveragingValue()); + } + if (channelSettingsKeys.contains("useReverseAPI")) { settings.m_useReverseAPI = response.getDoa2Settings()->getUseReverseApi() != 0; } @@ -422,6 +459,11 @@ void DOA2::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response response.getDoa2Settings()->setLog2Decim(settings.m_log2Decim); response.getDoa2Settings()->setFilterChainHash(settings.m_filterChainHash); + response.getDoa2Settings()->setPhase(settings.m_phase); + response.getDoa2Settings()->setAntennaAz(settings.m_antennaAz); + response.getDoa2Settings()->setBasebandDistance(settings.m_basebandDistance); + response.getDoa2Settings()->setSquelchdB(settings.m_squelchdB); + response.getDoa2Settings()->setFftAveragingValue(DOA2Settings::getAveragingValue(settings.m_fftAveragingIndex)); response.getDoa2Settings()->setUseReverseApi(settings.m_useReverseAPI ? 1 : 0); if (response.getDoa2Settings()->getReverseApiAddress()) { @@ -477,6 +519,26 @@ void DOA2::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response } } +void DOA2::webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response) +{ + float phi = normalizeAngle(getPhi() * (180/M_PI), 180.0f); + response.getDoa2Report()->setPhi(phi); + + float hwl = 1.5e8 / (m_deviceCenterFrequency + m_frequencyOffset); + float cosTheta = (getPhi() * hwl * 1000.0) / (M_PI * m_settings.m_basebandDistance); + // float blindAngle = ((cosTheta < -1.0) || (cosTheta > 1.0) ? 0 : std::acos(hwl * 1000.0 / m_settings.m_basebandDistance)) * (180/M_PI); + float doaAngle = std::acos(cosTheta < -1.0 ? -1.0 : cosTheta > 1.0 ? 1.0 : cosTheta) * (180/M_PI); + qDebug("DOA2::webapiFormatChannelReport: phi: %f cosT: %f DOAngle: %f", getPhi(), cosTheta, doaAngle); + float posAngle = normalizeAngle(m_settings.m_antennaAz - doaAngle, 360.0f); // DOA angles are trigonometric but displayed angles are clockwise + float negAngle = normalizeAngle(m_settings.m_antennaAz + doaAngle, 360.0f); + response.getDoa2Report()->setPosAz(posAngle); + response.getDoa2Report()->setNegAz(negAngle); + + response.getDoa2Report()->setFftSize(m_fftSize); + int channelSampleRate = m_deviceSampleRate / (1<setChannelSampleRate(channelSampleRate); +} + void DOA2::webapiReverseSendSettings(QList& channelSettingsKeys, const DOA2Settings& settings, bool force) { SWGSDRangel::SWGChannelSettings *swgChannelSettings = new SWGSDRangel::SWGChannelSettings(); @@ -555,6 +617,21 @@ void DOA2::webapiFormatChannelSettings( if (channelSettingsKeys.contains("filterChainHash") || force) { swgDOA2Settings->setFilterChainHash(settings.m_filterChainHash); } + if (channelSettingsKeys.contains("phase") || force) { + swgDOA2Settings->setPhase(settings.m_phase); + } + if (channelSettingsKeys.contains("antennaAz") || force) { + swgDOA2Settings->setAntennaAz(settings.m_antennaAz); + } + if (channelSettingsKeys.contains("basebandDistance") || force) { + swgDOA2Settings->setBasebandDistance(settings.m_basebandDistance); + } + if (channelSettingsKeys.contains("squelchdB") || force) { + swgDOA2Settings->setSquelchdB(settings.m_squelchdB); + } + if (channelSettingsKeys.contains("fftAveragingValue") || force) { + swgDOA2Settings->setFftAveragingValue(DOA2Settings::getAveragingValue(settings.m_fftAveragingIndex)); + } if (settings.m_scopeGUI) { @@ -598,3 +675,10 @@ void DOA2::networkManagerFinished(QNetworkReply *reply) reply->deleteLater(); } + +float DOA2::normalizeAngle(float angle, float max) +{ + if (angle < 0) { return max + angle; } + if (angle > max) { return angle - max; } + return angle; +} diff --git a/plugins/channelmimo/doa2/doa2.h b/plugins/channelmimo/doa2/doa2.h index e596acfab..d3ce71340 100644 --- a/plugins/channelmimo/doa2/doa2.h +++ b/plugins/channelmimo/doa2/doa2.h @@ -138,6 +138,10 @@ public: SWGSDRangel::SWGChannelSettings& response, QString& errorMessage); + virtual int webapiReportGet( + SWGSDRangel::SWGChannelReport& response, + QString& errorMessage); + virtual int webapiWorkspaceGet( SWGSDRangel::SWGWorkspaceInfo& query, QString& errorMessage); @@ -168,12 +172,14 @@ private: int64_t m_frequencyOffset; uint32_t m_deviceSampleRate; + qint64 m_deviceCenterFrequency; int m_count0, m_count1; virtual bool handleMessage(const Message& cmd); //!< Processing of a message. Returns true if message has actually been processed void applySettings(const DOA2Settings& settings, bool force = false); static void validateFilterChainHash(DOA2Settings& settings); void calculateFrequencyOffset(); + void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response); void webapiReverseSendSettings(QList& channelSettingsKeys, const DOA2Settings& settings, bool force); void sendChannelSettings( const QList& pipes, @@ -187,6 +193,7 @@ private: const DOA2Settings& settings, bool force ); + static float normalizeAngle(float angle, float max); private slots: void handleInputMessages(); diff --git a/plugins/channelmimo/doa2/doa2baseband.cpp b/plugins/channelmimo/doa2/doa2baseband.cpp index baef35435..8ae581f25 100644 --- a/plugins/channelmimo/doa2/doa2baseband.cpp +++ b/plugins/channelmimo/doa2/doa2baseband.cpp @@ -40,6 +40,8 @@ DOA2Baseband::DOA2Baseband(int fftSize) : m_wphSum(0.0f), m_phi(0.0f), m_magThreshold(0.0f), + m_fftAvg(1), + m_fftAvgCount(0), m_scopeSink(nullptr), m_mutex(QMutex::Recursive) { @@ -257,6 +259,16 @@ void DOA2Baseband ::setBasebandSampleRate(unsigned int sampleRate) } } +void DOA2Baseband::setFFTAveraging(int nbFFT) +{ + qDebug("DOA2Baseband::setFFTAveraging: %d", nbFFT); + m_fftAvg = nbFFT < 1 ? 1 : nbFFT; + m_fftAvgCount = 0; + m_magSum = 0; + m_wphSum = 0; + m_samplesCount = 0; +} + void DOA2Baseband::processDOA(const std::vector::iterator& begin, int nbSamples) { const std::vector::iterator end = begin + nbSamples; @@ -274,8 +286,13 @@ void DOA2Baseband::processDOA(const std::vector::iterator& begin, int n if (++m_samplesCount == m_fftSize) { - if (m_wphSum != 0) { - m_phi = m_wphSum / m_magSum; + if (m_wphSum != 0) + { + if (++m_fftAvgCount == m_fftAvg) + { + m_phi = m_wphSum / m_magSum; + m_fftAvgCount = 0; + } } m_magSum = 0; diff --git a/plugins/channelmimo/doa2/doa2baseband.h b/plugins/channelmimo/doa2/doa2baseband.h index 6d713a771..47c0f7dac 100644 --- a/plugins/channelmimo/doa2/doa2baseband.h +++ b/plugins/channelmimo/doa2/doa2baseband.h @@ -112,6 +112,7 @@ public: void setBasebandSampleRate(unsigned int sampleRate); float getPhi() const { return m_phi; } void setMagThreshold(float threshold) { m_magThreshold = threshold * SDR_RX_SCALED * SDR_RX_SCALED; } + void setFFTAveraging(int nbFFT); private: void processFifo(const std::vector& data, unsigned int ibegin, unsigned int iend); @@ -122,11 +123,13 @@ private: DOA2Correlator m_correlator; DOA2Settings::CorrelationType m_correlationType; int m_fftSize; - int m_samplesCount; - float m_magSum; - float m_wphSum; - float m_phi; - double m_magThreshold; + int m_samplesCount; //!< Number of samples processed by DOA + float m_magSum; //!< Squared magnitudes accumulator + float m_wphSum; //!< Phase difference accumulator (averaging weighted by squared magnitude) + float m_phi; //!< Resulting calculated phase difference + double m_magThreshold; //!< Squared magnitude scaled threshold + int m_fftAvg; //!< Average over a certain number of FFTs + int m_fftAvgCount; //!< FFT averaging counter SampleMIFifo m_sampleMIFifo; std::vector m_vbegin; int m_sizes[2]; diff --git a/plugins/channelmimo/doa2/doa2compass.cpp b/plugins/channelmimo/doa2/doa2compass.cpp index c32cf9426..6dc3e7015 100644 --- a/plugins/channelmimo/doa2/doa2compass.cpp +++ b/plugins/channelmimo/doa2/doa2compass.cpp @@ -42,6 +42,7 @@ DOA2Compass::DOA2Compass(QWidget *parent) m_azNeg = 0.0; m_azAnt = 0.0; m_blindAngle = 0.0; + m_blindColor = QColor(48, 48, 48); } DOA2Compass::~DOA2Compass() @@ -90,7 +91,7 @@ void DOA2Compass::paintEvent(QPaintEvent *) // draw blind angle if (m_blindAngle != 0) { - painter.setBrush(QColor(48, 48, 48)); + painter.setBrush(m_blindColor); painter.setPen(Qt::NoPen); painter.rotate(m_azAnt - 90); painter.drawPie(-m_size/2, -m_size/2, m_size, m_size, -m_blindAngle*16, m_blindAngle*32); diff --git a/plugins/channelmimo/doa2/doa2compass.h b/plugins/channelmimo/doa2/doa2compass.h index 0b7571a88..c00414f13 100644 --- a/plugins/channelmimo/doa2/doa2compass.h +++ b/plugins/channelmimo/doa2/doa2compass.h @@ -104,6 +104,16 @@ public: emit canvasReplot(); } + /// + /// \brief Set blind scector color + /// \param val - blind sector color + /// + void setBlindColor(const QColor& color) + { + m_blindColor = color; + emit canvasReplot(); + } + /// /// \brief Draw legend in the center of the compass /// \param drawLegend - true to draw legend else false @@ -151,6 +161,7 @@ protected: double m_azNeg; ///< reverse (-) azimuth (in degree) double m_azAnt; ///< antennas azimuth from 1 (connected to stream 0) to 2 (connected to stream 1) double m_blindAngle; //!< half the angle around antenna direction where DOA cannot be processed (when baseline distance exceeds half wavelength) + QColor m_blindColor; }; #endif // INCLUDE_DOA2COMPASS_H diff --git a/plugins/channelmimo/doa2/doa2gui.cpp b/plugins/channelmimo/doa2/doa2gui.cpp index 3a64ba1d4..417d3c347 100644 --- a/plugins/channelmimo/doa2/doa2gui.cpp +++ b/plugins/channelmimo/doa2/doa2gui.cpp @@ -80,6 +80,7 @@ bool DOA2GUI::handleMessage(const Message& message) m_centerFrequency = notif.getCenterFrequency(); displayRateAndShift(); updateAbsoluteCenterFrequency(); + setFFTAveragingToolitp(); return true; } else if (DOA2::MsgConfigureDOA2::match(message)) @@ -205,6 +206,8 @@ void DOA2GUI::displaySettings() ui->baselineDistance->setValue(m_settings.m_basebandDistance); ui->squelch->setValue(m_settings.m_squelchdB); ui->squelchText->setText(tr("%1").arg(m_settings.m_squelchdB, 3)); + ui->fftAveraging->setCurrentIndex(m_settings.m_fftAveragingIndex); + setFFTAveragingToolitp(); getRollupContents()->restoreState(m_rollupState); updateAbsoluteCenterFrequency(); blockApplySettings(false); @@ -222,6 +225,35 @@ void DOA2GUI::displayRateAndShift() m_scopeVis->setLiveRate(channelSampleRate); } +void DOA2GUI::setFFTAveragingToolitp() +{ + float channelSampleRate = ((float) m_sampleRate) / (1<fftAveraging->setToolTip(QString("Number of averaging FFTs (avg time: %1s)").arg(s)); +} + +void DOA2GUI::setNumberStr(float v, int decimalPlaces, QString& s) +{ + if (v < 1e-6) { + s = tr("%1n").arg(v*1e9, 0, 'f', decimalPlaces); + } else if (v < 1e-3) { + s = tr("%1µ").arg(v*1e6, 0, 'f', decimalPlaces); + } else if (v < 1.0) { + s = tr("%1m").arg(v*1e3, 0, 'f', decimalPlaces); + } else if (v < 1e3) { + s = tr("%1").arg(v, 0, 'f', decimalPlaces); + } else if (v < 1e6) { + s = tr("%1k").arg(v*1e-3, 0, 'f', decimalPlaces); + } else if (v < 1e9) { + s = tr("%1M").arg(v*1e-6, 0, 'f', decimalPlaces); + } else { + s = tr("%1G").arg(v*1e-9, 0, 'f', decimalPlaces); + } +} + void DOA2GUI::leaveEvent(QEvent*) { m_channelMarker.setHighlighted(false); @@ -345,6 +377,14 @@ void DOA2GUI::on_squelch_valueChanged(int value) applySettings(); } +void DOA2GUI::on_fftAveraging_currentIndexChanged(int index) +{ + qDebug("DOA2GUI::on_averaging_currentIndexChanged: %d", index); + m_settings.m_fftAveragingIndex = index; + applySettings(); + setFFTAveragingToolitp(); +} + void DOA2GUI::applyDecimation() { uint32_t maxHash = 1; @@ -389,6 +429,7 @@ void DOA2GUI::makeUIConnections() QObject::connect(ui->antAz, QOverload::of(&QSpinBox::valueChanged), this, &DOA2GUI::on_antAz_valueChanged); QObject::connect(ui->baselineDistance, QOverload::of(&QSpinBox::valueChanged), this, &DOA2GUI::on_baselineDistance_valueChanged); QObject::connect(ui->squelch, &QDial::valueChanged, this, &DOA2GUI::on_squelch_valueChanged); + QObject::connect(ui->fftAveraging, QOverload::of(&QComboBox::currentIndexChanged), this, &DOA2GUI::on_fftAveraging_currentIndexChanged); } void DOA2GUI::updateAbsoluteCenterFrequency() @@ -402,11 +443,11 @@ void DOA2GUI::updateAbsoluteCenterFrequency() void DOA2GUI::updateDOA() { float cosTheta = (m_doa2->getPhi() * m_hwl * 1000.0) / (M_PI * m_settings.m_basebandDistance); - float blindAngle = ((cosTheta < -1.0) || (cosTheta > 1.0) ? 0 : std::acos(m_hwl * 1000.0 / m_settings.m_basebandDistance)) * (180/M_PI); + float blindAngle = (m_settings.m_basebandDistance > m_hwl * 1000.0) ? std::acos((m_hwl * 1000.0) / m_settings.m_basebandDistance) * (180/M_PI) : 0; + ui->compass->setBlindAngle(blindAngle); float doaAngle = std::acos(cosTheta < -1.0 ? -1.0 : cosTheta > 1.0 ? 1.0 : cosTheta) * (180/M_PI); float posAngle = ui->antAz->value() - doaAngle; // DOA angles are trigonometric but displayed angles are clockwise float negAngle = ui->antAz->value() + doaAngle; - ui->compass->setBlindAngle(blindAngle); ui->compass->setAzPos(posAngle); ui->compass->setAzNeg(negAngle); ui->posText->setText(tr("%1").arg(ui->compass->getAzPos(), 3, 'f', 0, QLatin1Char('0'))); diff --git a/plugins/channelmimo/doa2/doa2gui.h b/plugins/channelmimo/doa2/doa2gui.h index fdc9e13bd..e38956532 100644 --- a/plugins/channelmimo/doa2/doa2gui.h +++ b/plugins/channelmimo/doa2/doa2gui.h @@ -85,6 +85,8 @@ private: void applyPosition(); void displaySettings(); void displayRateAndShift(); + void setFFTAveragingToolitp(); + static void setNumberStr(float v, int decimalPlaces, QString& s); bool handleMessage(const Message& message); void makeUIConnections(); void updateAbsoluteCenterFrequency(); @@ -102,6 +104,7 @@ private slots: void on_antAz_valueChanged(int value); void on_baselineDistance_valueChanged(int value); void on_squelch_valueChanged(int value); + void on_fftAveraging_currentIndexChanged(int index); void onWidgetRolled(QWidget* widget, bool rollDown); void onMenuDialogCalled(const QPoint& p); void tick(); diff --git a/plugins/channelmimo/doa2/doa2gui.ui b/plugins/channelmimo/doa2/doa2gui.ui index e4d4a1322..9da1d4131 100644 --- a/plugins/channelmimo/doa2/doa2gui.ui +++ b/plugins/channelmimo/doa2/doa2gui.ui @@ -476,7 +476,7 @@ - Port side arrival angle (degrees) + Port side (positive) arrival angle (degrees) 000 @@ -506,7 +506,7 @@ - Starboard side arrival angle (degrees) + Starboard side (negative) arrival angle (degrees) 000 @@ -720,6 +720,140 @@ + + + + + 10 + 0 + + + + + + + + + + + FFT avg + + + + + + + + 55 + 0 + + + + + 45 + 16777215 + + + + Number of averaging FFTs + + + + 1 + + + + + 2 + + + + + 5 + + + + + 10 + + + + + 20 + + + + + 50 + + + + + 100 + + + + + 200 + + + + + 500 + + + + + 1k + + + + + 2k + + + + + 5k + + + + + 10k + + + + + 20k + + + + + 50k + + + + + 1e5 + + + + + 2e5 + + + + + 5e5 + + + + + 1M + + + + diff --git a/plugins/channelmimo/doa2/doa2settings.cpp b/plugins/channelmimo/doa2/doa2settings.cpp index 75e3e6efd..0d9ffc637 100644 --- a/plugins/channelmimo/doa2/doa2settings.cpp +++ b/plugins/channelmimo/doa2/doa2settings.cpp @@ -48,6 +48,7 @@ void DOA2Settings::resetToDefaults() m_antennaAz = 0; m_basebandDistance = 500; m_squelchdB = -50; + m_fftAveragingIndex = 0; } QByteArray DOA2Settings::serialize() const @@ -71,6 +72,7 @@ QByteArray DOA2Settings::serialize() const s.writeS32(16, m_antennaAz); s.writeU32(17, m_basebandDistance); s.writeS32(18, m_squelchdB); + s.writeS32(19, m_fftAveragingIndex); if (m_scopeGUI) { s.writeBlob(21, m_scopeGUI->serialize()); @@ -132,6 +134,12 @@ bool DOA2Settings::deserialize(const QByteArray& data) d.readU32(17, &utmp, 500); m_basebandDistance = utmp == 0 ? 1 : utmp; d.readS32(18, &m_squelchdB, -50); + d.readS32(19, &tmp, 0); + m_fftAveragingIndex = tmp < 0 ? + 0 : + tmp > 3*m_averagingMaxExponent + 3 ? + 3*m_averagingMaxExponent + 3: + tmp; if (m_scopeGUI) { @@ -159,3 +167,56 @@ bool DOA2Settings::deserialize(const QByteArray& data) return false; } } + +int DOA2Settings::getAveragingValue(int averagingIndex) +{ + if (averagingIndex <= 0) { + return 1; + } + + int v = averagingIndex - 1; + int m = pow(10.0, v/3 > m_averagingMaxExponent ? m_averagingMaxExponent : v/3); + int x = 1; + + if (v % 3 == 0) { + x = 2; + } else if (v % 3 == 1) { + x = 5; + } else if (v % 3 == 2) { + x = 10; + } + + return x * m; +} + +int DOA2Settings::getAveragingIndex(int averagingValue) +{ + if (averagingValue <= 1) { + return 0; + } + + int v = averagingValue; + int j = 0; + + for (int i = 0; i <= m_averagingMaxExponent; i++) + { + if (v < 20) + { + if (v < 2) { + j = 0; + } else if (v < 5) { + j = 1; + } else if (v < 10) { + j = 2; + } else { + j = 3; + } + + return 3*i + j; + } + + v /= 10; + } + + return 3*m_averagingMaxExponent + 3; +} diff --git a/plugins/channelmimo/doa2/doa2settings.h b/plugins/channelmimo/doa2/doa2settings.h index 4e4f7bc49..78dbcc46c 100644 --- a/plugins/channelmimo/doa2/doa2settings.h +++ b/plugins/channelmimo/doa2/doa2settings.h @@ -41,6 +41,7 @@ struct DOA2Settings int m_antennaAz; uint32_t m_basebandDistance; //!< in millimeters int m_squelchdB; + int m_fftAveragingIndex; bool m_useReverseAPI; QString m_reverseAPIAddress; uint16_t m_reverseAPIPort; @@ -61,6 +62,9 @@ struct DOA2Settings void setScopeGUI(Serializable *scopeGUI) { m_scopeGUI = scopeGUI; } QByteArray serialize() const; bool deserialize(const QByteArray& data); + static int getAveragingValue(int averagingIndex); + static int getAveragingIndex(int averagingValue); + static const int m_averagingMaxExponent = 5; //!< Max 1M (10 * 10^5) }; #endif // INCLUDE_DOA2SETTINGS_H diff --git a/sdrbase/resources/webapi/doc/html2/index.html b/sdrbase/resources/webapi/doc/html2/index.html index fe4c2a9b6..e0203e2fd 100644 --- a/sdrbase/resources/webapi/doc/html2/index.html +++ b/sdrbase/resources/webapi/doc/html2/index.html @@ -3397,6 +3397,9 @@ margin-bottom: 20px; "DATVModReport" : { "$ref" : "#/definitions/DATVModReport" }, + "DOA2Report" : { + "$ref" : "#/definitions/DOA2Report" + }, "DSDDemodReport" : { "$ref" : "#/definitions/DSDDemodReport" }, @@ -4525,6 +4528,31 @@ margin-bottom: 20px; } }, "description" : "DATVMod" +}; + defs.DOA2Report = { + "properties" : { + "phi" : { + "type" : "integer", + "description" : "Raw phase difference in degrees from 0 to 180" + }, + "posAz" : { + "type" : "integer", + "description" : "Calculated port side (positive) arrival angle in degrees from 0 to 180" + }, + "negAz" : { + "type" : "integer", + "description" : "Calculated starboard side (negative) arrival angle in degrees from 0 to 180" + }, + "fftSize" : { + "type" : "integer", + "description" : "Size of FFT used in correlation" + }, + "channelSampleRate" : { + "type" : "integer", + "description" : "Channel sample rate (then used in FFT) in S/s" + } + }, + "description" : "DOA2" }; defs.DOA2Settings = { "properties" : { @@ -4544,6 +4572,26 @@ margin-bottom: 20px; "filterChainHash" : { "type" : "integer" }, + "phase" : { + "type" : "integer", + "description" : "Phase difference correction in degrees from -180 to +180" + }, + "antennaAz" : { + "type" : "integer", + "description" : "Antennas azimuth from antenna 1 to antenna 2 in degrees from 0 to 359" + }, + "basebandDistance" : { + "type" : "integer", + "description" : "Antennas baseline distance in millimeters from 1 to 99999" + }, + "squelchdB" : { + "type" : "integer", + "description" : "Porcessing squared magnitude threshold (squelch) in dB from -140 t0 0" + }, + "fftAveragingValue" : { + "type" : "integer", + "description" : "Number of FFTs to average over. Use 1, 2, 5 or 10 times 10^0 to 10^5 (1 to 1M)" + }, "useReverseAPI" : { "type" : "integer", "description" : "Synchronize with reverse API (1 for yes, 0 for no)" @@ -56109,7 +56157,7 @@ except ApiException as e:
- Generated 2022-05-27T09:54:03.529+02:00 + Generated 2022-05-28T12:29:36.569+02:00
diff --git a/sdrbase/resources/webapi/doc/swagger/include/ChannelReport.yaml b/sdrbase/resources/webapi/doc/swagger/include/ChannelReport.yaml index df8b65951..986ee1f58 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/ChannelReport.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/ChannelReport.yaml @@ -33,6 +33,8 @@ ChannelReport: $ref: "/doc/swagger/include/DATVDemod.yaml#/DATVDemodReport" DATVModReport: $ref: "/doc/swagger/include/DATVMod.yaml#/DATVModReport" + DOA2Report: + $ref: "/doc/swagger/include/DOA2.yaml#/DOA2Report" DSDDemodReport: $ref: "/doc/swagger/include/DSDDemod.yaml#/DSDDemodReport" IEEE_802_15_4_ModReport: diff --git a/sdrbase/resources/webapi/doc/swagger/include/DOA2.yaml b/sdrbase/resources/webapi/doc/swagger/include/DOA2.yaml index 355331e39..9ed1a5880 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/DOA2.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/DOA2.yaml @@ -12,6 +12,21 @@ DOA2Settings: type: integer filterChainHash: type: integer + phase: + type: integer + description: Phase difference correction in degrees from -180 to +180 + antennaAz: + type: integer + description: Antennas azimuth from antenna 1 to antenna 2 in degrees from 0 to 359 + basebandDistance: + type: integer + description: Antennas baseline distance in millimeters from 1 to 99999 + squelchdB: + type: integer + description: Porcessing squared magnitude threshold (squelch) in dB from -140 t0 0 + fftAveragingValue: + type: integer + description: Number of FFTs to average over. Use 1, 2, 5 or 10 times 10^0 to 10^5 (1 to 1M) useReverseAPI: description: Synchronize with reverse API (1 for yes, 0 for no) type: integer @@ -29,3 +44,22 @@ DOA2Settings: $ref: "/doc/swagger/include/ChannelMarker.yaml#/ChannelMarker" rollupState: $ref: "/doc/swagger/include/RollupState.yaml#/RollupState" + +DOA2Report: + description: DOA2 + properties: + phi: + type: integer + description: Raw phase difference in degrees from 0 to 180 + posAz: + type: integer + description: Calculated port side (positive) arrival angle in degrees from 0 to 180 + negAz: + type: integer + description: Calculated starboard side (negative) arrival angle in degrees from 0 to 180 + fftSize: + type: integer + description: Size of FFT used in correlation + channelSampleRate: + type: integer + description: Channel sample rate (then used in FFT) in S/s diff --git a/swagger/sdrangel/api/swagger/include/ChannelReport.yaml b/swagger/sdrangel/api/swagger/include/ChannelReport.yaml index deda36e1b..548d2ba87 100644 --- a/swagger/sdrangel/api/swagger/include/ChannelReport.yaml +++ b/swagger/sdrangel/api/swagger/include/ChannelReport.yaml @@ -33,6 +33,8 @@ ChannelReport: $ref: "http://swgserver:8081/api/swagger/include/DATVDemod.yaml#/DATVDemodReport" DATVModReport: $ref: "http://swgserver:8081/api/swagger/include/DATVMod.yaml#/DATVModReport" + DOA2Report: + $ref: "http://swgserver:8081/api/swagger/include/DOA2.yaml#/DOA2Report" DSDDemodReport: $ref: "http://swgserver:8081/api/swagger/include/DSDDemod.yaml#/DSDDemodReport" IEEE_802_15_4_ModReport: diff --git a/swagger/sdrangel/api/swagger/include/DOA2.yaml b/swagger/sdrangel/api/swagger/include/DOA2.yaml index bd4f8262a..55c006fcc 100644 --- a/swagger/sdrangel/api/swagger/include/DOA2.yaml +++ b/swagger/sdrangel/api/swagger/include/DOA2.yaml @@ -12,6 +12,21 @@ DOA2Settings: type: integer filterChainHash: type: integer + phase: + type: integer + description: Phase difference correction in degrees from -180 to +180 + antennaAz: + type: integer + description: Antennas azimuth from antenna 1 to antenna 2 in degrees from 0 to 359 + basebandDistance: + type: integer + description: Antennas baseline distance in millimeters from 1 to 99999 + squelchdB: + type: integer + description: Porcessing squared magnitude threshold (squelch) in dB from -140 t0 0 + fftAveragingValue: + type: integer + description: Number of FFTs to average over. Use 1, 2, 5 or 10 times 10^0 to 10^5 (1 to 1M) useReverseAPI: description: Synchronize with reverse API (1 for yes, 0 for no) type: integer @@ -29,3 +44,22 @@ DOA2Settings: $ref: "http://swgserver:8081/api/swagger/include/ChannelMarker.yaml#/ChannelMarker" rollupState: $ref: "http://swgserver:8081/api/swagger/include/RollupState.yaml#/RollupState" + +DOA2Report: + description: DOA2 + properties: + phi: + type: integer + description: Raw phase difference in degrees from 0 to 180 + posAz: + type: integer + description: Calculated port side (positive) arrival angle in degrees from 0 to 180 + negAz: + type: integer + description: Calculated starboard side (negative) arrival angle in degrees from 0 to 180 + fftSize: + type: integer + description: Size of FFT used in correlation + channelSampleRate: + type: integer + description: Channel sample rate (then used in FFT) in S/s diff --git a/swagger/sdrangel/code/html2/index.html b/swagger/sdrangel/code/html2/index.html index fe4c2a9b6..e0203e2fd 100644 --- a/swagger/sdrangel/code/html2/index.html +++ b/swagger/sdrangel/code/html2/index.html @@ -3397,6 +3397,9 @@ margin-bottom: 20px; "DATVModReport" : { "$ref" : "#/definitions/DATVModReport" }, + "DOA2Report" : { + "$ref" : "#/definitions/DOA2Report" + }, "DSDDemodReport" : { "$ref" : "#/definitions/DSDDemodReport" }, @@ -4525,6 +4528,31 @@ margin-bottom: 20px; } }, "description" : "DATVMod" +}; + defs.DOA2Report = { + "properties" : { + "phi" : { + "type" : "integer", + "description" : "Raw phase difference in degrees from 0 to 180" + }, + "posAz" : { + "type" : "integer", + "description" : "Calculated port side (positive) arrival angle in degrees from 0 to 180" + }, + "negAz" : { + "type" : "integer", + "description" : "Calculated starboard side (negative) arrival angle in degrees from 0 to 180" + }, + "fftSize" : { + "type" : "integer", + "description" : "Size of FFT used in correlation" + }, + "channelSampleRate" : { + "type" : "integer", + "description" : "Channel sample rate (then used in FFT) in S/s" + } + }, + "description" : "DOA2" }; defs.DOA2Settings = { "properties" : { @@ -4544,6 +4572,26 @@ margin-bottom: 20px; "filterChainHash" : { "type" : "integer" }, + "phase" : { + "type" : "integer", + "description" : "Phase difference correction in degrees from -180 to +180" + }, + "antennaAz" : { + "type" : "integer", + "description" : "Antennas azimuth from antenna 1 to antenna 2 in degrees from 0 to 359" + }, + "basebandDistance" : { + "type" : "integer", + "description" : "Antennas baseline distance in millimeters from 1 to 99999" + }, + "squelchdB" : { + "type" : "integer", + "description" : "Porcessing squared magnitude threshold (squelch) in dB from -140 t0 0" + }, + "fftAveragingValue" : { + "type" : "integer", + "description" : "Number of FFTs to average over. Use 1, 2, 5 or 10 times 10^0 to 10^5 (1 to 1M)" + }, "useReverseAPI" : { "type" : "integer", "description" : "Synchronize with reverse API (1 for yes, 0 for no)" @@ -56109,7 +56157,7 @@ except ApiException as e:
- Generated 2022-05-27T09:54:03.529+02:00 + Generated 2022-05-28T12:29:36.569+02:00
diff --git a/swagger/sdrangel/code/qt5/client/SWGChannelReport.cpp b/swagger/sdrangel/code/qt5/client/SWGChannelReport.cpp index a328bbb26..8759fbce4 100644 --- a/swagger/sdrangel/code/qt5/client/SWGChannelReport.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGChannelReport.cpp @@ -54,6 +54,8 @@ SWGChannelReport::SWGChannelReport() { m_datv_demod_report_isSet = false; datv_mod_report = nullptr; m_datv_mod_report_isSet = false; + doa2_report = nullptr; + m_doa2_report_isSet = false; dsd_demod_report = nullptr; m_dsd_demod_report_isSet = false; ieee_802_15_4_mod_report = nullptr; @@ -138,6 +140,8 @@ SWGChannelReport::init() { m_datv_demod_report_isSet = false; datv_mod_report = new SWGDATVModReport(); m_datv_mod_report_isSet = false; + doa2_report = new SWGDOA2Report(); + m_doa2_report_isSet = false; dsd_demod_report = new SWGDSDDemodReport(); m_dsd_demod_report_isSet = false; ieee_802_15_4_mod_report = new SWGIEEE_802_15_4_ModReport(); @@ -229,6 +233,9 @@ SWGChannelReport::cleanup() { if(datv_mod_report != nullptr) { delete datv_mod_report; } + if(doa2_report != nullptr) { + delete doa2_report; + } if(dsd_demod_report != nullptr) { delete dsd_demod_report; } @@ -343,6 +350,8 @@ SWGChannelReport::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&datv_mod_report, pJson["DATVModReport"], "SWGDATVModReport", "SWGDATVModReport"); + ::SWGSDRangel::setValue(&doa2_report, pJson["DOA2Report"], "SWGDOA2Report", "SWGDOA2Report"); + ::SWGSDRangel::setValue(&dsd_demod_report, pJson["DSDDemodReport"], "SWGDSDDemodReport", "SWGDSDDemodReport"); ::SWGSDRangel::setValue(&ieee_802_15_4_mod_report, pJson["IEEE_802_15_4_ModReport"], "SWGIEEE_802_15_4_ModReport", "SWGIEEE_802_15_4_ModReport"); @@ -448,6 +457,9 @@ SWGChannelReport::asJsonObject() { if((datv_mod_report != nullptr) && (datv_mod_report->isSet())){ toJsonValue(QString("DATVModReport"), datv_mod_report, obj, QString("SWGDATVModReport")); } + if((doa2_report != nullptr) && (doa2_report->isSet())){ + toJsonValue(QString("DOA2Report"), doa2_report, obj, QString("SWGDOA2Report")); + } if((dsd_demod_report != nullptr) && (dsd_demod_report->isSet())){ toJsonValue(QString("DSDDemodReport"), dsd_demod_report, obj, QString("SWGDSDDemodReport")); } @@ -657,6 +669,16 @@ SWGChannelReport::setDatvModReport(SWGDATVModReport* datv_mod_report) { this->m_datv_mod_report_isSet = true; } +SWGDOA2Report* +SWGChannelReport::getDoa2Report() { + return doa2_report; +} +void +SWGChannelReport::setDoa2Report(SWGDOA2Report* doa2_report) { + this->doa2_report = doa2_report; + this->m_doa2_report_isSet = true; +} + SWGDSDDemodReport* SWGChannelReport::getDsdDemodReport() { return dsd_demod_report; @@ -951,6 +973,9 @@ SWGChannelReport::isSet(){ if(datv_mod_report && datv_mod_report->isSet()){ isObjectUpdated = true; break; } + if(doa2_report && doa2_report->isSet()){ + isObjectUpdated = true; break; + } if(dsd_demod_report && dsd_demod_report->isSet()){ isObjectUpdated = true; break; } diff --git a/swagger/sdrangel/code/qt5/client/SWGChannelReport.h b/swagger/sdrangel/code/qt5/client/SWGChannelReport.h index b20d6098e..9d2e66a79 100644 --- a/swagger/sdrangel/code/qt5/client/SWGChannelReport.h +++ b/swagger/sdrangel/code/qt5/client/SWGChannelReport.h @@ -33,6 +33,7 @@ #include "SWGChirpChatModReport.h" #include "SWGDATVDemodReport.h" #include "SWGDATVModReport.h" +#include "SWGDOA2Report.h" #include "SWGDSDDemodReport.h" #include "SWGFileSinkReport.h" #include "SWGFileSourceReport.h" @@ -117,6 +118,9 @@ public: SWGDATVModReport* getDatvModReport(); void setDatvModReport(SWGDATVModReport* datv_mod_report); + SWGDOA2Report* getDoa2Report(); + void setDoa2Report(SWGDOA2Report* doa2_report); + SWGDSDDemodReport* getDsdDemodReport(); void setDsdDemodReport(SWGDSDDemodReport* dsd_demod_report); @@ -235,6 +239,9 @@ private: SWGDATVModReport* datv_mod_report; bool m_datv_mod_report_isSet; + SWGDOA2Report* doa2_report; + bool m_doa2_report_isSet; + SWGDSDDemodReport* dsd_demod_report; bool m_dsd_demod_report_isSet; diff --git a/swagger/sdrangel/code/qt5/client/SWGDOA2Report.cpp b/swagger/sdrangel/code/qt5/client/SWGDOA2Report.cpp new file mode 100644 index 000000000..8d6b95acb --- /dev/null +++ b/swagger/sdrangel/code/qt5/client/SWGDOA2Report.cpp @@ -0,0 +1,200 @@ +/** + * SDRangel + * This is the web REST/JSON API of SDRangel SDR software. SDRangel is an Open Source Qt5/OpenGL 3.0+ (4.3+ in Windows) GUI and server Software Defined Radio and signal analyzer in software. It supports Airspy, BladeRF, HackRF, LimeSDR, PlutoSDR, RTL-SDR, SDRplay RSP1 and FunCube --- Limitations and specifcities: * In SDRangel GUI the first Rx device set cannot be deleted. Conversely the server starts with no device sets and its number of device sets can be reduced to zero by as many calls as necessary to /sdrangel/deviceset with DELETE method. * Preset import and export from/to file is a server only feature. * Device set focus is a GUI only feature. * The following channels are not implemented (status 501 is returned): ATV and DATV demodulators, Channel Analyzer NG, LoRa demodulator * The device settings and report structures contains only the sub-structure corresponding to the device type. The DeviceSettings and DeviceReport structures documented here shows all of them but only one will be or should be present at a time * The channel settings and report structures contains only the sub-structure corresponding to the channel type. The ChannelSettings and ChannelReport structures documented here shows all of them but only one will be or should be present at a time --- + * + * OpenAPI spec version: 7.0.0 + * Contact: f4exb06@gmail.com + * + * NOTE: This class is auto generated by the swagger code generator program. + * https://github.com/swagger-api/swagger-codegen.git + * Do not edit the class manually. + */ + + +#include "SWGDOA2Report.h" + +#include "SWGHelpers.h" + +#include +#include +#include +#include + +namespace SWGSDRangel { + +SWGDOA2Report::SWGDOA2Report(QString* json) { + init(); + this->fromJson(*json); +} + +SWGDOA2Report::SWGDOA2Report() { + phi = 0; + m_phi_isSet = false; + pos_az = 0; + m_pos_az_isSet = false; + neg_az = 0; + m_neg_az_isSet = false; + fft_size = 0; + m_fft_size_isSet = false; + channel_sample_rate = 0; + m_channel_sample_rate_isSet = false; +} + +SWGDOA2Report::~SWGDOA2Report() { + this->cleanup(); +} + +void +SWGDOA2Report::init() { + phi = 0; + m_phi_isSet = false; + pos_az = 0; + m_pos_az_isSet = false; + neg_az = 0; + m_neg_az_isSet = false; + fft_size = 0; + m_fft_size_isSet = false; + channel_sample_rate = 0; + m_channel_sample_rate_isSet = false; +} + +void +SWGDOA2Report::cleanup() { + + + + + +} + +SWGDOA2Report* +SWGDOA2Report::fromJson(QString &json) { + QByteArray array (json.toStdString().c_str()); + QJsonDocument doc = QJsonDocument::fromJson(array); + QJsonObject jsonObject = doc.object(); + this->fromJsonObject(jsonObject); + return this; +} + +void +SWGDOA2Report::fromJsonObject(QJsonObject &pJson) { + ::SWGSDRangel::setValue(&phi, pJson["phi"], "qint32", ""); + + ::SWGSDRangel::setValue(&pos_az, pJson["posAz"], "qint32", ""); + + ::SWGSDRangel::setValue(&neg_az, pJson["negAz"], "qint32", ""); + + ::SWGSDRangel::setValue(&fft_size, pJson["fftSize"], "qint32", ""); + + ::SWGSDRangel::setValue(&channel_sample_rate, pJson["channelSampleRate"], "qint32", ""); + +} + +QString +SWGDOA2Report::asJson () +{ + QJsonObject* obj = this->asJsonObject(); + + QJsonDocument doc(*obj); + QByteArray bytes = doc.toJson(); + delete obj; + return QString(bytes); +} + +QJsonObject* +SWGDOA2Report::asJsonObject() { + QJsonObject* obj = new QJsonObject(); + if(m_phi_isSet){ + obj->insert("phi", QJsonValue(phi)); + } + if(m_pos_az_isSet){ + obj->insert("posAz", QJsonValue(pos_az)); + } + if(m_neg_az_isSet){ + obj->insert("negAz", QJsonValue(neg_az)); + } + if(m_fft_size_isSet){ + obj->insert("fftSize", QJsonValue(fft_size)); + } + if(m_channel_sample_rate_isSet){ + obj->insert("channelSampleRate", QJsonValue(channel_sample_rate)); + } + + return obj; +} + +qint32 +SWGDOA2Report::getPhi() { + return phi; +} +void +SWGDOA2Report::setPhi(qint32 phi) { + this->phi = phi; + this->m_phi_isSet = true; +} + +qint32 +SWGDOA2Report::getPosAz() { + return pos_az; +} +void +SWGDOA2Report::setPosAz(qint32 pos_az) { + this->pos_az = pos_az; + this->m_pos_az_isSet = true; +} + +qint32 +SWGDOA2Report::getNegAz() { + return neg_az; +} +void +SWGDOA2Report::setNegAz(qint32 neg_az) { + this->neg_az = neg_az; + this->m_neg_az_isSet = true; +} + +qint32 +SWGDOA2Report::getFftSize() { + return fft_size; +} +void +SWGDOA2Report::setFftSize(qint32 fft_size) { + this->fft_size = fft_size; + this->m_fft_size_isSet = true; +} + +qint32 +SWGDOA2Report::getChannelSampleRate() { + return channel_sample_rate; +} +void +SWGDOA2Report::setChannelSampleRate(qint32 channel_sample_rate) { + this->channel_sample_rate = channel_sample_rate; + this->m_channel_sample_rate_isSet = true; +} + + +bool +SWGDOA2Report::isSet(){ + bool isObjectUpdated = false; + do{ + if(m_phi_isSet){ + isObjectUpdated = true; break; + } + if(m_pos_az_isSet){ + isObjectUpdated = true; break; + } + if(m_neg_az_isSet){ + isObjectUpdated = true; break; + } + if(m_fft_size_isSet){ + isObjectUpdated = true; break; + } + if(m_channel_sample_rate_isSet){ + isObjectUpdated = true; break; + } + }while(false); + return isObjectUpdated; +} +} + diff --git a/swagger/sdrangel/code/qt5/client/SWGDOA2Report.h b/swagger/sdrangel/code/qt5/client/SWGDOA2Report.h new file mode 100644 index 000000000..0274f389f --- /dev/null +++ b/swagger/sdrangel/code/qt5/client/SWGDOA2Report.h @@ -0,0 +1,82 @@ +/** + * SDRangel + * This is the web REST/JSON API of SDRangel SDR software. SDRangel is an Open Source Qt5/OpenGL 3.0+ (4.3+ in Windows) GUI and server Software Defined Radio and signal analyzer in software. It supports Airspy, BladeRF, HackRF, LimeSDR, PlutoSDR, RTL-SDR, SDRplay RSP1 and FunCube --- Limitations and specifcities: * In SDRangel GUI the first Rx device set cannot be deleted. Conversely the server starts with no device sets and its number of device sets can be reduced to zero by as many calls as necessary to /sdrangel/deviceset with DELETE method. * Preset import and export from/to file is a server only feature. * Device set focus is a GUI only feature. * The following channels are not implemented (status 501 is returned): ATV and DATV demodulators, Channel Analyzer NG, LoRa demodulator * The device settings and report structures contains only the sub-structure corresponding to the device type. The DeviceSettings and DeviceReport structures documented here shows all of them but only one will be or should be present at a time * The channel settings and report structures contains only the sub-structure corresponding to the channel type. The ChannelSettings and ChannelReport structures documented here shows all of them but only one will be or should be present at a time --- + * + * OpenAPI spec version: 7.0.0 + * Contact: f4exb06@gmail.com + * + * NOTE: This class is auto generated by the swagger code generator program. + * https://github.com/swagger-api/swagger-codegen.git + * Do not edit the class manually. + */ + +/* + * SWGDOA2Report.h + * + * DOA2 + */ + +#ifndef SWGDOA2Report_H_ +#define SWGDOA2Report_H_ + +#include + + + +#include "SWGObject.h" +#include "export.h" + +namespace SWGSDRangel { + +class SWG_API SWGDOA2Report: public SWGObject { +public: + SWGDOA2Report(); + SWGDOA2Report(QString* json); + virtual ~SWGDOA2Report(); + void init(); + void cleanup(); + + virtual QString asJson () override; + virtual QJsonObject* asJsonObject() override; + virtual void fromJsonObject(QJsonObject &json) override; + virtual SWGDOA2Report* fromJson(QString &jsonString) override; + + qint32 getPhi(); + void setPhi(qint32 phi); + + qint32 getPosAz(); + void setPosAz(qint32 pos_az); + + qint32 getNegAz(); + void setNegAz(qint32 neg_az); + + qint32 getFftSize(); + void setFftSize(qint32 fft_size); + + qint32 getChannelSampleRate(); + void setChannelSampleRate(qint32 channel_sample_rate); + + + virtual bool isSet() override; + +private: + qint32 phi; + bool m_phi_isSet; + + qint32 pos_az; + bool m_pos_az_isSet; + + qint32 neg_az; + bool m_neg_az_isSet; + + qint32 fft_size; + bool m_fft_size_isSet; + + qint32 channel_sample_rate; + bool m_channel_sample_rate_isSet; + +}; + +} + +#endif /* SWGDOA2Report_H_ */ diff --git a/swagger/sdrangel/code/qt5/client/SWGDOA2Settings.cpp b/swagger/sdrangel/code/qt5/client/SWGDOA2Settings.cpp index 26c5340a8..b7cf65ac4 100644 --- a/swagger/sdrangel/code/qt5/client/SWGDOA2Settings.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGDOA2Settings.cpp @@ -38,6 +38,16 @@ SWGDOA2Settings::SWGDOA2Settings() { m_log2_decim_isSet = false; filter_chain_hash = 0; m_filter_chain_hash_isSet = false; + phase = 0; + m_phase_isSet = false; + antenna_az = 0; + m_antenna_az_isSet = false; + baseband_distance = 0; + m_baseband_distance_isSet = false; + squelchd_b = 0; + m_squelchd_b_isSet = false; + fft_averaging_value = 0; + m_fft_averaging_value_isSet = false; use_reverse_api = 0; m_use_reverse_api_isSet = false; reverse_api_address = nullptr; @@ -72,6 +82,16 @@ SWGDOA2Settings::init() { m_log2_decim_isSet = false; filter_chain_hash = 0; m_filter_chain_hash_isSet = false; + phase = 0; + m_phase_isSet = false; + antenna_az = 0; + m_antenna_az_isSet = false; + baseband_distance = 0; + m_baseband_distance_isSet = false; + squelchd_b = 0; + m_squelchd_b_isSet = false; + fft_averaging_value = 0; + m_fft_averaging_value_isSet = false; use_reverse_api = 0; m_use_reverse_api_isSet = false; reverse_api_address = new QString(""); @@ -100,6 +120,11 @@ SWGDOA2Settings::cleanup() { + + + + + if(reverse_api_address != nullptr) { delete reverse_api_address; } @@ -138,6 +163,16 @@ SWGDOA2Settings::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&filter_chain_hash, pJson["filterChainHash"], "qint32", ""); + ::SWGSDRangel::setValue(&phase, pJson["phase"], "qint32", ""); + + ::SWGSDRangel::setValue(&antenna_az, pJson["antennaAz"], "qint32", ""); + + ::SWGSDRangel::setValue(&baseband_distance, pJson["basebandDistance"], "qint32", ""); + + ::SWGSDRangel::setValue(&squelchd_b, pJson["squelchdB"], "qint32", ""); + + ::SWGSDRangel::setValue(&fft_averaging_value, pJson["fftAveragingValue"], "qint32", ""); + ::SWGSDRangel::setValue(&use_reverse_api, pJson["useReverseAPI"], "qint32", ""); ::SWGSDRangel::setValue(&reverse_api_address, pJson["reverseAPIAddress"], "QString", "QString"); @@ -185,6 +220,21 @@ SWGDOA2Settings::asJsonObject() { if(m_filter_chain_hash_isSet){ obj->insert("filterChainHash", QJsonValue(filter_chain_hash)); } + if(m_phase_isSet){ + obj->insert("phase", QJsonValue(phase)); + } + if(m_antenna_az_isSet){ + obj->insert("antennaAz", QJsonValue(antenna_az)); + } + if(m_baseband_distance_isSet){ + obj->insert("basebandDistance", QJsonValue(baseband_distance)); + } + if(m_squelchd_b_isSet){ + obj->insert("squelchdB", QJsonValue(squelchd_b)); + } + if(m_fft_averaging_value_isSet){ + obj->insert("fftAveragingValue", QJsonValue(fft_averaging_value)); + } if(m_use_reverse_api_isSet){ obj->insert("useReverseAPI", QJsonValue(use_reverse_api)); } @@ -263,6 +313,56 @@ SWGDOA2Settings::setFilterChainHash(qint32 filter_chain_hash) { this->m_filter_chain_hash_isSet = true; } +qint32 +SWGDOA2Settings::getPhase() { + return phase; +} +void +SWGDOA2Settings::setPhase(qint32 phase) { + this->phase = phase; + this->m_phase_isSet = true; +} + +qint32 +SWGDOA2Settings::getAntennaAz() { + return antenna_az; +} +void +SWGDOA2Settings::setAntennaAz(qint32 antenna_az) { + this->antenna_az = antenna_az; + this->m_antenna_az_isSet = true; +} + +qint32 +SWGDOA2Settings::getBasebandDistance() { + return baseband_distance; +} +void +SWGDOA2Settings::setBasebandDistance(qint32 baseband_distance) { + this->baseband_distance = baseband_distance; + this->m_baseband_distance_isSet = true; +} + +qint32 +SWGDOA2Settings::getSquelchdB() { + return squelchd_b; +} +void +SWGDOA2Settings::setSquelchdB(qint32 squelchd_b) { + this->squelchd_b = squelchd_b; + this->m_squelchd_b_isSet = true; +} + +qint32 +SWGDOA2Settings::getFftAveragingValue() { + return fft_averaging_value; +} +void +SWGDOA2Settings::setFftAveragingValue(qint32 fft_averaging_value) { + this->fft_averaging_value = fft_averaging_value; + this->m_fft_averaging_value_isSet = true; +} + qint32 SWGDOA2Settings::getUseReverseApi() { return use_reverse_api; @@ -363,6 +463,21 @@ SWGDOA2Settings::isSet(){ if(m_filter_chain_hash_isSet){ isObjectUpdated = true; break; } + if(m_phase_isSet){ + isObjectUpdated = true; break; + } + if(m_antenna_az_isSet){ + isObjectUpdated = true; break; + } + if(m_baseband_distance_isSet){ + isObjectUpdated = true; break; + } + if(m_squelchd_b_isSet){ + isObjectUpdated = true; break; + } + if(m_fft_averaging_value_isSet){ + isObjectUpdated = true; break; + } if(m_use_reverse_api_isSet){ isObjectUpdated = true; break; } diff --git a/swagger/sdrangel/code/qt5/client/SWGDOA2Settings.h b/swagger/sdrangel/code/qt5/client/SWGDOA2Settings.h index 39aee1bbf..b6718d872 100644 --- a/swagger/sdrangel/code/qt5/client/SWGDOA2Settings.h +++ b/swagger/sdrangel/code/qt5/client/SWGDOA2Settings.h @@ -60,6 +60,21 @@ public: qint32 getFilterChainHash(); void setFilterChainHash(qint32 filter_chain_hash); + qint32 getPhase(); + void setPhase(qint32 phase); + + qint32 getAntennaAz(); + void setAntennaAz(qint32 antenna_az); + + qint32 getBasebandDistance(); + void setBasebandDistance(qint32 baseband_distance); + + qint32 getSquelchdB(); + void setSquelchdB(qint32 squelchd_b); + + qint32 getFftAveragingValue(); + void setFftAveragingValue(qint32 fft_averaging_value); + qint32 getUseReverseApi(); void setUseReverseApi(qint32 use_reverse_api); @@ -103,6 +118,21 @@ private: qint32 filter_chain_hash; bool m_filter_chain_hash_isSet; + qint32 phase; + bool m_phase_isSet; + + qint32 antenna_az; + bool m_antenna_az_isSet; + + qint32 baseband_distance; + bool m_baseband_distance_isSet; + + qint32 squelchd_b; + bool m_squelchd_b_isSet; + + qint32 fft_averaging_value; + bool m_fft_averaging_value_isSet; + qint32 use_reverse_api; bool m_use_reverse_api_isSet; diff --git a/swagger/sdrangel/code/qt5/client/SWGModelFactory.h b/swagger/sdrangel/code/qt5/client/SWGModelFactory.h index e0ba50888..d6891d140 100644 --- a/swagger/sdrangel/code/qt5/client/SWGModelFactory.h +++ b/swagger/sdrangel/code/qt5/client/SWGModelFactory.h @@ -95,6 +95,7 @@ #include "SWGDATVDemodSettings.h" #include "SWGDATVModReport.h" #include "SWGDATVModSettings.h" +#include "SWGDOA2Report.h" #include "SWGDOA2Settings.h" #include "SWGDSDDemodReport.h" #include "SWGDSDDemodSettings.h" @@ -739,6 +740,11 @@ namespace SWGSDRangel { obj->init(); return obj; } + if(QString("SWGDOA2Report").compare(type) == 0) { + SWGDOA2Report *obj = new SWGDOA2Report(); + obj->init(); + return obj; + } if(QString("SWGDOA2Settings").compare(type) == 0) { SWGDOA2Settings *obj = new SWGDOA2Settings(); obj->init(); From 67d4e3d105064129621d91de73cc1e7a9e5ee77b Mon Sep 17 00:00:00 2001 From: f4exb Date: Sat, 28 May 2022 23:44:53 +0200 Subject: [PATCH 11/15] DOA2: set scope timescale display as frequency in FFT (correlation) mode for X and XY displays --- plugins/channelmimo/doa2/doa2gui.cpp | 15 +++++++++++++++ plugins/channelmimo/doa2/doa2gui.h | 1 + plugins/channelmimo/doa2/doa2gui.ui | 13 +++++++++++++ sdrgui/gui/glscope.cpp | 24 +++++++++++++++++++----- sdrgui/gui/glscope.h | 8 ++++++++ 5 files changed, 56 insertions(+), 5 deletions(-) diff --git a/plugins/channelmimo/doa2/doa2gui.cpp b/plugins/channelmimo/doa2/doa2gui.cpp index 417d3c347..0f263e33b 100644 --- a/plugins/channelmimo/doa2/doa2gui.cpp +++ b/plugins/channelmimo/doa2/doa2gui.cpp @@ -333,6 +333,7 @@ void DOA2GUI::onMenuDialogCalled(const QPoint &p) void DOA2GUI::on_decimationFactor_currentIndexChanged(int index) { m_settings.m_log2Decim = index; + updateScopeFScale(); applyDecimation(); } @@ -352,6 +353,7 @@ void DOA2GUI::on_phaseCorrection_valueChanged(int value) void DOA2GUI::on_correlationType_currentIndexChanged(int index) { m_settings.m_correlationType = (DOA2Settings::CorrelationType) index; + updateScopeFScale(); applySettings(); } @@ -438,6 +440,19 @@ void DOA2GUI::updateAbsoluteCenterFrequency() setStatusFrequency(cf); m_hwl = 1.5e+8 / cf; ui->halfWLText->setText(tr("%1").arg(m_hwl*1000, 5, 'f', 0)); + updateScopeFScale(); +} + +void DOA2GUI::updateScopeFScale() +{ + if (m_settings.m_correlationType == DOA2Settings::CorrelationType::CorrelationFFT) { + ui->glScope->setXScaleFreq(true); + } else { + ui->glScope->setXScaleFreq(false); + } + + ui->glScope->setXScaleCenterFrequency(m_centerFrequency); + ui->glScope->setXScaleFrequencySpan(m_sampleRate / (1<
+ + + + Qt::Horizontal + + + + 40 + 20 + + + +
diff --git a/sdrgui/gui/glscope.cpp b/sdrgui/gui/glscope.cpp index f8608af91..6a6a778ba 100644 --- a/sdrgui/gui/glscope.cpp +++ b/sdrgui/gui/glscope.cpp @@ -75,6 +75,9 @@ GLScope::GLScope(QWidget *parent) : m_x1Scale.setOrientation(Qt::Horizontal); m_x2Scale.setFont(font()); m_x2Scale.setOrientation(Qt::Horizontal); + m_xScaleFreq = false; + m_xScaleCenterFrequency = 0; + m_xScaleFrequencySpan = 48000; m_channelOverlayFont = QFontDatabase::systemFont(QFontDatabase::FixedFont); m_channelOverlayFont.setBold(true); @@ -1077,12 +1080,23 @@ void GLScope::applyConfig() // scales - m_x1Scale.setRange(Unit::Time, t_start, t_start + t_len); // time scale - - if (m_displayMode == DisplayPol) { - setYScale(m_x2Scale, 0); // polar scale (X) + if (m_xScaleFreq) { + m_x1Scale.setRange(Unit::Frequency, m_xScaleCenterFrequency - (m_xScaleFrequencySpan/2), m_xScaleCenterFrequency + (m_xScaleFrequencySpan/2)); } else { - m_x2Scale.setRange(Unit::Time, t_start, t_start + t_len); // time scale + m_x1Scale.setRange(Unit::Time, t_start, t_start + t_len); // time scale + } + + if (m_displayMode == DisplayPol) + { + setYScale(m_x2Scale, 0); // polar scale (X) + } + else + { + if (m_xScaleFreq) { + m_x2Scale.setRange(Unit::Time, t_start, t_start + t_len); // time scale + } else { + m_x2Scale.setRange(Unit::Frequency, m_xScaleCenterFrequency - (m_xScaleFrequencySpan/2), m_xScaleCenterFrequency + (m_xScaleFrequencySpan/2)); + } } if (m_traces->size() > 0) { diff --git a/sdrgui/gui/glscope.h b/sdrgui/gui/glscope.h index 65c7df0f6..560912c06 100644 --- a/sdrgui/gui/glscope.h +++ b/sdrgui/gui/glscope.h @@ -86,6 +86,11 @@ public: virtual const QAtomicInt& getProcessingTraceIndex() const { return m_processingTraceIndex; } void setTraceModulo(int modulo) { m_traceModulo = modulo; } + void setXScaleFreq(bool set) { m_xScaleFreq = set; m_configChanged = true; } + bool isXScaleFreq() const { return m_xScaleFreq; } + void setXScaleCenterFrequency(qint64 cf) { m_xScaleCenterFrequency = cf; m_configChanged = true; } + void setXScaleFrequencySpan(int span) { m_xScaleFrequencySpan = span; m_configChanged = true; } + signals: void sampleRateChanged(int); void traceSizeChanged(uint32_t); @@ -187,6 +192,9 @@ private: ScaleEngine m_x2Scale; //!< Display #2 X scale. Time scale ScaleEngine m_y1Scale; //!< Display #1 Y scale. Always connected to trace #0 (X trace) ScaleEngine m_y2Scale; //!< Display #2 Y scale. Connected to highlighted Y trace (#1..n) + bool m_xScaleFreq; //!< Force frequency display on time line for correlation modes + qint64 m_xScaleCenterFrequency; //!< Frequency time line mode center frequency + int m_xScaleFrequencySpan; //!< Frequency time line mode frequency span QFont m_channelOverlayFont; QFont m_textOverlayFont; From 1fe670656ef1818a9bea1f11434ca22ad1d6d4b9 Mon Sep 17 00:00:00 2001 From: f4exb Date: Sun, 29 May 2022 08:03:52 +0200 Subject: [PATCH 12/15] DOA2: updated documentation --- doc/img/DOA2_plugin.png | Bin 0 -> 131942 bytes doc/img/DOA2_plugin.xcf | Bin 0 -> 437685 bytes doc/img/DOA2_plugin_DOA.png | Bin 0 -> 32550 bytes doc/img/DOA2_plugin_DOA.xcf | Bin 0 -> 73182 bytes doc/img/DOA2_plugin_compass.png | Bin 0 -> 33333 bytes doc/img/DOA2_plugin_compass.xcf | Bin 0 -> 52842 bytes doc/img/DOA2_plugin_full.png | Bin 0 -> 345755 bytes doc/img/DOA2_plugin_settings.png | Bin 0 -> 10383 bytes doc/img/DOA2_plugin_settings.xcf | Bin 0 -> 37752 bytes doc/img/DOA2_plugin_xy.png | Bin 0 -> 11446 bytes doc/img/interferometer_doa_general.png | Bin 0 -> 29895 bytes doc/img/mimo_steering_angle.odg | Bin 0 -> 77278 bytes plugins/channelmimo/doa2/readme.md | 229 +++++++++++++++---------- 13 files changed, 143 insertions(+), 86 deletions(-) create mode 100644 doc/img/DOA2_plugin.png create mode 100644 doc/img/DOA2_plugin.xcf create mode 100644 doc/img/DOA2_plugin_DOA.png create mode 100644 doc/img/DOA2_plugin_DOA.xcf create mode 100644 doc/img/DOA2_plugin_compass.png create mode 100644 doc/img/DOA2_plugin_compass.xcf create mode 100644 doc/img/DOA2_plugin_full.png create mode 100644 doc/img/DOA2_plugin_settings.png create mode 100644 doc/img/DOA2_plugin_settings.xcf create mode 100644 doc/img/DOA2_plugin_xy.png create mode 100644 doc/img/interferometer_doa_general.png create mode 100644 doc/img/mimo_steering_angle.odg diff --git a/doc/img/DOA2_plugin.png b/doc/img/DOA2_plugin.png new file mode 100644 index 0000000000000000000000000000000000000000..9c48b56fa545e98ff5fb8e2953b36d9d17625eb7 GIT binary patch literal 131942 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'Ot_j1hZbS_wS*y00XGVZ)rJT>J86S=08Y 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 z zM-LcGr@+|NG@1X)KY!Px6c*Z1F24wV(|6b~N6yp2lP=sAlih!?^>T}@HyFI8`O-Lc znKi~Uwvca>2&*>!@@Y7PY1Q)J!?aSYW-#Ou$MXC^y-z0 z8x4QzI+xCTn9@FylS-1;jkf_}*$?@bQ8km|Y>G1EbZPxrLN`?n2`BY&s`}Q4$-F3F} zU(g!7=$9f7F~(f*{r5&ghS(5iRok_*pFMkzkFT#kAaUB93+~v&F1r1rv-8eW#}w%t zUD6yG$r|?WZ%LE3O_$fZD)YYk$&nvM^A^R94a&v>RB3N7mRouAP0SwT7ZI zwmUK4;T2A+R^Q>nKLy`0kB!tDy^)1L6BjI4kX2NOkY@gIXQhja0r!uOE6kF{SJw)^ z+7O)el8Jw-R!bwS$|V(80qOf5ALV>VQZgZi*_=cu6K6yYS*@H z0kxyLy82=I!&yIhdnW-F`2{VxlMv2$vu2X#>!5wN0o{rKCtAro#}=gGH{Y8#Z`w1L z>OcA)gL8}wvhE|0DWqkNiHt1txIorV;XS7kJCP}2L0^ALB+ocHDr#QoNhk-ax0Iu9W^tKx8?>}qE*Ove}8{&=C+L+ zH9N9=6x_-SE?bex9?-L;BsDJZKJjY}2 zm_S!(t?&N&D_U1wL!)F;XK*C-u3Zmut!KYr8tVVDu>Ys}`fA9PC&LYKDz*dwI9>yn zOB+UF(cQb(%gWqHk)$d|H#fKV*84dAMg%HiX5fo4#DOC0vc&TDC3S38=1jr{E#O@W z`-IP**VGiBoQ##$qNQs{hkW&(EuvcwENvKqk@;r6i5cBne_dVu5hGlAI9WAlE`P;j zFXRWMqhra@$6snbjHy6sIqCEmp6rn;4e`UR&+oDJdGbR5O8uwR)xNV#wfps(I4Rzi zZYDE)zO%6g6sPGVimVEZpW6+J4DT&we0oJJi~v$#J|+kSx%mO^ZtFO!m`NIA3p|gw=Ie0nWb+at3@6P zYN(#Gvhvi2^FTSb9RJj_!hl$^1k~9OKbltdiba+Es7gpQJsV_}weh@O?Wka2uQXzY zA@_{1bcdg2&=O-+XU!@?Tj~`mcYnOlVs`AfnV&zC-($aGMFvf*_wE)!Gbvi+n3LNL zbagEV@KME!?$MzcA>`gQT`#=PSaxLli3rZj+_PMtY(M}gN}Y#ff_1Zp^7fUL>n0&PizjKHHKBM&l;;HDJE z#1Z02Hq+>~i}>vM!*EN)XAN{aqr@>hnCk{YP2oDHof)}YO-=0(n3{w`9&Z7w`^=yz5O2Nd zf%Ee7cj)rTGk8Z)9V}nE^fupFX=4*dhTt8YEGyF(x%5LgBKb!qZEkM3aaSDzt)cbe z-gy=140JhRK~AEyaI~|FB>x**@g?kdm7pse0#+~>J=%>i&aW$e3|>c*X*T}x@^@sUwg3~36FX(igzFp zV^`uT9BnRPCY_-J2kU7?MSNb~RKDI+M(ymLtMuoYTm9&yar651ZMw693d@G;Fnv+- z@=-6r(Mo_pEW7tub$*P5?3Z$>?2UU+WA*!KJgL7h|rjItxI9@OHzvi9tf%7VI<7W;DyQ0&&b!%L_K3CkRCJ>sL znPs(JJ#3})LgVKBb9TX^nG>yMMY(10Yei1^rGqVJ-tN{?eqlYR_TjWc@-vS|{p3Hl zm1et!kCLC&e!rzw{;S>eqawJq{Gv_M{~Gs*3sopoI?0cn1ODsBwK?*|6fLym$N%9E z{;z-hzx~1g^^gA_Kljn&9dgG0)i`5Ml+V5XSvTYhSXs`n KI6A>&-G2Z~L{NbM literal 0 HcmV?d00001 diff --git a/doc/img/DOA2_plugin.xcf b/doc/img/DOA2_plugin.xcf new file mode 100644 index 0000000000000000000000000000000000000000..f4c6962ca9d66ce8ea989047ffc4114b9ceda2af GIT binary patch literal 437685 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 literal 0 HcmV?d00001 diff --git a/doc/img/DOA2_plugin_DOA.png b/doc/img/DOA2_plugin_DOA.png new file mode 100644 index 0000000000000000000000000000000000000000..2e7a654edeb3edd8cacc4f90506dda3522922927 GIT binary patch literal 32550 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 literal 0 HcmV?d00001 diff --git a/doc/img/DOA2_plugin_compass.xcf b/doc/img/DOA2_plugin_compass.xcf new file mode 100644 index 0000000000000000000000000000000000000000..dafd013aa0210a22a691195333862d22d3cb577f GIT binary patch literal 52842 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 WKdytg*xw*rg9S_^>W}aXhW{VdS0<1E literal 0 HcmV?d00001 diff --git a/doc/img/DOA2_plugin_full.png b/doc/img/DOA2_plugin_full.png new file mode 100644 index 0000000000000000000000000000000000000000..f3a97572ac697ecbaa9ce137562c34365075a6bc GIT binary patch literal 345755 zcmb@uhd||wRB-tbxAtNDs zWtMf_&-?rRUBBxOxX$g<`@_LG=k*+q$9+9tLF%fPs3@2y$jHd36yz^xkdcu$kdf_> zBW%YreixR`?lz5C#N zkdFWEt5-*SuUrehY?qqjmU)Wl_6NPUWuv@upXpB#Dz{(GsaBnO_|Vr^Wc=bpZrPW$ zL9T_HuBI2S%Fh4YS{IZOw))cT*cEN1np9L$as==F-{Ylcs>_xC^9|Y3Hvg#q^NkJJ z|6gC1y`{v9zBG9INHKNtzjyx0_lsrFpp}~-u#N0z@XEAxO36vmsF0OYh}R?^>ZTYx zif;}G2@78nJj5HB9=;}gXm7FxPo$!X0WW@XPS<5d$HdTJh`p4YjO;3}rKKf3J^jg( zCz+`OiHT1p4GU~8Cbfz%HGgoMbzV6}AaX|>J$m%=ak`)j8j~YC$;jqJg-Q)uuZ!He zb?aF!|$jHX=-=6*GMl99lDRZ;yCdugvsK&dhlK{WB6JU}95X;7=1=t-%{f zE~|c=jyobv{kVgNw6wI`qeJ`I*eaYx8YV^!NAlUqq|UqVAtPIoU4MSc<%++P^9RSO z?(S&0q=WSI6K@A{ErQRnALrwXm2!J)OndL# ^PiH-~der__dyV*>Bm0!yYyMO#x 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 z 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 z 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 literal 0 HcmV?d00001 diff --git a/doc/img/DOA2_plugin_settings.png b/doc/img/DOA2_plugin_settings.png new file mode 100644 index 0000000000000000000000000000000000000000..98f0ebec1d10c8b6ace8d8f3c84fe5d5e15093fa GIT binary patch literal 10383 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 TznCb3aDU_z*~b{M=WqW5GpJXd literal 0 HcmV?d00001 diff --git a/doc/img/DOA2_plugin_settings.xcf b/doc/img/DOA2_plugin_settings.xcf new file mode 100644 index 0000000000000000000000000000000000000000..66f6240954379800602ba2eba1597fa96e2d207b GIT binary patch literal 37752 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 Ul*h8-n~LAgTMwpXHU2jIAK4;6-v9sr literal 0 HcmV?d00001 diff --git a/doc/img/DOA2_plugin_xy.png b/doc/img/DOA2_plugin_xy.png new file mode 100644 index 0000000000000000000000000000000000000000..84603c3eb1cc030feecd686191e5d642da7bce1b GIT binary patch literal 11446 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 plugin

+

DOA with 2 sources plugin

Introduction

-This MIMO reception only (MI) plugin can be used to study phase difference between two coherent streams. It must be connected to a device that exposes at least two input streams and will connect to streams 0 and 1 as channels A and B respectively. +This MIMO reception only (MI) plugin can be used to determine the direction of arrival (DOA) of an incoming wave on a 2 antenna system connected to a coherent dual receiving device in MIMO (thus MI) mode like BladeRF3, LimeSDR USB, Pluto+. It is assume that antenna 1 is connected to stream 0 and antenna 2 is connected to stream 1. The direction of the antenna system goes from antenna 1 to antenna 2. + +Example of setup: + +![DOA2 full picture](../../../doc/img/DOA2_plugin_full.png) + +This plugin has similarities with the [Interferometer plugin](../interferometer/readme.md) upon which it is built but is specialized in DOA processing and has displays and controls added in the "DOA" section. Also there is no spectrum display as it is of little interest for this purpose.

Interface

The top and bottom bars of the channel window are described [here](../../../sdrgui/channel/readme.md) -![Interferometer plugin GUI](../../../doc/img/Interferometer_plugin.png) +![DOA2 plugin GUI](../../../doc/img/DOA2_plugin.png) The interface is divided in 3 sections that will be detailed next: - - A: settings. These are the plugin controls - - B: spectrum (frequency domain). This is a spectrum display analogous to other spectrum displays. Its input varies depending on the correlation function selected. Details on the spectrum view and controls can be found [here](../../../sdrgui/gui/spectrum.md) - - C: scope (time domain). This is a scope display analogous to other scope displays. Its input varies depending on the correlation function selected. For FFT type correlation this is not a time domain but a frequency domain display transposed to time analogous to a frequency sweep. + - A: settings. These are the general plugin controls + - B: scope. This is a scope display analogous to other scope displays. I can show the A (stream 0) input, the B (stream 1) input or FFT (correlation for DOA). In the FFT case This is not a time domain but a frequency domain display transposed to time analogous to a frequency sweep. Therefore on the X and XY displays the time scale is replaced by a frequency scale. + - C: DOA specific section

A. Settings section

-![Interferometer plugin settings GUI](../../../doc/img/Interferometer_settings.png) +![DOA2 plugin settings GUI](../../../doc/img/DOA2_plugin_settings.png)

A.1. Decimation

@@ -38,101 +44,33 @@ This string represents the sequence of half-band filters used in the decimation

A.4. Correlation function

This combo selects which function is applied to A and B channel inputs to obtain resulting correlation signal. - - **A**: A channel only (no correlation) - - **B**: B channel only (no correlation) - - **A+B**: This is the complex sum of A and B - - **A.B***: This is the complex multiplication of A with the conjugate of B - - **IFFT**: This is a time correlation obtained by FFT. The FFT of A is multiplied by the conjugate of the FFT of B and the result is passed to an IFFT to obtain the final result. This can be used for passive radar. - - **IFFT***: Same FFT operations as above but the IFFT is handled differently: sums the first half of IFFT with the reversed second half as one is the conjugate of the other so this should yield constant phase - - **FFT**: The FFT of A is multiplied by the conjugate of the FFT of B (no IFFT) thus the result is in the frequency domain. This is sometimes called "interspectrum". It can be used in practice to evaluate the direction of arrival (DOA) of a plane wave (see next) - - **IFFT2**: Same as IFFT but looks at the entire time domain including "negative" times. + - **A**: A channel only (no correlation thus no DOA processing) + - **B**: B channel only (no correlation thus no DOA processing) + - **FFT**: The FFT of A is multiplied by the conjugate of the FFT of B (no IFFT) thus the result is in the frequency domain. This is sometimes called "interspectrum". This is used to evaluate the direction of arrival (DOA) of a plane wave which is the purpose of this plugin. Note that DOA processing is active only in this mode. -

Spectrum and scope inputs

+

Scope inputs

-The spectrum and scope displays inputs vary depending on the correlation types and are summarized in the table below: +The scope display inputs vary depending on the correlation types and are summarized in the table below: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
Correlation typeSpectrum Scope
AFFT(A) A(t)
BFFT(B) B(t)
A+BFFT(A+B)(A+B)(t)
A.B*FFT(A.B*)(A.B*)(t)
IFFTFFT(A)*FFT(B)*IFFT(FFT(A).FFT(B)*)
IFFTFFT(A)*FFT(B)*IFFT(FFT(A).FFT(B)*) with special manipulation (see above)
FFTFFT(A)*FFT(B)* over 1 FFT lengthFFT(A)*FFT(B)* possibly over several FFT lengths depending on trace length
IFFT2FFT(A)*FFT(B)*IFFT(FFT(A).FFT(B)*) with positive and negative timesFFT(A)*FFT(B)* possibly shows several FFT lengths on the scope (B) depending on trace length. Leave the default trace length to get accurate frequency readings on the X scale
-

Direction Of Arrival (DOA) estimation with FFT correlation

- -The "FFT" correlation function can be selected for DOA estimation. "A.B*" should yield similar results but is less precise because FFT analysis helps in removing non essential contributions. The FFT analysis can also show different DOAs for signals at different frequencies. - -It assumes that channel A is connected to the antenna of reference (device stream 0) and channel B is connected to the second antenna (device stream 1) in the following configuration: - -![Interferometer antennas](../../../doc/img/interferometer_antennas.png) - -The scope is configured to have X and Y displays with Y1 set to a magnitude display projection and X to a phase related projection. See scope controls in C section for setup. Here are the different possibilities: - - **X**: Phi, DOAP, DOAN - - **Y1**: Mag, MagSq, MagDB (this one is usually the most convenient) - -You will select the XY display on the scope and you can use the polar grid display to show phase or direction angles directly. - -Angles are counted from -π to π and normalized to π for display thus displayed from -1.0 to 1.0 - -The phase difference on X input (`Phi` selected) is then the actual phase difference between the reference signal A and the second signal B. Thus for a given phase difference the wave may come from the positive side of angles (0 to π) or the negative side (-π to 0). Angles of arrival are referenced to the axis perpendicular to the axis passing by the two antennas. - -![Interferometer DOA](../../../doc/img/interferometer_doa.png) - -Thus when antennas are separated by half the wavelength the relation between the angle of arrival θ and the phase difference φ can be expressed as: - -φ = π cos(θ) thus θ = acos(φ / π) - -This angle can be displayed directly when `DOAP` (positive angles) or `DOAN` (negative angles) is selected for X input. - -Thus a possible procedure to determine DOA could be the following: - -1. Arrange antennas axis so that the phase difference φ or DOA angle θ is roughly π/2 (zero phase difference) -2. Make an assumption for the wave to come from the positive or negative angles side -3. Rotate the antennas axis slightly and if the DOA angle moves in the direction corresponding to your assumption (2) then the assumption is correct and the wave is coming from the side corresponding to your assumption. You can then refine the antenna axis direction to obtain a π/2 or -π/2 angle depending from which side the wave is coming. The scope `DOAP` projection is for waves coming from the positive angles side and `DOAN` for the negative angles side -4. If when performing previous step (3) the DOA angle moves in the opposite direction to the one corresponding to your assumption then the wave is coming from the opposite side w.r to your assumption. You can then refine the antenna axis direction to obtain a ±π/2 DOA as in (3). -5. Once the ±π/2 DOA angle (zero phase difference) is obtained at λ/2 distance between antennas you can move your antennas further apart to refine the ±π/2 DOA angle. -

A.5. Phase difference correction

This is the phase correction in degrees applied to signal in channel B. @@ -151,10 +89,129 @@ The slider moves the channel center frequency roughly from the lower to the high The resulting filter chain sequence is represented in (A.3) -

B. Spectrum display

- -This is the spectrum (frequency domain) display. This display and controls are identical to all spectrum displays in the software. Further details on spectrum controls can be found [here](https://github.com/f4exb/sdrangel/tree/master/sdrgui#4-spectrum-display-control) - -

C. Scope display

+

B. Scope display

This is the scope (mainly time domain) display. This display and controls are identical to all scope displays in the software. Further details can be found in [Channel Analyzer documentation](../../channelrx/chanalyzer/readme.md) + +See the principle of operation section below for optimum scope settings. + +

C. DOA settings

+ +![DOA2 settings DOA](../../../doc/img/DOA2_plugin_DOA.png) + +

C.1 Compass readings

+ +![DOA2 compass](../../../doc/img/DOA2_plugin_compass.png) + +

C.1.1 Port side incoming wave

+ +The red arrow shows the direction of the incoming wave assuming it is ccoming from the port side of the antenna system (antenna 1 to 2). The value in degrees is displayed in (C.2). + +This also corresponds to positive angles in the trigonometric sense with respect to the antenna baseline. + +

C.1.2 Starboard side incoming wave

+ +The green arrow shows the direction of the incoming wave assuming it is ccoming from the starboard side of the antenna system (antenna 1 to 2). The value in degrees is displayed in (C.3). + +This also corresponds to negative angles in the trigonometric sense with respect to the antenna baseline. + +

C.1.3 Compass needle

+ +The compass needle shows the antennas direction with the white arrow towards antenna 2 and the grey arrow towards antenna 1. The direction (azimuth) is set with control (C.4). You must update this direction when the direction of the antenna system changes to get accurate readings. + +

C.1.4 Blind sector

+ +The darker area on the compass background shows the sector where no readings can be made when the distance between the two antennas (baseline distance set in C.6) is larger than the half of the wavelength displayed in (C.5). Check the principle of operation section at the ned of the document for details. + +

C.2 Positive DOA angle (Port side)

+ +Displays the posiive azimuth in degrees with respect to antenna direction of the incoming wave. This corresponds to the port side with respect to the antenna system from antenna 1 to antenna 2. This direction is displayed with a red arrow on the compass (1). + +

C.3 Negative DOA angle (Starboard side)

+ +Displays the negative azimuth in degrees with respect to antenna direction of the incoming wave. This corresponds to the starboard side with respect to the antenna system from antenna 1 to antenna 2. This direction is displayed with a green arrow on the compass (1). + +

C.4 Antenna system azimuth

+ +This is the direction in degrees of the antenna system from antenna 1 to antenna 2. You must update this value when the direction of the antenna system changes to get accurate readings. + +

C.5 Half wavelength distance in mm

+ +This displays the half wavelength distance in millimeters at the center of frequency of reception. + +

C.6 Antenna baseline distance in mm

+ +This is the distance in millimeters between antenna 1 and antenna 2. You must update this value when the distance between antennas change to get accurate readings. + +

C.7 Squelch threshold

+ +This is the threshold of squared magnitude in dB above which DOA processing takes place. You can use the scope display in XY mode to find the best value. + +![DOA2 XY display](../../../doc/img/DOA2_plugin_xy.png) + +In this exaple setting a squelch value of -55~-50 dB will select the narrow peak corresponding to samples giving the most accurate DOA measurements. + +This threshold can also be used with transient signals to activate DOA processing only when the signal is present effectively acting like a squelch in FM modes. + +

C.8 FFT Averaging

+ +This is the number of FFT series used for DOA calculation thus the weighting average is computed over this many FFTs. The tooltip shows the averaging time to obtain one result. + +

Principle of operation

+ +DOA estimation is based on the "FFT" correlation funtion and active only when selected with (A.2). FFT analysis helps in removing non essential contributions and is more efficient than simple product wutn conjugate (A.B*). + +It assumes that channel A is connected to antenna 1 or antenna of reference (device stream 0) and channel B is connected antenna 2 the second antenna (device stream 1) in the following configuration: + +![Interferometer antennas](../../../doc/img/interferometer_antennas.png) + +

Configuring the scope dsisplay

+ +The scope shall be configured to have X and Y displays with Y1 set to a magnitude display projection and X to a phase related projection. See scope controls in B section for setup. Here are the different possibilities: + - **X**: Phi, DOAP, DOAN + - **Y1**: Mag, MagSq, MagDB (this one is usually the most convenient) + +You will select the XY display on the scope and you can use the polar grid display to show phase or direction angles with respect to the antenna system directly. Note that for direction modes DOAP or DOAN a distance of half wavelength is assumed between antennas. + +Angles are counted from -π to π and normalized to π for display thus displayed from -1.0 to 1.0 on the scope. + +

DOA processing

+ +The phase difference φ between the reference signal A (antenna 1) and second signal B (antenna 2) and seen on scope X display with `Phi` selected is used to estimate the direction of arrival (DOA) of the incoming wave. For a given phase difference the wave may come from the positive side (port side) of angles (0 to π) or the negative side (starboard side) (-π to 0). Angles of arrival are referenced to the axis perpendicular to the axis passing by the two antennas. + +![Interferometer DOA](../../../doc/img/interferometer_doa.png) + +Thus when antennas are separated by half the wavelength the relation between the angle of arrival θ and the phase difference φ can be expressed as: + +φ = π cos(θ) thus θ = acos(φ / π) + +This angle can be displayed on the scope when `DOAP` (positive angles) or `DOAN` (negative angles) is selected for X input. + +![Interferometer DOA General](../../../doc/img/interferometer_doa_general.png) + +In general the angle can be calculated from the baseline distance D (distance between antennas) with the following formula: + +φ = π d / (λ/2) +φ = π D cos(θ) / (λ/2) +cos(θ) = (φ / π) . ((λ/2) / D) + +If D is larger than half the wavelength (λ/2) then a section in front of antenna 2 and at the back of antenna 1 cannot be reached since cos(θ) will lie in an interval smaller than [-1:1]. This section is shown on the compass with a darker background (C.1.4) + +If D is smaller than half the wavelength some incorrect values can be read as some angles will ovelap. Unless you have a hint about the wave direction this mode of operation is not recommended, + +There are two possible angles for the incoming wave leading to the same phase difference. One from the port side of the antenna system (positive) and the other from the starboard side (negative). + +To disambiguate readings one may turn the antenna system then the correct side will show a constant absolute angle with respect to true North (or South). + +For best results the antenna system should be clear of possible reflectors including your own body that can affect the incoming direct wave. Ideally you should also start the procedure with a distance between antennas (baseline distance) of half the wavelength of the signal of interest. + +Then a possible procedure to determine DOA is the following: + +1. Arrange antennas axis so that the phase difference φ is zero or DOA angle θ is roughly π/2 +2. Make an assumption for the wave to come from the positive (port) or negative (starboard) angles side and take it as the DOA angle +3. Rotate the antennas axis of about 45 degrees and if the DOA angle is roughly stable in absolute value then the assumption is correct and the wave is coming from the side corresponding to your assumption. You can then refine the antenna axis direction to obtain a π/2 or -π/2 angle depending from which side the wave is coming. The red arrow on the compass (C.1.1) shows the absolute direction of the wave coming from the port side and the green arrow (C.1.2) shows the absolute direction of the wave coming from the starboard side assuming that the direction of the antennas is set properly and follows the antennas system movement (C.4). +4. If when performing previous step (3) the DOA angle is significantly moving in absolute value then the wave is coming from the opposite side of the antenna system. Then take the other side angle reading as valid. +5. Once the ±π/2 DOA angle (zero phase difference) is obtained at λ/2 distance between antennas you can move your antennas further apart to refine the ±π/2 DOA angle. + + + From 8d41f8c4381678aa8ad0252490ff4e4cf2bb224d Mon Sep 17 00:00:00 2001 From: f4exb Date: Sun, 29 May 2022 09:59:22 +0200 Subject: [PATCH 13/15] DOA2: simplify correlator --- plugins/channelmimo/doa2/doa2corr.cpp | 122 ++++++-------------------- plugins/channelmimo/doa2/doa2corr.h | 14 +-- 2 files changed, 29 insertions(+), 107 deletions(-) diff --git a/plugins/channelmimo/doa2/doa2corr.cpp b/plugins/channelmimo/doa2/doa2corr.cpp index a02f7c887..edc35a002 100644 --- a/plugins/channelmimo/doa2/doa2corr.cpp +++ b/plugins/channelmimo/doa2/doa2corr.cpp @@ -24,11 +24,6 @@ #include "doa2corr.h" -std::complex s2c(const Sample& s) -{ - return std::complex{s.real() / SDR_RX_SCALEF, s.imag() / SDR_RX_SCALEF}; -} - std::complex s2cNorm(const Sample& s) { float x = s.real() / SDR_RX_SCALEF; @@ -52,51 +47,6 @@ Sample sSecondInv(const Sample& a, const Sample& b) { return Sample{-b.real(), -b.imag()}; } -Sample sAdd(const Sample& a, const Sample& b) { //!< Sample addition - return Sample{(a.real()+b.real())/2, (a.imag()+b.imag())/2}; -} - -Sample sAddInv(const Sample& a, const Sample& b) { //!< Sample addition - return Sample{(a.real()-b.real())/2, (a.imag()+b.imag())/2}; -} - -Sample sMulConj(const Sample& a, const Sample& b) { //!< Sample multiply with conjugate - Sample s; - // Integer processing - int64_t ax = a.real(); - int64_t ay = a.imag(); - int64_t bx = b.real(); - int64_t by = b.imag(); - int64_t x = ax*bx + ay*by; - int64_t y = ay*bx - ax*by; - s.setReal(x>>(SDR_RX_SAMP_SZ-1)); - s.setImag(y>>(SDR_RX_SAMP_SZ-1)); - // Floating point processing (in practice there is no significant performance difference) - // float ax = a.real() / SDR_RX_SCALEF; - // float ay = a.imag() / SDR_RX_SCALEF; - // float bx = b.real() / SDR_RX_SCALEF; - // float by = b.imag() / SDR_RX_SCALEF; - // float x = ax*bx + ay*by; - // float y = ay*bx - ax*by; - // s.setReal(x*SDR_RX_SCALEF); - // s.setImag(y*SDR_RX_SCALEF); - return s; -} - -Sample sMulConjInv(const Sample& a, const Sample& b) { //!< Sample multiply with conjugate - Sample s; - // Integer processing - int64_t ax = a.real(); - int64_t ay = a.imag(); - int64_t bx = -b.real(); - int64_t by = -b.imag(); - int64_t x = ax*bx + ay*by; - int64_t y = ay*bx - ax*by; - s.setReal(x>>(SDR_RX_SAMP_SZ-1)); - s.setImag(y>>(SDR_RX_SAMP_SZ-1)); - return s; -} - Sample invfft2s(const std::complex& a) { //!< Complex float to Sample for 1 side time correlation Sample s; s.setReal(a.real()/2.0f); @@ -104,20 +54,6 @@ Sample invfft2s(const std::complex& a) { //!< Complex float to Sample for return s; } -Sample invfft2s2(const std::complex& a) { //!< Complex float to Sample for 2 sides time correlation - Sample s; - s.setReal(a.real()); - s.setImag(a.imag()); - return s; -} - -Sample invfft2star(const std::complex& a) { //!< Complex float to Sample for 1 side time correlation - Sample s; - s.setReal(a.real()/2.82842712475f); // 2*sqrt(2) - s.setImag(a.imag()/2.82842712475f); - return s; -} - DOA2Correlator::DOA2Correlator(int fftSize) : m_corrType(DOA2Settings::CorrelationFFT), m_fftSize(fftSize) @@ -125,17 +61,12 @@ DOA2Correlator::DOA2Correlator(int fftSize) : setPhase(0); FFTFactory *fftFactory = DSPEngine::instance()->getFFTFactory(); m_window.create(FFTWindow::Function::Hanning, fftSize); - m_data0w.resize(m_fftSize); - m_data1w.resize(m_fftSize); - for (int i = 0; i < 2; i++) - { - m_fftSequences[i] = fftFactory->getEngine(2*fftSize, false, &m_fft[i]); // internally twice the data FFT size - m_fft2Sequences[i] = fftFactory->getEngine(fftSize, false, &m_fft2[i]); + for (int i = 0; i < 2; i++) { + m_fftSequences[i] = fftFactory->getEngine(fftSize, false, &m_fft[i]); } - m_invFFTSequence = fftFactory->getEngine(2*fftSize, true, &m_invFFT); - m_invFFT2Sequence = fftFactory->getEngine(fftSize, true, &m_invFFT2); + m_invFFTSequence = fftFactory->getEngine(fftSize, true, &m_invFFT); m_dataj = new std::complex[2*fftSize]; // receives actual FFT result hence twice the data FFT size m_tcorr.resize(fftSize); @@ -147,14 +78,11 @@ DOA2Correlator::DOA2Correlator(int fftSize) : DOA2Correlator::~DOA2Correlator() { FFTFactory *fftFactory = DSPEngine::instance()->getFFTFactory(); - fftFactory->releaseEngine(2*m_fftSize, true, m_invFFTSequence); - fftFactory->releaseEngine(m_fftSize, true, m_invFFT2Sequence); + fftFactory->releaseEngine(m_fftSize, true, m_invFFTSequence); delete[] m_dataj; - for (int i = 0; i < 2; i++) - { - fftFactory->releaseEngine(2*m_fftSize, false, m_fftSequences[i]); - fftFactory->releaseEngine(m_fftSize, false, m_fft2Sequences[i]); + for (int i = 0; i < 2; i++) { + fftFactory->releaseEngine(m_fftSize, false, m_fftSequences[i]); } } @@ -304,26 +232,26 @@ bool DOA2Correlator::performFFTProd( std::transform( begin0, begin0 + m_fftSize, - m_fft2[0]->in(), + m_fft[0]->in(), s2cNorm ); - m_window.apply(m_fft2[0]->in()); - m_fft2[0]->transform(); + m_window.apply(m_fft[0]->in()); + m_fft[0]->transform(); // FFT[1] std::transform( begin1, begin1 + m_fftSize, - m_fft2[1]->in(), + m_fft[1]->in(), s2cNorm ); - m_window.apply(m_fft2[1]->in()); - m_fft2[1]->transform(); + m_window.apply(m_fft[1]->in()); + m_fft[1]->transform(); // conjugate FFT[1] std::transform( - m_fft2[1]->out(), - m_fft2[1]->out() + m_fftSize, + m_fft[1]->out(), + m_fft[1]->out() + m_fftSize, m_dataj, [](const std::complex& c) -> std::complex { return std::conj(c); @@ -332,10 +260,10 @@ bool DOA2Correlator::performFFTProd( // product of FFT[1]* with FFT[0] and store in both results std::transform( - m_fft2[0]->out(), - m_fft2[0]->out() + m_fftSize, + m_fft[0]->out(), + m_fft[0]->out() + m_fftSize, m_dataj, - m_invFFT2->in(), + m_invFFT->in(), [this](std::complex& a, const std::complex& b) -> std::complex { return (a*b); } @@ -343,13 +271,13 @@ bool DOA2Correlator::performFFTProd( // copy to complex vector for DOA with re-orderong std::copy( - m_invFFT2->in(), - m_invFFT2->in() + m_fftSize/2, + m_invFFT->in(), + m_invFFT->in() + m_fftSize/2, m_xcorr.begin() + nfft*m_fftSize + m_fftSize/2 ); std::copy( - m_invFFT2->in() + m_fftSize/2, - m_invFFT2->in() + m_fftSize, + m_invFFT->in() + m_fftSize/2, + m_invFFT->in() + m_fftSize, m_xcorr.begin() + nfft*m_fftSize ); @@ -368,8 +296,8 @@ bool DOA2Correlator::performFFTProd( // copy product to time domain - re-order, convert and scale to FFT size // std::transform( - // m_invFFT2->in(), - // m_invFFT2->in() + m_fftSize/2, + // m_invFFT->in(), + // m_invFFT->in() + m_fftSize/2, // m_tcorr.begin() + nfft*m_fftSize + m_fftSize/2, // [](const std::complex& a) -> Sample { // Sample s; @@ -379,8 +307,8 @@ bool DOA2Correlator::performFFTProd( // } // ); // std::transform( - // m_invFFT2->in() + m_fftSize/2, - // m_invFFT2->in() + m_fftSize, + // m_invFFT->in() + m_fftSize/2, + // m_invFFT->in() + m_fftSize, // m_tcorr.begin() + nfft*m_fftSize, // [](const std::complex& a) -> Sample { // Sample s; diff --git a/plugins/channelmimo/doa2/doa2corr.h b/plugins/channelmimo/doa2/doa2corr.h index df086586e..1fb414e68 100644 --- a/plugins/channelmimo/doa2/doa2corr.h +++ b/plugins/channelmimo/doa2/doa2corr.h @@ -73,18 +73,12 @@ private: DOA2Settings::CorrelationType m_corrType; unsigned int m_fftSize; //!< FFT length - FFTEngine *m_fft[2]; //!< FFT engines (double FFT) - FFTEngine *m_invFFT; //!< Inverse FFT engine (double FFT) - FFTEngine *m_fft2[2]; //!< FFT engines - FFTEngine *m_invFFT2; //!< Inverse FFT engine - unsigned int m_fftSequences[2]; //!< FFT factory engine sequences - unsigned int m_invFFTSequence; //!< Inverse FFT engine sequence - unsigned int m_fft2Sequences[2]; //!< FFT engines sequences - unsigned int m_invFFT2Sequence; //!< Inverse FFT engine sequence + FFTEngine *m_fft[2]; //!< FFT engines + FFTEngine *m_invFFT; //!< Inverse FFT engine + unsigned int m_fftSequences[2]; //!< FFT engines sequences + unsigned int m_invFFTSequence; //!< Inverse FFT engine sequence FFTWindow m_window; //!< FFT window std::complex *m_dataj; //!< conjuate of FFT transform - SampleVector m_data0w; //!< windowed data 0 - SampleVector m_data1w; //!< windowed data 1 SampleVector m_data1p; //!< data1 with phase correction int m_tcorrSize; //!< time correlations vector size int m_xcorrSize; //!< DOA correlations vector size From a7dc4dc310e4b7cc533cf7b6d7be2d56efee48ce Mon Sep 17 00:00:00 2001 From: f4exb Date: Sun, 29 May 2022 11:57:04 +0200 Subject: [PATCH 14/15] DOA2: added button to center frequency position in passband --- doc/img/DOA2_plugin.png | Bin 131942 -> 132748 bytes doc/img/DOA2_plugin.xcf | Bin 437685 -> 444340 bytes doc/img/DOA2_plugin_settings.png | Bin 10383 -> 11187 bytes doc/img/DOA2_plugin_settings.xcf | Bin 37752 -> 44671 bytes plugins/channelmimo/doa2/doa2gui.cpp | 17 +++++++++++++++++ plugins/channelmimo/doa2/doa2gui.h | 1 + plugins/channelmimo/doa2/doa2gui.ui | 25 +++++++++++++++++++++++++ plugins/channelmimo/doa2/readme.md | 4 ++++ 8 files changed, 47 insertions(+) diff --git a/doc/img/DOA2_plugin.png b/doc/img/DOA2_plugin.png index 9c48b56fa545e98ff5fb8e2953b36d9d17625eb7..9fe5c93193b96f0bc21ad0fe50ef71c69bd11f24 100644 GIT binary patch literal 132748 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
2|?@JuGaU4(YoE3yTUtJDq-0QPnHE z#dj89#;mYdiEriN4$#-B?=Lg@MGDqUARO*l;bQkob+beF@rZTX zr2Xi}9D*WH?V-BA8y$QTlCuP>xB%Ds{LD+Cfnj%D!Da|vHG2|)iA7T+lS)jL6lGb3 zy8)B$QSgP^PR&nR`!~*VwN422Ywo#Z1;uJdh(gb#vJbN71B?D8vSZLXASP7BVT6}A{f2PN z9@*ZJZ&26=in`Zm>z{vIQQ5w z&U$hw)GHlsHG)ylo8gcL!QxSLLE+#~S)QnCR`&~zQz)?BDSQi(SG1^O2Y2?q_Ci{p zE^z$-2Axte0jj=vrCN2BNHQskXmQoV#L0+Mk3lq3X#$<*02aE>Vui!3uVNu1HRP^P z9eWf3#w%M#dGclR*ElC`__=D`5&=g$^NNBIw@tSouZMt! z3qXtd>x<{iCrNO=oLpy*ov^T~Bgwp!izegRqoW9i^KdJ)AP&LWd;2l&NU7qes#A#s zzfqu+m6gf15VsvJ(?#)QV^Nr@O(p9xnI>2y4JO#Jp0Y7xuBKF6+`s;r5?%)~euVCx z0z`#8DIy5WL$;{&QyXknR7MjkL(rbf%5}hE3j-*_h=Pc)@>^~#6s3RCkxRx+MjI=R zrS!0b9#I|AU%vYGiA49~%CR7djQ?h+2jOm+Uio`T9A(le8+9A;NB4TYY6eNS(+v*x=2f_aH zWat5K6u@!vE*xPWmgmsAN;^BH;O`?u5M)56tVWj?vXyS7^Mubn6!uUA&J|QpQyMuy z^)$sSrVD_iv7|tpa%~!*4S78XB|QeTEp^miU?x%!RlCC&&%Kn={WG z%3^(8QHPE@!W1FZUZd9*y_tY6X!V?k7cpL;-LRTn=Dv-3+7Gy5$vPJ3#Rsm-9(1Q% zHnGzTolt?@_Zv6f1P=9$&k$i0kgnqp$TkJ+_c9;|-YYvABj9cpF`u^UyJQfm5v#9l zWpKI{wZGpt6Cy30FvvJnVT3nT9nU`=&ZP3N&^j$E65K26xP`zFb@gIw1FW=V*JIGD zo?tdK@QNT}EZ0^)N9rZi=`{Y$kntixjpD|Ik&kx}4Fjm^U#%i6mQXk9Eit#8U4kg9 z>tcUlB-sa^sF$u^RX_GeBbyEWn)f0@Nn9iB0gJ}hhv#h~qYnTR-=5j_3_x<^1^LAF z!{^|``V1HID7fTzi$pjH_!>qraeA(*%Gkhm9qKdz+Qrz=sB2^*7|TR?S|& zva$X6bmT*C#^9BUu=UWDprz}(jGdT(vdQf(2pP0QEy*x5yWV;CdiadmU0s2IJC7#N zZ}^7!T+=QNmpHWISh42&$#|#vyNt`QVELDI`@*eK`L&nrM%ZVc}H55La$Rm88l+Q+oD)HKH z`;;*&cE}0p6~pd6GHVJXnO^x*nryEj91AJl^7&yz6TaD+PG#T_G|hsmIGO4@KN5770qA5PJv1c#VByU^4sb_Rg9&o$6mS_WH&m z+L1zWb7a4t1hBALznO>>oX?=uyiM6FH|cDq;;rE(HN5O%snT3JKqFTQ2*@H=L)#c)h~-YT*CjRXw4O@i^SZP=r6-4 zDH*Y0f z8AvXDkiS@M^6|s-&P5jiJ~9d}@eTtBNI2h^^HuI}5f+mkC*Tyql{p} z`JL~tUq$k{ddY>HT*Yg(;JRJ^7Gp?7HH+KO2F?<;x7D5AKj)lXGCifr=6wOgGzk8jBCA@h)dY>@? z5B$;Z_}lE_v?USKo6rW2ov$&ZtCgn&R#Y}NfdiS5DLE9}9d_K@#3f}D0L|;e`E9+g z?-x~4PIx4vveJ;WgOvswz$$LEyEF#WQ!;U&!D@A>aeNdw4LpDF6fWQ5_rT%IPXFt* zM=vlIe%Pe~cTBP7cSyAL~`N>S^)oMv{SvQ@C48FYB;GOkjCDtMtMD!;XW~C!8x!5tsJdKhI*o zv9!z*zxBJ+($rcoF;*n{<)k-{rcfzo{D7Mi?S5OnnP%{}0L(x7t=+lf`=31Hb93Gy zoLxs|7WQaeW%tOxSk_u|*CoY!23fH5WM$*BC3IGqfBpEk9o@3)syFnsdc9G-|5lio z?X;sD@iO}fd)ovz+;wosW8Koow@WW*Kl9m0Q!f9}p)4sM@I*2cTkI~L0Q{YF3s3q_ z#JP2!-UBLX!ZtPX{IlY`qKdA36@eK-9+)_i(rTm4ZGdfs77R z85t_ZH#Q1F1eOun<1z=0+Ao!yF4aPLKE6PK%@ydM#=>|(cXJR5IJ=6MmaPm*JLC~i zg#_JNVCqI$kN->jd` z;qv+MwhH`cul*X1;!lSq)Fo@_ODG7Tv*l%!8SVMe{sVwY~Rru=qeattK_!KzCb*)A-M$0hur zH0wCA7I230u;x<7Z2=R%4`BYOy9`Ew5501AlSoR;TSz8wymy!-<|ifVRX57y@X*U* z!5uhthq4PB%1RNK8Yqu~zfDUWrS5S@PXkcVw z{`$iSfqLfU1cD_nYB_Q~ml6u%_TKlkfZ+=BWAhL~bDGI)pwmln769fg@A<)2@OksUJGT$F>wgdy zHu%9420?J{LmXDDCA;ack4Xr0Q*lb__Hekjl#w`*r|;hO{cBshOryCmPo9F&M-rU9 zK9c*16Z`=zQpyLcYnH)o8aEhX|M2ZVq_^QrV|(7g9muuJ-h-E zXm%4fhw2yN2ii>Ac$_>S#5>ek;I#BcSV5Fj<8FBR>qj|G;K<)8f7oCbRGC79#_u(Q zSa;a&HO9ECvsZ=jf7^Ro&O(AAAFg9XpbZJCI6ZjPZ_NdkaHt+sK%r=N_M1L_Tk+S$ z&rpKW-!Nfi26R~jTuRx_ywD0HxNTTw5^VO%w6h0Xw`o1^9XjJvy0OY1#f!Ii%2c39 zx^_Kpw6*-JpT%*PlRs@zU8P3S{`p*h5L6&m;Tt1IiITrL6otjXz;;|nht8OnV?hqO zp5Q!-QG?HI%7l2|6*$ri6k?oC)&~dJ^=8xd0 zQwnupX#geuKh1r>hMp=AKB7rebBH;imsE`CLA0+4Z?3!{U%`Y|^X z3jtOA((LA-`lEZii|Nti>^?*jBetgqRYGnK*ldlcc;o4MQ8gJpkfMFdOW z&aFu%Yma<0)7e@FW-qu!YD{ks7{>tu+)7zJ!}WOapAts33i(SAH(^m9@DP`|vM`^af5Ubrb;Lldjodv3I&C9(NHa*voShqD_AA z*VieDG0w!l`}YX@?7+CzhCGQvBFU4BJ_l1+Kh^$y)o?aEv=H$U1mTf{E&6VwWB2a} z=F@26FL}JMiZEnF=m{U(;jdhC{vWHX6sQPTcZ?M+`b!aDum)f>5_AE5;W1&`U5OI4 zEL$oFkcT(6cHmvvMT=Rmk?-6I-LM1L2)RjM=A#X5Ou_dopnqz&M_e;6C(ZlJ+@60% zjPqDRu>8y8kPIpkCMhEAn*6>h#&40NIwhgP42oZnmTnAlj?8Fy#(^4uCuIo5xgzy! z-ZO8$w0yRG>W-B9(Z1Z9f?d802+&uji=g_8&*KFrC+O38n>s4W9&-6HJ*(%_6fR{z zO{Fb7HoGm3a+~kw+{pf}OnbUFZce)i9QjSE1Nf?ZA!739P!{nu2!OiM?`XvE^1h=P zQ*m9o5x(Y17x4>4*h~ZZ>lwk-&Z_JB(_rNI5#zmcFV)X!zwCay1>{+la@N-ze6iU} zS8gJ?@fQTZNYENOg)O?yCj2HpVT%sCi&0yQXPG5UCL?taVd6 zi+w^-1~(lRGM;^yYrYe;Q>TnC@p8G;zuJ62@+bHstnfxiM3ngKr{QI-ar;EwAa}%e z+t-kRK~Nf;nkjbq0~O7ruBy!*`ud=kV;PT`{3g^yoQ63P3T`l$)`!ErfJAWOzx%`j zX2j3KWPIe1gXsS!5RveBJ4VOz6}A{_jTADCqhUoQR9xd4f<02+2qs42C#PtITYBCr z>8GdI6d4cx3cy0VKr&}30`0PTu(!hNxvei+$h2ym%*dE)sI-X#FJE^b-AGX#Q2E_( z49R?wtqA&2o5OsRGd&sJ=Y3u#W3dlR*|jG#Z%#x-dp|CbD`j<>EM13JUB<9YdE$co6(xNy$8D1yHFlM=#w+{P#$=%$iz`w+YiCj(3U0dP1`KPuE1 zF{^mYf|ob3RFI%zgk#E(HJM~eoyLblJvE*&t1L(6huFPOM>Z>8B$EB@%PM_aQQq<0 zt4l^8>uZ~l5%a6PkWkaU`@9)q9-$~WZYCRN7q7R(D2A-Bn>F8;;4%G`Scp>O^SM?N ztsj@g4(|6+$E%a9fHx%GnUwPM)gnkF<4a2>DqfqNnAI%bNmKi2)MN2v@zl!QJhPf_ zN&Z*AE$s9D97iUfiTDT1N9&qZ(N_6A_%HT#+@BA*3WJ!liLlf@nRVp^(~=3z8m4jI z7+4mO$ckX-rs(z%CqKW`RJ|hosKXc0(h&AOB>zN7O>sk!k z+f^(S>IdF~mAS|aV>doF`z@ASeNyD-*J$v6p>o98S(x`x2cL;C^@^{zcabJ%YiUK5 znB>?06@nrWVBN<^O}kM?f%=Mcn5g+S``h>Gp)AUOlJ~A>3iLMB^X`)2}#eifi z9yw1nC^bu%rt=x2{{^yL{mvRGZ2LSD@oNbNa+4t=s@88M#NTN$K2m~SGC;Pln~coD zRv0KEv+rim)$G9xe`?Q159sI{~4LEIDEEeRSlNFcZb2@u@f z-Q6Wfa1Rz7g1fuBTX2Wq?hezO@1DD6?#z#2E!KuD@4LIZ`l+X?OCG!$4UQNnnbY#_ zJ{A%t7%||05DC|@ue}nh7dB_KgK5hn3f`sF{#0}3Q3R?-G~DoRYBov)9Z=lX zY*ojeA3N>4r-nC#>!36CkZ=xe5qeS6+Z-nQ1j>K%i$(hDnAsU&)N0?bj%hw{xLCXq zU&Vl7>Xp9nNOn%23Y=qNJmKJc7xb>%?^&!p1N#^C7kwx%iLkaKHNn{wB(FWwG+VW_ zfp`3NHVW!%NcD)v+GX_r2Z|bGYW4 zoE(ec7C`bK&J=4IB{L--nes3Z37-Iz4;%;aY#x2PJswtYSx8oOSUG~df%kEtaT^{X~m21jz%uC1@wC!#b-b|DuU5Yvz6apCmMp(>tY`A@n0cC+IiQK~UevTzZdzQ-!KPY4-RT z;{o=bZQc+*i?@G*Z8ue=S!U@5$+a{)oJO6sW&hskg~Lyq|I?@lVN=j#+D)R&Aa9fK z@hwa$%QhAED74x%ufU1dH?b>qF??^Wcyo?h2|G<75;}*rY0!sG#f`X;4Yh?Q@Mdza zo`!!eODB0+qD#H%i>ntIpG%=>ubFFZ%w?F6F9^L=VWuB<8Cf+dyr%NIg-Or4b5F|( zdd+JDWP~LwC=2`Owm3A0O!O$wmqP5DTW$7V4tErm&$fR(OC%%9&2IYgRIL;LJz4~g z<^4mn*3oO+c)C*GP0;bH42^$&GyGul8B|;?K9)e+an7h|I-_OkUJv<0Df-UP<6X}{ z#Jl}&R!CSf+_4WClJP3UKcT-h_j&u|yFpXAJ{0fPu?V|~kg?|=1bxDRVvVig!+cHu zFgDUL%HwmPUb&Qn!qswl579P%N_p_olm?58^N*<2`Q&A6C8hlTgZ2Bk#^57OgSk>|Vv>>RgtYo&?mVR-?NLtL^)$|h#lPPLdftq9e(ivjmAO7z z8PXg*i9}ZB=T{JFcWu*Z{g=jKY&2@WGnzE!YLph-y8q$Q%@|aIXW?|%^_MI7=ZCst zv^8j5=CbSyYi;{*A1B6tHCY#^a8#RHTKzFdlL-&+P^FAC!>n^mq5NWlL(g)I zZJ3)vC!G+bw)v9|)ZnS~p)rOA#;Cp|{l(L6_Kg(-Z?RnD-`Hf7Y_dm^>Xo@}Tr;Q_ zT!ugr`ID`Eq`IHTG>1Sv-eVHN>&K9Ln^L%|p*vxW>%ioS=eIo3qtL9gjJHIjIhq;-|DK}%W5=B4#<8Cb@t!7=RJU`s>4?{dItS3(g{N5RPqRecE zym-xtUXi+wyLN;BN@{lk-#D;6aAeoyqbN@7_-2ib4t+9`6qs%IYOb(^%466a|J?d3 z?<}lED*O>?K-M$z>=w(xGUS|t6;_k#VHGxcC(A}kU{)VL9Fr<)(kzE8vXfqZ{8Ihr zRb<1LB1^nLIyn9o!w`MUZ~AQ#hK-g>I|LW?{>sF&t?%s%0{}Choi|z2{(@r9b+JnWE8AGL;RHexRJG|^jON(zFMx4{IMTBbJ1^8M{WPv$ftcdl4||u+mqiz z{7u;>dE|J4Ne@-bQgI-WK4y7}OrR1aP;=PfbH12RZt5b_^VMZvy!%_nV?>CEgIT49 zGywsD?%tVJA9&cW582vH1-(Nhg*=T|C=~q0432c-73+oqrJ)F@W7vtG4>&5Tsz9}rG{W9t+>%Udi>@pv+cI)b*UKOzI>pFy6WL$6uEEveLk-94`TPdd>}^cKdncht z{}T3Ozo&60^=~C?E1~96l%W1M79bqSz%uFJI1I_);*!=Hg~P^%+I(=yUgz(!k8k~+ zH;(69ic;#b_IxJc9WUzpM+n=gHnLAIBA}zdUvOz?iH@(f9*%za%~yQzZGs=|9Z=l+!v4vo{Ojps%ZA*&J2ZSYj8a*Uj>4J_7XQDH z$s3NU7c%P4oUe;+vZlkG?1s+4_a@ zAxlfG9?x9eG+464U}KQfXVHlqbjlTeA1-B5p_4u{gC?UdqEsl8L@}z(YV*gLp<`my zg1i3Zw=eGBUy`LETSL~r^YYBDRlI~5WrSC<3b$RogB?``=()d`-o-o_a`S)QdTK~x zlk+g0!-VwbD{tPtQ*zbu+ZrmEUP<%u@lki~iIB!Z;MJ1@Hi16dbogv90MVe2lmT^+>RXEnd5uWtYt@CcG_kS#) zk4H<{m$mRYW@|llq$r}toO+GMtCM0)!l2v<7qy<%o5JctR=2SO|CGkv*tZHTmv*dL zRVYNpYUSDW>9H)2yMJE%4$5yBWQ-eiie7EYk{~{rDS?Ma zJ>J~tQ6ONuT+2&;?%SV!ffz5-{#2y=5++w5STci#-w?ueLS(b-o5wbt(|9(`8}Pg& z#rd!zY|$munAk2^@DBOYM@t>~4J{&fsE1!{__wA~G}7GjOS~;5`L6p*NaeX)nO}d3 zj6e|LH(oegA{15~I1g^Bu~D}qDHzf$O(SH)$ge4p|H9!XT{Xnz|Aoe1<9Q@q@X=fm z!Q$P_HA08Hv8}y56&F`B-*b>rPl(~ae+HY!D;bmKZ;2PAzYp_0KAhNwiI9Pjyy^({ z=2CchyS=5$-jKBM23sNex5cNA!BzX_gX{${{l@6)h?gKh7ZP5=->tMrrE+8g9+A9R z{dtXgJvIbh5>dkX(1(VM2`4f>A+W4eJSxQByR6I#&aXu6_&vqVJINs-gCd6Sl zWpcrFHP9#I{utwbd1a;_ZaV&Qw+UG2X~teN(~QFZ6@cQJm=;rSJYXvpc=CeQIXuYA=<|?|rCw|H@X^#oc%fo%8jTbv(6*lX7PA4m> z4b%vrGqbluqmyOuwAofT`^siPUfO2M%}Sx2XLU$n%TaM@UDK?@VHyf(eNgTsx^xPTytDILu-=^S8aoklna;m(&A!vbX5C7$$>nzc&VU5G_d?qLcHx6wy zwH4E>Si3Z68a8E>X7PQFONO&Hv@0nxIkAGv#Ld5=s6zYrL=ugJopsg7xl{`J*?V;6*oqw*~zK+9A>IK+TN`*3`|ra*u5 ztWk1`zC!Ze#f+jaf;iLtW+s7HyY5)JH!P|Da9(=tXgR3W^MT2Fg(c!*x$$bP1Dk_(&?s=%eM>@VSn#EL5z>#keoky zVbVT|F$q5IU}Af|nyt23z|TQ8yrO(CDJ|~KQ(3~afcNX^>${xwDBm40K5RF5zdYfR zdfifh)=)S&p#gO(Zt0P{Zaapp8U~rGBQSi=CrbM%xRsHzT zgp3mxz^w^6azUU6-S@k~qXtFEJ;S%ulv9C?8e+-dL7^^xiBA{tB4gxOtWsi zi_vPiFE<)70&stKcgKD8H(Ob;w1+YQgXhl3yk=Rxw&O#qia>xtH%ZyVIo&)*=dN-_ zmd!Sf1eS2sSs_gS=`d-*36BXoG>p`W^Q20v6)EQ$ysY*c~I&+DVO{`2yUq)c+s zFPnOq(rHNA$xx&teXP94!{}?%^)gy-!#1W*Wvr0LW20m$@(~e|1q5bGVOVY3e8=;7 zI;r13cDa3Y8w^RnHtaoDK7ef`fK(uC=2Ir~@UIg^NK=cPFfq8l{D__QvKdMJo1GDy z2I^3+RrFD6DmPFTy@}hGgYY@*+{gSVwg-3CqttokR=%=xPcrH~ZQ}a#kA0A2N@+OM zR}8gTTI4jo4MBWc*s=(zEhz>uMTUnPf13qY7){62xXCL%CoOMJ-m*5{wk3O@wf0uq zL>qQ^?{`zpZvOnuZPcJ;gl`r2?MQ_N#UB+2&(JEZYZ2wkTf$>3s61t8>0CLAN-k|) z&iFUFxW5vL;@Z@*N7vB8hd~>bCW)xXzo;_=pMp04W5>~GbPv0J`{Osb+PYyf>Y?DC zAF?i7pEuWiKG~Jd@d=MRpBrG5qWvgxSyNRPnkaeaHfYzPl`#l2PE5~$n2~(+RPgOq zVfzR@OB8`b08v~-Ut*9&!S(AzVN8Pg4FPP;#k-FscIdxSz4coJvjsQJ!k1qVaEWCt zKisT!Bx?oMpUOa`hZkPeE}-EKYEH9ij%et4>ey=A($5)4eB>yK@~ZmeSFWg;C36?fsYJcX8KSuO|{r04hwzd^h(KqP+ghy-WXZ z+ten(;E%;;=6C88zx&@M9ilQjmmp<#{LFHO8pND8NQ@lMiH0w2pEEKa`22*-?{Su7TvgVKKa%_)~VQxt_OXV>G@r%}@8;kwDixs{>j>f#&vfM9?HvNiuQYLst1>QAO zO&n!o3v>bkDgvQ5QE07u@l8AR_?a+Xc#2d9Y00kTqthI#G2x+ush7<1n};2U@1~=K z^ixUM?&Q+r6U>G4&?2*vgWHz;wWo3M41>uZg`iO3zGhcLL~y-`2io(@8&#rhv=L4< zD1D0&stdKEmdSvqq^PI%W8TGEDdN(HW}aqVVe1zVksFf1YUP}Q<*xjd!n8BqB>PT` zsGG%@6qWY@?oJk;h=EGzYSP~(J{}L1mk3SdcLl8}+`~I3)1*%`x~WC24SI_3tP5Rz%!_;-iYfe?izPh;U&e2Un-or`2J(ogIlFd>@O>BJzJ zzTRBITUdGFkHWirTUqpbxt7+pF#U?U?i-V817&rsKo-3{AmWidN(k-GVJeNE4{5zv zYy8V+AP?h3CsZ4&nVi~Fb;BlwDz(zSO+7LgtfmEhXuyZIKiN)sP+dyio;ob{WMnHM z*RK-$7Bacgj@6Pxsj9~O7l&K+oxXS5P7LB5jZHifwbqqAEol z%A3^TbN{WkkP2$u3ZA6t`&gpNj3I|?$YJ;KVROXFsk0??K7*J7Td+dZAAM-lUgR-X z(rFP%*N@PBcjD1`uq92w_FgM>EQxmWXJ}m-vO6`fswpEZeCyO>G|rQ6B&b96w+jLe zNV^ri!1dp&qlws4bC;H?f%&i@VU61N1>z@i5yst<*GL^mUf&TIDO_keDHq3s_N>_B z*hmBtbG%KD|K|2LZFa=p3bR`M9XW>1`j1Ndkd8H5O#c0ytM6ihoxgs_PPIeL6>er`6V;;_JGEBzJqW=rxkbQDO(A_>6K8s5jY8D zFAcIAc{H7(F0cH}S%r>SB=n7O_<3O|S7N*bi*ug(f>ZiWs#DcBh-o#B+&%&tyQo{- z)Y%7#{EIZ4VP-}TiibwlNkn<<^s zxVTjqJ1iU)_}Bqsy?6N*W^b!CI{I6R>Z$Qh`2$3tio|pIE2I2=i(up%j%&g+>{=!n zXF{n$RSmW>N|VitLo1^`EACA6><+iB@MQG2+5Z{-RcoHf3|Y;(zM!qOL~RR$re&l# zHtiNlgFNL~gpgeciB2hsLcvG0{Y!qEn4zc+79aB1R}+uR?!7>ed%BVt9S{ z(XN9)Na91$0v{0I#(Wa=!*5*UL`bS=lX{bDd_51B4c zu)LBU(@EtxJ=A?Xi1tb|t%zfg3US`hvsPYWRnM{D!_=Ij!4*T2^WzwyX%zV^qDS<3 zD&uh5GG)TRi6Z(T7N+W*jCQuaV`ha%Fd-HB*{9~PL%LZ#)pp71_(3zzFnmnz=dtX? zTx@O)4M`<%e zc7s{&ZnP*W4N=-bO=`k2RH&Wa&8#IQb3^iRrk1lGyv*bv6jk2^&^PPB)SWkrVhfib z^CimAcG=HTqANt>=5s?jhz2t$DFpVLT|E1H|At6!6$fT=&i^8WC#KsTdmp1UO*)qM z2DRmH<6+*rz+C+fE2-#2a7_I9Tf&^XxKbGJ56<{x4fccN*arF~(tFVl9C}1umR6-H zL((}ehSQqvD?)-B-~BvUkCrfsmQ$H10aW3jtJJ@gdObD8vup&97QvQOkA76u55j&c9n&WT# zS)SKpO0ZMY?IaZ{m-k-Uyk{!^&xkHIjhJ2n)IveZX@##aqFboHFfEz-dWu-Dx;X{a zP_iHr6DRKYjS1nkd+`Qtf~^15cS?_&@T>E`u#gIx?pF#AjoEE88ceJAYxIqB{QeuP z*oYbVZ=)e*U!j?IUHBT~Rap0l#qQu__$|bH-=NCLX!+Ob>7g2;{Z({{5U*t7{_znT zA?;{Aiwr|yvwg>A8N(Im9n-x9e4np|g7OIzJyAlKK<_f~UFHUn%>F!y%D9F0S)@O5 zy&8i@K-QGl>16BYQL;bw#=n)e5UU(Jap3-(X3ajld0YT56FC=nG=^gk9nQ{hje@Q8 zYj5;l5&b25euaTKzqx?5q8?HGb zo!j23=7$a}uriX?GHR9^`QNZKKdv_Zqo*N6gQQs{%(sB>H@|vTApalM?Iw1+0^{q! zW3>>neoBe~P?(}SKm?f#VIPH0;XP}O0&Z5>UzW_x)8k*d-}v$N=oPD1jlX)9B41#p ztz+}%ZuZs<$ZG#ff^XZ*x`sHK#PH#*FPJtlfHkhcclp;CyO$JM$p7^RIoXi7LGd?E z{>iKE}78M>&UzpU%sjFGIvXGnB$H*YWVEq}$PjY1e1 zv2{#*wy*!uDosSg13C77lT$N-FASTG71H5w@7Nk*Oywyim#GEQBQdpq^V{6*YQD?I z)T5Fl={XKlxp#LzJuhch$>tRQmLPDOR;>f$Maq;Qs@Ex#>mXG2YyMwlWZ2vj47VNb zSJY!e_M2?^Mm_m{EH#T1`=MM@xvvZmFNGsZs`;G;vbq!fDT4zUamg%78T@&an!d67 z`m9w>+lepeC?88qr`F&{-5uM9cw(N@mq*3)@K(+ti-ig8YR}4173nHCAvnW+i}0&- z(S`)vzw-$>$);@KsSzQHBMTYaR*$BpAuMd7^p{nH`tWFc#e$8LK|4R#8gCr_AKSEU zfKAyG-THQPkkF}CmJR_2!HflepkiEUPQb=qXbj-%V@u@eVERR(=ZTtH663gRp5APL zh6dd{go_KTz#@!BElkw?iC3#6!p_^g4kC?IWS^{W>k=Zkm%MrF&7L-<(35d{F6u4R zQS_|#7yQNn4#ju|NtC5H8kL^1kiWZ~Qfw;6&mO5OTj+})X_AtroW?KiByZhd)~Daa zoGv3qp^XmxkbMiuboc0bZ*4BO*An4zO65g=jW8Yct}z-aKR2&_8sApo2lf7Mk2IgB z2co+b6l+<06tTOXWZ9?#hlki!TO~V>BZBR(TH$2U<`g|)$2il;teGE|wvf23?4mJB8 zZuu_l57&Z5*sX!)xFT_`KSr^_q3cMHK2rFwQFyt`KgCmdgs?MXcfQ)xlDqMQ?2>dI zo=2vS>!d-XSsB+cwzmuLkGAQ73m0D$ox6+n4oQN?SX;6F9)D$cIm-d%O5hj5J0ShTO)LWt0 zLapxVM4L`GIJDNqDwlEle2&|0F(AeJUzR#wI7^H&uElT3I!_x1aX)0twk!ajCp%zuJ#^G{! zf->yg{D%{6-jRrWN?j=rChrMCOxG8ZVjJN1c2}lszcXx3u*`q|zP9{`~Dw(=oZ3#=A1jehQg_t=1LI0l8Eon|){p$^F18aX)lCT(qBc@6)S&w+}~D zx{lr~+Ds7s&f7h+jqQ&T(2bKRApaYV9R-b3N8M~Mk`>cY_-i*Vb3H2|0C^`O`@%N2 zK{j${*yL@G)Xus*%}njv4%u6fifK5PM6$o{1V~8ykHhRy z@};3s>s)=l&aApnSdskDY|~HZd*V)%xL_!ZUWuyrKN>yEdT>j{w$>rL|x zQTThwtx^6}#BWIB+l3seChcDt&u+R7@Sit?7L2*{>C4y1B~<=c?G_Uh$9#{N{3!;# zg4+nuz&evkPSr-n!{*VW6!+%ucu!Z{xbjAj8$}d&z_V28A`Ta+cp#yQseCj34kLAg zSjx`+8jn`l=NC&F-A9cCTB5zG$5d2~DEAu+@Jsfq}%LAPY-H&dF5 zeu08;dekA8YMf64}c~a}wQD=*02igv4gDe59XH zL*^yR5{L=ny}x^WbD3oo=)y2M`ITVzC4Q zRfZ=X4}m0wVp8aKHTyh;Q0bqTasr82Q3k5kpvXbuB*9@HRho864$QR%pBDU8xpx8# zI=?b9#ePK2`_uQN|7^`mB0~H5wtO2H43@k%gz%752%5Nk#{y4?tEv1dV-UX^I62@# z*WoeeJW>Dr#+?pb4f~3xxeoi-1*y9gk~L->>L)br?poQ5gUsLI7?NE+xaeN-W#MdG zNarGF)!U3ur1T87eT_Sf4Wr#xeI^&fkwa**GOJKJ+GMqr2f{mob8t-&lGS|Xu=3x; z#6(T*ep#OMYMByG+mm(2`( zbxWH_H&qaLRZkG*Se~`ou{*a-(S55CZB?EOuo5<74IU$-&%9m2UDN_jf}%^%Z;`(u z&=_9sPHd5&A|l#8rvCcXy}F5shhs{rOv>YSS;^$ADdgf}g|X4WfQA6$dw~CEX@L%# z68xbGMdipmPEAHtN)df89?tyPpRhyiUftT9l;RwOQgFrbkPb6FS_Ecu3 zbh)!P+!oaBnyPPTfc~V@{tguAO7MQ3@5mCi-rV080iV6SUQC~FeL@4DS84NlkgNy@ z4W%t>YxT#b^%BUQ$eJ)oA01kJ;P);xCus>l5**BJ@0I>aLITuV`+FeC+6ch_Id_pyxIF@rfgM8 zXYD9%``}*ZX3vCsa@a@snB!j?YK=T-#k43^1_Q z?+NDdRb%bK;mYC^8S4b9&7%XWQFLxCWHPK?x#!ET%)4uJpw8IbL>WG9KjyN9AG?O>5uy+%AQ%kb)thpXVGtw2a zo*1Xy@quHW@Te#)kH<3%Ew{bTDXE%xJZ@0X@NeI9+|j{(6$pk;Nu!Whc}M;S7aIP0 zJK37I?5uX8)l-zy=`gHA#)obQ$iQ)vHPONBi!caOa5|hDOm%+CU*^0$Z>+u6N7|O> z{X+71K15?QmZomHaK!|;V{?KYjqC-tZ}!_~be!y$;*sHu$}Wc*JV zxb$i;vhC2)OU*)YDR|c2 zz}VP!Cv~}DC+&GS{e{5GYou(Br1kk;Uevu_RX>bSfS;f6!-sf1R)Q~HkBPfzKx6*O zF_qUA3IE+5Lt*_TB9+TIz9&?BtE^248Y2dVgJXWqf^DJZpns+$d0=pm{QdeDdbR4p zQ~Io`Di#nd(%nb;o{KAVco?O*xq0tz0qxnDD3AvqxdMZem1S_Ajh-qc+83dDyXMC@ zSI-pDM^bbbD4)!BRDV#~bay$0O4J9=PgUwqg{9KIx3?-Y8WG6>p06~Mz`?%_A z)>@0;T+fHm{OSF3E|LJ>TFb>MS9?|xk~E?(<+v>?h$TuxA=nbC^{22>sp8GwJ;L!> zeq0^YUF_wp&fF5xfiL>=E%E58_lvN2h$op)XisO;N$UWvwuYO%hD?;SuI~HiXZqmK zsy2b8YEv>|E~iqND1gXde%os;lcNli{`_G9VPits6U>hLPZo={_{k$brSiz=kD!i^ z-;A5p5b=3o1qgzib$63#8i;TadHrjXm8En>mnb(jMmQWkqHVfTGjr_ zFc2r;bhI!Kfc)`KZtmK_VzZX(J1e%Qd)O+st1;?08gPL9flL_)4fK9bi{rtJpC9~< z?U^185VO-M>6fC(md_Tu9iS8R>*}p~E%J}0wOA)Tv?(P|Q~Y?Dl3oQ79uTnu-yAO8 ze0}e=D|jwX_YB7jgLW40$3)!!~efu(cd)DkxQTIK zbd<)py=beVFV}v1*ffHe%Xh?Rv;7AT3Na^&^9`KC$qHtPQm9Bay|Yi*gh|D`#rL#F z1Q4_n9vkb)f3UqRrKQEt^)vk6toE!v^L*YU1r^oVX5{L{Y1bw`yVVzfYu{%}m(7Ps ztgMddR8DbTKpk=2s`)`r{p;t4bWDJ%`CUyVSA0M3=|#t9y)1K4eBN$ysmQQ*N5n##IHGW zOeW(ztkx^OlF4j(6^R_SAJQP9;h@ooxY26V{92b-pKexxre`RgVEVbXorOVJ@3=Ra!=>5eWIUeXUOsQ(;^ua? zmGH6|ElQa&k?(ri(Pv|C-ma|ed6;N+^;cfrbthHYWjC`=OpIf!C$s=B{O8blykSyj zr{G_+&)!d0gy0}OiP?}KARquB&}6ypR{%@j#5klu$jiT-o#8g~!ZzZRS9G54+iv&rULd1VQo769 zo`*rRM!10iF_RiKW)_w~VhF&Y_~9(*)GnDpgqh3z-i!TrSei%xT}w+#uE!1d|Ni~^ zca8nKU@u4keUIIv6pX3Z%tk76;FsG(1yze3D*XysI7;0h?T&TXC+<_hw(!mZ2Xx3ES+aDRKEmLXRv z^@q5jw_kj6@+KN9Wh~G)U3V8dUtDZRfu_rx;;=oO(`|G-=xFtP!N6cnEH6(mnaIKh z+w^jOI!}ZvE8Sa5ES)#?_2w)_+{5=*-e+fhCmY8rK09gdKcR+yb~l}+ct>!ii)u-?Yuu+YDkTW z5;&Z%B8)NxVh`f@iqO^Z!r@jtZ{FNrHH8cK-Jf2~rdPO}6#q1CC?%onJ__%(y$K2@sh@ zeCB^|F)*c1538iJl!}sAO_6|B@wl3%%7O8`*nS3lS|QET2@Xsc?Po(!3wQl{^7XIX zUq#>Qtaw~@QX?gZA0AHH>TgzLM$>q@K>VJ(rDI8OKD=nXwo9djJ|IIZy zvjg@eSmsR0#`e>8lTzEs`ZbX12Xx>s&RW+C5>Dr1rOV`l2(^;!rG_fUQOa4n7sZBL zhAOM&bigX30ba_em}FV6dgZ`Ky0%5vtww#@xb38y|4|_3OoliMo?i|9}>l_8~^TzBHaD6L6EVRstzEHv(;sGuZ-2Yd}O~ z3lt(aYQTOr1+T7p;s%cx*%y260?hzo@L)?zOY7_FU(u@hte3V}^@6a)4Hko#IB>#b zt!8#Rf$OR~H;K&>C!Fx%{A!jK^4oWA0hik%EG#UWmnZq%6`rVHzb+nEUq#@s)z#*&t&^P;-~pmPvo6Z3h2}AWMo9t7qpfYV3>Q~0tR&k%tsJ@eR_JDrQL>R zpi0SLMQFdn+Z9hw=(?TM01`2vyzaI{uTNIhj}?Z0|M?my^|-^AeR_Fm2g7=|=4S(5 zg$I_2_lvqD(A*%Lc=+cVZ?4jVzXixVZZPNb#-t%{>otBfg!cC2BqV9tiYoDIg)yGN4;yIvUCuL~A#dH`v?S=Ih7)IH06 z+MZ2~g|y=BZCiq;uK*9A5zq+Ph>AH}?c#P5)=zrfnjrF+YoY(3Y^=@jK^F0WJGpV- z|I5WyoDwJkItn8F*Ht9!@9z(AU0i(Q3Lu>RLQI>^AE(?a6nNFP6b>_mf_ zkb=o-K@j3XM|gc@pDHsmvlHR}c=o?v&ro)`kll)v0FY(8@Lsb4>Aa~-8S3#phpZGc z>b$(?FIxK=e`iw6KK2zmY-Y`edn2pOA~z{2#b@XNo3$JGQ@-ixePC?4jM=;eb*KgT z`S}Z~&1!yw1eoZ!xSnd$DZEcQ5Cq{ry8=-!X4I{tW97XT4`<6rr*b8`y1M*;jxKjO z)00Z$9>A35?#P$T7I$u^!7gjPrvcRlu(YLk1Y`ct)Fsj85VM+~0jCk#@$oS^71hOY z(+LJCDPtJjJ@!P|U+7=r6p?(-UjQBm6-|Q|#(*s)VP|Jo-~bYCjJAi9!U)+TLU9>G zyo3O;ZDr_ z8W@w5G;q4!wKtWAD$RWc)6mf19}vJ~K0^mQT@I@F&(F``|FceHMw`oBS&?vpp1BHr z)n*r_bg%o5;J1LRq^yilBA!lnwp4RtsK6K$ylYXkVu{PSy1Cf_4MW!NcG7qHqsdT6 zc~ihn01j+Q-5RxkOyRZ<_i>z~f5c*US6aB_^Q0&k86!bj(Zyla7&CAW$*t~zPl0VT z`*$bE>mLpdH}H0|SuSMA6?~JHE{o>|q3$L?{ldQ`Lfg_X<^VGAyLLB7upswcksA(* znI^Z%{%XW-@WGw($=KJ!0|ygWLNVzG&(AhHx>80l6y&PDS~}g~06!_QdX$TeTX!QW17&53oFoW>(cC}*`ukG$& z%!o12L5iM2uoqOqG&7?CX*jLhyrP$6P6~B)UtBt9P99KxPn5Y5EYw|4 zR=l8VCC!oB!wZs#@h2C<_JWh4#(H}u>)~mL+FI#kZ)@97SYQGo(19gkj)RO807XSb z)#$J%*yMC%GWiElJSQeB3`HuHvuCBny}{+|gR846P)fj)Rl=|%0^;HaKzMc{vth_) zVr(oXWo$vU4_nfpCfC;fzIZyXXCjv~LsC)__w(&0ol3b+fqY)PIJ@B>7SL#F`faKL zBX*xHb1SR2Qfa+@e8}et@)DN87X11Za5MHQqY=BH#PM+%67R>egV$xW3q?+gfu1J( z2xC=a*BeQyeSD@^q@?JwJaU*Ku@X6L*3;7y0OTPiG4Y#`5hXy2YK!?8{k{lYu=EF4 ztfrIx0CRNMl1;}mAj1jSU*}YXE*|Mf{@Nw*Eph$BaTCZ(DYDZH7a?1$vj#PjOA<%6 ziz-vW$gHfazNhmN$B73BX134I?JCVbll9;IZo;8qx>l%K9t6XN!d6v02~+2M3c= zP-w;>?9Ek>0bK6Yt9U1dK|(?T?vEcJC;)asz0EolFsm<*my?Y~exHFB4_`=16|u=E zhGdJTcO5tZa10C$(Nf%7uq`^q*^?n6BChA9d(k)^{w7dWTMn`bj6>2Wo@or zMX_f`yf!bMUcJ)e&ThhJ9}R3k1+a03li5*$R}T=hBbBzTlat8wbW&-aE3DUFoyb#M zbaaq9;<1LurC`h_chculXGT^uT7yOLvOKt@;M7VpyK?BHQ#Jp^b_1sE>6$PQl~g3& zaAR}x?)l+_!~L30sVHuV5ULn}8VteS5x}9a*W{1qU)d08{`a1su71H>=*p{Za41 znm~byBrneo98QOc`T{ik08|)gv+;_iL#EAgfRO>jd2(t>OhTgRP}|Lo6I=lZzJ7&@ zP0%)p>yL**Rhp$`* z%`2M-LMKc7r0ctxK5tX1x1B}61(FZ}*&-s=mCOk_&HX7P&2w_pr& zAWtX2RjG!kMr~x#x^0B-<*{pjx=12by<7(p=(zQwvew32JDSinIc%^?-KTHlRhLU0 zN+$)H{&bhTRAJ>3b-NsnNnD%%Mc*MojmEs7q$zXSAz$&LW9U{nQgq0K^7%1b7j^>X~ zPrxIeRbGykBd2Qm*M86axuWxeij$g1)fG5-u)hgRH?Ul z57MM_Rvd5^bvJv%w|+XpBA}w?0q+Z-)L2Nc02?=#8tfxnue7wZB0BiR0OI%o%98GJ zjtDp)k2~mlBT5SCRQC5(wF4>Z9~s#K$l`Ik9tes%&Q;`ff+Y~&+S%Nc*R5{dX!%{O zc7#oKZ)j+^4&-sdq}b6s(+uyFW2%(V`IwV#Ufq3_mJr4cW2eu<=&TT^7?IR*o2&>iY?2SoeY0{cK_ei zUpJZfgV}w`DOn?*=jr^qx1?k5=9UQzmn`eS7~32K%>)2p43rw}uIlRQUS}nSs1ul!#DVY`>CGW#b;8lHNa-~5&Yhy}Go}DE*ei9H3)A#-@(m)j zGOx6!60GssW{=F=^3!MYn|@POhCATlzjm$XKm*HTe^KFE-s|c54Cdxk)J;vpw69ss z==)DN@7#WqVV7~unVlzhszz&y_n606+|w_!GkEo}qvP?lj$f_o>$Rg=o%^nJJhhD< zU-z8d>UiV5=6esv_j6L?Qtb+OWS%&UGdeo{^YhM`%mv@&x03)g99UZo-euz7WAhe= zGwFH6$p{vYN|STvf)VQ~cIFVfPyX*{tV%aEnm(2gMCrHFaXGIhgN^Yx#xv4pI{G62 z>C?AY`zZ9^Tt3Xp%UkLA1{glfu-I~_p6>XY=2!v1Xotz%^2-2|1ca7{BBh_CGxyn2 z_UjH3)kw}-WQ-=u-Wrn!qzgjk0tbg?8}}@&V5mn`dDkifqbyHYW*k*<&u#2f4g%?+ z%l~7h_8#Y{em1Mrpm zuZlW8mWY@K4|;$2KG6*iXA&4jGB#!1hMG@RT|GRO`*7mvuse6iTL;2C7xg$yM6l&ZvE=mpL^*PIUR{j{|g4?`}cOUPQ9mQ+}Wuw+tCm~P#=6&)YHEp^;stOY8Q_z+h_!`6zgw7>!s zF)Pzc^PEX-+wi^`xxA>6>5g)NumOd>1;wV*flR6P*$`A33L**HeKtqGOpmttM2g#g zGLsx^()|%`WcQMsG5pQg^Y1U6#&rx0!?8wb_)6Ei^O*H}nl0-(O&$c;1pNx)u4O8M z4#^43t?c0;rJ_d45tEuT5{-MiBX`8U44Dm^JAOD*uSP+)vmyvgqMuJ1Wl&Cc$U z5T*!OTmK-x_lAhj9&xMKL z)`UY?2d}ES5sEWTZ&YPASRxwe!_)T($v%9R7RaKSv z8DG95VddbMyf=2sW?$v+;1%YH^G#Z6GePrF-*&rwb=hV2>gPV$)nCPk9rd@Eg`!hZ z?hFrKu9k1S*=EUz7v*zO+d@v&xe8KGgRwPfQ7B zxUs!Pg01EIgp<_b%-T8snG5NbAF$xDFKxcZL;l9EAu1Bwl5M789u6L?$oOehP-a{nqYRZR6FH*nclIAV*zmnAX|}w2 zod$8jnPa@CpE)(;y{QwKUi}hc!xC5PjI-Q_yDVyVLr(O+q!SChVV-w1AvJ*Cftzgn{P}7(rlt(g)>NiEgk97r|rFTP`J7Z)txj2xOwI4@FjsI=| zmCP&)7SeBh@)A*uvWC>QAK$$F>XkG#hdA{P7U3Geu{$j-8YDF}H%T4VS6mRdW83IO zuwuOrkl%@zzQ=FPA>(>sVc~r_FLAr71^uvw%h>wK@;>Y+Ze!>V(2;;ckwjUbULX}iICPfw%jo-m;r+L0W(8%ssLdBqB8E0p*Ly=L~)HhU81}a$=Pcaob!H4bEcxjy%_;BA3X}jG1I+6vsLbit zI_9XXqJoQox)h7H)XZ5D3n(<;J*Szu={NsT)pj63*!TrK($ASQXHZCNZFDdwwxmIJ zjfsvX!TxNB*hM_ujc>2-OWfeXd^VC8wV+r5?cqQ=dHY_2L$S@s3^54_PxIT{xG#2%(eCwM%Nf}yP|=q`coVplgj-OM5=^@i zSh$)w*_DOKP=H&$W5>EOxNYvIzq1kNlb7c@eE4u!c({VOIlp8i(+1{El4k2sy)+hC zJC6TJT`&10(eBw4kTT8y6x&N9Epb8w(g4I*?3N6Q*E?_$v?rEAKi}jIj&wTTsAOLA zhmbN)E$+*u7Y<*3L$NmZaFcL@VDz`L_)mHUhMN!ywvfP9cLz*>8OU>jyfQz+ z2G8Tytka37x4~3{<*8U_Vq;U+QV+vyyu&C_D*vn!oawc=!aCIu>!ok* zBQ%_Ho;y*Zl9LeoBZB2%-Dq>{#|pO_Jj0JS%tycr*iU>Cd}zaeFFjhkE?+FJStPo! z@3*AihAhkiNUF7SvP9NcnC#AY{Fn?N4gW;!Ih<$wlGk_>6=m>h6?Wz@h(p%nzOqxV zSEo3RE5}giX75Dw-r3^ttA`EV-a9>%@ePSbuLk*SAE-kAOB_6-9_rka|X zP8b_=V$raQSXwc58vM!8ms?yR@#4eT&1-G9a(`x6paq&CG%ZV_|dfz>RwfL6J$%MB4XS*_8J+TT)D% zr-1fA%NS1f&~L+o@8K{Ul(^oPo`hRU%CKqwY7<{n+NEmWtY^;@H8p8^)FgLsg)47O z(b^uYICR)3{E+g=laxtqKcx9|X&e7{*qBh3BnA?a{ z04BeFd3GdNlstetiKj`0VtY?d&+>ey_ADsFLDWJ@T3WQg^7bfWh6if{>wF@a(~!M) z9!aD|8MUjfr%9#GU`CQw`qw~JMFIb>DB8@&kKg=^7V*@YOLhAC=!C}^E=I2>ypPUq z{h)jG{MqUz761pq0Oa{je|QJp3~x-6pmKO>XXSWuSEj$& zp^Wbxd&6uAbX_N?V;fPI?^31oXrNy%N02q-Ch(Pku-#7D@%D4^*a@O=;T1THs6gh9 zz|ca-^g9m9y3S^G%VoUPcVOUBLKw$zpK7^8K zpX9+dCbAw%g+;~aloA3CFFUkMvsNsGTuMnw>T4RORr$esF@T%mpI?eBjIv}3WMX1F zPDQ8Cn;#ljxn+2oOel(&9-R!b=mJsAV5afR!h#dHR9C9)oRhWOuVWvbDG zJYk|Y|L6Deh~Hbj752=Zf(3)LQ1IMVx$?#PDuQaf1y5{q6Uo1S7d|ds*cG7&(U

Q#M;)cweEFJP;K)_ZYEI{ESWLrtNW7KMjgbm_@+bj`^wztpKT_;lzSH>3z2&FiJ zkJr`JMW92JtN-pLw3F)b!%xF<>w2lGt5DdgC*WXl;Baj+(^z?#${jxEx z_TBB`;zA$MFen*$;0`wjFCME_=~L!Qo-0#zd25ELfU3qKp}N`BIpQC!#6Tnjf3#9o zRwiT1=0Nnc5l>PzifuL@loZ*2zGc)=3dAJRA8E`Fzpvu$b3g~m;JYz`F1#~S8*Wij zoda=*HYkA1In9;0Z1?l>ZUvq)S5p3PrSyVXd7oLKfw$*F1L1A0MOxK60?6nX>MmzW z{rfN%P1YyLK7Ke8r}0GX)TzMJ`<$*_mu)AolYqc>%VMdlWJzFTs3m4d4+R%;@k{Gl z%(%ylEM3LdNVED7BKV{Ifi&+@H7&_#!Cjh{B|MQMi0GjZrvuDb=O?@An3_E*W`{nnIFU$zFzz>aaLgyh}sn6q8E2hK;-F`_`@yE?$VRwanpmM60jW`E>K|82* zNN!|4fz%0`GMM0-BQMe@x)HF!`rnsycvSFbP~(^62C)8{#>OjuMw@{;jzU3iGbWxV z9k3mo>UKN^IHa+$G1g<&I}Zp6HHUVvQ_@Hx6!>7Phh- zkht|?_}#;F8m+_>_r)F)GJjrHR(9q~Ty-m7EtC73hK3#?y{2AnCzu2jxOpa3w+MC(Bc`+h zld(ng4%l{l{$yQhdcL;kxWc|zv-inTqKT&q`hEv|$-cp~aNgZLHPj?u6*dXa#b1=A z7ifxms3S+VihNW(YpX5($y1y^MlJ256~SgG1a7-&VQBoqev5Pp?d3vAE1N7i$_4r+ zQ;-U2K<__3Wnts#LXYW&)pjbOHrEu#n`456Gr7P*#p2YH%a z(w@F5Cnd#3I2E9=>6||wdeEqB5XJnb=-kuTr36$Z)*(APn`_$Vd*W5oBZ;COf6NJ> zNMt~WzM%w8>VM$?2QC?46AcW{sE>x=2BPjvcVBVHNLDVhq+w>(k6?h_QQR_t(6&+zr&y^i)$5#e_(e&<}v)4mq-dZ$A zgtHyB1plL$t3LuMhj3ODUhfvccQS>+6eQag61WezU>JCVCv)h&=r#mA_rm!nBZ(E`s@%AHXL$KU)2kGQzL z+9A%c_s=rR+$4F;m2$5tfm4ayr&%{t9}4^h2`Uivt=SV%R_rAT>?IvGp^NLOzg;Un z_%7sk8oKejQ!vVIWfIUL%)b+^3vYJS@-c=-CnkpDa9!TqSYJlx9EZiZ*{792_yOY{ zzrI%NA|dDwLeCy;idjZu%ho*K&W?^Wo&ClpomOIYBcY^cW+WFa8X6nDD)Vu=a2m3* zvgl2O4jw$|=y-%A4PM^;2M#diNpa@ceSMXV|I|uXUHI1b!LYRNw@KT3nJLP9#VWEE zOqUH=AQluD2nYN=N==$Nju0biC9zYUC4$_w;$oAm-livaFu#ZODgbFwx_%i?l?ff3 z58#jy)%4DttF;o_7DrRMJ)LVS8x`;^5>4btvTp|V7CAXNkl9vyJ|&*uYd9xrGcPK? z|9mAeRwx_+-vQnk2?>J19lUMCrOc1NPM^j06Ti?bc<2z0v&Mw~l`pmE_Oin6NFsM^^8@c2`z3QyE#I+)Y-x0;b915|2A2j2UQv<0 z@pfhX8J8eqLtz#KMOfuM&Pm)f<%ld3;INkCc=oNFoq8K9b%;uUlz~lFRb#6T^-bzU zafdZ=)!VE$;T%+10>w&%(;ELRIMAUwyY6v@kLMTbeKaSALJt_j~GusT?1O<7QCpJ>={9)1*q=v*-26W$vl%@ z_y$=^Zu!71cs;~>D+LiAue_y3X#;7iWAYED8SdPOzVh}6eRghc19bKvpF^7ADWKr#g>$a1sb;L8 zAh)milKl@=$BbQxAR^;7r3|VKp_ZTE|I3S6=BLV7hD}GAX=-K zL3+7J&-q;{8E3){-Jm>@`21v&WQFt303;zZ9D5u&NykxeqiYU?lo@vGR^7wRwX3y5 zh}p-Vo=yw^tjWmBqm7bVWQ9;e25(Z}cDl<@J$`(vJ}zQX83suar*C-e@0?a-66h;1 z#HjV5rF`|x`yYzV-(I%z?{9zwvrk!Pw9?uCLF^Q~F=`Z7bM}0GJ0}Zdg%TA~b8_>y)Nz94Qo*h7ZxM{|U?iMpqP}s_N%dum};PN9lO>imo zQ(r4S=3hEa>|OY2sFq(XW`1yxe1>QAS((3SEOMjl%CKZ*QCivw3OeToXf=m@R-6%J zV$}F4Mj-p8yG;+cBb^3y6AE?kj$N?gw}~dT!6Th-Z#z9u1v01(+n21+;5I@&dSh2f z{1I;8VWvXrQ3SsM+I03$>meB_w#av?#J21y7JxDB>(j8V|I%=j4@mjW9bncl8&`uh6vsdiZwn<2{t*w21nEi0w*u=XlS|6I&--fQp0 z@RaXgbi9U6-E#7KdYG;hd1B7u0i)Z(QprayE^NN&!TS#8hAdbZ&nhn2_EoW*QO)fG z9goQe;wLpd@Y@8pf-s4zMCsB&r-5H$s54Q_p0lF@0tGW}#^-ek_AfPc^;#@M|G*ps zu;JE2)y^KduU_^33xAf-zFxhjchWY zi9l0`g_0Br??}-KMV-nA3;+pUC#Q>`)zK}3vI4t?eEjQBmdd}(oYo`Uw(+&B3_Hm0 z&!{?bMG-{aG2NNv`jFloH_j$Yxa1$Y_D<L|c zCvWEYb@cO$e-@ve%C5u-1|L{wDoT;9lXP|f=y?W7G*nYyiZ zI82nQ=S~Dy3|@O*r94>we;}72NSGn*u|%YQw2FoT0DFldzIEh*dQtg@Gg{(1_L3OF|2bko$X^0Q1wf|~0;Vj}Q zN{{c=@fx(fHTQICLHv$KR>+CZo4;4s*;DV||ML3%b2a`ib|^)VhB_X9{UaL{6hu}l z((4s<&TGXVxynD#!jNEwQI*w2^~I&j{6C8ygLvEdde`Lg4=@2Ggt~Yr<`ewio9xqm z3F9}e3V+$Q$5Fr8%)*exvY5@f^n&}>uQ#JP8x?qCmVag4rHP>_{S?wm`oFgCF|wi! zwA4;#EM`LrNJ6eJ57k?QJE#Oo#63YJ3cG=GTbEnQirXuw6eX;6a zsCz!V%*vng_}>a0!8dkJoa6I+F@QsmnuLYtrOsvWY1*y7|MqRH)VyK;{aK6B9KoyS zL=r{-n-wf9_QGPJ@!q2w}^4Ykb%81wJ4m{Z{?`jo3&l;){QkUiZm!P>xG^+*u1^0i%gFjhG6HfXTEsAl zdDkqAUy7h}1KUB_q9+%p{JH-1jN6Ad zQgi=Y^*CsFn98z0*Y#Ma%ycCa;UG^_2!wSv2y9wM({6JlA&6{+2K_(WzC8%+hTVzy zpWv2Z<=F$1W)0r=>~O@PVGQIZjN;i2O(Dr|zd&M<7)< z_7p!Op<=*;3!mRXtt(pnk~#YiA7&sjW7aE&Ww8xvo}Cd5gzw&W^|!=ODJb@1y^~{F zYA80T@l$mW!J;2LxCP%V&!Izf=krZmymA3yFM4CG%$lH81fwHn3;3v--qP#nK;pqo z3~YXDBYSva)O1h-xuJVz*C7*|qUQwC`0*j#0RA}r=LR?7jv@pN1?0zKUw2foTEzvC zHvFm7Uk`V(aBv8{>m^SrEGIUdLuv0=aEk=eKx)Dn-ZL9%2@|60F6s zr{bru*YRlDF5S74edDej%)}vRwd1eHevQ@-IK&CMbGq3m~-n< zOV$mOyfYPm_(uqb4#>&B`pW72=O!Yn=|0dZ({f7s6Yn0cnH1vg@bGZ--MazUAPV%d z_=f1zu+9koh0YhT3%Ptpuqwa-P9i16@hpDr;5 z3BkgbuA8038$fYKCGgPeWddK+f(h3-a|StEhL+gW*ppa|-K<9~sZG3oA4Bab@mF3O zkV5mO7LkwiGdF&X0!zc#bql@;keuiRd|kJ%@oBWi6N6XIf@p5LLJ)=MI=X+{&$swU zEgSW=ox65r5JZE4FhC}hYymt9)Kz~ly#Vw|!YuVR;xcU|w}=w#Le$};Hs+mE$&P;U zSH;*7T|QthG>!c!FbHvZd{21)e*b3kKh}Ita|{3p5pfC(WAQYqcUMLis?Fou%*|)CUPQTnU9@e9v|X9fL|W_4r;^Vxd6=1(ILrXQ7*?DSgvwS}Y-MmwS>01BZUT!ASO0eDQ@Q=mgV`y z3KkGi(j`fc+qlo^7dAW%09m_#QV z@q(+@#tzwiTk_jn@?({98-fbSXPWpeP%R8jcBgxB|@cXp(aXw(`+ z!<&^DpUV3Kl&LF~3!jbPG2fc%K1_+z18x{0mkw?F--1aw)o18wiDPA^G>>;fL|n{) zNvJzR4XLgAQgI1GZYvI;!|)qQ=p&PDKIkRxZ}n?FaqOc5Df4hcc5)`#0}KD|&pOpwn;oAqNxg!V@E( z#%b0Yarjoe|AlRJWZiFIRAkly&jo8F15)h%>V2lXL zGVwG}5DM3(_Vz}wPpI(7l&-SAy|%6X()-8?R^RjaN2vpGtzjA>JYfGas75SC=dV9% zGttEwwEHPjP0NmD>)nDrgz_OFlCOOZKi1UTe6z>KwJ(%u0L&o)y@U;m$WYqlS1q!m zo$O!#7Ti}*UW4&XQ2dx~to_B!E)pp6>z}qE$OOLHbbM})sZ=!Z*eG7o!z;kfV_NEW zqGJtlXwhd8UO#vJ-$|q><*@$0i)Qqu|GQ{baJzOX^NROq6GQFL!2<^r!6lNUy?Vv&*6*+# zd=QL4L@d%x`Wu$?BTqln!Vt{`TcJbX#eiQ0zf|YasN#EmLtRw!LrFXl?5D3xfziv&aRbfaYR2*Nk z+qPEFodR)$0)kNOuyxP~GW4p;n!M2g8xrrtzPFRnMyMlqh+u5Cmd`5l+H-Et={mr9 zr0c_n-N)^23?DNxnsJ`^q%N8DVTb|@KV%0UNU$)3)R7EF3}$b7y0{!8yxVIF`F_kM zOySDzi#=BXLZ~u663;O_+z>&CUsKhazJwpZw!;J*wpPjwA2Iejebk2sO2WaDgQGGt zOYgj`?=rnPFN zbmg$7>0|6!FwK=V&bgjaR(c^9nz6{Lotw{11Zqu9&73gxP(If8kuOd18~>j^55mrs zVEb{vR^@k}`*Y`#Q?|Cbozp#b4ta1djdP7P$80R5Sgkbm}t)jy^OS2mXKId|Oz z_JgM6voY;2y`IoIBYJ~O1DpBNOq=>C7x#GdOrX!Lb%p&`4duiWsBMp6_yo7BaPi`9tc-59v-HD##zZZzti$%YTKe`1 zrZjLUs^)&Q@@C{)n683w_j-NN27#C7Q(B}UFcUN~uK`BZdJ@=auBV1Ize+!A3zyqfB<4K5rp`~lp| zT0R2iU0?&fW-?F6T~4CipFNm0E#ptz{JV#4{Fc`vst~ z#akQ((~=OwjCBJ&v4sTQ9}eRA{}P;*eQiqYc?``HP9L>CJBZ%W8c}M?_sNuSHleo; zgK)MT2SATyJKOK`x_bThjXEzF_@{~dr2wngTszVO(TM=NW2(=hA&Eps@Wv3GAMQ;=TQD;?Ob{j6 zvWO|8+5s^Ck$e;Xzv3x=*DfT!sQ5>Gb`!{li*Qt5N?JSeK|nK09gj^=w%vKl%sl8btab znF0S#^t+iG$$w!vG~vJcncY6O%thaQB2;Ik=#hb;Vb6h81u))_N@zlSIS(0Cv}O5l zbh}^^Lji)G{9%-=6LSHA)(=4s36Qq0rsPr;Kz92^0LSXJKd1NvGUSxijF=`A8*2&J zI9RiV;Hl)R%d@g5syr7MH`+z1@5aU!!eXkA2khKpOLNs6IXHlR$FZdAJNk-FP}^TF z`8=B6a2XEe1$9&4fFD186vzt7MW>1HFy0d~BH8cSXRA3CTIo1;i(W%JAoL%Vaynr9 zix}xy_!WEw^Ruhu^7Ng0oq`+pxNr!s!KP+VX2T|aW8gN3GeF&upP3Ke!o{E5QTK|l zI2e@M?Os`$j)I5fa>rwJ>=l?EymO?Uq<{DStbLx{x+K`PR9v_foR(r{Cl6-ijQmvv zJ^+EGD1G6P51!11p#>^A{0(R^m+;v1+nCz}I|ZXGvC$vx4W)f0ZT{ig*h?mH*b)mG zi@-UK&u^kp@(S`CiT{7}2?ZYIz&PR|e)pCdy!MttkppW#I-5T=@%a2M?PjkkfBu{r z9awc>Vd$Bd0>K0j?Sdwh433tH4^4{?o|k-o1H7doQUn9q85YxwP;h{hMBj~c`;*=2 z;yZM%>hlvWLZW37SOO-I^k#=+=$L9Arxy#M`rdrm-LT`Xa#V`S~EeUwHql* zzxzVL1|6HMvOTELoXFE>eH}Je__EMKEt~4cAE$xxmpe`)dnmgtY+HeF1Xh|vf-%}X zuwDY08LEAnZ!)-d+LF-^3g<(qS1M!!xUYs#SR`d^ME2gclD}NY3e^+*f#%aEH%2Ko zmq@fP4Dr+|1)bT>)im~zicaA@HQZ)HTJt1n>iY>>Q)P*{wvOnC-EpRWTxkFJxOgrU z34om|e;EEBQyV^j{$LN&&UYVt_x)=?BNWgRTF3wWGebho?*E$D2p^j}taF?Q2q)uC zMAN{Urfg8g*TY4a;1rX=$Uh?kGXsNHUD595#jx-6@m}trc~lN+6DBw^h3LV(wM-9C z%HMpR{O{jRajNd1u#WPb)BpYey>gbK7ygd_{7=IloLszC*lch$;Gbr5Daecl@h;MV zO@-UdvI+F+yeUn@H9A$x>7j) zbgcF<6h-@-l{=flr1y=GEq~$Tp_aih0COyD(sZuQeu4o*ffLQ}-v{Tppy;IZ);Rd$ z-wN4(lqK3Hx@`Kk7#l&)!Lb9t1s!WgbpL1loEo&86yNp}KVG@gP5GZML`FBnbdZwG ziP?2*`VZ%20ZwwdaM=Kg8~>Wz8oM0f+>0Dx*JNbS%OqBdXCnf>r_=kc>o*x7!)6o+ z`6a+o!yRVt@(#^O9UUDYkBsx;K_ub{l9M?>YG4JPNj^Ipzzx@*?U-?SS#c_wNwD#u>0dT#dBmMM=)=W7k#)ih`OqXw?wtNhQ4>GJ$wur z^vXITYAd|Jq{au&=XBMzpu=Y0c=E(OZsI)U2V8}4Lm=X>d8y01?l{&kNE~+kW$^1; z^&VJ$rG!}`+Q$}9ddaq5!H1I&&P5o^w;?XPA<7T?g(S4X!R`C!fl7t~s7QogipHB? z^0r^^8oH2DtYizP1Y(I`LKq?yLK0v|A1P?44M{qwc6Iw?%Vrl25? z8hMa8IdHGBNEjS;bWF?^5)7RcBYLASoFvn$%Ha2M-Ndk4H zm~>m05_IcuZCBpjt_5czOwEa6k(iGo%(BCGZB}*2_eM*s#uF4Fu)v6C zY#V+Srjk*Muo;t>C`cVZTZj&z2b}gw;jf3cDmz>dwY=kJbN-Qk@6!``4TitOmxTAb zEw8>4y!241goe6)5O;>w!PbHpW&g8dF9vnhjZK$idriL_=X#ec#e`T6GVH*B@2V{Z zAj-s@Nw@INN+Pk%b{b;g@TbKIGRakuoPq@rKy_D_DYIPiWZ#+d2Xi~0rb*M;B1mK1 zzxBd=6KK(+A{1_W%mnpAo&F5bxCO@KI0gAuR3IG)FJ-Nl&CF;DHYf=Thi1EnQjGS=D#2jOqu@? z+d+5v+V+~(qYq^D=!N&~#zeRpD-piNWZo~TPVWQ$e4^cub!zDzr?(}B9bi@z1<_Xq zixJ^RgZ>t1(Hj5P8NA->MzQsGuQpd-hsa@+0y-`QcFDv+7Fha*`PcQ^Pl>@-EcdGgSGc(p``sdlGSL> zcdPS}w#M;-WLD3GW7YQrf3pV4`{+8zP2P>o=m7s3ru@kAiK-iBoSZ=02*BT8aX;FR zuKx$?oSAr1)$66aim5u-9kDlPD)5W~Pc@T52nj++Xwq-}K^Ezh(e;|r-VPP5xGQu~ zht_Q^ES_`<7eXF37Rg*$6utTVIaX1raWT!iy>(y_;>~e+7&MhREJ5h2Ww@*pA$}lDy9)GmJp=ju`W|qE#1h1#B zFK%d}1Un=sA55u}BvADF%0fMWOCii5{x|X$8KpN0V&m)XAEQ4dvz$A(jpS?!6+;SR za{QW+Bg;L3!in~yncf~+FTSX9e?XTUL78smKd&ro>Bu#bAXs6a8~;=Ti}(Ji26~#= zN(dnK=8dEuEqd#6^(Q;6$?8Qx7193a3SP{+p?WdcF=gB3lu$;Nh$meuJ`oMP%5^1O z?&{zOtl+UW79ki@cn>~8|3wLnnKS79LO2~k6A$9_+<_-gC61aL)Vwfg`*PskRghUQ zUJ<*KhyhSBa04qlLQklkOu2Ju%Qx5IJzXQKMc$cq>mT+mh%39Qhp6#3{@uM9^!n+e z<|Dfo+*%Ko6WRjEP>_Fs8#Q3gs9?lEIq)$T0gUeCUXGIK>6bYIZ zW7I}xORTiFVj5tayv$f?OKV%(N#J~7Z8+VF$>>OoUpkVb(a>A1+~t(?rw~`&>UWr4 zV%ekaC2Csdr1sJ&r1QGeYPaV(x5$;8ygU|5E(jt!NC@u=!9aMULTqChZ}WH$MUdDz znMY6}4Ldzm^jqSqwcfMw)>Kqd%7(iB#J<>CQ_*GT8}-*CrQOa&3UP*BWMO7bhsO(^ zAD5Tsp-@3Pf;IvMl`LhyZR-kcf;5dXhXf4DJvLmi6`)e=Id|>!+U1k@$u?p(6@Alp zFK41>1%7Q_gh$p81yr%%UEtk!fS)$)*)u8_5&nNY7yZ&g2mj8l@WSid_-Cwj{Xm-9 zjF_zet_khymK6&+XTJ(;UDmWR`SjJjnVY!7aD9Gbo{5xEN;1vDTU>OsXr zC%Or*5Ye4UcvxXLS!eP6_{j+^asDVhYHh?vaC(UDLsU$2T`4++QJ>TPQ=%;HCD=dN z_6pe#UplKIuP^Lwfc4I%|Ha42cHaMX&~;ngIO+3G2c5dkzL!>$E3~1~G$qn*{H7QL zL-^{2j-aWCIJ4qOO1_ta(GlS8|GzvO!s^b>VyH)i->{=|ni<}_Mo>fOC4@Q{)f`Lv zmtOh5UH}1HAKr$5DALKL!Ow`d0Lm)r)LI_Mu>h@1r-|gXi(DTaWgN!dNpHAc7x=9( zeWsIyr03f~rP;)3BUw^6$dyCi2ub<5VKKoO5T&{=^U_o*6Eib83DLvjfDvTXJHFZ% zM}0PhV-J(CsGv?0y>P^o0-_NKNm(+o{{G=B1hyiCuO%*wr9elr5`NwRJ;NAmMyZnV zaoijYKf;gC-YZx23H40brkm1dBMuei@zbXPBa%_8CO8|wbI@?biqjAkRF?DjSgD0w2cnv zTs{fQ55ulqeY$}GfqU(0i^RK>pq6xzs+}eW}4|o#gJbYH;615{!Qo^m6K{5zWhGwc)S2U)s zjG$89*-?WKU%4 zT?SOhJu+~-;FshZ2CB4LqjuX%H@`*sp41RXCU3`htzf@u^wa{iLC`PlTLsfCz_Ytp zJ5Gqv40morWn;qS1UG@m32P!OAUJ|{pRZ2C>4~J#Y`(Q#6qQg|R8%OYKfxhSn>x%bK+8nXH#9p*~`ZI}Oetv^HG!z*V>2xg6VBXW5! zmM5hMXZqmWblt;}cpvwAqE8=KoFb8(v?~S!Pqb&61s;mMvc&iY%oEF>BLANXUP2`m z<8R=ygYe@%94;V=4%l}oGUexfiT6)d_@c#?c&U1PfptZd#J{kN@uJ;pP4^TtL)KD_PbO`)v(){d zjtTyqAaYD{quq<^I?;%a{*A=b`%1n-k|3+i(9MocO%>^HFA_#q#o3AO?|GK*|DCF0 zP-L#2)E6p2$d?$%)By9?`l5^>C>)}0Aab6V|6c~g0W`W06DAvR*+>Zf#>=paX!f#x zJc16vf@_`oD(5>+k@)x7RnUNOc?%Mq{?oVC?&2tLzCII|U@ykbV-x+R3TqGS6!nBJ zDmr>_t|yob-hxJ0FQA>>m-mrId5a1v=sICw#$W&}J2ugFqGj0mdK#|uu@Wo3c;N!1 zsuD{dk$4NDRU2q&?E@eljwK8Y2#8pHwC8S3YTMV3Srzcgpl%{peX_9{cr*SvEBVnp z{fY-*`><{zJv=T>1XR<&1JrOZ@t!NRo)%D?Q7^`g(ayf*T0#E9Nw$e z7NZ55=)6ImWr-M55m^2fxO+Pdd(e3kkA|PVaMMDslceOiLDr626n>t0Jb>5n;&)kJ zvI(f-Z!^8u^Gn?a5knp}lF}J<%2)D8NOVtE$0AWZdiLzrwtW3$cPZosf|i7oc)Z!pY%YfdPR;`E6-^s{ESk7pVMmn!drmG%9U@Bwd;*n#=pg(@${ zwwR(UB5Vc#&alc6&W=zn&!*hisrI#b>U#eX$@ETpNx?|kx~{0!p-&hygWdyhciv?7g#Zeuf4d=2-Gh1667nDD#VXl_SLNh?Kf(TyQa@sg>m-drtK((o z*VicAXR=B!1iDdq1CI|DeDB^!P|^M&;7`s-xqnFP*+ECC|zKSXkk#NH^b*aPs-C zsqtM?%h}mEZ&xy~Qs-dZS^@M_mv4g4*PlFojO60r=GNHK^6X8?X}RlzDapz2fTJ`8 z<#y<5qgw+%YYv?cO|pp0jiBT;@KLWPn`0;Di$5)WXb3DmnDhC$kcGAQ_r+kowb#xD zH(O^u3Rr^OesV1`RMp57gQX9e_^rDT6GDX5SrC4tQ>L=#Mr3`H2^&kF15p}EyZL@O znV;6Ug-HMC*JvrSnH_E*e;s+h*f*>Lh`G%scK+6{wY4>(Cp}#U{(K4=nl_hrr`0z! zTeXE6k$30%Q;c%DSUhsB_%aDHTkdF|K2Do(Se9{SXC?1Azo20A{5_#L_0x9n-MGUu zRV17P?e*rvNQ@+O`rUi%fL>Pg7-hb0_B+S9n6ux!Fq+KU+dEJD1Qol^sOwp~sde~< zth=6Bc&@BHDkv|{#Qgp>kUivi0*i}_7`eVfLPDY?;ZQqFR#_%h(wHWUVBp;qE6{b# zse7sA4wu%uzwL=Wma8I{V1sM41xO;SD+u00z-qyc$zT~RU)t@QmjubxV<$VujSQ_KuHH*94PE{Pam;Dh{`<$B%+V4sx1_w`IV$y}&vM+9C z?b@3Z2vr@hd=F_W;}P0r&&3NC=npSSkfsj>I4-yR;hz3CrXg#`t}!4{o`H*5g2 zAy7G*eqJxPCWhWL6NH7cvvA1>32w&P2xlvyD)yDt#KR}T;xJQCy-rv)+3ygVqVv&p ze#pbEjx=C$iGYjB=(+OMYeII#A68dalen_JR(U007Bqz0E1oYFOQiRW*_vRo>0aqm zM&HREfgjV$y}-O{SAub?Eas^Kc3{qQ!~&d#PP|{fX`rZ zzKzebJvYSLD%A^%i${>2nvX2*FSi^Xmc3qZTK2+>=byn^(v`*Et$5uKVK6^2X~N$3 zKf%YXeC5U!qo+sSpX1Qk7?arY!qfRwOjlxB8n<tp@80~I zxtLCe2NE~5{{9)uzE~lS8%MTqS?UxQ77ETdR900vc~7Hw5L@5GlBQl?cfSj4@e!wT zYf5Xsyi5(o2j3cVTSC_S4iEYea4-&L1QqiEdREpZj7HMz+gWb-rWAuV9D_g-!6vl`Da`(*SHGfn}bW=Dvt?Gih1Ff49qh@rXYX z8k%bXGaW{6%N1Jm)zyKWS?xFKdN;dTgagj|@+#HJqd4WGj5GHyfzz?-DcVaEf2N{? zV`JwAUoVrxZ1cizQy$}k8oRp_;E+zTlxyeg&d}LkP*70Q+xq}f0k4JwsQ>h?J#iXw zSI*8BlkNQb^E-Zoa9g4y8lEqBLyy~|`rA6Ky*0J6D;8u4;uZo_yPo#Dw%h?DgD=t} z2HCV-MzS^skD32?`C>`N?vkvo`IdH+Z;D{~;531lNc(gQ$okz~yVYwh#Rx%?l9D3lM2>Z6saUC0Wz&}uR~HT53VCYmdgG0_wS7IV)mnxill6!VM{;6&GX>1ZJQGe>0us7oti&F0UiD~? z0QG7H)x(qBR+ROH&#E}a$_^)7NR_RI1&ER;zy@_ zp8g*H*3k0|e&YwqMbto+BPKOf3p;HK+{@cH z*XHOjL87UH{d(j`<^F|?$KU9`zI197<2np#D^BAiZUZWES@8a7neO-5QOM=PS)6#PnBG)c?RaLpY*dt7%c+{!z732>w$SLz(apBPFl+46 zF$k!bjBsyRK!jY**Q|@_sL%e+&4JhMqlre2T;IlvKmEiI7<=$#Te}y~WANaD<2#?^ zyY{;o4CUCHY-*Mm9eO>2yUgrhGjqd3bII!rapE`9a+_`a@dnx61?=c=b@y5R!`bICWS7Ym)IT_9ke=s5cqe66qVe>lMNUTO{^evN)vzd#59-^oV@JA+UEH2&o~aHBYS^P0S~ODO zXY&=UMYy&@9Y>k?%Jag4si~cNSy-0W=sH)%8#~Q2E4Y_pzhGI}Yd``>)Al2WyN zdwmVJes$sMqiT&G6)u^@(0}!+-Xz??_yU%Vq(u^jz00q9)Z|IY7gwvYVp}$C)~s68w+1muLtf9kW)>4gC#TKXc@LG1g^Mkf#c=l$8fkQSlT4!f46c2Q z4$#>=QqeB`aM@DYix`R)j>O^U&rLs(#f?D9{G`iucD2dR#d;i?ww?6fW^5Y6__W9K z#)a&5z3M%(=X8siuROfEkKHjT7lXGdKyzRo86b)oG|As~{U-ie8gO~&yDOzr2* z&2=h=n51`mM0!?H(P7{SeL9OdNp?j?_v_GWL590(A1?=+T&?M4oh=W2KU8GE zN`VW^=2Qqn8T{zcBl3IXGZx#oZ{L@CC8of0NOKVr`>4&S97b%sT6wn93Drc`$u0kC zN&0K9&9+$lqpH?f|N52GMt+kEN45Az6P-{RRn|~}a|pL)7m;2QH{%Her@7NWp{foJ z4t6v5_w(x@L3Q99G6)maz5F^mKxi}RErB#)<7J>qOCRG`FgdPR2-HYjB_n#i4IN&k zJ!@1_w_^9O4ZAZ&?-#MXA75N;F>RV0kV^jN zo&AU2?dUPK5cln`kiTx_N$PPHCq}Ldz=&b~!JjM8BHts(w4zuX*1bK}`lPEnOx#|0 z8@?8oDyMFCv1qKq)u4-tCQ_;&b7T!0*QnJYzmro?sK(}t4ud+kt=_0uqydKu_+7!t zLS6_ixNqOS6c)m||H+eMU%z^FR5jd#$Fi_h;c#bE0qW#?j|_hT63eMq-3s?znCBp; z&RZ#!>||IVwXU&hV#?bOA8WR4+r|Jna+GcmA$Ks#>u%_!2LvLkMk0n62ZIJUhC85M ziv&ZZHNBaWURdj6^H+#w{e;$6{W|Z?CP52h)~amOTCKiQ>;~_UlFZs!rNmvrF zoy)LpsSP=NQEyIAnJe|}6+sd0~0z1{6L!AmpzT$RLc{`sp{|3804F&=6oZ|Oe$XNX6LemAR1@nV>8 zDBCG`=%R)46Q})Du`0BxHOX^$6=1c`_|G?sr>gkp(@lc(7I94~$tU^wd0DFSA}DzABkNq;}XV%X<`V?5?AjFSGa z;$N>to0;}!^|7KP=I70J;zs4v7tSA$>6`2NdxnSXf8QcC?y>KYJ7092y#D;aPQ@78 z_}4}0(F?o|I(g}rp0?bp(7c9f|oHohOnb+)MV5wH+qGBsrIl_x*GCFEjF2wzru6 zVNQ!lY9swh9-;&7_Mk77G$pWNZ!5oDimsY*%IjfN{OHye#T)7HZrcQzlbk#rwlk!y`HS)MrEa{1T!Td6a=Is$!I}*j7m<@L2A|I?;<$lQ&&Nfb%3@LoqXzW zG;Vg+K3CV)PFb-+hvXW8?feA`Jf9XaQ3MBZi3g{qcVW_0J_6)+^70ybdWvKwFk)&3 zmjCB{KO^$r<$OpkaMVj8kv06lg+vf{)blhog(+rMg^A#+KK- zqoRwe7mu3N&2Ee60HYU(ftr#Q0EDWN$YC+!!Akn?Zq>ZC^wgEV>zQ!#_s4c>x|yvzl8%t~ zZV#2e+e-`3XsD#c^jFo@{nGvhy*+U(gwQsI9xwmf_e0IIs#AW)m~8bVBINh@8}v++ zH)mOwOHQ|JWAism?J1g>ocdod`7fp_n(R3oJ3CON{L$>HkJ|Ic ziN|yv;HQn7>#s#xCtSFA@kpSqsilme)|Zy@pfamxx!dv+`oHY_@?qao zWeflHBa~Vu*y=K*h`C)kMMX-Wz7Ln(bkrl`+J>{&`Le)}kSTbJ5v<4rq^r0#Utbv& z6%~qB`nGYhLPlW~Z`xVWXYB*E!-C3+=b|@Fn9bhqySJw}w-Y z#M-C1lg%^Yak_fkjS-_4eArx2Fcwc&t-G~v(=d1CmR<%? z1b3SRTR*YpN#L1QhU4BKTm%uE;!SGm=;#=6aOh6O0e<{7Caui$h^oYBrpWzY#F4Zq`yR3=@O?3(nCjdjWn1%q*ymOgpEWnS`eNz14fh5|9VL!cWv zy1IM){Ay@)6yoIGMw>?Gr*i;^IYNE=o-o;LF(=JlCn9MJ412}d`C9+e0(^S?a0da& z*{(8nW-kGsbGC>Y19>N+x*?UuXp3T-=>8N9YWaB9%&j15|Q_nhc^r-$NzSr=D5YyA8e;-Ze9JP+|fo;^SrHR!-a{NjGsi{5nH8 z{ny+3Vfso3=3a`?NUWH}B+t$uIWse`_g(|zJZwGDi3 z@%=I9Ha3Mas_S=rhpH7u0z~^d9`@OVSC3L`n$;-!uA(Dko`VCkg_tUWub(iG6`Glp zXP+`IUv6e6S(Ez{9)!a(n$N9o#`-Wew2HYSwh1+ea+YF=#xpW%cD?4^JP;vEe$%O~ zoFi>yWkJrCgxp_nan%A+`zgWNbGQW;sx>quoh6npU(Rn%0*yr$Em}Hsz)2kPcQ7FZ zkMmPF{kV*)6a6*0xosy*m_X4OURUPLY#`DhlZ5?<=yRSwKLM4H46aq&B*wiU7_JOeyO&PeXgXVB;P^QO~y`$Co&Q-++lgm1_F+m0WTCYQGQc?454 z8o8lYUhj8$S!%|}?YtAVf4>65!?!a3t`i99AOnM7jL?dp!D!I1JE`eX}f0Q}szKe=mYjYvl%7>5(*w9=-#rBsk5fuIaJC;gh?TNr!0 z(D^RXN^(~wh&zRRsi~@(eR_doVq#)DIXOpCD5jN!fjE2w9<%~6ln{@7$`o1bHk|lf z#z!3@#5q^wlDmYjtQfv1-$oliPYf^w|0`^6AexX6TSNwzQQ9wimT3TUpO^fUp;W*G z!#!)w4Gj&u>o1iP-Fv{0QmO-$MY#qkHvH#!-SWHb9T6q~mV#D{OQxSp49n)4O+X;SN3LjLpQz*=uMF z1*^M7I5qzcW}%AI=hIK&HYmDz1g*pgka5o8!V(!CoePUE_UFtKM$cB9@Wi}A_%Z`~ z_0K)9fVY02r@=nT=crQmF>9(MXz}Ss$1exbFJ8RB3c?>d(-*H_ z-+?N)oaNtVTnJ?6+jsA@tYg~?hK;vh!?_?5LDFHi$~}w}GuBq`vTJxotwOC~o<7Wv zsb2IEhEh-z??|LvfbP4+DY$0M8qL{Cp#>7R@7?pGhOWKjckI|PEs6a2mMM|5Lo1^> z!{pSNGIk2<0s293yqvjajh$)%5!o0Y0018lkSEx{Mc@I4vXjOgL?9Zq85N0yg*bigzF}5vEu$P7JYLOpt5eU5~mYn^8i$ z0d!Ja?-#D0bhfxYIcO3fGruj1s4#|D{q*|Q6QF&t6294vYMPpRVDyfq|7PLZU0$!d z;r-KL4H@r9MVJsd<$PHeC8h0P;=M+$kWh^c-BRs0s{80QYV0B~7JY>J0-K;U;$w63 z;8fd)r^!y0*ET;1>M%TI-I*n~_5t^>(BCiyN&4EiH-m92C!)LJ7d+-*Oo3L_T{i2= z@8*PzYJ$$!@83OH?~IDm?$!~MaN^guTc?}N4)Ut3tYmnBK!$%PR8VwztRHxycIjFwFlQg1` zYC?7Pkbr@<>jpt1<=uTG{GT411Iy2|w>MfBPG1OfY9X}YeT1@)!nTfW^Kb3__}QBC zpbi8k4D2JSoY-}2&?}!GFBdYR=!etDMWH34ICR43r50}Zw%SX{P>oV>lz@E*y`C+IZ zkExy!m^8xzk7lk6$7Hc&iBi|DlQU@XntYYfh+Tw>U0m@n9+9;|F~)@=FpgXQR;*Rf zVSUgkPBEL;AKVbA*=@I1?_YH{uFt!im`|pAKjY8y;@vw@(X#^0LXPd7N|zBAB2j*E zbzdlw{ExBmnoKDe`6St_XNRE9Rfg#ZTMwga5jZ%p5Qy zB#G7!Zte!GpJ*v0z78KB*)>Y-|D{2wp(~|L7T{e;O*_43?Z=H7(^*-W_$5orbMF27 z{v>jA@&3?BRN`kUG863W>;jG-|536|cE>iNC|SA*MiMN47x-G2c3%2B5{S)BWG1d| z3krMR7sDk(LjbR>liT22p!4i>M2UR$`}YUQB*ZnP+4S$E!FEw)2vBV?Qrcx2j$H_644{XX*4#!O#HG?Y8hc;jk5BuV(&y z>U*ct)~#C)l0sBxlGnZ9#Q%0NIy%}d1B!r6%Tny+;NSpfaF666`Jc}8o(Vsy{N(#R z4crxb^k}^)o+*SohuW_XHC6zp1VRhw|y|ibrzmy%9Zb|2Gh$iwOOKDuAb7;p7X@Zj@-qity3H9nYdv05?#_Xn^;B0YBi!=_~VT09{scx-(Z~ zAk)96-$08lJ6%>SiksEPy6jCZW)WeTSEgt6Gkw2Q`IuKElLte&+Tqx?(6jiv#If$- z$wAF+W7Kw7D9o5NV@6*5?++QiW|2$>Km75|$f0g&rwjhM0xz-Y_i0W=nboUT^t;Gy|4W4V0tH?*rs5)f0ZV`fKGop}WWEWyAn=Jat3}MSXJ2 z$eP1~+*@QsA+Fw|mn`1KI8s7q!Ft^*XavwHx}vb7!y0wLG=7%(o87^#|EVwXrCGQL zr)d0`3Xu2ISESSpk9mra+JNl&UdReDuqcv{W+#>Z^jtCZbF4~h)RN`P^CyRVN>kG&e+7~pw8)F*!zAlRg(bcY27v@>f5C* zvkWQg)m~Qc+N_ruj*e=4y%<@|HCFF!kPtsia1ed0XfMQto}Hgj^!CI@UJT7nQV5WW zlYM+7DDS`0`zn48M8F_zJNRMywr$&DS92eGCAp3r3)fr!K>24GX(Ds&*SF=LKRjRk ztrrIBjd~qC3C99K=1h0ts(h6SoN?x|4!P?;{27Ni>CelWnwFboivYu@lrKg(VxSf?BIq!gRd;Cv$$Wm4f;&f2n3a*C8HZ)4QxsRmf$(`aHXKr19yz zKn|q*imuFkJdUWslSXi{T)0U*7lz8G4(-+Jn8sEQxkj?^hnLnm5zqq%*yWs>6~4w| zT2)bNbFA}0vjKBb?F(a0Ev?ACRbsPVCD1Noka=hp7c`Gd7oeF`;h3zZf_lN!c$=e{ zWmgfjh{P42*RQ^VcSD9-cgs4Q!x@D{&ehIk^=b>K@tNCxRA21?GCO9=k4pvn2S$iq zfb8+-8Vl2Re<=-fyWjU}-H^RY+xu'Ot_j1hZbS_wS*y00XGVZ)rJT>J86S=08Y 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 z zM-LcGr@+|NG@1X)KY!Px6c*Z1F24wV(|6b~N6yp2lP=sAlih!?^>T}@HyFI8`O-Lc znKi~Uwvca>2&*>!@@Y7PY1Q)J!?aSYW-#Ou$MXC^y-z0 z8x4QzI+xCTn9@FylS-1;jkf_}*$?@bQ8km|Y>G1EbZPxrLN`?n2`BY&s`}Q4$-F3F} zU(g!7=$9f7F~(f*{r5&ghS(5iRok_*pFMkzkFT#kAaUB93+~v&F1r1rv-8eW#}w%t zUD6yG$r|?WZ%LE3O_$fZD)YYk$&nvM^A^R94a&v>RB3N7mRouAP0SwT7ZI zwmUK4;T2A+R^Q>nKLy`0kB!tDy^)1L6BjI4kX2NOkY@gIXQhja0r!uOE6kF{SJw)^ z+7O)el8Jw-R!bwS$|V(80qOf5ALV>VQZgZi*_=cu6K6yYS*@H z0kxyLy82=I!&yIhdnW-F`2{VxlMv2$vu2X#>!5wN0o{rKCtAro#}=gGH{Y8#Z`w1L z>OcA)gL8}wvhE|0DWqkNiHt1txIorV;XS7kJCP}2L0^ALB+ocHDr#QoNhk-ax0Iu9W^tKx8?>}qE*Ove}8{&=C+L+ zH9N9=6x_-SE?bex9?-L;BsDJZKJjY}2 zm_S!(t?&N&D_U1wL!)F;XK*C-u3Zmut!KYr8tVVDu>Ys}`fA9PC&LYKDz*dwI9>yn zOB+UF(cQb(%gWqHk)$d|H#fKV*84dAMg%HiX5fo4#DOC0vc&TDC3S38=1jr{E#O@W z`-IP**VGiBoQ##$qNQs{hkW&(EuvcwENvKqk@;r6i5cBne_dVu5hGlAI9WAlE`P;j zFXRWMqhra@$6snbjHy6sIqCEmp6rn;4e`UR&+oDJdGbR5O8uwR)xNV#wfps(I4Rzi zZYDE)zO%6g6sPGVimVEZpW6+J4DT&we0oJJi~v$#J|+kSx%mO^ZtFO!m`NIA3p|gw=Ie0nWb+at3@6P zYN(#Gvhvi2^FTSb9RJj_!hl$^1k~9OKbltdiba+Es7gpQJsV_}weh@O?Wka2uQXzY zA@_{1bcdg2&=O-+XU!@?Tj~`mcYnOlVs`AfnV&zC-($aGMFvf*_wE)!Gbvi+n3LNL zbagEV@KME!?$MzcA>`gQT`#=PSaxLli3rZj+_PMtY(M}gN}Y#ff_1Zp^7fUL>n0&PizjKHHKBM&l;;HDJE z#1Z02Hq+>~i}>vM!*EN)XAN{aqr@>hnCk{YP2oDHof)}YO-=0(n3{w`9&Z7w`^=yz5O2Nd zf%Ee7cj)rTGk8Z)9V}nE^fupFX=4*dhTt8YEGyF(x%5LgBKb!qZEkM3aaSDzt)cbe z-gy=140JhRK~AEyaI~|FB>x**@g?kdm7pse0#+~>J=%>i&aW$e3|>c*X*T}x@^@sUwg3~36FX(igzFp zV^`uT9BnRPCY_-J2kU7?MSNb~RKDI+M(ymLtMuoYTm9&yar651ZMw693d@G;Fnv+- z@=-6r(Mo_pEW7tub$*P5?3Z$>?2UU+WA*!KJgL7h|rjItxI9@OHzvi9tf%7VI<7W;DyQ0&&b!%L_K3CkRCJ>sL znPs(JJ#3})LgVKBb9TX^nG>yMMY(10Yei1^rGqVJ-tN{?eqlYR_TjWc@-vS|{p3Hl zm1et!kCLC&e!rzw{;S>eqawJq{Gv_M{~Gs*3sopoI?0cn1ODsBwK?*|6fLym$N%9E z{;z-hzx~1g^^gA_Kljn&9dgG0)i`5Ml+V5XSvTYhSXs`n KI6A>&-G2Z~L{NbM diff --git a/doc/img/DOA2_plugin.xcf b/doc/img/DOA2_plugin.xcf index f4c6962ca9d66ce8ea989047ffc4114b9ceda2af..02ac84aa7a82cbdb169c3d2ade18e1bb1fdb7a70 100644 GIT binary patch delta 10768 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 delta 5032 zcmdtke{9tC9mnze-jB}-u0nzCL@Wdeo*27~X+7Dff(8$wh$Y~SZ8+IdE@YAg4LQ3E zzi9-|8j+R;z7!}>DxO>^u|YUtV?r9ZVb*L2>{^i+qU=&51~ho3OujkNz{ntyr z_xQYD-`}6__w)UJ-&!|r|Jhrb9<+YY{m>6BE8Fr5t9rCq*W~;5&vYbOvex*Z-wmD0 z4%4)6fxoz|W$#=6ws+Qiv!K7v=L=N3bx_&PdQY?NDSR5A!_}VN-}QCfDzi-apDN|? zAIaVs^1ZY2pS?cYYxNyc(0`|V|FAq8kRMK$pS~x*tn#!%5oxZ<8}60EO7g}hlRZ!yDyeFUs0C@B_Kvv`ny_ z-~2)KGxkktG_c|3zp8%ypzQuwzO5dzj%-t%XUBP6XzSgVl=o(3pSs-oOxyEU4)=2Z zqwmN+ZkKlFBsF@QWuFej|MA~df5M6vkEy<-F7$tu^6J1C9avzd&M@%1xblt6@A--9 zPb~TQ5zpXoT^c)BUZ!B2u4!=6&sA5c>w@=BR{eObtkZ!6pIfK8F(%jVkXvq-uj>qh zZ(db>;B9%NT)ul?NZS`YRaEdVb!G69Zo=Sy?(*`GH9?jwk`?#M@qd$1oj~ZvI^fWB z9bjmd?y1oHGg_{0w*0-3_4m5kK3{0Hx-Rr8JKWHz1=`wWrXcr@k-2;1U#82R_44?5 z`40`dP`^e`==}xCKhVt?x-h8vQkS=XUubZzg0DW3S8wz*);wuinQms5|+YVFAU>{-<{X>{a+XEpxKY<01j*QXitS>e~}QnR!}`Ot-}5mU|vo4`_a4_&yp#Pd%T{H2xMf8cgFm)EDK;<8aOkrw^r1AF|xZ?@j@C z3g%893f(c_Z)$P=+hK08n>2zH;QdebWc?xhU0D&JU=P8cJ|cAOYBC+8%n zlbG_fjguyDFoQYFV*!g;lAFR9!6?QsjtNX+YDn8>Hl+z1%wP`lSimBdWNR2B7{wUI zF@Z@;xw<3Ew5ACh%wP`lSimBd< z#Tdphfk{j;vbLlN9L!)2^H{(lmgLqjMlgyojAH_mm~#8y{h6(4bTETC%wqwISdwjF zj9?UF7{>%A(N57wqk|dDVIB)u#FE?=#t23+hH*?_Qrg>61Zi|IgE`D&0gG6Y+rt>a zD8?|32~2w0W_yYtjSglohj}bu5leDM7$X?P7{)Py$syhGzavGEMh7#P!#ozSh$Yz` z#t23+hH*?_(sgM3x2Fiw=wJqOn8yMZu_SkfF@jNyVH^{f^!c7}n`UQa(V-%zmxHeQEsv#i7qD^P0YrOxGH%(8Y_atBrcMr}uY#UH3q< z^_rhug$>AdvW?Vhv6%-f^;^cQIc(Hd*(h!~L0TH}1!Sco>hOzNSp} z1a&W-WvZJEZ%7={!kr2K(_Gp2rI~fEV#HUco`UCihqv!eLnEI`n|qQ%+EU zW3dt^;$)nHRX7!^aT?a(Oq_*taIUw1_W)`M7UCjYj7zW%m*H|;fh(~dS78IL!A4xm z_}|k^umM}K4cl=S?#3?c#{GB@593ihh9|I>@xSLJ!5Qqwb9f#v-~e94%XkF`@tW+i zFoeUALsS8ZDxF@$=P_o-19&0 CkQ{{o diff --git a/doc/img/DOA2_plugin_settings.png b/doc/img/DOA2_plugin_settings.png index 98f0ebec1d10c8b6ace8d8f3c84fe5d5e15093fa..15d2b32132abdd20f3683ea87488477c002a76dc 100644 GIT binary patch literal 11187 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 TznCb3aDU_z*~b{M=WqW5GpJXd diff --git a/doc/img/DOA2_plugin_settings.xcf b/doc/img/DOA2_plugin_settings.xcf index 66f6240954379800602ba2eba1597fa96e2d207b..744138f90660db8f5254361fad958d316a0731c2 100644 GIT binary patch delta 8995 zcmc)Q3sh8f9tZF{cODF*D5QYG7$SK?@&vvsGSs7jMfG0O7+*tqA0MJX${xs-`qQnbFJsNp|iPz-sBE7a);Zw34h|I ztmfX0eloW5IO|_r=Uncz2bcqe(mI}4w3}Nyo_p^MgWyNSaNiUyxK{Ny@dsBl%L!1)QBS17vR8GeS=uLu2*+0hrE~6l7dO@cd+1t!C z30^m86i8ml?HSgEZIPO^wbLFZn*{Bc-tB30n*^QPC};;wZtXDXif%WG?yH|3Y;==t z8tdFzBiRum(S7B}hezD*Mp{66X*9S!ha0X1Mz{7JZ*{rReYo+hL+yJxM0?Q=8OY}_ zqo6jrdEy97&_-7eH#Qt1JLj=>#EWIgK8_g3;FO*T;bhpY0n3hG`s(#GGH&u!J>5fe&i$^H?p{3iN{Ko0BNM^U}dclmGqNQW~2CkNtqCsb^~p2n)X? z;ni(^sGXthkMZucNZre0wO;F^PZ88@S|2h#vNv@fNeJq8Et1EVR+0v0(%_PXCp;l% z$=DY2-dls7J%0JZn@;8PgrRKGS18~8QS$S@c1m!))+(cx1@-ef&O@KS!$a^R_=O_% z3y{70^3Xd9O3(od;XGIaSHKPMWw;N%3s1xExfYIK@nsvbVCjp3C@4V(EQIr54O{^? zaJzmEvB0`|c+-U)4R6g5^5d?q3>9ah6f;M4F0Sg*`aY*prYuaM1sgkUX(h3 znb9!v?mXpRvO_*#S@*WUhVLfBCvTmb47;Ps9c^$M>eImnyV>x4Wr2T(|JM{qzi_Uv zPl0QLvxiREnbKVsPcPvvMO>*9eFw7(wr?7{VEayYO)*sI{d)3~@7iaNPuU{x8ORgX z26z~L49~Dd?mvTv{`g16pBy>*@?Q?u!<`V_`5#4m3Z8=+H=sKVfsx$6`{CP6S?Gmv z_A28Ay#x(l@y!F2=^_7hhw$bOJJ_FGL(ZJvc#dy1K=SQ7e$w2k!w&YBKnBp^v)bzD zCs-B95<}LY#h+}`n5@E0>{wb~qoq$tfWoXFUT%~pQ;l>yx65UB#d2(Lq;m+Q-fStJ^b}zzbbb9?YD(rE(WcF z8{iJOn_Pbbl_&d^$^G~7RR4G3Y4|;N07n?$i?}b0f)aGVLO72b{ycXe9z+IyfcQ)1 z1YzJso)~0+Jz;+s3&+45I14U>kK_Jlm1}YDX-0AINp_G1x3GgW#Fso^^mRpqd?boC zGdoB&bU571I~a}~5ATaOg8d^Exr~RAYaxzdg%Hcv-1DCOxNVM`WF#;yS zbXWkZ;KOhkTnl%=JIY z0CC^vEM_NO4*N|*5ON;n#W^@UIU5o0g8Shy*aXjWb9K-UhQer=0<+*urYuZ8$`g}M z!E;dK=68o7FcRW>F|P~$qg!w?vW6VKqP7#C;~ zr#{IhVd^G!=1qN_{@UYe%-kZ1(;s3pG5uBEu=ICuDa7wor5o8y%)tH%vA;s>uP~BV zFHDA+a0Z+UWw;!!hdW^dJjyM?j1>Qw#j;T1!wX9Kz@ab+X25B14#f8=c?$75SO@pQ zM)(>04yx1`K`8a%iPAoBC`^JGa2izRC4S=iAm_BvdW2-?6--CozK)p-7M9HFn?7@K z$-RBUqLnt?b0%RJDVa`xs*`(=t#+@ny*C2!T0aJ!E8{CvShR%4i&nu65SLpTU2jXa z%V+cQ3be1pDySs+akQv%Bd<_-f;*>~TaB+=jiJMXPpybZ4jsdya&wMa z9+487#@dycv(+-zPKm0CG4_|_AM1CM`fR&?*QqOQH~OttH`sn@zp-jmyMDvfuy*}U zQ18BFzcLx`^+`(}ojfKv?WW1Sb>`Q%lx>~7Q=v}s*yDU{L!>tQsNyQQ`*XIUFZBx&@ zcu|yEA3R%-vaC5xBsI#7IW5&KuT(l8ZaSdPvDiGrl6<7Loa_o(Z&tM=jn|x_Oe&Tc zvpwzu`fPRf${aDf%V;g8yX2|3Xq4Kt>#|+y?1t(F`A7P8l<**?bHl9 zl2XGYwLn|oJ*i9Djh1PTU2xKtC59|D`^pmUEVBQYMAnp~=U0%A&z6u6*;Zn7kiQM+ z9cuBO9MNH=dnV&s-IOoQYb|D77#%J1F7K(#d+5wx^^PE^dEJ$(+LbFgshhvKcxEXb z!7Ni|YxTkA)~3}CeI`9(#eNehMSdCWnCX{J4s~qa6yFKN_=G&)!U#$B*kgU^RYsD3 zFf*MqG4hYj3>kkXOpN@aGt)T}Bhv}`pEJ`r6C-zg$=ue7kvqO*ZtKLz9bYmxCWc&o z$%V-lXSYagRmGzcyrs7M(xNzTNtf@bv=JtA@;ntZ%Js}{M~Fq6f)v`aa@okab=#S>x_rJq^;xF7k^yfZ}KT)p2Gs>EDo?nNb0bUrvuYV%TFv^@pl@nAbWg56f=t>|`Z7Vj`yI0Qyg6Uh!@kcfvPVKPjG_rM8U@;{lJerCAR^vrYr1t^=RApigX delta 4940 zcmciGeN0tl9Ki9zxz`uo>N4PhcvBHYKr{%5(n~?t%oK(%WC7|los~)1uy^a2XfqH+ zo@#0KHhWh#+;OeY4AYvKEt<~xLJMbGX4*8Zq0#7^=l6}#KP_5yx5MZBe&;;DbI$WT z_nvd;ZZ|vMG#hRTi`f>653|Bf8~W3~UG!ZLdfwDHnc_ z_#|EsBRm+3DVQThR^k?|WkmieiKr>~BK{yokH)G#C*tEoe4L1n z6Y+)I{c{b&H$xiw=3_P1pu){)tEx#yBf_sSqNirNi@L#|7cc9U*=ktsmKJAAOSWq8 z=S9mpThw8HL40(ovo*D6-)<-B&Q>Qz=BcWLftFjrFf3#FRLfH+>Z&@|Las$x>s%^1 zD(YM}x$a*3{k?k5f&blteXXaj{Qtb-KcArWNB95pF8p)BKGw6A|Mz43S10Inf8Qs~ zUlr_YJ!b#^KM4n98vUkbTF##=BdpJhZtS$R%sGbTmTGYqr&1r6d11Pt+qkDxsuQI; zrTV$IxNp{K5 zc#r8{();$}-zvX`ffw*~Y{s4X_L6W>!bC5|;RtkofZb2x1T4b^xD;37v-mo0$Gvz6 zztvhs;zdae@?sp0z+9YwWw-#Bib*evgLxDfe1!NEc8Y<4nCR*h52TT}4kzIqcsD+R ztDW1+CAB2}S^L3}v-_DtI`n`H>Cyu-G)}dLhS_PO51Z!jsNMrIoVw{zQYT%XfMKL_ zq3K!ffMldJ$mWz+k?~4tC2qqG)ja$@E7dPy>P&oI9MvVJakR7maV7?_7-!*PT!w3K z6K=(w+QCNJ0TS(a2D|8{EW0UdLw|F0neL|1OPp>>2wSbE?eqDara5*~?_L^vM4IO< zMtVJOC2@nEwpqg@%*w(-oQiXC2`+Z#?_g&xm}XTi^2eAVi1dQ7UL0TCl{>hZ{}~;{0I0M9>wqRl2{Oq zgD@Sh$6K)+@6lSu4SOU}comMp0xZGV$ZJC(*Hu_g{v~X}5Ah598qeZyuFhZ-MN6XS zDjb6aSc0>$%C4F;d4L)EL=QsfgdT*@CHrjYFQ)o#;>bZE*|DS)EAcM3$JO{-mRnN} zN@~hUydV~PFcwoV2Ps`VgLpnxV+|_Yj5hAk<`~5XNu0zBVu=T1F$Hs&fnIyzZ3+F& z(mH+drElqrFa5~2D|eaZbgTCaoW4WaRy>9ExB=gA_D--kVi`v)@+LiQ|BM*c{Q!%HMuTU_O2U>ywcU>JA3=B zSszP!QImK-v%i||dbC;cPtsj0coVG2k^D*qbLBS@ui~UvUoCMhlfL#|V%pc%>3FL9?)bmyEHZnI^*qWco{&_Tv{Q3& zvF`ZBtr9jets1uzzmGey75CykJb-O@2zlgaY$xu(Z}F7YG8)g2IENRp6T3tu7|KgL o5TnqCahQk!9EKw>%{ABgzf&fOEOc`2M_q?OEW`0ar;Rx&QzG diff --git a/plugins/channelmimo/doa2/doa2gui.cpp b/plugins/channelmimo/doa2/doa2gui.cpp index 0f263e33b..15fbd3d48 100644 --- a/plugins/channelmimo/doa2/doa2gui.cpp +++ b/plugins/channelmimo/doa2/doa2gui.cpp @@ -387,6 +387,22 @@ void DOA2GUI::on_fftAveraging_currentIndexChanged(int index) setFFTAveragingToolitp(); } +void DOA2GUI::on_centerPosition_clicked() +{ + uint32_t filterChainHash = 1; + uint32_t mul = 1; + + for (uint32_t i = 1; i < m_settings.m_log2Decim; i++) + { + mul *= 3; + filterChainHash += mul; + } + + m_settings.m_filterChainHash = filterChainHash; + ui->position->setValue(m_settings.m_filterChainHash); + applyPosition(); +} + void DOA2GUI::applyDecimation() { uint32_t maxHash = 1; @@ -432,6 +448,7 @@ void DOA2GUI::makeUIConnections() QObject::connect(ui->baselineDistance, QOverload::of(&QSpinBox::valueChanged), this, &DOA2GUI::on_baselineDistance_valueChanged); QObject::connect(ui->squelch, &QDial::valueChanged, this, &DOA2GUI::on_squelch_valueChanged); QObject::connect(ui->fftAveraging, QOverload::of(&QComboBox::currentIndexChanged), this, &DOA2GUI::on_fftAveraging_currentIndexChanged); + QObject::connect(ui->centerPosition, &QPushButton::clicked, this, &DOA2GUI::on_centerPosition_clicked); } void DOA2GUI::updateAbsoluteCenterFrequency() diff --git a/plugins/channelmimo/doa2/doa2gui.h b/plugins/channelmimo/doa2/doa2gui.h index 09ea9c0ca..db099aaa4 100644 --- a/plugins/channelmimo/doa2/doa2gui.h +++ b/plugins/channelmimo/doa2/doa2gui.h @@ -106,6 +106,7 @@ private slots: void on_baselineDistance_valueChanged(int value); void on_squelch_valueChanged(int value); void on_fftAveraging_currentIndexChanged(int index); + void on_centerPosition_clicked(); void onWidgetRolled(QWidget* widget, bool rollDown); void onMenuDialogCalled(const QPoint& p); void tick(); diff --git a/plugins/channelmimo/doa2/doa2gui.ui b/plugins/channelmimo/doa2/doa2gui.ui index 4df4a6c1e..91adcd24a 100644 --- a/plugins/channelmimo/doa2/doa2gui.ui +++ b/plugins/channelmimo/doa2/doa2gui.ui @@ -324,6 +324,22 @@ + + + + + 24 + 24 + + + + Center in passband + + + C + + + @@ -588,12 +604,21 @@ + + + 40 + 0 + + Half wavelength (mm) 00000 + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + diff --git a/plugins/channelmimo/doa2/readme.md b/plugins/channelmimo/doa2/readme.md index 6495ba2c4..cbadd93c0 100644 --- a/plugins/channelmimo/doa2/readme.md +++ b/plugins/channelmimo/doa2/readme.md @@ -87,6 +87,10 @@ The slider moves the channel center frequency roughly from the lower to the high - **1**: centered - **2**: higher half-band +

A.8. Center filter in passband

+ +Use this button to center the filter in the middle of the passband automatically. This sets all filters to center i.e CCC... + The resulting filter chain sequence is represented in (A.3)

B. Scope display

From 252379d5939848543e7ca3969905ef0cef07723a Mon Sep 17 00:00:00 2001 From: f4exb Date: Sun, 29 May 2022 12:10:24 +0200 Subject: [PATCH 15/15] Updated versions and changelogs --- CHANGELOG | 12 ++++++++++++ CMakeLists.txt | 4 ++-- debian/changelog | 12 ++++++++++++ .../beamsteeringcwmod/beamsteeringcwmodplugin.cpp | 2 +- .../interferometer/interferometerplugin.cpp | 2 +- plugins/channeltx/modfreedv/freedvmodplugin.cpp | 2 +- 6 files changed, 29 insertions(+), 5 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 808e0c97c..40ff5e044 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,15 @@ +sdrangel (7.3.0-1) unstable; urgency=medium + + * New Direction Of Arrival with 2 sources MI plugin. Implements #444 + * Upgraded codec2 to v1.0.3. Fixes #1256 + * FreeDV mod: improved output power + * FreeDV plugins: fixed spanLog2 GUI connection + * Fixed Interferometer and BeamSteeringCW absolute center frequency display + * Fixed Interferometer and BeamSteeringCW MIMO channel plugins + * Fixed Mac build. PR #1257 + + -- Edouard Griffiths, F4EXB Thu, 26 May 2022 03:12:00 +0200 + sdrangel (7.2.1-1) unstable; urgency=medium * AMBE feature: fixed many errors preventing build on Windows and MacOS. Issue #1254 diff --git a/CMakeLists.txt b/CMakeLists.txt index 32ee35ff3..4c9eaf019 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,8 +15,8 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON) # configure version set(sdrangel_VERSION_MAJOR "7") -set(sdrangel_VERSION_MINOR "2") -set(sdrangel_VERSION_PATCH "1") +set(sdrangel_VERSION_MINOR "3") +set(sdrangel_VERSION_PATCH "0") set(sdrangel_VERSION_SUFFIX "") # SDRAngel cmake options diff --git a/debian/changelog b/debian/changelog index dd9b651e2..47b755139 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,15 @@ +sdrangel (7.3.0-1) unstable; urgency=medium + + * New Direction Of Arrival with 2 sources MI plugin. Implements #444 + * Upgraded codec2 to v1.0.3. Fixes #1256 + * FreeDV mod: improved output power + * FreeDV plugins: fixed spanLog2 GUI connection + * Fixed Interferometer and BeamSteeringCW absolute center frequency display + * Fixed Interferometer and BeamSteeringCW MIMO channel plugins + * Fixed Mac build. PR #1257 + + -- Edouard Griffiths, F4EXB Sun, 29 May 2022 10:05:21 +0200 + sdrangel (7.2.1-1) unstable; urgency=medium * AMBE feature: fixed many errors preventing build on Windows and MacOS. Issue #1254 diff --git a/plugins/channelmimo/beamsteeringcwmod/beamsteeringcwmodplugin.cpp b/plugins/channelmimo/beamsteeringcwmod/beamsteeringcwmodplugin.cpp index 5dfeb6ec4..9a02d526d 100644 --- a/plugins/channelmimo/beamsteeringcwmod/beamsteeringcwmodplugin.cpp +++ b/plugins/channelmimo/beamsteeringcwmod/beamsteeringcwmodplugin.cpp @@ -29,7 +29,7 @@ const PluginDescriptor BeamSteeringCWModPlugin::m_pluginDescriptor = { BeamSteeringCWMod::m_channelId, QStringLiteral("BeamSteeringCWMod"), - QStringLiteral("7.0.0"), + QStringLiteral("7.3.0"), QStringLiteral("(c) Edouard Griffiths, F4EXB"), QStringLiteral("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channelmimo/interferometer/interferometerplugin.cpp b/plugins/channelmimo/interferometer/interferometerplugin.cpp index a163b6682..584fbd681 100644 --- a/plugins/channelmimo/interferometer/interferometerplugin.cpp +++ b/plugins/channelmimo/interferometer/interferometerplugin.cpp @@ -30,7 +30,7 @@ const PluginDescriptor InterferometerPlugin::m_pluginDescriptor = { Interferometer::m_channelId, QStringLiteral("Interferometer"), - QStringLiteral("7.0.0"), + QStringLiteral("7.3.0"), QStringLiteral("(c) Edouard Griffiths, F4EXB"), QStringLiteral("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channeltx/modfreedv/freedvmodplugin.cpp b/plugins/channeltx/modfreedv/freedvmodplugin.cpp index f2d036766..b83c58296 100644 --- a/plugins/channeltx/modfreedv/freedvmodplugin.cpp +++ b/plugins/channeltx/modfreedv/freedvmodplugin.cpp @@ -28,7 +28,7 @@ const PluginDescriptor FreeDVModPlugin::m_pluginDescriptor = { FreeDVMod::m_channelId, QStringLiteral("FreeDV Modulator"), - QStringLiteral("7.0.0"), + QStringLiteral("7.3.0"), QStringLiteral("(c) Edouard Griffiths, F4EXB"), QStringLiteral("https://github.com/f4exb/sdrangel"), true,