From 358f1ea2f0c5dd0f9d46338484a821de417355e2 Mon Sep 17 00:00:00 2001 From: f4exb Date: Wed, 6 May 2020 17:01:59 +0200 Subject: [PATCH] websocket spectrum: added listening address and port to websocket spectrum server information. Fixed setting of listening address --- sdrbase/dsp/spectrumvis.cpp | 17 +++++++++++++++-- sdrbase/websockets/wsspectrum.cpp | 18 ++++++++++++++++++ sdrbase/websockets/wsspectrum.h | 2 ++ 3 files changed, 35 insertions(+), 2 deletions(-) diff --git a/sdrbase/dsp/spectrumvis.cpp b/sdrbase/dsp/spectrumvis.cpp index 8370d7fed..6169ae817 100644 --- a/sdrbase/dsp/spectrumvis.cpp +++ b/sdrbase/dsp/spectrumvis.cpp @@ -774,11 +774,12 @@ void SpectrumVis::handleWSOpenClose(bool openClose) void SpectrumVis::handleConfigureWSSpectrum(const QString& address, uint16_t port) { + m_wsSpectrum.setListeningAddress(address); + m_wsSpectrum.setPort(port); + if (m_wsSpectrum.socketOpened()) { m_wsSpectrum.closeSocket(); - m_wsSpectrum.setListeningAddress(address); - m_wsSpectrum.setPort(port); m_wsSpectrum.openSocket(); } } @@ -824,6 +825,18 @@ int SpectrumVis::webapiSpectrumServerGet(SWGSDRangel::SWGSpectrumServer& respons response.init(); response.setRun(serverRunning ? 1 : 0); + QHostAddress serverAddress = m_wsSpectrum.getListeningAddress(); + + if (serverAddress != QHostAddress::Null) { + response.setListeningAddress(new QString(serverAddress.toString())); + } + + uint16_t serverPort = m_wsSpectrum.getListeningPort(); + + if (serverPort != 0) { + response.setListeningPort(serverPort); + } + if (peerHosts.size() > 0) { response.setClients(new QList); diff --git a/sdrbase/websockets/wsspectrum.cpp b/sdrbase/websockets/wsspectrum.cpp index a1d44d9fc..9a9bf08ba 100644 --- a/sdrbase/websockets/wsspectrum.cpp +++ b/sdrbase/websockets/wsspectrum.cpp @@ -124,6 +124,24 @@ void WSSpectrum::socketDisconnected() } } +QHostAddress WSSpectrum::getListeningAddress() const +{ + if (m_webSocketServer) { + return m_webSocketServer->serverAddress(); + } else { + return QHostAddress::Null; + } +} + +uint16_t WSSpectrum::getListeningPort() const +{ + if (m_webSocketServer) { + return m_webSocketServer->serverPort(); + } else { + return 0; + } +} + void WSSpectrum::newSpectrum( const std::vector& spectrum, int fftSize, diff --git a/sdrbase/websockets/wsspectrum.h b/sdrbase/websockets/wsspectrum.h index 7b2409a5e..e870705ab 100644 --- a/sdrbase/websockets/wsspectrum.h +++ b/sdrbase/websockets/wsspectrum.h @@ -45,6 +45,8 @@ public: void getPeers(QList& hosts, QList& ports) const; void setListeningAddress(const QString& address) { m_listeningAddress.setAddress(address); } void setPort(quint16 port) { m_port = port; } + QHostAddress getListeningAddress() const; + uint16_t getListeningPort() const; void newSpectrum( const std::vector& spectrum, int fftSize,