X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=resource%2Fexamples%2Fpresenceserver.cpp;h=c8c7f9c295ae61286504b07af290ea0826c340ea;hb=557f1a83fc2108899640a599d9bb5e22bc5bc91b;hp=228e6af33e711f0d2b98c85e20b9bb054c43a629;hpb=340918a789806270515ebef6723a058f6c9b3f7d;p=platform%2Fupstream%2Fiotivity.git diff --git a/resource/examples/presenceserver.cpp b/resource/examples/presenceserver.cpp index 228e6af..c8c7f9c 100644 --- a/resource/examples/presenceserver.cpp +++ b/resource/examples/presenceserver.cpp @@ -35,6 +35,7 @@ #include "OCPlatform.h" #include "OCApi.h" +#include "ocpayload.h" #ifdef HAVE_WINDOWS_H #include @@ -45,6 +46,30 @@ using namespace std; #define numPresenceResources (2) +// Set of strings for each of platform Info fields +std::string platformId = "0A3E0D6F-DBF5-404E-8719-D6880042463A"; +std::string manufacturerName = "OCF"; +std::string manufacturerLink = "https://www.iotivity.org"; +std::string modelNumber = "myModelNumber"; +std::string dateOfManufacture = "2016-01-15"; +std::string platformVersion = "myPlatformVersion"; +std::string operatingSystemVersion = "myOS"; +std::string hardwareVersion = "myHardwareVersion"; +std::string firmwareVersion = "1.0"; +std::string supportLink = "https://www.iotivity.org"; +std::string systemTime = "2016-01-15T11.01"; + +// Set of strings for each of device info fields +std::string deviceName = "IoTivity Presence Server"; +std::string specVersion = "core.1.1.0"; +std::string dataModelVersions = "res.1.1.0"; + +// OCPlatformInfo Contains all the platform info to be stored +OCPlatformInfo platformInfo; + +// OCDeviceInfo Contains all the device info to be stored +OCDeviceInfo deviceInfo; + // Forward declaring the entityHandler OCEntityHandlerResult entityHandler(std::shared_ptr request); @@ -197,6 +222,72 @@ OCEntityHandlerResult entityHandler(std::shared_ptr /*request return OC_EH_OK; } +void DeletePlatformInfo() +{ + delete[] platformInfo.platformID; + delete[] platformInfo.manufacturerName; + delete[] platformInfo.manufacturerUrl; + delete[] platformInfo.modelNumber; + delete[] platformInfo.dateOfManufacture; + delete[] platformInfo.platformVersion; + delete[] platformInfo.operatingSystemVersion; + delete[] platformInfo.hardwareVersion; + delete[] platformInfo.firmwareVersion; + delete[] platformInfo.supportUrl; + delete[] platformInfo.systemTime; +} + +void DeleteDeviceInfo() +{ + delete[] deviceInfo.deviceName; + delete[] deviceInfo.specVersion; + OCFreeOCStringLL(deviceInfo.dataModelVersions); +} + +void DuplicateString(char ** targetString, std::string sourceString) +{ + *targetString = new char[sourceString.length() + 1]; + strncpy(*targetString, sourceString.c_str(), (sourceString.length() + 1)); +} + +OCStackResult SetPlatformInfo(std::string platformID, std::string manufacturerName, + std::string manufacturerUrl, std::string modelNumber, std::string dateOfManufacture, + std::string platformVersion, std::string operatingSystemVersion, + std::string hardwareVersion, std::string firmwareVersion, std::string supportUrl, + std::string systemTime) +{ + DuplicateString(&platformInfo.platformID, platformID); + DuplicateString(&platformInfo.manufacturerName, manufacturerName); + DuplicateString(&platformInfo.manufacturerUrl, manufacturerUrl); + DuplicateString(&platformInfo.modelNumber, modelNumber); + DuplicateString(&platformInfo.dateOfManufacture, dateOfManufacture); + DuplicateString(&platformInfo.platformVersion, platformVersion); + DuplicateString(&platformInfo.operatingSystemVersion, operatingSystemVersion); + DuplicateString(&platformInfo.hardwareVersion, hardwareVersion); + DuplicateString(&platformInfo.firmwareVersion, firmwareVersion); + DuplicateString(&platformInfo.supportUrl, supportUrl); + DuplicateString(&platformInfo.systemTime, systemTime); + + return OC_STACK_OK; +} + +OCStackResult SetDeviceInfo(std::string deviceName, std::string specVersion, std::string dataModelVersions) +{ + DuplicateString(&deviceInfo.deviceName, deviceName); + + if (!specVersion.empty()) + { + DuplicateString(&deviceInfo.specVersion, specVersion); + } + + if (!dataModelVersions.empty()) + { + OCResourcePayloadAddStringLL(&deviceInfo.dataModelVersions, dataModelVersions.c_str()); + } + + return OC_STACK_OK; +} + int main() { // Create PlatformConfig object @@ -209,6 +300,30 @@ int main() }; OCPlatform::Configure(cfg); + std::cout << "Starting server & setting platform info\n"; + + OCStackResult result = SetPlatformInfo(platformId, manufacturerName, manufacturerLink, + modelNumber, dateOfManufacture, platformVersion, operatingSystemVersion, + hardwareVersion, firmwareVersion, supportLink, systemTime); + + result = OCPlatform::registerPlatformInfo(platformInfo); + + if (result != OC_STACK_OK) + { + std::cout << "Platform Registration failed\n"; + return -1; + } + + result = SetDeviceInfo(deviceName, specVersion, dataModelVersions); + OCResourcePayloadAddStringLL(&deviceInfo.types, "oic.wk.d"); + + result = OCPlatform::registerDeviceInfo(deviceInfo); + + if (result != OC_STACK_OK) + { + std::cout << "Device Registration failed\n"; + return -1; + } try { using namespace OC::OCPlatform; @@ -247,6 +362,9 @@ int main() createPresenceResources(); + DeletePlatformInfo(); + DeleteDeviceInfo(); + // A condition variable will free the mutex it is given, then do a non- // intensive block until 'notify' is called on it. In this case, since we // don't ever call cv.notify, this should be a non-processor intensive version