Add current state values to device map -> close #295

This commit is contained in:
Simon Stürz 2016-02-22 15:12:11 +01:00 committed by Michael Zanetti
parent 074f1a7cd2
commit 57df12aec5
2 changed files with 12 additions and 1 deletions

View File

@ -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<bool, QString> JsonTypes::validateVariant(const QVariant &templateVariant,
qCWarning(dcJsonRpc) << "ruleDescription type not matching";
return result;
}
} else if (refName == stateRef()) {
QPair<bool, QString> result = validateMap(s_state, variant.toMap());
if (!result.first) {
qCWarning(dcJsonRpc) << "state not matching";
return result;
}
} else if (refName == eventDescriptorRef()) {
QPair<bool, QString> result = validateMap(eventDescriptorDescription(), variant.toMap());
if (!result.first) {

View File

@ -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);
}