+OCStackResult OCResetResourceInterfaces(OCResourceHandle handle,
+ const char *newResourceInterface)
+{
+ OCStackResult result = OC_STACK_ERROR;
+ OCResource *resource = NULL;
+
+ resource = findResource((OCResource *) handle);
+ if (!resource)
+ {
+ OIC_LOG(ERROR, TAG, "Resource not found");
+ return OC_STACK_ERROR;
+ }
+
+ // Clear all bound interface
+ deleteResourceInterface(resource->rsrcInterface);
+ resource->rsrcInterface = NULL;
+
+ // Bind new interface to resource
+ result = BindResourceInterfaceToResource(resource, newResourceInterface);
+
+#ifdef WITH_PRESENCE
+ if (presenceResource.handle)
+ {
+ ((OCResource *)presenceResource.handle)->sequenceNum = OCGetRandom();
+ SendPresenceNotification(resource->rsrcType, OC_PRESENCE_TRIGGER_CHANGE);
+ }
+#endif
+
+ return result;
+}
+