From 9bfd634cd651cb76dadcc8bf6e44168a5da0bd69 Mon Sep 17 00:00:00 2001 From: Michael Zanetti Date: Sun, 13 Apr 2014 23:36:20 +0200 Subject: [PATCH] improve json api --- libguh/devicemanager.cpp | 4 ++-- libguh/devicemanager.h | 2 +- server/jsonrpc/devicehandler.cpp | 13 ++++++++++--- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/libguh/devicemanager.cpp b/libguh/devicemanager.cpp index 384eddaa..da748d0a 100644 --- a/libguh/devicemanager.cpp +++ b/libguh/devicemanager.cpp @@ -180,7 +180,7 @@ DeviceManager::DeviceError DeviceManager::addConfiguredDevice(const DeviceClassI return DeviceErrorCreationMethodNotSupported; } -DeviceManager::DeviceError DeviceManager::addConfiguredDevice(const DeviceClassId &deviceClassId, const DeviceDescriptorId &deviceDescriptorId) +DeviceManager::DeviceError DeviceManager::addConfiguredDevice(const DeviceClassId &deviceClassId, const DeviceDescriptorId &deviceDescriptorId, const DeviceId &deviceId) { DeviceClass deviceClass = findDeviceClass(deviceClassId); if (!deviceClass.isValid()) { @@ -195,7 +195,7 @@ DeviceManager::DeviceError DeviceManager::addConfiguredDevice(const DeviceClassI return DeviceErrorDeviceDescriptorNotFound; } - return addConfiguredDeviceInternal(deviceClassId, descriptor.params()); + return addConfiguredDeviceInternal(deviceClassId, descriptor.params(), deviceId); } DeviceManager::DeviceError DeviceManager::addConfiguredDeviceInternal(const DeviceClassId &deviceClassId, const QVariantMap ¶ms, const DeviceId id) diff --git a/libguh/devicemanager.h b/libguh/devicemanager.h index 7d40853b..4fecc3d5 100644 --- a/libguh/devicemanager.h +++ b/libguh/devicemanager.h @@ -73,7 +73,7 @@ public: QList configuredDevices() const; DeviceError addConfiguredDevice(const DeviceClassId &deviceClassId, const QVariantMap ¶ms, const DeviceId id = DeviceId::createDeviceId()); - DeviceError addConfiguredDevice(const DeviceClassId &deviceClassId, const DeviceDescriptorId &deviceDescriptorId); + DeviceError addConfiguredDevice(const DeviceClassId &deviceClassId, const DeviceDescriptorId &deviceDescriptorId, const DeviceId &id = DeviceId::createDeviceId()); DeviceError removeConfiguredDevice(const DeviceId &deviceId); Device* findConfiguredDevice(const DeviceId &id) const; diff --git a/server/jsonrpc/devicehandler.cpp b/server/jsonrpc/devicehandler.cpp index 8c4d4049..fd9d8452 100644 --- a/server/jsonrpc/devicehandler.cpp +++ b/server/jsonrpc/devicehandler.cpp @@ -66,11 +66,12 @@ DeviceHandler::DeviceHandler(QObject *parent) : setReturns("SetPluginConfiguration", returns); params.clear(); returns.clear(); - setDescription("AddConfiguredDevice", "Add a configured device."); + setDescription("AddConfiguredDevice", "Add a configured device. Use deviceDescriptorId or deviceParams, depending on the createMethod of the device class."); params.insert("deviceClassId", "uuid"); + params.insert("o:deviceDescriptorId", "uuid"); QVariantList deviceParams; deviceParams.append(JsonTypes::paramRef()); - params.insert("deviceParams", deviceParams); + params.insert("o:deviceParams", deviceParams); setParams("AddConfiguredDevice", params); returns.insert("success", "bool"); returns.insert("errorMessage", "string"); @@ -248,8 +249,14 @@ JsonReply* DeviceHandler::AddConfiguredDevice(const QVariantMap ¶ms) { DeviceClassId deviceClass(params.value("deviceClassId").toString()); QVariantMap deviceParams = params.value("deviceParams").toMap(); + DeviceDescriptorId deviceDescriptorId(params.value("deviceDescriptorId").toString()); DeviceId newDeviceId = DeviceId::createDeviceId(); - DeviceManager::DeviceError status = GuhCore::instance()->deviceManager()->addConfiguredDevice(deviceClass, deviceParams, newDeviceId); + DeviceManager::DeviceError status; + if (deviceDescriptorId.isNull()) { + status = GuhCore::instance()->deviceManager()->addConfiguredDevice(deviceClass, deviceParams, newDeviceId); + } else { + status = GuhCore::instance()->deviceManager()->addConfiguredDevice(deviceClass, deviceDescriptorId, newDeviceId); + } QVariantMap returns; switch(status) { case DeviceManager::DeviceErrorNoError: