mirror of
https://github.com/f4exb/sdrangel.git
synced 2025-11-12 01:00:28 -05:00
Websocket spectrum: server implementation
This commit is contained in:
parent
37de6d4bb7
commit
7d076e5c9c
@ -20,6 +20,7 @@
|
|||||||
|
|
||||||
#include "SWGGLSpectrum.h"
|
#include "SWGGLSpectrum.h"
|
||||||
#include "SWGSpectrumServer.h"
|
#include "SWGSpectrumServer.h"
|
||||||
|
#include "SWGSuccessResponse.h"
|
||||||
|
|
||||||
#include "glspectruminterface.h"
|
#include "glspectruminterface.h"
|
||||||
#include "dspcommands.h"
|
#include "dspcommands.h"
|
||||||
@ -816,6 +817,7 @@ int SpectrumVis::webapiSpectrumServerPost(SWGSDRangel::SWGSuccessResponse& respo
|
|||||||
getMessageQueueToGUI()->push(msgToGui);
|
getMessageQueueToGUI()->push(msgToGui);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
response.setMessage(new QString("Websocket spectrum server started"));
|
||||||
return 200;
|
return 200;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -831,6 +833,7 @@ int SpectrumVis::webapiSpectrumServerDelete(SWGSDRangel::SWGSuccessResponse& res
|
|||||||
getMessageQueueToGUI()->push(msgToGui);
|
getMessageQueueToGUI()->push(msgToGui);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
response.setMessage(new QString("Websocket spectrum server stopped"));
|
||||||
return 200;
|
return 200;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -19,6 +19,7 @@
|
|||||||
|
|
||||||
#include "dsp/dspdevicesourceengine.h"
|
#include "dsp/dspdevicesourceengine.h"
|
||||||
#include "dsp/dspdevicesinkengine.h"
|
#include "dsp/dspdevicesinkengine.h"
|
||||||
|
#include "dsp/spectrumvis.h"
|
||||||
#include "plugin/pluginapi.h"
|
#include "plugin/pluginapi.h"
|
||||||
#include "plugin/plugininterface.h"
|
#include "plugin/plugininterface.h"
|
||||||
#include "settings/preset.h"
|
#include "settings/preset.h"
|
||||||
@ -34,17 +35,24 @@ DeviceSet::ChannelInstanceRegistration::ChannelInstanceRegistration(const QStrin
|
|||||||
m_channelAPI(channelAPI)
|
m_channelAPI(channelAPI)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
DeviceSet::DeviceSet(int tabIndex)
|
DeviceSet::DeviceSet(int tabIndex, int deviceType)
|
||||||
{
|
{
|
||||||
m_deviceAPI = nullptr;
|
m_deviceAPI = nullptr;
|
||||||
m_deviceSourceEngine = nullptr;
|
m_deviceSourceEngine = nullptr;
|
||||||
m_deviceSinkEngine = nullptr;
|
m_deviceSinkEngine = nullptr;
|
||||||
m_deviceMIMOEngine = nullptr;
|
m_deviceMIMOEngine = nullptr;
|
||||||
m_deviceTabIndex = tabIndex;
|
m_deviceTabIndex = tabIndex;
|
||||||
|
|
||||||
|
if ((deviceType == 0) || (deviceType == 2)) { // Single Rx or MIMO
|
||||||
|
m_spectrumVis = new SpectrumVis(SDR_RX_SCALEF);
|
||||||
|
} else if (deviceType == 1) { // Single Tx
|
||||||
|
m_spectrumVis = new SpectrumVis(SDR_TX_SCALEF);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
DeviceSet::~DeviceSet()
|
DeviceSet::~DeviceSet()
|
||||||
{
|
{
|
||||||
|
delete m_spectrumVis;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DeviceSet::registerRxChannelInstance(const QString& channelName, ChannelAPI* channelAPI)
|
void DeviceSet::registerRxChannelInstance(const QString& channelName, ChannelAPI* channelAPI)
|
||||||
@ -466,3 +474,31 @@ bool DeviceSet::ChannelInstanceRegistration::operator<(const ChannelInstanceRegi
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int DeviceSet::webapiSpectrumSettingsGet(SWGSDRangel::SWGGLSpectrum& response, QString& errorMessage) const
|
||||||
|
{
|
||||||
|
return m_spectrumVis->webapiSpectrumSettingsGet(response, errorMessage);
|
||||||
|
}
|
||||||
|
|
||||||
|
int DeviceSet::webapiSpectrumSettingsPutPatch(
|
||||||
|
bool force,
|
||||||
|
const QStringList& spectrumSettingsKeys,
|
||||||
|
SWGSDRangel::SWGGLSpectrum& response, // query + response
|
||||||
|
QString& errorMessage)
|
||||||
|
{
|
||||||
|
return m_spectrumVis->webapiSpectrumSettingsPutPatch(force, spectrumSettingsKeys, response, errorMessage);
|
||||||
|
}
|
||||||
|
|
||||||
|
int DeviceSet::webapiSpectrumServerGet(SWGSDRangel::SWGSpectrumServer& response, QString& errorMessage) const
|
||||||
|
{
|
||||||
|
return m_spectrumVis->webapiSpectrumServerGet(response, errorMessage);
|
||||||
|
}
|
||||||
|
|
||||||
|
int DeviceSet::webapiSpectrumServerPost(SWGSDRangel::SWGSuccessResponse& response, QString& errorMessage)
|
||||||
|
{
|
||||||
|
return m_spectrumVis->webapiSpectrumServerPost(response, errorMessage);
|
||||||
|
}
|
||||||
|
|
||||||
|
int DeviceSet::webapiSpectrumServerDelete(SWGSDRangel::SWGSuccessResponse& response, QString& errorMessage)
|
||||||
|
{
|
||||||
|
return m_spectrumVis->webapiSpectrumServerDelete(response, errorMessage);
|
||||||
|
}
|
||||||
|
|||||||
@ -27,6 +27,13 @@ class DSPDeviceMIMOEngine;
|
|||||||
class PluginAPI;
|
class PluginAPI;
|
||||||
class ChannelAPI;
|
class ChannelAPI;
|
||||||
class Preset;
|
class Preset;
|
||||||
|
class SpectrumVis;
|
||||||
|
|
||||||
|
namespace SWGSDRangel {
|
||||||
|
class SWGGLSpectrum;
|
||||||
|
class SWGSpectrumServer;
|
||||||
|
class SWGSuccessResponse;
|
||||||
|
};
|
||||||
|
|
||||||
class DeviceSet
|
class DeviceSet
|
||||||
{
|
{
|
||||||
@ -35,8 +42,9 @@ public:
|
|||||||
DSPDeviceSourceEngine *m_deviceSourceEngine;
|
DSPDeviceSourceEngine *m_deviceSourceEngine;
|
||||||
DSPDeviceSinkEngine *m_deviceSinkEngine;
|
DSPDeviceSinkEngine *m_deviceSinkEngine;
|
||||||
DSPDeviceMIMOEngine *m_deviceMIMOEngine;
|
DSPDeviceMIMOEngine *m_deviceMIMOEngine;
|
||||||
|
SpectrumVis *m_spectrumVis;
|
||||||
|
|
||||||
DeviceSet(int tabIndex);
|
DeviceSet(int tabIndex, int deviceType);
|
||||||
~DeviceSet();
|
~DeviceSet();
|
||||||
|
|
||||||
int getNumberOfChannels() const { return m_channelInstanceRegistrations.size(); }
|
int getNumberOfChannels() const { return m_channelInstanceRegistrations.size(); }
|
||||||
@ -58,6 +66,17 @@ public:
|
|||||||
void loadMIMOChannelSettings(const Preset* preset, PluginAPI *pluginAPI);
|
void loadMIMOChannelSettings(const Preset* preset, PluginAPI *pluginAPI);
|
||||||
void saveMIMOChannelSettings(Preset* preset);
|
void saveMIMOChannelSettings(Preset* preset);
|
||||||
|
|
||||||
|
// REST API
|
||||||
|
int webapiSpectrumSettingsGet(SWGSDRangel::SWGGLSpectrum& response, QString& errorMessage) const;
|
||||||
|
int webapiSpectrumSettingsPutPatch(
|
||||||
|
bool force,
|
||||||
|
const QStringList& spectrumSettingsKeys,
|
||||||
|
SWGSDRangel::SWGGLSpectrum& response, // query + response
|
||||||
|
QString& errorMessage);
|
||||||
|
int webapiSpectrumServerGet(SWGSDRangel::SWGSpectrumServer& response, QString& errorMessage) const;
|
||||||
|
int webapiSpectrumServerPost(SWGSDRangel::SWGSuccessResponse& response, QString& errorMessage);
|
||||||
|
int webapiSpectrumServerDelete(SWGSDRangel::SWGSuccessResponse& response, QString& errorMessage);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
struct ChannelInstanceRegistration
|
struct ChannelInstanceRegistration
|
||||||
{
|
{
|
||||||
|
|||||||
@ -25,6 +25,7 @@
|
|||||||
#include "dsp/dspdevicesourceengine.h"
|
#include "dsp/dspdevicesourceengine.h"
|
||||||
#include "dsp/dspdevicesinkengine.h"
|
#include "dsp/dspdevicesinkengine.h"
|
||||||
#include "dsp/dspdevicemimoengine.h"
|
#include "dsp/dspdevicemimoengine.h"
|
||||||
|
#include "dsp/spectrumvis.h"
|
||||||
#include "device/deviceapi.h"
|
#include "device/deviceapi.h"
|
||||||
#include "device/deviceset.h"
|
#include "device/deviceset.h"
|
||||||
#include "device/deviceenumerator.h"
|
#include "device/deviceenumerator.h"
|
||||||
@ -287,10 +288,11 @@ void MainCore::addSinkDevice()
|
|||||||
sprintf(uidCStr, "UID:%d", dspDeviceSinkEngineUID);
|
sprintf(uidCStr, "UID:%d", dspDeviceSinkEngineUID);
|
||||||
|
|
||||||
int deviceTabIndex = m_deviceSets.size();
|
int deviceTabIndex = m_deviceSets.size();
|
||||||
m_deviceSets.push_back(new DeviceSet(deviceTabIndex));
|
m_deviceSets.push_back(new DeviceSet(deviceTabIndex, 1));
|
||||||
m_deviceSets.back()->m_deviceSourceEngine = nullptr;
|
m_deviceSets.back()->m_deviceSourceEngine = nullptr;
|
||||||
m_deviceSets.back()->m_deviceSinkEngine = dspDeviceSinkEngine;
|
m_deviceSets.back()->m_deviceSinkEngine = dspDeviceSinkEngine;
|
||||||
m_deviceSets.back()->m_deviceMIMOEngine = nullptr;
|
m_deviceSets.back()->m_deviceMIMOEngine = nullptr;
|
||||||
|
dspDeviceSinkEngine->addSpectrumSink(m_deviceSets.back()->m_spectrumVis);
|
||||||
|
|
||||||
char tabNameCStr[16];
|
char tabNameCStr[16];
|
||||||
sprintf(tabNameCStr, "T%d", deviceTabIndex);
|
sprintf(tabNameCStr, "T%d", deviceTabIndex);
|
||||||
@ -333,10 +335,11 @@ void MainCore::addSourceDevice()
|
|||||||
sprintf(uidCStr, "UID:%d", dspDeviceSourceEngineUID);
|
sprintf(uidCStr, "UID:%d", dspDeviceSourceEngineUID);
|
||||||
|
|
||||||
int deviceTabIndex = m_deviceSets.size();
|
int deviceTabIndex = m_deviceSets.size();
|
||||||
m_deviceSets.push_back(new DeviceSet(deviceTabIndex));
|
m_deviceSets.push_back(new DeviceSet(deviceTabIndex, 0));
|
||||||
m_deviceSets.back()->m_deviceSourceEngine = dspDeviceSourceEngine;
|
m_deviceSets.back()->m_deviceSourceEngine = dspDeviceSourceEngine;
|
||||||
m_deviceSets.back()->m_deviceSinkEngine = nullptr;
|
m_deviceSets.back()->m_deviceSinkEngine = nullptr;
|
||||||
m_deviceSets.back()->m_deviceMIMOEngine = nullptr;
|
m_deviceSets.back()->m_deviceMIMOEngine = nullptr;
|
||||||
|
dspDeviceSourceEngine->addSink(m_deviceSets.back()->m_spectrumVis);
|
||||||
|
|
||||||
char tabNameCStr[16];
|
char tabNameCStr[16];
|
||||||
sprintf(tabNameCStr, "R%d", deviceTabIndex);
|
sprintf(tabNameCStr, "R%d", deviceTabIndex);
|
||||||
@ -378,10 +381,11 @@ void MainCore::addMIMODevice()
|
|||||||
sprintf(uidCStr, "UID:%d", dspDeviceMIMOEngineUID);
|
sprintf(uidCStr, "UID:%d", dspDeviceMIMOEngineUID);
|
||||||
|
|
||||||
int deviceTabIndex = m_deviceSets.size();
|
int deviceTabIndex = m_deviceSets.size();
|
||||||
m_deviceSets.push_back(new DeviceSet(deviceTabIndex));
|
m_deviceSets.push_back(new DeviceSet(deviceTabIndex, 2));
|
||||||
m_deviceSets.back()->m_deviceSourceEngine = nullptr;
|
m_deviceSets.back()->m_deviceSourceEngine = nullptr;
|
||||||
m_deviceSets.back()->m_deviceSinkEngine = nullptr;
|
m_deviceSets.back()->m_deviceSinkEngine = nullptr;
|
||||||
m_deviceSets.back()->m_deviceMIMOEngine = dspDeviceMIMOEngine;
|
m_deviceSets.back()->m_deviceMIMOEngine = dspDeviceMIMOEngine;
|
||||||
|
dspDeviceMIMOEngine->addSpectrumSink(m_deviceSets.back()->m_spectrumVis);
|
||||||
|
|
||||||
char tabNameCStr[16];
|
char tabNameCStr[16];
|
||||||
sprintf(tabNameCStr, "M%d", deviceTabIndex);
|
sprintf(tabNameCStr, "M%d", deviceTabIndex);
|
||||||
|
|||||||
@ -1619,6 +1619,109 @@ int WebAPIAdapterSrv::devicesetDevicePut(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int WebAPIAdapterSrv::devicesetSpectrumSettingsGet(
|
||||||
|
int deviceSetIndex,
|
||||||
|
SWGSDRangel::SWGGLSpectrum& response,
|
||||||
|
SWGSDRangel::SWGErrorResponse& error)
|
||||||
|
{
|
||||||
|
if ((deviceSetIndex >= 0) && (deviceSetIndex < (int) m_mainCore.m_deviceSets.size()))
|
||||||
|
{
|
||||||
|
const DeviceSet *deviceSet = m_mainCore.m_deviceSets[deviceSetIndex];
|
||||||
|
return deviceSet->webapiSpectrumSettingsGet(response, *error.getMessage());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
error.init();
|
||||||
|
*error.getMessage() = QString("There is no device set with index %1").arg(deviceSetIndex);
|
||||||
|
|
||||||
|
return 404;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int WebAPIAdapterSrv::devicesetSpectrumSettingsPutPatch(
|
||||||
|
int deviceSetIndex,
|
||||||
|
bool force, //!< true to force settings = put else patch
|
||||||
|
const QStringList& spectrumSettingsKeys,
|
||||||
|
SWGSDRangel::SWGGLSpectrum& response,
|
||||||
|
SWGSDRangel::SWGErrorResponse& error)
|
||||||
|
{
|
||||||
|
if ((deviceSetIndex >= 0) && (deviceSetIndex < (int) m_mainCore.m_deviceSets.size()))
|
||||||
|
{
|
||||||
|
DeviceSet *deviceSet = m_mainCore.m_deviceSets[deviceSetIndex];
|
||||||
|
return deviceSet->webapiSpectrumSettingsPutPatch(force, spectrumSettingsKeys, response, *error.getMessage());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
error.init();
|
||||||
|
*error.getMessage() = QString("There is no device set with index %1").arg(deviceSetIndex);
|
||||||
|
|
||||||
|
return 404;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int WebAPIAdapterSrv::devicesetSpectrumServerGet(
|
||||||
|
int deviceSetIndex,
|
||||||
|
SWGSDRangel::SWGSpectrumServer& response,
|
||||||
|
SWGSDRangel::SWGErrorResponse& error)
|
||||||
|
{
|
||||||
|
if ((deviceSetIndex >= 0) && (deviceSetIndex < (int) m_mainCore.m_deviceSets.size()))
|
||||||
|
{
|
||||||
|
const DeviceSet *deviceSet = m_mainCore.m_deviceSets[deviceSetIndex];
|
||||||
|
deviceSet->webapiSpectrumServerGet(response, *error.getMessage());
|
||||||
|
|
||||||
|
return 200;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
error.init();
|
||||||
|
*error.getMessage() = QString("There is no device set with index %1").arg(deviceSetIndex);
|
||||||
|
|
||||||
|
return 404;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int WebAPIAdapterSrv::devicesetSpectrumServerPost(
|
||||||
|
int deviceSetIndex,
|
||||||
|
SWGSDRangel::SWGSuccessResponse& response,
|
||||||
|
SWGSDRangel::SWGErrorResponse& error)
|
||||||
|
{
|
||||||
|
if ((deviceSetIndex >= 0) && (deviceSetIndex < (int) m_mainCore.m_deviceSets.size()))
|
||||||
|
{
|
||||||
|
DeviceSet *deviceSet = m_mainCore.m_deviceSets[deviceSetIndex];
|
||||||
|
deviceSet->webapiSpectrumServerPost(response, *error.getMessage());
|
||||||
|
|
||||||
|
return 200;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
error.init();
|
||||||
|
*error.getMessage() = QString("There is no device set with index %1").arg(deviceSetIndex);
|
||||||
|
|
||||||
|
return 404;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int WebAPIAdapterSrv::devicesetSpectrumServerDelete(
|
||||||
|
int deviceSetIndex,
|
||||||
|
SWGSDRangel::SWGSuccessResponse& response,
|
||||||
|
SWGSDRangel::SWGErrorResponse& error)
|
||||||
|
{
|
||||||
|
if ((deviceSetIndex >= 0) && (deviceSetIndex < (int) m_mainCore.m_deviceSets.size()))
|
||||||
|
{
|
||||||
|
DeviceSet *deviceSet = m_mainCore.m_deviceSets[deviceSetIndex];
|
||||||
|
deviceSet->webapiSpectrumServerDelete(response, *error.getMessage());
|
||||||
|
|
||||||
|
return 200;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
error.init();
|
||||||
|
*error.getMessage() = QString("There is no device set with index %1").arg(deviceSetIndex);
|
||||||
|
|
||||||
|
return 404;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int WebAPIAdapterSrv::devicesetDeviceSettingsGet(
|
int WebAPIAdapterSrv::devicesetDeviceSettingsGet(
|
||||||
int deviceSetIndex,
|
int deviceSetIndex,
|
||||||
SWGSDRangel::SWGDeviceSettings& response,
|
SWGSDRangel::SWGDeviceSettings& response,
|
||||||
|
|||||||
@ -228,6 +228,33 @@ public:
|
|||||||
SWGSDRangel::SWGDeviceListItem& response,
|
SWGSDRangel::SWGDeviceListItem& response,
|
||||||
SWGSDRangel::SWGErrorResponse& error);
|
SWGSDRangel::SWGErrorResponse& error);
|
||||||
|
|
||||||
|
virtual int devicesetSpectrumSettingsGet(
|
||||||
|
int deviceSetIndex,
|
||||||
|
SWGSDRangel::SWGGLSpectrum& response,
|
||||||
|
SWGSDRangel::SWGErrorResponse& error);
|
||||||
|
|
||||||
|
virtual int devicesetSpectrumSettingsPutPatch(
|
||||||
|
int deviceSetIndex,
|
||||||
|
bool force, //!< true to force settings = put else patch
|
||||||
|
const QStringList& spectrumSettingsKeys,
|
||||||
|
SWGSDRangel::SWGGLSpectrum& response,
|
||||||
|
SWGSDRangel::SWGErrorResponse& error);
|
||||||
|
|
||||||
|
virtual int devicesetSpectrumServerGet(
|
||||||
|
int deviceSetIndex,
|
||||||
|
SWGSDRangel::SWGSpectrumServer& response,
|
||||||
|
SWGSDRangel::SWGErrorResponse& error);
|
||||||
|
|
||||||
|
virtual int devicesetSpectrumServerPost(
|
||||||
|
int deviceSetIndex,
|
||||||
|
SWGSDRangel::SWGSuccessResponse& response,
|
||||||
|
SWGSDRangel::SWGErrorResponse& error);
|
||||||
|
|
||||||
|
virtual int devicesetSpectrumServerDelete(
|
||||||
|
int deviceSetIndex,
|
||||||
|
SWGSDRangel::SWGSuccessResponse& response,
|
||||||
|
SWGSDRangel::SWGErrorResponse& error);
|
||||||
|
|
||||||
virtual int devicesetDeviceSettingsGet(
|
virtual int devicesetDeviceSettingsGet(
|
||||||
int deviceSetIndex,
|
int deviceSetIndex,
|
||||||
SWGSDRangel::SWGDeviceSettings& response,
|
SWGSDRangel::SWGDeviceSettings& response,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user