From 57df12aec52e86fd3ebd1070d2545918a0efedc5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20St=C3=BCrz?= Date: Mon, 22 Feb 2016 15:12:11 +0100 Subject: [PATCH] Add current state values to device map -> close #295 --- server/jsonrpc/jsontypes.cpp | 11 +++++++++++ server/rest/devicesresource.cpp | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/server/jsonrpc/jsontypes.cpp b/server/jsonrpc/jsontypes.cpp index fa98411b..77287d7b 100644 --- a/server/jsonrpc/jsontypes.cpp +++ b/server/jsonrpc/jsontypes.cpp @@ -204,6 +204,10 @@ void JsonTypes::init() s_device.insert("deviceClassId", basicTypeToString(Uuid)); s_device.insert("name", basicTypeToString(String)); s_device.insert("params", QVariantList() << paramRef()); + QVariantMap stateValues; + stateValues.insert("stateTypeId", basicTypeToString(Uuid)); + stateValues.insert("value", basicTypeToString(Variant)); + s_device.insert("states", QVariantList() << stateValues); s_device.insert("setupComplete", basicTypeToString(Bool)); s_device.insert("o:parentId", basicTypeToString(Uuid)); @@ -587,6 +591,7 @@ QVariantMap JsonTypes::packDevice(Device *device) variant.insert("parentId", device->parentId()); variant.insert("params", params); + variant.insert("states", packDeviceStates(device)); variant.insert("setupComplete", device->setupComplete()); return variant; } @@ -1198,6 +1203,12 @@ QPair JsonTypes::validateVariant(const QVariant &templateVariant, qCWarning(dcJsonRpc) << "ruleDescription type not matching"; return result; } + } else if (refName == stateRef()) { + QPair result = validateMap(s_state, variant.toMap()); + if (!result.first) { + qCWarning(dcJsonRpc) << "state not matching"; + return result; + } } else if (refName == eventDescriptorRef()) { QPair result = validateMap(eventDescriptorDescription(), variant.toMap()); if (!result.first) { diff --git a/server/rest/devicesresource.cpp b/server/rest/devicesresource.cpp index d104370c..15fe6544 100644 --- a/server/rest/devicesresource.cpp +++ b/server/rest/devicesresource.cpp @@ -139,7 +139,7 @@ HttpReply *DevicesResource::proccessGetRequest(const HttpRequest &request, const if (!m_device->hasState(stateTypeId)){ qCWarning(dcRest) << "This device has no StateTypeId:" << urlTokens.at(5); - return createDeviceErrorReply(HttpReply::NotFound, DeviceManager::DeviceErrorStateTypeNotFound); + return createDeviceErrorReply(HttpReply::NotFound, DeviceManager::DeviceErrorStateTypeNotFound); } return getDeviceStateValue(m_device, stateTypeId); }