From 0faa329df946ad80698752a51a93884b78c0a278 Mon Sep 17 00:00:00 2001 From: Michael Zanetti Date: Tue, 31 Dec 2013 02:11:46 +0100 Subject: [PATCH] add getconfigureddevices json api --- server/jsonrpcserver.cpp | 24 +++++++++++++++++++++++- server/jsonrpcserver.h | 2 ++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/server/jsonrpcserver.cpp b/server/jsonrpcserver.cpp index e0fc1d10..18fea371 100644 --- a/server/jsonrpcserver.cpp +++ b/server/jsonrpcserver.cpp @@ -5,6 +5,7 @@ #include "hivecore.h" #include "devicemanager.h" #include "deviceclass.h" +#include "device.h" #include #include @@ -51,7 +52,6 @@ void JsonRPCServer::processData(int clientId, const QByteArray &jsonData) if (targetNamspace == "Devices") { if (method == "GetSupportedDevices") { - qDebug() << "getSupportedDevices"; QVariantMap params; QVariantList supportedDeviceList; foreach (const DeviceClass &deviceClass, HiveCore::instance()->deviceManager()->supportedDevices()) { @@ -74,6 +74,14 @@ void JsonRPCServer::processData(int clientId, const QByteArray &jsonData) sendErrorResponse(clientId, commandId, "Error creating device. Missing parameter."); break; } + } else if (method == "GetConfiguredDevices") { + QVariantMap params; + QVariantList configuredDeviceList; + foreach (Device *device, HiveCore::instance()->deviceManager()->configuredDevices()) { + configuredDeviceList.append(packDevice(device)); + } + params.insert("devices", configuredDeviceList); + sendResponse(clientId, commandId, params); } else { sendErrorResponse(clientId, commandId, "No such method"); } @@ -101,6 +109,20 @@ QVariantMap JsonRPCServer::packDeviceClass(const DeviceClass &deviceClass) return variant; } +QVariantMap JsonRPCServer::packDevice(Device *device) +{ + QVariantMap variant; + variant.insert("id", device->id()); + variant.insert("deviceClassId", device->deviceClassId()); + variant.insert("name", device->name()); + QVariantList triggers; + foreach (const Trigger &trigger, device->triggers()) { + triggers.append(trigger.id()); + } + variant.insert("triggers", triggers); + return variant; +} + void JsonRPCServer::sendResponse(int clientId, int commandId, const QVariantMap ¶ms) { QVariantMap rsp; diff --git a/server/jsonrpcserver.h b/server/jsonrpcserver.h index 1707732b..0dc19ef1 100644 --- a/server/jsonrpcserver.h +++ b/server/jsonrpcserver.h @@ -8,6 +8,7 @@ #include class TcpServer; +class Device; class JsonRPCServer: public QObject { @@ -23,6 +24,7 @@ private slots: private: QVariantMap packDeviceClass(const DeviceClass &deviceClass); + QVariantMap packDevice(Device *device); void sendResponse(int clientId, int commandId, const QVariantMap ¶ms = QVariantMap()); void sendErrorResponse(int clientId, int commandId, const QString &error);