From 07be97c6581307c322840215c57aabe4aa1f0092 Mon Sep 17 00:00:00 2001 From: f4exb Date: Mon, 18 Dec 2017 13:31:53 +0100 Subject: [PATCH] Server: web API: implemented /sdrangel/devices GET --- sdrsrv/webapi/webapiadaptersrv.cpp | 28 ++++++++++++++++++++++++++++ sdrsrv/webapi/webapiadaptersrv.h | 5 +++++ 2 files changed, 33 insertions(+) diff --git a/sdrsrv/webapi/webapiadaptersrv.cpp b/sdrsrv/webapi/webapiadaptersrv.cpp index 5beda3086..ce4a30335 100644 --- a/sdrsrv/webapi/webapiadaptersrv.cpp +++ b/sdrsrv/webapi/webapiadaptersrv.cpp @@ -22,6 +22,7 @@ #include #include "SWGInstanceSummaryResponse.h" +#include "SWGInstanceDevicesResponse.h" #include "SWGErrorResponse.h" #include "maincore.h" @@ -29,6 +30,7 @@ #include "device/deviceset.h" #include "device/devicesinkapi.h" #include "device/devicesourceapi.h" +#include "device/deviceenumerator.h" #include "dsp/devicesamplesink.h" #include "dsp/devicesamplesource.h" #include "channel/channelsourceapi.h" @@ -81,6 +83,32 @@ int WebAPIAdapterSrv::instanceDelete( return 200; } +int WebAPIAdapterSrv::instanceDevices( + bool tx, + SWGSDRangel::SWGInstanceDevicesResponse& response, + SWGSDRangel::SWGErrorResponse& error __attribute__((unused))) +{ + int nbSamplingDevices = tx ? DeviceEnumerator::instance()->getNbTxSamplingDevices() : DeviceEnumerator::instance()->getNbRxSamplingDevices(); + response.setDevicecount(nbSamplingDevices); + QList *devices = response.getDevices(); + + for (int i = 0; i < nbSamplingDevices; i++) + { + PluginInterface::SamplingDevice samplingDevice = tx ? DeviceEnumerator::instance()->getTxSamplingDevice(i) : DeviceEnumerator::instance()->getRxSamplingDevice(i); + devices->append(new SWGSDRangel::SWGDeviceListItem); + *devices->back()->getDisplayedName() = samplingDevice.displayedName; + *devices->back()->getHwType() = samplingDevice.hardwareId; + *devices->back()->getSerial() = samplingDevice.serial; + devices->back()->setSequence(samplingDevice.sequence); + devices->back()->setTx(!samplingDevice.rxElseTx); + devices->back()->setNbStreams(samplingDevice.deviceNbItems); + devices->back()->setDeviceSetIndex(samplingDevice.claimed); + devices->back()->setIndex(i); + } + + return 200; +} + void WebAPIAdapterSrv::getDeviceSetList(SWGSDRangel::SWGDeviceSetList* deviceSetList) { deviceSetList->init(); diff --git a/sdrsrv/webapi/webapiadaptersrv.h b/sdrsrv/webapi/webapiadaptersrv.h index 9ab8fc8d3..715ed1257 100644 --- a/sdrsrv/webapi/webapiadaptersrv.h +++ b/sdrsrv/webapi/webapiadaptersrv.h @@ -40,6 +40,11 @@ public: SWGSDRangel::SWGInstanceSummaryResponse& response, SWGSDRangel::SWGErrorResponse& error); + virtual int instanceDevices( + bool tx, + SWGSDRangel::SWGInstanceDevicesResponse& response, + SWGSDRangel::SWGErrorResponse& error); + private: MainCore& m_mainCore;