diff --git a/sdrbase/resources/index.html b/sdrbase/resources/index.html
index fd82e42d5..cb4e02a2d 100644
--- a/sdrbase/resources/index.html
+++ b/sdrbase/resources/index.html
@@ -2599,7 +2599,7 @@ except ApiException as e:
- Remove last device set
+ Remove last device set except the first device
/sdrangel/devicesets
@@ -2836,7 +2836,7 @@ except ApiException as e:
- Status: 404 - No more device sets opened in this instance
+ Status: 404 - No more device sets to be deleted
@@ -3207,7 +3207,7 @@ except ApiException as e:
- Add (append) a new device set
+ Add (append) a new device set with default values
/sdrangel/devicesets
@@ -7638,7 +7638,7 @@ except ApiException as e:
- Generated 2017-11-25T19:38:10.216+01:00
+ Generated 2017-11-25T20:11:05.104+01:00
diff --git a/sdrbase/webapi/webapiadapterinterface.cpp b/sdrbase/webapi/webapiadapterinterface.cpp
index d90d3776e..0f5807ea4 100644
--- a/sdrbase/webapi/webapiadapterinterface.cpp
+++ b/sdrbase/webapi/webapiadapterinterface.cpp
@@ -26,3 +26,4 @@ QString WebAPIAdapterInterface::instanceAudioURL = "/sdrangel/audio";
QString WebAPIAdapterInterface::instanceLocationURL = "/sdrangel/location";
QString WebAPIAdapterInterface::instanceDVSerialURL = "/sdrangel/dvserial";
QString WebAPIAdapterInterface::instancePresetURL = "/sdrangel/preset";
+QString WebAPIAdapterInterface::instanceDeviceSetsURL = "/sdrangel/devicesets";
diff --git a/sdrbase/webapi/webapiadapterinterface.h b/sdrbase/webapi/webapiadapterinterface.h
index c8719e9bd..19884dc59 100644
--- a/sdrbase/webapi/webapiadapterinterface.h
+++ b/sdrbase/webapi/webapiadapterinterface.h
@@ -34,6 +34,7 @@ namespace Swagger
class SWGPresets;
class SWGPresetTransfer;
class SWGPresetIdentifier;
+ class SWGDeviceSetList;
class SWGErrorResponse;
}
@@ -183,6 +184,15 @@ public:
Swagger::SWGErrorResponse& error __attribute__((unused)))
{ return 501; }
+ /**
+ * Handler of /sdrangel/preset (DELETE) swagger/sdrangel/code/html2/index.html#api-Default-instanceChannels
+ * returns the Http status code (default 501: not implemented)
+ */
+ virtual int instanceDeviceSetsGet(
+ Swagger::SWGDeviceSetList& response __attribute__((unused)),
+ Swagger::SWGErrorResponse& error __attribute__((unused)))
+ { return 501; }
+
static QString instanceSummaryURL;
static QString instanceDevicesURL;
static QString instanceChannelsURL;
@@ -191,6 +201,7 @@ public:
static QString instanceLocationURL;
static QString instanceDVSerialURL;
static QString instancePresetURL;
+ static QString instanceDeviceSetsURL;
};
diff --git a/sdrbase/webapi/webapirequestmapper.cpp b/sdrbase/webapi/webapirequestmapper.cpp
index d16f24f7b..434ff3247 100644
--- a/sdrbase/webapi/webapirequestmapper.cpp
+++ b/sdrbase/webapi/webapirequestmapper.cpp
@@ -75,6 +75,8 @@ void WebAPIRequestMapper::service(qtwebapp::HttpRequest& request, qtwebapp::Http
instanceDVSerialService(request, response);
} else if (path == WebAPIAdapterInterface::instancePresetURL) {
instancePresetService(request, response);
+ } else if (path == WebAPIAdapterInterface::instanceDeviceSetsURL) {
+ instanceDeviceSetsService(request, response);
}
else
{
@@ -469,6 +471,29 @@ void WebAPIRequestMapper::instancePresetService(qtwebapp::HttpRequest& request,
}
}
+void WebAPIRequestMapper::instanceDeviceSetsService(qtwebapp::HttpRequest& request, qtwebapp::HttpResponse& response)
+{
+ Swagger::SWGErrorResponse errorResponse;
+
+ if (request.getMethod() == "GET")
+ {
+ Swagger::SWGDeviceSetList normalResponse;
+ int status = m_adapter->instanceDeviceSetsGet(normalResponse, errorResponse);
+ response.setStatus(status);
+
+ if (status == 200) {
+ response.write(normalResponse.asJson().toUtf8());
+ } else {
+ response.write(errorResponse.asJson().toUtf8());
+ }
+ }
+ else
+ {
+ response.setStatus(405,"Invalid HTTP method");
+ response.write("Invalid HTTP method");
+ }
+}
+
bool WebAPIRequestMapper::parseJsonBody(QString& jsonStr, qtwebapp::HttpResponse& response)
{
Swagger::SWGErrorResponse errorResponse;
diff --git a/sdrbase/webapi/webapirequestmapper.h b/sdrbase/webapi/webapirequestmapper.h
index 3b665b3c5..7e19455f6 100644
--- a/sdrbase/webapi/webapirequestmapper.h
+++ b/sdrbase/webapi/webapirequestmapper.h
@@ -53,6 +53,7 @@ private:
void instanceLocationService(qtwebapp::HttpRequest& request, qtwebapp::HttpResponse& response);
void instanceDVSerialService(qtwebapp::HttpRequest& request, qtwebapp::HttpResponse& response);
void instancePresetService(qtwebapp::HttpRequest& request, qtwebapp::HttpResponse& response);
+ void instanceDeviceSetsService(qtwebapp::HttpRequest& request, qtwebapp::HttpResponse& response);
bool validatePresetTransfer(Swagger::SWGPresetTransfer& presetTransfer);
bool validatePresetIdentifer(Swagger::SWGPresetIdentifier& presetIdentifier);
diff --git a/sdrgui/webapi/webapiadaptergui.cpp b/sdrgui/webapi/webapiadaptergui.cpp
index 0d7ac0f8b..689c6692c 100644
--- a/sdrgui/webapi/webapiadaptergui.cpp
+++ b/sdrgui/webapi/webapiadaptergui.cpp
@@ -70,87 +70,16 @@ int WebAPIAdapterGUI::instanceSummary(
Swagger::SWGLoggingInfo *logging = response.getLogging();
logging->init();
logging->setDumpToFile(m_mainWindow.m_logger->getUseFileLogger() ? 1 : 0);
+
if (logging->getDumpToFile()) {
m_mainWindow.m_logger->getLogFileName(*logging->getFileName());
m_mainWindow.m_logger->getFileMinMessageLevelStr(*logging->getFileLevel());
}
+
m_mainWindow.m_logger->getConsoleMinMessageLevelStr(*logging->getConsoleLevel());
Swagger::SWGDeviceSetList *deviceSetList = response.getDevicesetlist();
- deviceSetList->init();
- deviceSetList->setDevicesetcount((int) m_mainWindow.m_deviceUIs.size());
-
- std::vector::const_iterator it = m_mainWindow.m_deviceUIs.begin();
-
- for (int i = 0; it != m_mainWindow.m_deviceUIs.end(); ++it, i++)
- {
- QList *deviceSet = deviceSetList->getDeviceSets();
- deviceSet->append(new Swagger::SWGDeviceSet());
- Swagger::SWGSamplingDevice *samplingDevice = deviceSet->back()->getSamplingDevice();
- samplingDevice->init();
- samplingDevice->setIndex(i);
- samplingDevice->setTx((*it)->m_deviceSinkEngine != 0);
-
- if ((*it)->m_deviceSinkEngine) // Tx data
- {
- *samplingDevice->getHwType() = (*it)->m_deviceSinkAPI->getHardwareId();
- *samplingDevice->getSerial() = (*it)->m_deviceSinkAPI->getSampleSinkSerial();
- samplingDevice->setSequence((*it)->m_deviceSinkAPI->getSampleSinkSequence());
- samplingDevice->setNbStreams((*it)->m_deviceSinkAPI->getNbItems());
- samplingDevice->setStreamIndex((*it)->m_deviceSinkAPI->getItemIndex());
- (*it)->m_deviceSinkAPI->getDeviceEngineStateStr(*samplingDevice->getState());
- DeviceSampleSink *sampleSink = (*it)->m_deviceSinkEngine->getSink();
-
- if (sampleSink) {
- samplingDevice->setCenterFrequency(sampleSink->getCenterFrequency());
- samplingDevice->setBandwidth(sampleSink->getSampleRate());
- }
-
- deviceSet->back()->setChannelcount((*it)->m_deviceSinkAPI->getNbChannels());
- QList *channels = deviceSet->back()->getChannels();
-
- for (int i = 0; i < deviceSet->back()->getChannelcount(); i++)
- {
- channels->append(new Swagger::SWGChannel);
- ChannelSourceAPI *channel = (*it)->m_deviceSinkAPI->getChanelAPIAt(i);
- channels->back()->setDeltaFrequency(channel->getDeltaFrequency());
- channels->back()->setIndex(channel->getIndexInDeviceSet());
- channels->back()->setUid(channel->getUID());
- channel->getIdentifier(*channels->back()->getId());
- channel->getTitle(*channels->back()->getTitle());
- }
- }
-
- if ((*it)->m_deviceSourceEngine) // Rx data
- {
- *samplingDevice->getHwType() = (*it)->m_deviceSourceAPI->getHardwareId();
- *samplingDevice->getSerial() = (*it)->m_deviceSourceAPI->getSampleSourceSerial();
- samplingDevice->setSequence((*it)->m_deviceSourceAPI->getSampleSourceSequence());
- samplingDevice->setNbStreams((*it)->m_deviceSourceAPI->getNbItems());
- samplingDevice->setStreamIndex((*it)->m_deviceSourceAPI->getItemIndex());
- (*it)->m_deviceSourceAPI->getDeviceEngineStateStr(*samplingDevice->getState());
- DeviceSampleSource *sampleSource = (*it)->m_deviceSourceEngine->getSource();
-
- if (sampleSource) {
- samplingDevice->setCenterFrequency(sampleSource->getCenterFrequency());
- samplingDevice->setBandwidth(sampleSource->getSampleRate());
- }
-
- deviceSet->back()->setChannelcount((*it)->m_deviceSourceAPI->getNbChannels());
- QList *channels = deviceSet->back()->getChannels();
-
- for (int i = 0; i < deviceSet->back()->getChannelcount(); i++)
- {
- channels->append(new Swagger::SWGChannel);
- ChannelSinkAPI *channel = (*it)->m_deviceSourceAPI->getChanelAPIAt(i);
- channels->back()->setDeltaFrequency(channel->getDeltaFrequency());
- channels->back()->setIndex(channel->getIndexInDeviceSet());
- channels->back()->setUid(channel->getUID());
- channel->getIdentifier(*channels->back()->getId());
- channel->getTitle(*channels->back()->getTitle());
- }
- }
- }
+ getDeviceSetList(deviceSetList);
return 200;
}
@@ -614,6 +543,92 @@ int WebAPIAdapterGUI::instancePresetDelete(
return 200;
}
+int WebAPIAdapterGUI::instanceDeviceSetsGet(
+ Swagger::SWGDeviceSetList& response,
+ Swagger::SWGErrorResponse& error __attribute__((unused)))
+{
+ getDeviceSetList(&response);
+ return 200;
+}
+
+void WebAPIAdapterGUI::getDeviceSetList(Swagger::SWGDeviceSetList* deviceSetList)
+{
+ deviceSetList->init();
+ deviceSetList->setDevicesetcount((int) m_mainWindow.m_deviceUIs.size());
+
+ std::vector::const_iterator it = m_mainWindow.m_deviceUIs.begin();
+
+ for (int i = 0; it != m_mainWindow.m_deviceUIs.end(); ++it, i++)
+ {
+ QList *deviceSet = deviceSetList->getDeviceSets();
+ deviceSet->append(new Swagger::SWGDeviceSet());
+ Swagger::SWGSamplingDevice *samplingDevice = deviceSet->back()->getSamplingDevice();
+ samplingDevice->init();
+ samplingDevice->setIndex(i);
+ samplingDevice->setTx((*it)->m_deviceSinkEngine != 0);
+
+ if ((*it)->m_deviceSinkEngine) // Tx data
+ {
+ *samplingDevice->getHwType() = (*it)->m_deviceSinkAPI->getHardwareId();
+ *samplingDevice->getSerial() = (*it)->m_deviceSinkAPI->getSampleSinkSerial();
+ samplingDevice->setSequence((*it)->m_deviceSinkAPI->getSampleSinkSequence());
+ samplingDevice->setNbStreams((*it)->m_deviceSinkAPI->getNbItems());
+ samplingDevice->setStreamIndex((*it)->m_deviceSinkAPI->getItemIndex());
+ (*it)->m_deviceSinkAPI->getDeviceEngineStateStr(*samplingDevice->getState());
+ DeviceSampleSink *sampleSink = (*it)->m_deviceSinkEngine->getSink();
+
+ if (sampleSink) {
+ samplingDevice->setCenterFrequency(sampleSink->getCenterFrequency());
+ samplingDevice->setBandwidth(sampleSink->getSampleRate());
+ }
+
+ deviceSet->back()->setChannelcount((*it)->m_deviceSinkAPI->getNbChannels());
+ QList *channels = deviceSet->back()->getChannels();
+
+ for (int i = 0; i < deviceSet->back()->getChannelcount(); i++)
+ {
+ channels->append(new Swagger::SWGChannel);
+ ChannelSourceAPI *channel = (*it)->m_deviceSinkAPI->getChanelAPIAt(i);
+ channels->back()->setDeltaFrequency(channel->getDeltaFrequency());
+ channels->back()->setIndex(channel->getIndexInDeviceSet());
+ channels->back()->setUid(channel->getUID());
+ channel->getIdentifier(*channels->back()->getId());
+ channel->getTitle(*channels->back()->getTitle());
+ }
+ }
+
+ if ((*it)->m_deviceSourceEngine) // Rx data
+ {
+ *samplingDevice->getHwType() = (*it)->m_deviceSourceAPI->getHardwareId();
+ *samplingDevice->getSerial() = (*it)->m_deviceSourceAPI->getSampleSourceSerial();
+ samplingDevice->setSequence((*it)->m_deviceSourceAPI->getSampleSourceSequence());
+ samplingDevice->setNbStreams((*it)->m_deviceSourceAPI->getNbItems());
+ samplingDevice->setStreamIndex((*it)->m_deviceSourceAPI->getItemIndex());
+ (*it)->m_deviceSourceAPI->getDeviceEngineStateStr(*samplingDevice->getState());
+ DeviceSampleSource *sampleSource = (*it)->m_deviceSourceEngine->getSource();
+
+ if (sampleSource) {
+ samplingDevice->setCenterFrequency(sampleSource->getCenterFrequency());
+ samplingDevice->setBandwidth(sampleSource->getSampleRate());
+ }
+
+ deviceSet->back()->setChannelcount((*it)->m_deviceSourceAPI->getNbChannels());
+ QList *channels = deviceSet->back()->getChannels();
+
+ for (int i = 0; i < deviceSet->back()->getChannelcount(); i++)
+ {
+ channels->append(new Swagger::SWGChannel);
+ ChannelSinkAPI *channel = (*it)->m_deviceSourceAPI->getChanelAPIAt(i);
+ channels->back()->setDeltaFrequency(channel->getDeltaFrequency());
+ channels->back()->setIndex(channel->getIndexInDeviceSet());
+ channels->back()->setUid(channel->getUID());
+ channel->getIdentifier(*channels->back()->getId());
+ channel->getTitle(*channels->back()->getTitle());
+ }
+ }
+ }
+}
+
QtMsgType WebAPIAdapterGUI::getMsgTypeFromString(const QString& msgTypeString)
{
if (msgTypeString == "debug") {
diff --git a/sdrgui/webapi/webapiadaptergui.h b/sdrgui/webapi/webapiadaptergui.h
index 6417d36e4..60545731e 100644
--- a/sdrgui/webapi/webapiadaptergui.h
+++ b/sdrgui/webapi/webapiadaptergui.h
@@ -97,9 +97,14 @@ public:
Swagger::SWGPresetIdentifier& response,
Swagger::SWGErrorResponse& error);
+ virtual int instanceDeviceSetsGet(
+ Swagger::SWGDeviceSetList& response,
+ Swagger::SWGErrorResponse& error);
+
private:
MainWindow& m_mainWindow;
+ void getDeviceSetList(Swagger::SWGDeviceSetList* deviceSetList);
static QtMsgType getMsgTypeFromString(const QString& msgTypeString);
static void getMsgTypeString(const QtMsgType& msgType, QString& level);
};
diff --git a/swagger/sdrangel/api/swagger/swagger.yaml b/swagger/sdrangel/api/swagger/swagger.yaml
index 93381715c..ca24a8358 100644
--- a/swagger/sdrangel/api/swagger/swagger.yaml
+++ b/swagger/sdrangel/api/swagger/swagger.yaml
@@ -392,7 +392,7 @@ paths:
"501":
description: Function not implemented
post:
- description: Add (append) a new device set
+ description: Add (append) a new device set with default values
operationId: instanceDeviceSetsPost
parameters:
- name: tx
@@ -412,7 +412,7 @@ paths:
"501":
description: Function not implemented
delete:
- description: "Remove last device set"
+ description: Remove last device set except the first device
operationId: instanceDeviceSetsDelete
responses:
"200":
@@ -420,7 +420,7 @@ paths:
schema:
$ref: "#/definitions/DeviceSetList"
"404":
- description: "No more device sets opened in this instance"
+ description: "No more device sets to be deleted"
"500":
description: Error
schema:
diff --git a/swagger/sdrangel/code/html2/index.html b/swagger/sdrangel/code/html2/index.html
index fd82e42d5..cb4e02a2d 100644
--- a/swagger/sdrangel/code/html2/index.html
+++ b/swagger/sdrangel/code/html2/index.html
@@ -2599,7 +2599,7 @@ except ApiException as e:
- Remove last device set
+ Remove last device set except the first device
/sdrangel/devicesets
@@ -2836,7 +2836,7 @@ except ApiException as e:
- Status: 404 - No more device sets opened in this instance
+ Status: 404 - No more device sets to be deleted
@@ -3207,7 +3207,7 @@ except ApiException as e:
- Add (append) a new device set
+ Add (append) a new device set with default values
/sdrangel/devicesets
@@ -7638,7 +7638,7 @@ except ApiException as e:
- Generated 2017-11-25T19:38:10.216+01:00
+ Generated 2017-11-25T20:11:05.104+01:00