void foundResource(std::shared_ptr<OCResource> resource) { std::cout << "In foundResource\n"; std::string resourceURI; std::string hostAddress; try { if(discoveredResources.find(resource->uniqueIdentifier()) == discoveredResources.end()) { std::cout << "Found resource " << resource->uniqueIdentifier() << " for the first time on server with ID: "<< resource->sid()<<std::endl; discoveredResources[resource->uniqueIdentifier()] = resource; } else { std::cout<<"Found resource "<< resource->uniqueIdentifier() << " again!"<<std::endl; } if(curResource) { std::cout << "Found another resource, ignoring"<<std::endl; return; } if(resource) { std::cout<<"DISCOVERED Resource:"<<std::endl; resourceURI = resource->uri(); std::cout << "\tURI of the resource: " << resourceURI << std::endl; hostAddress = resource->host(); std::cout << "\tHost address of the resource: " << hostAddress << std::endl; std::cout << "\tList of resource types: " << std::endl; for(auto &resourceTypes : resource->getResourceTypes()) { std::cout << "\t\t" << resourceTypes << std::endl; } std::cout << "\tList of resource interfaces: " << std::endl; for(auto &resourceInterfaces : resource->getResourceInterfaces()) { std::cout << "\t\t" << resourceInterfaces << std::endl; } if(resourceURI == "/a/rvi") { curResource = resource; dlog_print(DLOG_INFO, LOG_TAG, "RVI resource detected"); ocfinitialized = 1; } } else { std::cout << "Resource is invalid" << std::endl; } } catch(std::exception& e) { std::cerr << "Exception in foundResource: "<< e.what() << std::endl; } std::cout << "-----------------------Exit foundResource\n"; }
// Callback to found resources void foundResource(std::shared_ptr<OCResource> resource) { std::cout << "In foundResource\n"; std::string resourceURI = resource->uri(); std::string hostAddress; try { { std::lock_guard<std::mutex> lock(curResourceLock); if (discoveredResources.find(resource->uniqueIdentifier()) == discoveredResources.end()) { std::cout << "Found resource " << resource->uniqueIdentifier() << " for the first time on server with ID: " << resource->sid() << std::endl; discoveredResources[resource->uniqueIdentifier()] = resource; if (resourceURI.find("/discomfortIndex") != std::string::npos) { std::cout << "discomfortIndex found !!! " << std::endl; DISensorResource = resource; OCRepresentation rep; rep.setValue("humidity", std::string("30")); rep.setValue("temperature", std::string("27")); resource->put(rep, QueryParamsMap(), &onPutForDISensor); } } else { std::cout << "Found resource " << resource->uniqueIdentifier() << " again!" << std::endl; } if (curResource) { std::cout << "Found another resource, ignoring" << std::endl; return; } } // Do some operations with resource object. if (resource) { std::cout << "DISCOVERED Resource:" << std::endl; // Get the resource URI resourceURI = resource->uri(); std::cout << "\tURI of the resource: " << resourceURI << std::endl; // Get the resource host address hostAddress = resource->host(); std::cout << "\tHost address of the resource: " << hostAddress << std::endl; // Get the resource types std::cout << "\tList of resource types: " << std::endl; for (auto &resourceTypes : resource->getResourceTypes()) { std::cout << "\t\t" << resourceTypes << std::endl; if (resourceTypes == "oic.r.light") { curResource = resource; // Call a local function which will internally invoke get API on the resource pointer getLightRepresentation(resource); } } // Get the resource interfaces std::cout << "\tList of resource interfaces: " << std::endl; for (auto &resourceInterfaces : resource->getResourceInterfaces()) { std::cout << "\t\t" << resourceInterfaces << std::endl; } } else { // Resource is invalid std::cout << "Resource is invalid" << std::endl; } } catch (std::exception &e) { std::cerr << "Exception in foundResource: " << e.what() << std::endl; } }
// Callback to found resources void foundResource(std::shared_ptr<OCResource> resource) { std::cout << "In foundResource\n"; std::string resourceURI; std::string hostAddress; try { { std::lock_guard<std::mutex> lock(curResourceLock); if(discoveredResources.find(resource->uniqueIdentifier()) == discoveredResources.end()) // If first time discover { std::cout << "Found resource " << resource->uniqueIdentifier() << " for the first time on server with ID: "<< resource->sid()<<std::endl; discoveredResources[resource->uniqueIdentifier()] = resource; } else { std::cout<<"Found resource "<< resource->uniqueIdentifier() << " again!"<<std::endl; } if(curResource) { std::cout << "Found another resource, ignoring"<<std::endl; return; } } // Do some operations with resource object. if(resource) { std::cout<<"DISCOVERED Resource:"<<std::endl; // Get the resource URI resourceURI = resource->uri(); std::cout << "\tURI of the resource: " << resourceURI << std::endl; // Get the resource host address hostAddress = resource->host(); std::cout << "\tHost address of the resource: " << hostAddress << std::endl; // Get the resource types std::cout << "\tList of resource types: " << std::endl; for(auto &resourceTypes : resource->getResourceTypes()) { std::cout << "\t\t" << resourceTypes << std::endl; } // Get the resource interfaces std::cout << "\tList of resource interfaces: " << std::endl; for(auto &resourceInterfaces : resource->getResourceInterfaces()) { std::cout << "\t\t" << resourceInterfaces << std::endl; } if(resourceURI == "/a/light") { curResource = resource; // Call a local function which will internally invoke get API on the resource pointer getLightRepresentation(resource); } } else { // Resource is invalid std::cout << "Resource is invalid" << std::endl; } } catch(std::exception& e) { std::cerr << "Exception in foundResource: "<< e.what() << std::endl; } }