// ChangeLightRepresentaion is an observation function, // which notifies any changes to the resource to stack // via notifyObservers void * ChangeLightRepresentation (void *param) { LightResource* lightPtr = (LightResource*) param; // This function continuously monitors for the changes while (1) { sleep (3); if (gObservation) { // If under observation if there are any changes to the light resource // we call notifyObservors // // For demostration we are changing the power value and notifying. lightPtr->m_power += 10; cout << "\nPower updated to : " << lightPtr->m_power << endl; cout << "Notifying observers with resource handle: " << lightPtr->getHandle() << endl; OCStackResult result = OC_STACK_OK; if(isListOfObservers) { std::shared_ptr<OCResourceResponse> resourceResponse(new OCResourceResponse()); resourceResponse->setErrorCode(200); resourceResponse->setResourceRepresentation(lightPtr->get(), DEFAULT_INTERFACE); result = OCPlatform::notifyListOfObservers( lightPtr->getHandle(), lightPtr->m_interestedObservers, resourceResponse); } else { result = OCPlatform::notifyAllObservers(lightPtr->getHandle()); } if(OC_STACK_NO_OBSERVERS == result) { cout << "No More observers, stopping notifications" << endl; gObservation = 0; } } } return NULL; }