From a85731d3f7a225f9b6704cd3215e99c6b781b8ef Mon Sep 17 00:00:00 2001
From: f4exb <f4exb06@gmail.com>
Date: Sun, 12 May 2024 23:18:16 +0200
Subject: [PATCH] Interferometer: added localDeviceIndex and play to API

---
 .../interferometer/interferometer.cpp         | 24 ++++++----
 sdrbase/resources/webapi/doc/html2/index.html | 10 +++-
 .../doc/swagger/include/Interferometer.yaml   |  9 ++++
 .../api/swagger/include/Interferometer.yaml   |  9 ++++
 swagger/sdrangel/code/html2/index.html        | 10 +++-
 .../qt5/client/SWGInterferometerSettings.cpp  | 46 +++++++++++++++++++
 .../qt5/client/SWGInterferometerSettings.h    | 12 +++++
 7 files changed, 110 insertions(+), 10 deletions(-)

diff --git a/plugins/channelmimo/interferometer/interferometer.cpp b/plugins/channelmimo/interferometer/interferometer.cpp
index 8bddf5073..1330edbf2 100644
--- a/plugins/channelmimo/interferometer/interferometer.cpp
+++ b/plugins/channelmimo/interferometer/interferometer.cpp
@@ -554,6 +554,12 @@ void Interferometer::webapiUpdateChannelSettings(
     if (channelSettingsKeys.contains("gain")) {
         settings.m_gain = response.getInterferometerSettings()->getGain();
     }
+    if (channelSettingsKeys.contains("localDeviceIndex")) {
+        settings.m_localDeviceIndex = response.getInterferometerSettings()->getLocalDeviceIndex();
+    }
+    if (channelSettingsKeys.contains("play")) {
+        settings.m_play = response.getInterferometerSettings()->getPlay() != 0;
+    }
 
     if (channelSettingsKeys.contains("filterChainHash"))
     {
@@ -603,6 +609,8 @@ void Interferometer::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings
     response.getInterferometerSettings()->setLog2Decim(settings.m_log2Decim);
     response.getInterferometerSettings()->setPhase(settings.m_phase);
     response.getInterferometerSettings()->setGain(settings.m_gain);
+    response.getInterferometerSettings()->setLocalDeviceIndex(settings.m_localDeviceIndex);
+    response.getInterferometerSettings()->setPlay(settings.m_play ? 1 : 0);
     response.getInterferometerSettings()->setFilterChainHash(settings.m_filterChainHash);
     response.getInterferometerSettings()->setUseReverseApi(settings.m_useReverseAPI ? 1 : 0);
 
@@ -613,8 +621,8 @@ void Interferometer::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings
     }
 
     response.getInterferometerSettings()->setReverseApiPort(settings.m_reverseAPIPort);
-    // response.getInterferometerSettings()->setReverseApiDeviceIndex(settings.m_reverseAPIDeviceIndex);
-    // response.getInterferometerSettings()->setReverseApiChannelIndex(settings.m_reverseAPIChannelIndex);
+    response.getInterferometerSettings()->setReverseApiDeviceIndex(settings.m_reverseAPIDeviceIndex);
+    response.getInterferometerSettings()->setReverseApiChannelIndex(settings.m_reverseAPIChannelIndex);
 
     if (settings.m_spectrumGUI)
     {
@@ -754,12 +762,12 @@ void Interferometer::webapiFormatChannelSettings(
     if (channelSettingsKeys.contains("gain") || force) {
         swgInterferometerSettings->setGain(settings.m_gain);
     }
-    // if (channelSettingsKeys.contains("localDeviceIndex") || force) {
-    //     swgInterferometerSettings->setLocalDeviceIndex(settings.m_localDeviceIndex);
-    // }
-    // if (channelSettingsKeys.contains("play") || force) {
-    //     swgInterferometerSettings->setPlay(settings.m_play ? 1 : 0);
-    // }
+    if (channelSettingsKeys.contains("localDeviceIndex") || force) {
+        swgInterferometerSettings->setLocalDeviceIndex(settings.m_localDeviceIndex);
+    }
+    if (channelSettingsKeys.contains("play") || force) {
+        swgInterferometerSettings->setPlay(settings.m_play ? 1 : 0);
+    }
     if (channelSettingsKeys.contains("filterChainHash") || force) {
         swgInterferometerSettings->setFilterChainHash(settings.m_filterChainHash);
     }
diff --git a/sdrbase/resources/webapi/doc/html2/index.html b/sdrbase/resources/webapi/doc/html2/index.html
index eb33f0050..352dfefbd 100644
--- a/sdrbase/resources/webapi/doc/html2/index.html
+++ b/sdrbase/resources/webapi/doc/html2/index.html
@@ -8509,6 +8509,14 @@ margin-bottom: 20px;
       "type" : "integer",
       "description" : "Channel B gain in centi-Bels"
     },
+    "localDeviceIndex" : {
+      "type" : "integer",
+      "description" : "Receiving local input device set index for correlated IQ"
+    },
+    "play" : {
+      "type" : "integer",
+      "description" : "Run correlated IQ samples transfer\n  * 0 - stop\n  * 1 - run\n"
+    },
     "useReverseAPI" : {
       "type" : "integer",
       "description" : "Synchronize with reverse API (1 for yes, 0 for no)"
@@ -58960,7 +58968,7 @@ except ApiException as e:
           </div>
           <div id="generator">
             <div class="content">
-              Generated 2024-05-12T00:06:46.949+02:00
+              Generated 2024-05-12T21:57:44.126+02:00
             </div>
           </div>
       </div>
diff --git a/sdrbase/resources/webapi/doc/swagger/include/Interferometer.yaml b/sdrbase/resources/webapi/doc/swagger/include/Interferometer.yaml
index 5159e3908..90e85483d 100644
--- a/sdrbase/resources/webapi/doc/swagger/include/Interferometer.yaml
+++ b/sdrbase/resources/webapi/doc/swagger/include/Interferometer.yaml
@@ -18,6 +18,15 @@ InterferometerSettings:
     gain:
       description: Channel B gain in centi-Bels
       type: integer
+    localDeviceIndex:
+      description: "Receiving local input device set index for correlated IQ"
+      type: integer
+    play:
+      type: integer
+      description: >
+        Run correlated IQ samples transfer
+          * 0 - stop
+          * 1 - run
     useReverseAPI:
       description: Synchronize with reverse API (1 for yes, 0 for no)
       type: integer
diff --git a/swagger/sdrangel/api/swagger/include/Interferometer.yaml b/swagger/sdrangel/api/swagger/include/Interferometer.yaml
index aa26b07e7..6bac1c0c2 100644
--- a/swagger/sdrangel/api/swagger/include/Interferometer.yaml
+++ b/swagger/sdrangel/api/swagger/include/Interferometer.yaml
@@ -18,6 +18,15 @@ InterferometerSettings:
     gain:
       description: Channel B gain in centi-Bels
       type: integer
+    localDeviceIndex:
+      description: "Receiving local input device set index for correlated IQ"
+      type: integer
+    play:
+      type: integer
+      description: >
+        Run correlated IQ samples transfer
+          * 0 - stop
+          * 1 - run
     useReverseAPI:
       description: Synchronize with reverse API (1 for yes, 0 for no)
       type: integer
diff --git a/swagger/sdrangel/code/html2/index.html b/swagger/sdrangel/code/html2/index.html
index eb33f0050..352dfefbd 100644
--- a/swagger/sdrangel/code/html2/index.html
+++ b/swagger/sdrangel/code/html2/index.html
@@ -8509,6 +8509,14 @@ margin-bottom: 20px;
       "type" : "integer",
       "description" : "Channel B gain in centi-Bels"
     },
+    "localDeviceIndex" : {
+      "type" : "integer",
+      "description" : "Receiving local input device set index for correlated IQ"
+    },
+    "play" : {
+      "type" : "integer",
+      "description" : "Run correlated IQ samples transfer\n  * 0 - stop\n  * 1 - run\n"
+    },
     "useReverseAPI" : {
       "type" : "integer",
       "description" : "Synchronize with reverse API (1 for yes, 0 for no)"
@@ -58960,7 +58968,7 @@ except ApiException as e:
           </div>
           <div id="generator">
             <div class="content">
-              Generated 2024-05-12T00:06:46.949+02:00
+              Generated 2024-05-12T21:57:44.126+02:00
             </div>
           </div>
       </div>
diff --git a/swagger/sdrangel/code/qt5/client/SWGInterferometerSettings.cpp b/swagger/sdrangel/code/qt5/client/SWGInterferometerSettings.cpp
index ba9e6e732..6a3477994 100644
--- a/swagger/sdrangel/code/qt5/client/SWGInterferometerSettings.cpp
+++ b/swagger/sdrangel/code/qt5/client/SWGInterferometerSettings.cpp
@@ -42,6 +42,10 @@ SWGInterferometerSettings::SWGInterferometerSettings() {
     m_phase_isSet = false;
     gain = 0;
     m_gain_isSet = false;
+    local_device_index = 0;
+    m_local_device_index_isSet = false;
+    play = 0;
+    m_play_isSet = false;
     use_reverse_api = 0;
     m_use_reverse_api_isSet = false;
     reverse_api_address = nullptr;
@@ -82,6 +86,10 @@ SWGInterferometerSettings::init() {
     m_phase_isSet = false;
     gain = 0;
     m_gain_isSet = false;
+    local_device_index = 0;
+    m_local_device_index_isSet = false;
+    play = 0;
+    m_play_isSet = false;
     use_reverse_api = 0;
     m_use_reverse_api_isSet = false;
     reverse_api_address = new QString("");
@@ -114,6 +122,8 @@ SWGInterferometerSettings::cleanup() {
 
 
 
+
+
     if(reverse_api_address != nullptr) { 
         delete reverse_api_address;
     }
@@ -159,6 +169,10 @@ SWGInterferometerSettings::fromJsonObject(QJsonObject &pJson) {
     
     ::SWGSDRangel::setValue(&gain, pJson["gain"], "qint32", "");
     
+    ::SWGSDRangel::setValue(&local_device_index, pJson["localDeviceIndex"], "qint32", "");
+    
+    ::SWGSDRangel::setValue(&play, pJson["play"], "qint32", "");
+    
     ::SWGSDRangel::setValue(&use_reverse_api, pJson["useReverseAPI"], "qint32", "");
     
     ::SWGSDRangel::setValue(&reverse_api_address, pJson["reverseAPIAddress"], "QString", "QString");
@@ -214,6 +228,12 @@ SWGInterferometerSettings::asJsonObject() {
     if(m_gain_isSet){
         obj->insert("gain", QJsonValue(gain));
     }
+    if(m_local_device_index_isSet){
+        obj->insert("localDeviceIndex", QJsonValue(local_device_index));
+    }
+    if(m_play_isSet){
+        obj->insert("play", QJsonValue(play));
+    }
     if(m_use_reverse_api_isSet){
         obj->insert("useReverseAPI", QJsonValue(use_reverse_api));
     }
@@ -315,6 +335,26 @@ SWGInterferometerSettings::setGain(qint32 gain) {
     this->m_gain_isSet = true;
 }
 
+qint32
+SWGInterferometerSettings::getLocalDeviceIndex() {
+    return local_device_index;
+}
+void
+SWGInterferometerSettings::setLocalDeviceIndex(qint32 local_device_index) {
+    this->local_device_index = local_device_index;
+    this->m_local_device_index_isSet = true;
+}
+
+qint32
+SWGInterferometerSettings::getPlay() {
+    return play;
+}
+void
+SWGInterferometerSettings::setPlay(qint32 play) {
+    this->play = play;
+    this->m_play_isSet = true;
+}
+
 qint32
 SWGInterferometerSettings::getUseReverseApi() {
     return use_reverse_api;
@@ -431,6 +471,12 @@ SWGInterferometerSettings::isSet(){
         if(m_gain_isSet){
             isObjectUpdated = true; break;
         }
+        if(m_local_device_index_isSet){
+            isObjectUpdated = true; break;
+        }
+        if(m_play_isSet){
+            isObjectUpdated = true; break;
+        }
         if(m_use_reverse_api_isSet){
             isObjectUpdated = true; break;
         }
diff --git a/swagger/sdrangel/code/qt5/client/SWGInterferometerSettings.h b/swagger/sdrangel/code/qt5/client/SWGInterferometerSettings.h
index 830664de6..9770f96db 100644
--- a/swagger/sdrangel/code/qt5/client/SWGInterferometerSettings.h
+++ b/swagger/sdrangel/code/qt5/client/SWGInterferometerSettings.h
@@ -67,6 +67,12 @@ public:
     qint32 getGain();
     void setGain(qint32 gain);
 
+    qint32 getLocalDeviceIndex();
+    void setLocalDeviceIndex(qint32 local_device_index);
+
+    qint32 getPlay();
+    void setPlay(qint32 play);
+
     qint32 getUseReverseApi();
     void setUseReverseApi(qint32 use_reverse_api);
 
@@ -119,6 +125,12 @@ private:
     qint32 gain;
     bool m_gain_isSet;
 
+    qint32 local_device_index;
+    bool m_local_device_index_isSet;
+
+    qint32 play;
+    bool m_play_isSet;
+
     qint32 use_reverse_api;
     bool m_use_reverse_api_isSet;