}
// Not reading "di" because it's already known in OnResourceFound().
- std::array<std::string, 3> keys = { {"n", "icv", "dmv"} };
+ std::array<std::string, 4> keys = { {"n", "icv", "dmv", "piid"} };
std::string dataModelVersion;
std::vector<std::string*> Values =
{
&(deviceDetails->deviceInfo.deviceName),
&(deviceDetails->deviceInfo.deviceSoftwareVersion),
- &dataModelVersion
+ &dataModelVersion,
+ &(deviceDetails->deviceInfo.platformIndependentId)
};
for (size_t i = 0; i < keys.size(); i++)
deviceDetails->deviceInfo.deviceUris = deviceDetails->deviceUris;
- OCPlatform::getPropertyValue(
- PAYLOAD_TYPE_DEVICE,
- OC_RSRVD_DATA_MODEL_VERSION,
- deviceDetails->deviceInfo.dataModelVersions);
-
- OCPlatform::getPropertyValue(
- PAYLOAD_TYPE_DEVICE,
- OC_RSRVD_PROTOCOL_INDEPENDENT_ID,
- deviceDetails->deviceInfo.platformIndependentId);
+ // Convert data model versions returned by server in CSV to array.
+ std::istringstream stringStream(dataModelVersion.c_str());
+ std::string token;
+ while (std::getline(stringStream, token, ','))
+ {
+ deviceDetails->deviceInfo.dataModelVersions.push_back(token);
+ }
deviceDetails->deviceInfoAvailable = true;
}
ocRep.setDevAddr(addr);\r
ocRep.setValue(OC_RSRVD_DEVICE_NAME, g_deviceInfo.deviceName);\r
ocRep.setValue(OC_RSRVD_SPEC_VERSION, g_deviceInfo.specVersion);\r
- ocRep.setValue(OC_RSRVD_DATA_MODEL_VERSION, g_deviceInfo.dataModelVersions);\r
+ ocRep.setValue(OC_RSRVD_PROTOCOL_INDEPENDENT_ID, g_deviceInfo.platformIndependentId);\r
+\r
+ // DMV is returned in CSV.\r
+ std::ostringstream outputStream;\r
+ bool firstEntry = true;\r
+ for (auto dataModelVersion : g_deviceInfo.dataModelVersions)\r
+ {\r
+ if (!firstEntry)\r
+ {\r
+ outputStream << ',' << dataModelVersion;\r
+ }\r
+ else\r
+ {\r
+ outputStream << dataModelVersion;\r
+ firstEntry = false;\r
+ }\r
+ }\r
+\r
+ ocRep.setValue(OC_RSRVD_DATA_MODEL_VERSION, outputStream.str());\r
\r
std::thread getDeviceInfoCallbackThread(deviceInfoHandler, ocRep);\r
getDeviceInfoCallbackThread.detach();\r