mirror of
https://github.com/f4exb/sdrangel.git
synced 2025-04-13 06:58:35 -04:00
REST API: updates for MIMO
This commit is contained in:
parent
2d1e4c5493
commit
ddc4667bdb
@ -126,6 +126,7 @@ public:
|
||||
virtual void setSinkCenterFrequency(qint64 centerFrequency, int index) { (void) centerFrequency; (void) index; }
|
||||
|
||||
virtual quint64 getMIMOCenterFrequency() const { return getSourceCenterFrequency(0); }
|
||||
virtual unsigned int getMIMOSampleRate() const { return getSourceSampleRate(0); }
|
||||
|
||||
virtual bool handleMessage(const Message& message);
|
||||
|
||||
|
@ -382,7 +382,7 @@ void DeviceAPI::setSamplingDevicePluginInstanceGUI(PluginInstanceGUI *gui)
|
||||
m_samplingDevicePluginInstanceUI = gui;
|
||||
}
|
||||
|
||||
void DeviceAPI::getDeviceEngineStateStr(QString& state)
|
||||
void DeviceAPI::getDeviceEngineStateStr(QString& state, int subsystemIndex)
|
||||
{
|
||||
if (m_deviceSourceEngine)
|
||||
{
|
||||
@ -432,44 +432,59 @@ void DeviceAPI::getDeviceEngineStateStr(QString& state)
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if (m_deviceMIMOEngine)
|
||||
{
|
||||
switch(m_deviceMIMOEngine->state(subsystemIndex))
|
||||
{
|
||||
case DSPDeviceSinkEngine::StNotStarted:
|
||||
state = "notStarted";
|
||||
break;
|
||||
case DSPDeviceSinkEngine::StIdle:
|
||||
state = "idle";
|
||||
break;
|
||||
case DSPDeviceSinkEngine::StReady:
|
||||
state = "ready";
|
||||
break;
|
||||
case DSPDeviceSinkEngine::StRunning:
|
||||
state = "running";
|
||||
break;
|
||||
case DSPDeviceSinkEngine::StError:
|
||||
state = "error";
|
||||
break;
|
||||
default:
|
||||
state = "notStarted";
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
state = "notStarted";
|
||||
}
|
||||
}
|
||||
|
||||
ChannelAPI *DeviceAPI::getChanelSinkAPIAt(int index, int streamIndex)
|
||||
ChannelAPI *DeviceAPI::getChanelSinkAPIAt(int index)
|
||||
{
|
||||
(void) streamIndex;
|
||||
|
||||
if (m_streamType == StreamSingleRx)
|
||||
{
|
||||
if (index < m_channelSinkAPIs.size()) {
|
||||
return m_channelSinkAPIs.at(index);
|
||||
} else {
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
else // TODO: not implemented
|
||||
{
|
||||
if (index < m_channelSinkAPIs.size()) {
|
||||
return m_channelSinkAPIs.at(index);
|
||||
} else {
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
ChannelAPI *DeviceAPI::getChanelSourceAPIAt(int index, int streamIndex)
|
||||
ChannelAPI *DeviceAPI::getChanelSourceAPIAt(int index)
|
||||
{
|
||||
(void) streamIndex;
|
||||
|
||||
if (m_streamType == StreamSingleTx)
|
||||
{
|
||||
if (index < m_channelSourceAPIs.size()) {
|
||||
return m_channelSourceAPIs.at(index);
|
||||
} else {
|
||||
return nullptr;
|
||||
}
|
||||
if (index < m_channelSourceAPIs.size()) {
|
||||
return m_channelSourceAPIs.at(index);
|
||||
} else {
|
||||
return nullptr;
|
||||
}
|
||||
else // TODO: not implemented
|
||||
{
|
||||
}
|
||||
|
||||
ChannelAPI *DeviceAPI::getMIMOChannelAPIAt(int index)
|
||||
{
|
||||
if (index < m_mimoChannelAPIs.size()) {
|
||||
return m_mimoChannelAPIs.at(index);
|
||||
} else {
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
|
@ -133,13 +133,15 @@ public:
|
||||
// PluginInstanceGUI *getSampleSourcePluginInstanceGUI() { return m_sampleSourcePluginInstanceUI; }
|
||||
// PluginInstanceGUI *getSampleSinkPluginInstanceGUI() { return m_sampleSinkPluginInstanceUI; }
|
||||
|
||||
void getDeviceEngineStateStr(QString& state);
|
||||
void getDeviceEngineStateStr(QString& state, int subsystemIndex = 0);
|
||||
|
||||
ChannelAPI *getChanelSinkAPIAt(int index, int streamIndex = 0);
|
||||
ChannelAPI *getChanelSourceAPIAt(int index, int streamIndex = 0);
|
||||
ChannelAPI *getChanelSinkAPIAt(int index);
|
||||
ChannelAPI *getChanelSourceAPIAt(int index);
|
||||
ChannelAPI *getMIMOChannelAPIAt(int index);
|
||||
|
||||
int getNbSourceChannels() const { return m_channelSourceAPIs.size(); }
|
||||
int getNbSinkChannels() const { return m_channelSinkAPIs.size(); }
|
||||
int getNbMIMOChannels() const { return m_mimoChannelAPIs.size(); }
|
||||
|
||||
void loadSamplingDeviceSettings(const Preset* preset);
|
||||
// void loadSourceSettings(const Preset* preset);
|
||||
|
@ -77,6 +77,7 @@ public:
|
||||
virtual void setSourceCenterFrequency(qint64 centerFrequency, int index) = 0;
|
||||
|
||||
virtual quint64 getMIMOCenterFrequency() const = 0; //!< Unique center frequency for preset identification or any unique reference
|
||||
virtual unsigned int getMIMOSampleRate() const = 0; //!< Unique sample rate for any unique reference
|
||||
|
||||
virtual bool handleMessage(const Message& message) = 0;
|
||||
|
||||
|
@ -1596,7 +1596,6 @@ definitions:
|
||||
- serial
|
||||
- centerFrequency
|
||||
- bandwidth
|
||||
- state
|
||||
properties:
|
||||
index:
|
||||
description: "Index in the list of device sets opened in this instance"
|
||||
@ -1627,7 +1626,13 @@ definitions:
|
||||
description: "Bandwidth in Hz or complex S/s of baseband"
|
||||
type: integer
|
||||
state:
|
||||
description: "State: notStarted, idle, ready, running, error"
|
||||
description: "Single subsystem state: notStarted, idle, ready, running, error"
|
||||
type: string
|
||||
stateRx:
|
||||
description: "Rx subsystem state (MIMO): notStarted, idle, ready, running, error"
|
||||
type: string
|
||||
stateTx:
|
||||
description: "Tx subsystem state (MIMO): notStarted, idle, ready, running, error"
|
||||
type: string
|
||||
|
||||
Channel:
|
||||
@ -1639,6 +1644,9 @@ definitions:
|
||||
- title
|
||||
- deltaFrequency
|
||||
properties:
|
||||
direction:
|
||||
description: 0 for Rx only, 1 for Tx only or 2 for any direction (MIMO)
|
||||
type: integer
|
||||
index:
|
||||
description: "Index in the list of channels"
|
||||
type: integer
|
||||
|
@ -29,8 +29,10 @@
|
||||
#include "device/deviceenumerator.h"
|
||||
#include "dsp/devicesamplesource.h"
|
||||
#include "dsp/devicesamplesink.h"
|
||||
#include "dsp/devicesamplemimo.h"
|
||||
#include "dsp/dspdevicesourceengine.h"
|
||||
#include "dsp/dspdevicesinkengine.h"
|
||||
#include "dsp/dspdevicemimoengine.h"
|
||||
#include "dsp/dspengine.h"
|
||||
#include "plugin/pluginapi.h"
|
||||
#include "plugin/pluginmanager.h"
|
||||
@ -1944,6 +1946,7 @@ void WebAPIAdapterGUI::getDeviceSet(SWGSDRangel::SWGDeviceSet *deviceSet, const
|
||||
channels->back()->init();
|
||||
ChannelAPI *channel = deviceUISet->m_deviceAPI->getChanelSourceAPIAt(i);
|
||||
channels->back()->setDeltaFrequency(channel->getCenterFrequency());
|
||||
channels->back()->setDirection(1);
|
||||
channels->back()->setIndex(channel->getIndexInDeviceSet());
|
||||
channels->back()->setUid(channel->getUID());
|
||||
channel->getIdentifier(*channels->back()->getId());
|
||||
@ -1976,6 +1979,72 @@ void WebAPIAdapterGUI::getDeviceSet(SWGSDRangel::SWGDeviceSet *deviceSet, const
|
||||
channels->back()->init();
|
||||
ChannelAPI *channel = deviceUISet->m_deviceAPI->getChanelSinkAPIAt(i);
|
||||
channels->back()->setDeltaFrequency(channel->getCenterFrequency());
|
||||
channels->back()->setDirection(0);
|
||||
channels->back()->setIndex(channel->getIndexInDeviceSet());
|
||||
channels->back()->setUid(channel->getUID());
|
||||
channel->getIdentifier(*channels->back()->getId());
|
||||
channel->getTitle(*channels->back()->getTitle());
|
||||
}
|
||||
}
|
||||
|
||||
if (deviceUISet->m_deviceMIMOEngine) // MIMO data
|
||||
{
|
||||
samplingDevice->setDirection(2);
|
||||
*samplingDevice->getHwType() = deviceUISet->m_deviceAPI->getHardwareId();
|
||||
*samplingDevice->getSerial() = deviceUISet->m_deviceAPI->getSamplingDeviceSerial();
|
||||
samplingDevice->setSequence(deviceUISet->m_deviceAPI->getSamplingDeviceSequence());
|
||||
samplingDevice->setDeviceNbStreams(deviceUISet->m_deviceAPI->getDeviceNbItems());
|
||||
samplingDevice->setDeviceStreamIndex(deviceUISet->m_deviceAPI->getDeviceItemIndex());
|
||||
samplingDevice->setState(new QString("notStarted"));
|
||||
deviceUISet->m_deviceAPI->getDeviceEngineStateStr(*samplingDevice->getStateRx(), 0);
|
||||
deviceUISet->m_deviceAPI->getDeviceEngineStateStr(*samplingDevice->getStateTx(), 1);
|
||||
DeviceSampleMIMO *sampleMIMO = deviceUISet->m_deviceMIMOEngine->getMIMO();
|
||||
|
||||
if (sampleMIMO)
|
||||
{
|
||||
samplingDevice->setCenterFrequency(sampleMIMO->getMIMOCenterFrequency());
|
||||
samplingDevice->setBandwidth(sampleMIMO->getMIMOSampleRate());
|
||||
}
|
||||
|
||||
int nbSinkChannels = deviceUISet->m_deviceAPI->getNbSinkChannels();
|
||||
int nbSourceChannels = deviceUISet->m_deviceAPI->getNbSourceChannels();
|
||||
int nbMIMOChannels = deviceUISet->m_deviceAPI->getNbMIMOChannels();
|
||||
deviceSet->setChannelcount(nbSinkChannels + nbSourceChannels + nbMIMOChannels);
|
||||
QList<SWGSDRangel::SWGChannel*> *channels = deviceSet->getChannels();
|
||||
|
||||
for (int i = 0; i < nbSinkChannels; i++)
|
||||
{
|
||||
channels->append(new SWGSDRangel::SWGChannel);
|
||||
channels->back()->init();
|
||||
ChannelAPI *channel = deviceUISet->m_deviceAPI->getChanelSinkAPIAt(i);
|
||||
channels->back()->setDeltaFrequency(channel->getCenterFrequency());
|
||||
channels->back()->setDirection(0);
|
||||
channels->back()->setIndex(channel->getIndexInDeviceSet());
|
||||
channels->back()->setUid(channel->getUID());
|
||||
channel->getIdentifier(*channels->back()->getId());
|
||||
channel->getTitle(*channels->back()->getTitle());
|
||||
}
|
||||
|
||||
for (int i = 0; i < nbSourceChannels; i++)
|
||||
{
|
||||
channels->append(new SWGSDRangel::SWGChannel);
|
||||
channels->back()->init();
|
||||
ChannelAPI *channel = deviceUISet->m_deviceAPI->getChanelSourceAPIAt(i);
|
||||
channels->back()->setDeltaFrequency(channel->getCenterFrequency());
|
||||
channels->back()->setDirection(1);
|
||||
channels->back()->setIndex(channel->getIndexInDeviceSet());
|
||||
channels->back()->setUid(channel->getUID());
|
||||
channel->getIdentifier(*channels->back()->getId());
|
||||
channel->getTitle(*channels->back()->getTitle());
|
||||
}
|
||||
|
||||
for (int i = 0; i < nbMIMOChannels; i++)
|
||||
{
|
||||
channels->append(new SWGSDRangel::SWGChannel);
|
||||
channels->back()->init();
|
||||
ChannelAPI *channel = deviceUISet->m_deviceAPI->getMIMOChannelAPIAt(i);
|
||||
channels->back()->setDeltaFrequency(channel->getCenterFrequency());
|
||||
channels->back()->setDirection(2);
|
||||
channels->back()->setIndex(channel->getIndexInDeviceSet());
|
||||
channels->back()->setUid(channel->getUID());
|
||||
channel->getIdentifier(*channels->back()->getId());
|
||||
@ -2001,6 +2070,7 @@ void WebAPIAdapterGUI::getChannelsDetail(SWGSDRangel::SWGChannelsDetail *channel
|
||||
channels->back()->init();
|
||||
ChannelAPI *channel = deviceUISet->m_deviceAPI->getChanelSourceAPIAt(i);
|
||||
channels->back()->setDeltaFrequency(channel->getCenterFrequency());
|
||||
channels->back()->setDirection(1);
|
||||
channels->back()->setIndex(channel->getIndexInDeviceSet());
|
||||
channels->back()->setUid(channel->getUID());
|
||||
channel->getIdentifier(*channels->back()->getId());
|
||||
@ -2027,6 +2097,79 @@ void WebAPIAdapterGUI::getChannelsDetail(SWGSDRangel::SWGChannelsDetail *channel
|
||||
channels->back()->init();
|
||||
ChannelAPI *channel = deviceUISet->m_deviceAPI->getChanelSinkAPIAt(i);
|
||||
channels->back()->setDeltaFrequency(channel->getCenterFrequency());
|
||||
channels->back()->setDirection(0);
|
||||
channels->back()->setIndex(channel->getIndexInDeviceSet());
|
||||
channels->back()->setUid(channel->getUID());
|
||||
channel->getIdentifier(*channels->back()->getId());
|
||||
channel->getTitle(*channels->back()->getTitle());
|
||||
|
||||
channelReport = new SWGSDRangel::SWGChannelReport();
|
||||
|
||||
if (channel->webapiReportGet(*channelReport, channelReportError) != 501) {
|
||||
channels->back()->setReport(channelReport);
|
||||
} else {
|
||||
delete channelReport;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (deviceUISet->m_deviceMIMOEngine) // MIMO data
|
||||
{
|
||||
int nbSinkChannels = deviceUISet->m_deviceAPI->getNbSinkChannels();
|
||||
int nbSourceChannels = deviceUISet->m_deviceAPI->getNbSourceChannels();
|
||||
int nbMIMOChannels = deviceUISet->m_deviceAPI->getNbMIMOChannels();
|
||||
QList<SWGSDRangel::SWGChannel*> *channels = channelsDetail->getChannels();
|
||||
channelsDetail->setChannelcount(nbSinkChannels + nbSourceChannels + nbMIMOChannels);
|
||||
|
||||
for (int i = 0; i < nbSinkChannels; i++)
|
||||
{
|
||||
channels->append(new SWGSDRangel::SWGChannel);
|
||||
channels->back()->init();
|
||||
ChannelAPI *channel = deviceUISet->m_deviceAPI->getChanelSinkAPIAt(i);
|
||||
channels->back()->setDeltaFrequency(channel->getCenterFrequency());
|
||||
channels->back()->setDirection(0);
|
||||
channels->back()->setIndex(channel->getIndexInDeviceSet());
|
||||
channels->back()->setUid(channel->getUID());
|
||||
channel->getIdentifier(*channels->back()->getId());
|
||||
channel->getTitle(*channels->back()->getTitle());
|
||||
|
||||
channelReport = new SWGSDRangel::SWGChannelReport();
|
||||
|
||||
if (channel->webapiReportGet(*channelReport, channelReportError) != 501) {
|
||||
channels->back()->setReport(channelReport);
|
||||
} else {
|
||||
delete channelReport;
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = 0; i < nbSourceChannels; i++)
|
||||
{
|
||||
channels->append(new SWGSDRangel::SWGChannel);
|
||||
channels->back()->init();
|
||||
ChannelAPI *channel = deviceUISet->m_deviceAPI->getChanelSourceAPIAt(i);
|
||||
channels->back()->setDeltaFrequency(channel->getCenterFrequency());
|
||||
channels->back()->setDirection(1);
|
||||
channels->back()->setIndex(channel->getIndexInDeviceSet());
|
||||
channels->back()->setUid(channel->getUID());
|
||||
channel->getIdentifier(*channels->back()->getId());
|
||||
channel->getTitle(*channels->back()->getTitle());
|
||||
|
||||
channelReport = new SWGSDRangel::SWGChannelReport();
|
||||
|
||||
if (channel->webapiReportGet(*channelReport, channelReportError) != 501) {
|
||||
channels->back()->setReport(channelReport);
|
||||
} else {
|
||||
delete channelReport;
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = 0; i < nbMIMOChannels; i++)
|
||||
{
|
||||
channels->append(new SWGSDRangel::SWGChannel);
|
||||
channels->back()->init();
|
||||
ChannelAPI *channel = deviceUISet->m_deviceAPI->getMIMOChannelAPIAt(i);
|
||||
channels->back()->setDeltaFrequency(channel->getCenterFrequency());
|
||||
channels->back()->setDirection(2);
|
||||
channels->back()->setIndex(channel->getIndexInDeviceSet());
|
||||
channels->back()->setUid(channel->getUID());
|
||||
channel->getIdentifier(*channels->back()->getId());
|
||||
|
@ -2028,6 +2028,7 @@ void WebAPIAdapterSrv::getDeviceSet(SWGSDRangel::SWGDeviceSet *swgDeviceSet, con
|
||||
channels->back()->init();
|
||||
ChannelAPI *channel = deviceSet->m_deviceAPI->getChanelSourceAPIAt(i);
|
||||
channels->back()->setDeltaFrequency(channel->getCenterFrequency());
|
||||
channels->back()->setDirection(1);
|
||||
channels->back()->setIndex(channel->getIndexInDeviceSet());
|
||||
channels->back()->setUid(channel->getUID());
|
||||
channel->getIdentifier(*channels->back()->getId());
|
||||
@ -2060,6 +2061,72 @@ void WebAPIAdapterSrv::getDeviceSet(SWGSDRangel::SWGDeviceSet *swgDeviceSet, con
|
||||
channels->back()->init();
|
||||
ChannelAPI *channel = deviceSet->m_deviceAPI->getChanelSinkAPIAt(i);
|
||||
channels->back()->setDeltaFrequency(channel->getCenterFrequency());
|
||||
channels->back()->setDirection(0);
|
||||
channels->back()->setIndex(channel->getIndexInDeviceSet());
|
||||
channels->back()->setUid(channel->getUID());
|
||||
channel->getIdentifier(*channels->back()->getId());
|
||||
channel->getTitle(*channels->back()->getTitle());
|
||||
}
|
||||
}
|
||||
|
||||
if (deviceSet->m_deviceMIMOEngine) // MIMO data
|
||||
{
|
||||
samplingDevice->setDirection(2);
|
||||
*samplingDevice->getHwType() = deviceSet->m_deviceAPI->getHardwareId();
|
||||
*samplingDevice->getSerial() = deviceSet->m_deviceAPI->getSamplingDeviceSerial();
|
||||
samplingDevice->setSequence(deviceSet->m_deviceAPI->getSamplingDeviceSequence());
|
||||
samplingDevice->setDeviceNbStreams(deviceSet->m_deviceAPI->getDeviceNbItems());
|
||||
samplingDevice->setDeviceStreamIndex(deviceSet->m_deviceAPI->getDeviceItemIndex());
|
||||
samplingDevice->setState(new QString("notStarted"));
|
||||
deviceSet->m_deviceAPI->getDeviceEngineStateStr(*samplingDevice->getStateRx(), 0);
|
||||
deviceSet->m_deviceAPI->getDeviceEngineStateStr(*samplingDevice->getStateTx(), 1);
|
||||
DeviceSampleMIMO *sampleMIMO = deviceSet->m_deviceMIMOEngine->getMIMO();
|
||||
|
||||
if (sampleMIMO)
|
||||
{
|
||||
samplingDevice->setCenterFrequency(sampleMIMO->getMIMOCenterFrequency());
|
||||
samplingDevice->setBandwidth(sampleMIMO->getMIMOSampleRate());
|
||||
}
|
||||
|
||||
int nbSinkChannels = deviceSet->m_deviceAPI->getNbSinkChannels();
|
||||
int nbSourceChannels = deviceSet->m_deviceAPI->getNbSourceChannels();
|
||||
int nbMIMOChannels = deviceSet->m_deviceAPI->getNbMIMOChannels();
|
||||
swgDeviceSet->setChannelcount(nbSinkChannels + nbSourceChannels + nbMIMOChannels);
|
||||
QList<SWGSDRangel::SWGChannel*> *channels = swgDeviceSet->getChannels();
|
||||
|
||||
for (int i = 0; i < nbSinkChannels; i++)
|
||||
{
|
||||
channels->append(new SWGSDRangel::SWGChannel);
|
||||
channels->back()->init();
|
||||
ChannelAPI *channel = deviceSet->m_deviceAPI->getChanelSinkAPIAt(i);
|
||||
channels->back()->setDeltaFrequency(channel->getCenterFrequency());
|
||||
channels->back()->setDirection(0);
|
||||
channels->back()->setIndex(channel->getIndexInDeviceSet());
|
||||
channels->back()->setUid(channel->getUID());
|
||||
channel->getIdentifier(*channels->back()->getId());
|
||||
channel->getTitle(*channels->back()->getTitle());
|
||||
}
|
||||
|
||||
for (int i = 0; i < nbSourceChannels; i++)
|
||||
{
|
||||
channels->append(new SWGSDRangel::SWGChannel);
|
||||
channels->back()->init();
|
||||
ChannelAPI *channel = deviceSet->m_deviceAPI->getChanelSourceAPIAt(i);
|
||||
channels->back()->setDeltaFrequency(channel->getCenterFrequency());
|
||||
channels->back()->setDirection(1);
|
||||
channels->back()->setIndex(channel->getIndexInDeviceSet());
|
||||
channels->back()->setUid(channel->getUID());
|
||||
channel->getIdentifier(*channels->back()->getId());
|
||||
channel->getTitle(*channels->back()->getTitle());
|
||||
}
|
||||
|
||||
for (int i = 0; i < nbMIMOChannels; i++)
|
||||
{
|
||||
channels->append(new SWGSDRangel::SWGChannel);
|
||||
channels->back()->init();
|
||||
ChannelAPI *channel = deviceSet->m_deviceAPI->getMIMOChannelAPIAt(i);
|
||||
channels->back()->setDeltaFrequency(channel->getCenterFrequency());
|
||||
channels->back()->setDirection(2);
|
||||
channels->back()->setIndex(channel->getIndexInDeviceSet());
|
||||
channels->back()->setUid(channel->getUID());
|
||||
channel->getIdentifier(*channels->back()->getId());
|
||||
@ -2085,6 +2152,7 @@ void WebAPIAdapterSrv::getChannelsDetail(SWGSDRangel::SWGChannelsDetail *channel
|
||||
channels->back()->init();
|
||||
ChannelAPI *channel = deviceSet->m_deviceAPI->getChanelSourceAPIAt(i);
|
||||
channels->back()->setDeltaFrequency(channel->getCenterFrequency());
|
||||
channels->back()->setDirection(1);
|
||||
channels->back()->setIndex(channel->getIndexInDeviceSet());
|
||||
channels->back()->setUid(channel->getUID());
|
||||
channel->getIdentifier(*channels->back()->getId());
|
||||
@ -2111,6 +2179,79 @@ void WebAPIAdapterSrv::getChannelsDetail(SWGSDRangel::SWGChannelsDetail *channel
|
||||
channels->back()->init();
|
||||
ChannelAPI *channel = deviceSet->m_deviceAPI->getChanelSinkAPIAt(i);
|
||||
channels->back()->setDeltaFrequency(channel->getCenterFrequency());
|
||||
channels->back()->setDirection(0);
|
||||
channels->back()->setIndex(channel->getIndexInDeviceSet());
|
||||
channels->back()->setUid(channel->getUID());
|
||||
channel->getIdentifier(*channels->back()->getId());
|
||||
channel->getTitle(*channels->back()->getTitle());
|
||||
|
||||
channelReport = new SWGSDRangel::SWGChannelReport();
|
||||
|
||||
if (channel->webapiReportGet(*channelReport, channelReportError) != 501) {
|
||||
channels->back()->setReport(channelReport);
|
||||
} else {
|
||||
delete channelReport;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (deviceSet->m_deviceMIMOEngine) // MIMO data
|
||||
{
|
||||
int nbSinkChannels = deviceSet->m_deviceAPI->getNbSinkChannels();
|
||||
int nbSourceChannels = deviceSet->m_deviceAPI->getNbSourceChannels();
|
||||
int nbMIMOChannels = deviceSet->m_deviceAPI->getNbMIMOChannels();
|
||||
QList<SWGSDRangel::SWGChannel*> *channels = channelsDetail->getChannels();
|
||||
channelsDetail->setChannelcount(nbSinkChannels + nbSourceChannels + nbMIMOChannels);
|
||||
|
||||
for (int i = 0; i < nbSinkChannels; i++)
|
||||
{
|
||||
channels->append(new SWGSDRangel::SWGChannel);
|
||||
channels->back()->init();
|
||||
ChannelAPI *channel = deviceSet->m_deviceAPI->getChanelSinkAPIAt(i);
|
||||
channels->back()->setDeltaFrequency(channel->getCenterFrequency());
|
||||
channels->back()->setDirection(0);
|
||||
channels->back()->setIndex(channel->getIndexInDeviceSet());
|
||||
channels->back()->setUid(channel->getUID());
|
||||
channel->getIdentifier(*channels->back()->getId());
|
||||
channel->getTitle(*channels->back()->getTitle());
|
||||
|
||||
channelReport = new SWGSDRangel::SWGChannelReport();
|
||||
|
||||
if (channel->webapiReportGet(*channelReport, channelReportError) != 501) {
|
||||
channels->back()->setReport(channelReport);
|
||||
} else {
|
||||
delete channelReport;
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = 0; i < nbSourceChannels; i++)
|
||||
{
|
||||
channels->append(new SWGSDRangel::SWGChannel);
|
||||
channels->back()->init();
|
||||
ChannelAPI *channel = deviceSet->m_deviceAPI->getChanelSourceAPIAt(i);
|
||||
channels->back()->setDeltaFrequency(channel->getCenterFrequency());
|
||||
channels->back()->setDirection(1);
|
||||
channels->back()->setIndex(channel->getIndexInDeviceSet());
|
||||
channels->back()->setUid(channel->getUID());
|
||||
channel->getIdentifier(*channels->back()->getId());
|
||||
channel->getTitle(*channels->back()->getTitle());
|
||||
|
||||
channelReport = new SWGSDRangel::SWGChannelReport();
|
||||
|
||||
if (channel->webapiReportGet(*channelReport, channelReportError) != 501) {
|
||||
channels->back()->setReport(channelReport);
|
||||
} else {
|
||||
delete channelReport;
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = 0; i < nbMIMOChannels; i++)
|
||||
{
|
||||
channels->append(new SWGSDRangel::SWGChannel);
|
||||
channels->back()->init();
|
||||
ChannelAPI *channel = deviceSet->m_deviceAPI->getMIMOChannelAPIAt(i);
|
||||
channels->back()->setDeltaFrequency(channel->getCenterFrequency());
|
||||
channels->back()->setDirection(2);
|
||||
channels->back()->setIndex(channel->getIndexInDeviceSet());
|
||||
channels->back()->setUid(channel->getUID());
|
||||
channel->getIdentifier(*channels->back()->getId());
|
||||
|
@ -1596,7 +1596,6 @@ definitions:
|
||||
- serial
|
||||
- centerFrequency
|
||||
- bandwidth
|
||||
- state
|
||||
properties:
|
||||
index:
|
||||
description: "Index in the list of device sets opened in this instance"
|
||||
@ -1627,7 +1626,13 @@ definitions:
|
||||
description: "Bandwidth in Hz or complex S/s of baseband"
|
||||
type: integer
|
||||
state:
|
||||
description: "State: notStarted, idle, ready, running, error"
|
||||
description: "Single subsystem state: notStarted, idle, ready, running, error"
|
||||
type: string
|
||||
stateRx:
|
||||
description: "Rx subsystem state (MIMO): notStarted, idle, ready, running, error"
|
||||
type: string
|
||||
stateTx:
|
||||
description: "Tx subsystem state (MIMO): notStarted, idle, ready, running, error"
|
||||
type: string
|
||||
|
||||
Channel:
|
||||
@ -1639,6 +1644,9 @@ definitions:
|
||||
- title
|
||||
- deltaFrequency
|
||||
properties:
|
||||
direction:
|
||||
description: 0 for Rx only, 1 for Tx only or 2 for any direction (MIMO)
|
||||
type: integer
|
||||
index:
|
||||
description: "Index in the list of channels"
|
||||
type: integer
|
||||
|
@ -28,6 +28,8 @@ SWGChannel::SWGChannel(QString* json) {
|
||||
}
|
||||
|
||||
SWGChannel::SWGChannel() {
|
||||
direction = 0;
|
||||
m_direction_isSet = false;
|
||||
index = 0;
|
||||
m_index_isSet = false;
|
||||
id = nullptr;
|
||||
@ -48,6 +50,8 @@ SWGChannel::~SWGChannel() {
|
||||
|
||||
void
|
||||
SWGChannel::init() {
|
||||
direction = 0;
|
||||
m_direction_isSet = false;
|
||||
index = 0;
|
||||
m_index_isSet = false;
|
||||
id = new QString("");
|
||||
@ -65,6 +69,7 @@ SWGChannel::init() {
|
||||
void
|
||||
SWGChannel::cleanup() {
|
||||
|
||||
|
||||
if(id != nullptr) {
|
||||
delete id;
|
||||
}
|
||||
@ -89,6 +94,8 @@ SWGChannel::fromJson(QString &json) {
|
||||
|
||||
void
|
||||
SWGChannel::fromJsonObject(QJsonObject &pJson) {
|
||||
::SWGSDRangel::setValue(&direction, pJson["direction"], "qint32", "");
|
||||
|
||||
::SWGSDRangel::setValue(&index, pJson["index"], "qint32", "");
|
||||
|
||||
::SWGSDRangel::setValue(&id, pJson["id"], "QString", "QString");
|
||||
@ -117,6 +124,9 @@ SWGChannel::asJson ()
|
||||
QJsonObject*
|
||||
SWGChannel::asJsonObject() {
|
||||
QJsonObject* obj = new QJsonObject();
|
||||
if(m_direction_isSet){
|
||||
obj->insert("direction", QJsonValue(direction));
|
||||
}
|
||||
if(m_index_isSet){
|
||||
obj->insert("index", QJsonValue(index));
|
||||
}
|
||||
@ -139,6 +149,16 @@ SWGChannel::asJsonObject() {
|
||||
return obj;
|
||||
}
|
||||
|
||||
qint32
|
||||
SWGChannel::getDirection() {
|
||||
return direction;
|
||||
}
|
||||
void
|
||||
SWGChannel::setDirection(qint32 direction) {
|
||||
this->direction = direction;
|
||||
this->m_direction_isSet = true;
|
||||
}
|
||||
|
||||
qint32
|
||||
SWGChannel::getIndex() {
|
||||
return index;
|
||||
@ -204,6 +224,9 @@ bool
|
||||
SWGChannel::isSet(){
|
||||
bool isObjectUpdated = false;
|
||||
do{
|
||||
if(m_direction_isSet){
|
||||
isObjectUpdated = true; break;
|
||||
}
|
||||
if(m_index_isSet){
|
||||
isObjectUpdated = true; break;
|
||||
}
|
||||
|
@ -43,6 +43,9 @@ public:
|
||||
virtual void fromJsonObject(QJsonObject &json) override;
|
||||
virtual SWGChannel* fromJson(QString &jsonString) override;
|
||||
|
||||
qint32 getDirection();
|
||||
void setDirection(qint32 direction);
|
||||
|
||||
qint32 getIndex();
|
||||
void setIndex(qint32 index);
|
||||
|
||||
@ -65,6 +68,9 @@ public:
|
||||
virtual bool isSet() override;
|
||||
|
||||
private:
|
||||
qint32 direction;
|
||||
bool m_direction_isSet;
|
||||
|
||||
qint32 index;
|
||||
bool m_index_isSet;
|
||||
|
||||
|
@ -48,6 +48,10 @@ SWGSamplingDevice::SWGSamplingDevice() {
|
||||
m_bandwidth_isSet = false;
|
||||
state = nullptr;
|
||||
m_state_isSet = false;
|
||||
state_rx = nullptr;
|
||||
m_state_rx_isSet = false;
|
||||
state_tx = nullptr;
|
||||
m_state_tx_isSet = false;
|
||||
}
|
||||
|
||||
SWGSamplingDevice::~SWGSamplingDevice() {
|
||||
@ -76,6 +80,10 @@ SWGSamplingDevice::init() {
|
||||
m_bandwidth_isSet = false;
|
||||
state = new QString("");
|
||||
m_state_isSet = false;
|
||||
state_rx = new QString("");
|
||||
m_state_rx_isSet = false;
|
||||
state_tx = new QString("");
|
||||
m_state_tx_isSet = false;
|
||||
}
|
||||
|
||||
void
|
||||
@ -96,6 +104,12 @@ SWGSamplingDevice::cleanup() {
|
||||
if(state != nullptr) {
|
||||
delete state;
|
||||
}
|
||||
if(state_rx != nullptr) {
|
||||
delete state_rx;
|
||||
}
|
||||
if(state_tx != nullptr) {
|
||||
delete state_tx;
|
||||
}
|
||||
}
|
||||
|
||||
SWGSamplingDevice*
|
||||
@ -129,6 +143,10 @@ SWGSamplingDevice::fromJsonObject(QJsonObject &pJson) {
|
||||
|
||||
::SWGSDRangel::setValue(&state, pJson["state"], "QString", "QString");
|
||||
|
||||
::SWGSDRangel::setValue(&state_rx, pJson["stateRx"], "QString", "QString");
|
||||
|
||||
::SWGSDRangel::setValue(&state_tx, pJson["stateTx"], "QString", "QString");
|
||||
|
||||
}
|
||||
|
||||
QString
|
||||
@ -175,6 +193,12 @@ SWGSamplingDevice::asJsonObject() {
|
||||
if(state != nullptr && *state != QString("")){
|
||||
toJsonValue(QString("state"), state, obj, QString("QString"));
|
||||
}
|
||||
if(state_rx != nullptr && *state_rx != QString("")){
|
||||
toJsonValue(QString("stateRx"), state_rx, obj, QString("QString"));
|
||||
}
|
||||
if(state_tx != nullptr && *state_tx != QString("")){
|
||||
toJsonValue(QString("stateTx"), state_tx, obj, QString("QString"));
|
||||
}
|
||||
|
||||
return obj;
|
||||
}
|
||||
@ -279,6 +303,26 @@ SWGSamplingDevice::setState(QString* state) {
|
||||
this->m_state_isSet = true;
|
||||
}
|
||||
|
||||
QString*
|
||||
SWGSamplingDevice::getStateRx() {
|
||||
return state_rx;
|
||||
}
|
||||
void
|
||||
SWGSamplingDevice::setStateRx(QString* state_rx) {
|
||||
this->state_rx = state_rx;
|
||||
this->m_state_rx_isSet = true;
|
||||
}
|
||||
|
||||
QString*
|
||||
SWGSamplingDevice::getStateTx() {
|
||||
return state_tx;
|
||||
}
|
||||
void
|
||||
SWGSamplingDevice::setStateTx(QString* state_tx) {
|
||||
this->state_tx = state_tx;
|
||||
this->m_state_tx_isSet = true;
|
||||
}
|
||||
|
||||
|
||||
bool
|
||||
SWGSamplingDevice::isSet(){
|
||||
@ -314,6 +358,12 @@ SWGSamplingDevice::isSet(){
|
||||
if(state && *state != QString("")){
|
||||
isObjectUpdated = true; break;
|
||||
}
|
||||
if(state_rx && *state_rx != QString("")){
|
||||
isObjectUpdated = true; break;
|
||||
}
|
||||
if(state_tx && *state_tx != QString("")){
|
||||
isObjectUpdated = true; break;
|
||||
}
|
||||
}while(false);
|
||||
return isObjectUpdated;
|
||||
}
|
||||
|
@ -72,6 +72,12 @@ public:
|
||||
QString* getState();
|
||||
void setState(QString* state);
|
||||
|
||||
QString* getStateRx();
|
||||
void setStateRx(QString* state_rx);
|
||||
|
||||
QString* getStateTx();
|
||||
void setStateTx(QString* state_tx);
|
||||
|
||||
|
||||
virtual bool isSet() override;
|
||||
|
||||
@ -106,6 +112,12 @@ private:
|
||||
QString* state;
|
||||
bool m_state_isSet;
|
||||
|
||||
QString* state_rx;
|
||||
bool m_state_rx_isSet;
|
||||
|
||||
QString* state_tx;
|
||||
bool m_state_tx_isSet;
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user