Add EntityHandler callback parameter to C SDK.
authorCharlie Lenahan <charlie.lenahan@intel.com>
Tue, 19 May 2015 20:54:32 +0000 (16:54 -0400)
committerPatrick Lankswert <patrick.lankswert@intel.com>
Thu, 11 Jun 2015 17:45:30 +0000 (17:45 +0000)
Allows C api users to have a context callback parameter
with the use of EntityHandler callbacks for OCCreateResource.

Change-Id: I1358b6dbd5c2a9a1940f6146a87aacf84c16bb3c
Signed-off-by: Charlie Lenahan <charlie.lenahan@intel.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/1042
Tested-by: jenkins-iotivity <jenkins-iotivity@opendaylight.org>
Reviewed-by: Gabriel Schulhof <gabriel.schulhof@intel.com>
Reviewed-by: Patrick Lankswert <patrick.lankswert@intel.com>
19 files changed:
resource/csdk/stack/include/internal/ocresource.h
resource/csdk/stack/include/internal/ocresourcehandler.h
resource/csdk/stack/include/internal/ocstackinternal.h
resource/csdk/stack/include/ocstack.h
resource/csdk/stack/include/octypes.h
resource/csdk/stack/samples/arduino/SimpleClientServer/ocserver/ocserver.cpp
resource/csdk/stack/samples/linux/SimpleClientServer/ocserver.cpp
resource/csdk/stack/samples/linux/SimpleClientServer/ocserverbasicops.cpp
resource/csdk/stack/samples/linux/SimpleClientServer/ocservercoll.cpp
resource/csdk/stack/samples/linux/SimpleClientServer/ocserverslow.cpp
resource/csdk/stack/samples/linux/secure/ocserverbasicops.cpp
resource/csdk/stack/src/occollection.c
resource/csdk/stack/src/ocobserve.c
resource/csdk/stack/src/ocresource.c
resource/csdk/stack/src/ocstack.c
resource/csdk/stack/test/stacktests.cpp
resource/src/InProcServerWrapper.cpp
resource/unittests/OCResourceResponseTest.cpp
service/notification-manager/NotificationManager/src/hosting.c

index 58581ef..e38806a 100644 (file)
@@ -140,11 +140,10 @@ typedef struct rsrc_t {
     // Pointer to function that handles the entity bound to the resource.
     // This handler has to be explicitly defined by the programmer
     OCEntityHandler entityHandler;
+    // callback parameter
+    void * entityHandlerCallbackParam;
     // Properties on the resource – defines meta information on the resource
     OCResourceProperty resourceProperties ; /* ACTIVE, DISCOVERABLE etc */
-    // Pointer to an opaque object where app/user specific data can be placed with the resource;
-    // this could be information for the entity handler between invocations
-    void *context;
     // NOTE: Methods supported by this resource should be based on the interface targeted
     // i.e. look into the interface structure based on the query request Can be removed here;
     // place holder for the note above
index 9a9a30b..557eedf 100644 (file)
@@ -74,7 +74,7 @@ typedef enum
  * no entity handler.
  */
 OCEntityHandlerResult defaultResourceEHandler(OCEntityHandlerFlag flag,
-        OCEntityHandlerRequest * request);
+        OCEntityHandlerRequest * request, void* callbackParam);
 
 /**
  * Get string value associated with a virtual resource type.
index 76caaea..1d3932c 100644 (file)
@@ -47,6 +47,7 @@ extern "C" {
 // Global variables
 //-----------------------------------------------------------------------------
 extern OCDeviceEntityHandler defaultDeviceHandler;
+extern void* defaultDeviceHandlerCallbackParameter;
 
 //-----------------------------------------------------------------------------
 // Defines
index ae30a0a..91ff8f4 100644 (file)
@@ -168,10 +168,11 @@ OCStackResult OCStopPresence();
  * @param entityHandler Entity handler function that is called by ocstack to handle requests for
  *                      any undefined resources or default actions.
  *                      If NULL is passed it removes the device default entity handler.
+ * @param callbackParameter paramter passed back when entityHandler is called.
  *
  * @return ::OC_STACK_OK on success, some other value upon failure.
  */
-OCStackResult OCSetDefaultDeviceEntityHandler(OCDeviceEntityHandler entityHandler);
+OCStackResult OCSetDefaultDeviceEntityHandler(OCDeviceEntityHandler entityHandler, void* callbackParameter);
 
 /**
  * Set device information.
@@ -211,6 +212,7 @@ OCStackResult OCSetPlatformInfo(OCPlatformInfo platformInfo);
  * @param uri URI of the resource.  Example:  "/a/led".
  * @param entityHandler Entity handler function that is called by ocstack to handle requests, etc.
  *                      NULL for default entity handler.
+ * @param callbackParameter paramter passed back when entityHandler is called.
  * @param resourceProperties Properties supported by resource.
  *                           Example: ::OC_DISCOVERABLE|::OC_OBSERVABLE.
  *
@@ -221,6 +223,7 @@ OCStackResult OCCreateResource(OCResourceHandle *handle,
                                const char *resourceInterfaceName,
                                const char *uri,
                                OCEntityHandler entityHandler,
+                               void* callbackParam,
                                uint8_t resourceProperties);
 
 
@@ -270,9 +273,11 @@ OCStackResult OCBindResourceInterfaceToResource(OCResourceHandle handle,
  *
  * @param handle Handle to the resource that the contained resource is to be bound.
  * @param entityHandler Entity handler function that is called by ocstack to handle requests, etc.
+ * @param callbackParameter context paremeter that will be passed to entityHandler
  * @return ::OC_STACK_OK on success, some other value upon failure.
  */
-OCStackResult OCBindResourceHandler(OCResourceHandle handle, OCEntityHandler entityHandler);
+OCStackResult OCBindResourceHandler(OCResourceHandle handle, OCEntityHandler entityHandler,
+                                        void *callbackParameter);
 
 /**
  * Get the number of resources that have been created in the stack.
index b14b1f2..8864231 100644 (file)
@@ -556,13 +556,13 @@ typedef struct OCCallbackData
  * Entity handler callback needs to fill the resPayload of the entityHandlerRequest.
  */
 typedef OCEntityHandlerResult (*OCEntityHandler)
-(OCEntityHandlerFlag flag, OCEntityHandlerRequest * entityHandlerRequest);
+(OCEntityHandlerFlag flag, OCEntityHandlerRequest * entityHandlerRequest, void* callbackParam);
 
 /**
  * Device Entity handler need to use this call back instead of OCEntityHandler.
  */
 typedef OCEntityHandlerResult (*OCDeviceEntityHandler)
-(OCEntityHandlerFlag flag, OCEntityHandlerRequest * entityHandlerRequest, char* uri);
+(OCEntityHandlerFlag flag, OCEntityHandlerRequest * entityHandlerRequest, char* uri, void* callbackParam);
 
 #ifdef __cplusplus
 }
index fb1c61f..4da7bb6 100644 (file)
@@ -149,7 +149,8 @@ void PrintArduinoMemoryStats()
 
 // This is the entity handler for the registered resource.
 // This is invoked by OCStack whenever it recevies a request for this resource.
-OCEntityHandlerResult OCEntityHandlerCb(OCEntityHandlerFlag flag, OCEntityHandlerRequest * entityHandlerRequest )
+OCEntityHandlerResult OCEntityHandlerCb(OCEntityHandlerFlag flag, OCEntityHandlerRequest * entityHandlerRequest,
+                                        void *callbackParam)
 {
     OCEntityHandlerResult ehRet = OC_EH_OK;
     OCEntityHandlerResponse response = {0};
@@ -301,6 +302,7 @@ void createLightResource()
             OC_RSRVD_INTERFACE_DEFAULT,
             "/a/light",
             OCEntityHandlerCb,
+            NULL,
             OC_DISCOVERABLE|OC_OBSERVABLE);
     OC_LOG_V(INFO, TAG, "Created Light resource with result: %s", getResult(res));
 }
index 2d8bd54..e6fed19 100644 (file)
@@ -490,7 +490,7 @@ void ProcessObserveDeregister (OCEntityHandlerRequest *ehRequest)
 
 OCEntityHandlerResult
 OCDeviceEntityHandlerCb (OCEntityHandlerFlag flag,
-        OCEntityHandlerRequest *entityHandlerRequest, char* uri)
+        OCEntityHandlerRequest *entityHandlerRequest, char* uri, void* callbackParam)
 {
     OC_LOG_V (INFO, TAG, "Inside device default entity handler - flags: 0x%x, uri: %s", flag, uri);
 
@@ -580,7 +580,7 @@ OCDeviceEntityHandlerCb (OCEntityHandlerFlag flag,
 
 OCEntityHandlerResult
 OCNOPEntityHandlerCb (OCEntityHandlerFlag flag,
-        OCEntityHandlerRequest *entityHandlerRequest)
+        OCEntityHandlerRequest *entityHandlerRequest, void* callbackParam)
 {
     // This is callback is associated with the 2 presence notification
     // resources. They are non-operational.
@@ -589,7 +589,7 @@ OCNOPEntityHandlerCb (OCEntityHandlerFlag flag,
 
 OCEntityHandlerResult
 OCEntityHandlerCb (OCEntityHandlerFlag flag,
-        OCEntityHandlerRequest *entityHandlerRequest)
+        OCEntityHandlerRequest *entityHandlerRequest, void* callback)
 {
     OC_LOG_V (INFO, TAG, "Inside entity handler - flags: 0x%x", flag);
 
@@ -819,6 +819,7 @@ void *presenceNotificationGenerator(void *param)
                     OC_RSRVD_INTERFACE_DEFAULT,
                     presenceNotificationUris.at(i).c_str(),
                     OCNOPEntityHandlerCb,
+                    NULL,
                     OC_DISCOVERABLE|OC_OBSERVABLE);
         }
         if(res != OC_STACK_OK)
@@ -866,6 +867,7 @@ int createLightResource (char *uri, LightResource *lightResource)
             "oc.mi.def",
             uri,
             OCEntityHandlerCb,
+            NULL,
             OC_DISCOVERABLE|OC_OBSERVABLE);
     OC_LOG_V(INFO, TAG, "Created Light resource with result: %s", getResult(res));
 
@@ -1049,7 +1051,7 @@ int main(int argc, char* argv[])
     }
 #endif
 
-    OCSetDefaultDeviceEntityHandler(OCDeviceEntityHandlerCb);
+    OCSetDefaultDeviceEntityHandler(OCDeviceEntityHandlerCb, NULL);
 
     OCStackResult registrationResult =
         SetPlatformInfo(platformID, manufacturerName, manufacturerUrl, modelNumber,
index e053160..0e37355 100644 (file)
@@ -286,7 +286,7 @@ OCEntityHandlerResult ProcessPostRequest (OCEntityHandlerRequest *ehRequest, cha
 
 OCEntityHandlerResult
 OCEntityHandlerCb (OCEntityHandlerFlag flag,
-        OCEntityHandlerRequest *entityHandlerRequest)
+        OCEntityHandlerRequest *entityHandlerRequest,void* callbackParam)
 {
     OC_LOG_V (INFO, TAG, "Inside entity handler - flags: 0x%x", flag);
 
@@ -408,6 +408,7 @@ int createLEDResource (char *uri, LEDResource *ledResource, bool resourceState,
             OC_RSRVD_INTERFACE_DEFAULT,
             uri,
             OCEntityHandlerCb,
+            NULL,
             OC_DISCOVERABLE|OC_OBSERVABLE);
     OC_LOG_V(INFO, TAG, "Created LED resource with result: %s", getResult(res));
 
index aff73b6..fc4c333 100644 (file)
@@ -141,7 +141,8 @@ PrintReceivedMsgInfo(OCEntityHandlerFlag flag, OCEntityHandlerRequest * ehReques
 }
 
 OCEntityHandlerResult OCEntityHandlerRoomCb(OCEntityHandlerFlag flag,
-                                            OCEntityHandlerRequest * ehRequest)
+                                            OCEntityHandlerRequest * ehRequest,
+                                            void* callback)
 {
     OCEntityHandlerResult ret = OC_EH_OK;
     OCEntityHandlerResponse response;
@@ -316,7 +317,7 @@ OCEntityHandlerResult OCEntityHandlerRoomCb(OCEntityHandlerFlag flag,
 }
 
 OCEntityHandlerResult OCEntityHandlerLightCb(OCEntityHandlerFlag flag,
-        OCEntityHandlerRequest * ehRequest)
+        OCEntityHandlerRequest * ehRequest,void* callbackParam)
 {
     OCEntityHandlerResult ret = OC_EH_OK;
     OCEntityHandlerResponse response;
@@ -376,7 +377,7 @@ OCEntityHandlerResult OCEntityHandlerLightCb(OCEntityHandlerFlag flag,
 }
 
 OCEntityHandlerResult OCEntityHandlerFanCb(OCEntityHandlerFlag flag,
-        OCEntityHandlerRequest * ehRequest)
+        OCEntityHandlerRequest * ehRequest, void* callback)
 {
     OCEntityHandlerResult ret = OC_EH_OK;
     OCEntityHandlerResponse response;
@@ -547,6 +548,7 @@ void createResources()
             OC_RSRVD_INTERFACE_DEFAULT,
             "/a/fan",
             OCEntityHandlerFanCb,
+            NULL,
             OC_DISCOVERABLE|OC_OBSERVABLE);
     OC_LOG_V(INFO, TAG, "Created fan resource with result: %s", getResult(res));
 
@@ -556,6 +558,7 @@ void createResources()
             OC_RSRVD_INTERFACE_DEFAULT,
             "/a/light",
             OCEntityHandlerLightCb,
+            NULL,
             OC_DISCOVERABLE|OC_OBSERVABLE);
     OC_LOG_V(INFO, TAG, "Created light resource with result: %s", getResult(res));
 
@@ -568,6 +571,7 @@ void createResources()
                 OC_RSRVD_INTERFACE_BATCH,
                 "/a/room",
                 OCEntityHandlerRoomCb,
+                NULL,
                 OC_DISCOVERABLE);
     }
     else
@@ -577,6 +581,7 @@ void createResources()
                 OC_RSRVD_INTERFACE_BATCH,
                 "/a/room",
                 NULL,
+                NULL,
                 OC_DISCOVERABLE);
     }
 
index 305844c..2c42f6f 100644 (file)
@@ -206,7 +206,7 @@ OCEntityHandlerRequest *CopyRequest(OCEntityHandlerRequest *entityHandlerRequest
 
 OCEntityHandlerResult
 OCEntityHandlerCb (OCEntityHandlerFlag flag,
-        OCEntityHandlerRequest *entityHandlerRequest)
+        OCEntityHandlerRequest *entityHandlerRequest, void* callbackParam)
 {
     OCEntityHandlerResult result = OC_EH_ERROR;
     OCEntityHandlerRequest *request = NULL;
@@ -367,6 +367,7 @@ int createLEDResource (char *uri, LEDResource *ledResource, bool resourceState,
             OC_RSRVD_INTERFACE_DEFAULT,
             uri,
             OCEntityHandlerCb,
+            NULL,
             OC_DISCOVERABLE|OC_OBSERVABLE);
     OC_LOG_V(INFO, TAG, "Created LED resource with result: %s", getResult(res));
 
index a6ec6af..4dba110 100644 (file)
@@ -256,7 +256,8 @@ OCEntityHandlerResult ProcessPostRequest (OCEntityHandlerRequest *ehRequest,
 
 OCEntityHandlerResult
 OCEntityHandlerCb (OCEntityHandlerFlag flag,
-        OCEntityHandlerRequest *entityHandlerRequest)
+        OCEntityHandlerRequest *entityHandlerRequest,
+        void* callbackParam)
 {
     OC_LOG_V (INFO, TAG, "Inside entity handler - flags: 0x%x", flag);
 
@@ -399,6 +400,7 @@ int createLEDResource (char *uri, LEDResource *ledResource, bool resourceState,
             OC_RSRVD_INTERFACE_DEFAULT,
             uri,
             OCEntityHandlerCb,
+            NULL,
             OC_DISCOVERABLE|OC_OBSERVABLE | OC_SECURE);
     OC_LOG_V(INFO, TAG, "Created LED resource with result: %s", getResult(res));
 
index 174eb64..901b8db 100644 (file)
@@ -401,7 +401,8 @@ HandleBatchInterface(OCEntityHandlerRequest *ehRequest)
                 // is ehRequest->resource
                 ehRequest->resource = (OCResourceHandle) temp;
 
-                ehResult = temp->entityHandler(OC_REQUEST_FLAG, ehRequest);
+                ehResult = temp->entityHandler(OC_REQUEST_FLAG, ehRequest,
+                                        temp->entityHandlerCallbackParam);
 
                 // The default collection handler is returning as OK
                 if(stackRet != OC_STACK_SLOW_RESOURCE)
index a341629..c0800c2 100644 (file)
@@ -219,7 +219,8 @@ OCStackResult SendAllObserverNotification (OCMethod method, OCResource *resPtr,
                                     OC_OBSERVE_NO_OPTION, 0);
                         if(result == OC_STACK_OK)
                         {
-                            ehResult = resPtr->entityHandler(OC_REQUEST_FLAG, &ehRequest);
+                            ehResult = resPtr->entityHandler(OC_REQUEST_FLAG, &ehRequest,
+                                                resPtr->entityHandlerCallbackParam);
                             if(ehResult == OC_EH_ERROR)
                             {
                                 FindAndDeleteServerRequest(request);
index 0374a6d..934155d 100644 (file)
@@ -65,12 +65,13 @@ static const char * VIRTUAL_RSRCS[] =
 // Default resource entity handler function
 //-----------------------------------------------------------------------------
 OCEntityHandlerResult defaultResourceEHandler(OCEntityHandlerFlag flag,
-        OCEntityHandlerRequest * request)
+        OCEntityHandlerRequest * request, void* callbackParam)
 {
     //TODO ("Implement me!!!!");
     // TODO:  remove silence unused param warnings
     (void) flag;
     (void) request;
+    (void) callbackParam;
     return  OC_EH_OK; // Making sure that the Default EH and the Vendor EH have matching signatures
 }
 
@@ -861,7 +862,7 @@ HandleDefaultDeviceEntityHandler (OCServerRequest *request)
 
     // At this point we know for sure that defaultDeviceHandler exists
     ehResult = defaultDeviceHandler(OC_REQUEST_FLAG, &ehRequest,
-                                  (char*) request->resourceUrl);
+                                  (char*) request->resourceUrl, defaultDeviceHandlerCallbackParameter);
     if(ehResult == OC_EH_SLOW)
     {
         OC_LOG(INFO, TAG, PCF("This is a slow resource"));
@@ -974,7 +975,7 @@ HandleResourceWithEntityHandler (OCServerRequest *request,
         goto exit;
     }
 
-    ehResult = resource->entityHandler(ehFlag, &ehRequest);
+    ehResult = resource->entityHandler(ehFlag, &ehRequest, resource->entityHandlerCallbackParam);
     if(ehResult == OC_EH_SLOW)
     {
         OC_LOG(INFO, TAG, PCF("This is a slow resource"));
index 4e2ad39..bc9d39e 100644 (file)
@@ -97,7 +97,7 @@ static uint32_t PresenceTimeOut[] = {50, 75, 85, 95, 100};
 
 static OCMode myStackMode;
 OCDeviceEntityHandler defaultDeviceHandler;
-
+void* defaultDeviceHandlerCallbackParameter = NULL;
 
 //-----------------------------------------------------------------------------
 // Macros
@@ -524,7 +524,8 @@ OCStackResult OCStackFeedBack(CAToken_t token, uint8_t tokenLength, uint8_t stat
             {
                 return result;
             }
-            observer->resource->entityHandler(OC_OBSERVE_FLAG, &ehRequest);
+            observer->resource->entityHandler(OC_OBSERVE_FLAG, &ehRequest,
+                            observer->resource->entityHandlerCallbackParam);
         }
         //observer is not observing anymore
         result = DeleteObserverUsingToken (token, tokenLength);
@@ -569,7 +570,8 @@ OCStackResult OCStackFeedBack(CAToken_t token, uint8_t tokenLength, uint8_t stat
                 {
                     return OC_STACK_ERROR;
                 }
-                observer->resource->entityHandler(OC_OBSERVE_FLAG, &ehRequest);
+                observer->resource->entityHandler(OC_OBSERVE_FLAG, &ehRequest,
+                                    observer->resource->entityHandlerCallbackParam);
                 //observer is unreachable
                 result = DeleteObserverUsingToken (token, tokenLength);
                 if(result == OC_STACK_OK)
@@ -1857,6 +1859,7 @@ OCStackResult OCInit(const char *ipAddr, uint16_t port, OCMode mode)
     myStackMode = mode;
 
     defaultDeviceHandler = NULL;
+    defaultDeviceHandlerCallbackParameter = NULL;
     OCSeedRandom();
 
     result = CAResultToOCResult(CAInitialize());
@@ -2609,9 +2612,11 @@ OCStackResult OCStopPresence()
 }
 #endif
 
-OCStackResult OCSetDefaultDeviceEntityHandler(OCDeviceEntityHandler entityHandler)
+OCStackResult OCSetDefaultDeviceEntityHandler(OCDeviceEntityHandler entityHandler,
+                                            void* callbackParameter)
 {
     defaultDeviceHandler = entityHandler;
+    defaultDeviceHandlerCallbackParameter = callbackParameter;
 
     return OC_STACK_OK;
 }
@@ -2654,6 +2659,7 @@ OCStackResult OCCreateResource(OCResourceHandle *handle,
         const char *resourceTypeName,
         const char *resourceInterfaceName,
         const char *uri, OCEntityHandler entityHandler,
+        void* callbackParam,
         uint8_t resourceProperties)
 {
 
@@ -2757,10 +2763,12 @@ OCStackResult OCCreateResource(OCResourceHandle *handle,
     if (entityHandler)
     {
         pointer->entityHandler = entityHandler;
+        pointer->entityHandlerCallbackParam = callbackParam;
     }
     else
     {
         pointer->entityHandler = defaultResourceEHandler;
+        pointer->entityHandlerCallbackParam = NULL;
     }
 
     *handle = pointer;
@@ -3225,7 +3233,8 @@ OCResourceHandle OCGetResourceHandleFromCollection(OCResourceHandle collectionHa
 }
 
 OCStackResult OCBindResourceHandler(OCResourceHandle handle,
-        OCEntityHandler entityHandler)
+        OCEntityHandler entityHandler,
+        void* callbackParam)
 {
     OCResource *resource = NULL;
 
@@ -3244,6 +3253,7 @@ OCStackResult OCBindResourceHandler(OCResourceHandle handle,
 
     // Bind the handler
     resource->entityHandler = entityHandler;
+    resource->entityHandlerCallbackParam = callbackParam;
 
     #ifdef WITH_PRESENCE
     if(presenceResource.handle)
@@ -3501,6 +3511,7 @@ OCStackResult initResources()
             "core.r",
             OC_PRESENCE_URI,
             NULL,
+            NULL,
             OC_OBSERVABLE);
     //make resource inactive
     result = OCChangeResourceProperty(
index 280fc32..4ae33cf 100644 (file)
@@ -79,7 +79,8 @@ extern "C"  OCStackApplicationResult asyncDoResourcesCallback(void* ctx, OCDoHan
 //-----------------------------------------------------------------------------
 // Entity handler
 //-----------------------------------------------------------------------------
-OCEntityHandlerResult entityHandler(OCEntityHandlerFlag flag, OCEntityHandlerRequest * entityHandlerRequest)
+OCEntityHandlerResult entityHandler(OCEntityHandlerFlag flag, OCEntityHandlerRequest * entityHandlerRequest,
+                                    void* callbackParam)
 {
     OC_LOG(INFO, TAG, "Entering entityHandler");
 
@@ -336,6 +337,7 @@ TEST(StackResource, CreateResourceBadParams)
                                             "core.rw",
                                             "/a/led",
                                             0,
+                                            NULL,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
 
     EXPECT_EQ(OC_STACK_INVALID_PARAM, OCCreateResource(&handle,
@@ -343,6 +345,7 @@ TEST(StackResource, CreateResourceBadParams)
                                             "core.rw",
                                             "/a/led",
                                             0,
+                                            NULL,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
 
     // Property bitmask out of range
@@ -351,6 +354,7 @@ TEST(StackResource, CreateResourceBadParams)
                                             "core.rw",
                                             "/a/led",
                                             0,
+                                            NULL,
                                             128));// invalid bitmask for OCResourceProperty
 
     EXPECT_EQ(OC_STACK_OK, OCStop());
@@ -402,6 +406,7 @@ TEST(StackResource, CreateResourceSuccess)
                                             "core.rw",
                                             "/a/led",
                                             0,
+                                            NULL,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
     const char *url = OCGetResourceUri(handle);
     EXPECT_STREQ("/a/led", url);
@@ -421,6 +426,7 @@ TEST(StackResource, CreateResourceFailDuplicateUri)
                                             "core.rw",
                                             "/a/led",
                                             0,
+                                            NULL,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
     const char *url = OCGetResourceUri(handle);
     EXPECT_STREQ("/a/led", url);
@@ -430,6 +436,7 @@ TEST(StackResource, CreateResourceFailDuplicateUri)
                                             "core.rw",
                                             "/a/led",
                                             0,
+                                            NULL,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
 
     EXPECT_EQ(OC_STACK_OK, OCStop());
@@ -447,6 +454,7 @@ TEST(StackResource, CreateResourceMultipleResources)
                                             "core.rw",
                                             "/a/led1",
                                             0,
+                                            NULL,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
 
     OCResourceHandle handle2;
@@ -455,6 +463,7 @@ TEST(StackResource, CreateResourceMultipleResources)
                                             "core.rw",
                                             "/a/led2",
                                             0,
+                                            NULL,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
     OCResourceHandle handle3;
     EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle3,
@@ -462,6 +471,7 @@ TEST(StackResource, CreateResourceMultipleResources)
                                             "core.rw",
                                             "/a/led3",
                                             0,
+                                            NULL,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
 
     const char *url = OCGetResourceUri(handle1);
@@ -488,6 +498,7 @@ TEST(StackResource, CreateResourceBadResoureType)
                                             "core.rw",
                                             "/a/led",
                                             0,
+                                            NULL,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
 
     EXPECT_EQ(OC_STACK_OK, OCStop());
@@ -505,6 +516,7 @@ TEST(StackResource, CreateResourceGoodResourceType)
                                             "core.rw",
                                             "/a/led",
                                             0,
+                                            NULL,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
 
     EXPECT_EQ(OC_STACK_OK, OCStop());
@@ -522,6 +534,7 @@ TEST(StackResource, ResourceTypeName)
                                             "core.rw",
                                             "/a/led",
                                             0,
+                                            NULL,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
 
     uint8_t numResourceTypes;
@@ -552,6 +565,7 @@ TEST(StackResource, ResourceTypeAttrRepresentation)
                                             "core.rw",
                                             "/a/led",
                                             0,
+                                            NULL,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
 
     uint8_t numResourceTypes;
@@ -573,6 +587,7 @@ TEST(StackResource, ResourceTypeInterface)
                                             "core.rw",
                                             "/a/led",
                                             0,
+                                            NULL,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
 
     uint8_t numResourceInterfaces;
@@ -605,6 +620,7 @@ TEST(StackResource, ResourceDefaultInterfaceAlwaysFirst)
                                             "core.rw",
                                             "/a/led",
                                             0,
+                                            NULL,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
     EXPECT_EQ(OC_STACK_OK, OCBindResourceInterfaceToResource(handle,
                                         OC_RSRVD_INTERFACE_DEFAULT));
@@ -635,6 +651,7 @@ TEST(StackResource, ResourceDuplicateDefaultInterfaces)
                                             "core.rw",
                                             "/a/led",
                                             0,
+                                            NULL,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
 
     EXPECT_EQ(OC_STACK_OK, OCBindResourceInterfaceToResource(handle,
@@ -666,6 +683,7 @@ TEST(StackResource, ResourceDuplicateNonDefaultInterfaces)
                                             "core.rw",
                                             "/a/led",
                                             0,
+                                            NULL,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
 
     EXPECT_EQ(OC_STACK_OK, OCBindResourceInterfaceToResource(handle,
@@ -692,6 +710,7 @@ TEST(StackResource, ResourceTypeInterfaceMethods)
                                             "core.rw",
                                             "/a/led",
                                             0,
+                                            NULL,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
 
     uint8_t numResourceInterfaces;
@@ -713,6 +732,7 @@ TEST(StackResource, GetResourceProperties)
                                             "core.rw",
                                             "/a/led",
                                             0,
+                                            NULL,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
 
     EXPECT_EQ(OC_ACTIVE|OC_DISCOVERABLE|OC_OBSERVABLE, OCGetResourceProperties(handle));
@@ -735,6 +755,7 @@ TEST(StackResource, StackTestResourceDiscoverOneResourceBad)
                                             "core.rw",
                                             "/a1/led",
                                             0,
+                                            NULL,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
     const char *url = OCGetResourceUri(handle);
     EXPECT_STREQ("/a1/led", url);
@@ -761,6 +782,7 @@ TEST(StackResource, StackTestResourceDiscoverOneResource)
                                             "core.rw",
                                             "/a/led",
                                             0,
+                                            NULL,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
     const char *url = OCGetResourceUri(handle);
     EXPECT_STREQ("/a/led", url);
@@ -783,6 +805,7 @@ TEST(StackResource, StackTestResourceDiscoverManyResources)
                                             "core.rw",
                                             "/a/led1",
                                             0,
+                                            NULL,
                                             OC_DISCOVERABLE));
     const char *url = OCGetResourceUri(handle1);
     EXPECT_STREQ("/a/led1", url);
@@ -793,6 +816,7 @@ TEST(StackResource, StackTestResourceDiscoverManyResources)
                                             "core.rw",
                                             "/a/led2",
                                             0,
+                                            NULL,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
     url = OCGetResourceUri(handle2);
     EXPECT_STREQ("/a/led2", url);
@@ -806,6 +830,7 @@ TEST(StackResource, StackTestResourceDiscoverManyResources)
                                             "core.rw",
                                             "/a/led3",
                                             0,
+                                            NULL,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
     url = OCGetResourceUri(handle3);
     EXPECT_STREQ("/a/led3", url);
@@ -819,6 +844,7 @@ TEST(StackResource, StackTestResourceDiscoverManyResources)
                                             "core.rw",
                                             "/a/led4",
                                             0,
+                                            NULL,
                                             OC_DISCOVERABLE));
     url = OCGetResourceUri(handle4);
     EXPECT_STREQ("/a/led4", url);
@@ -844,6 +870,7 @@ TEST(StackBind, BindResourceTypeNameBad)
                                             "core.rw",
                                             "/a/led",
                                             0,
+                                            NULL,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
 
     uint8_t numResourceTypes;
@@ -869,6 +896,7 @@ TEST(StackBind, BindResourceTypeNameGood)
                                             "core.rw",
                                             "/a/led",
                                             0,
+                                            NULL,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
 
     uint8_t numResourceTypes;
@@ -904,6 +932,7 @@ TEST(StackBind, BindResourceTypeAttribRepGood)
                                             "core.rw",
                                             "/a/led",
                                             0,
+                                            NULL,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
 
     uint8_t numResourceTypes;
@@ -934,6 +963,7 @@ TEST(StackBind, BindResourceInterfaceNameBad)
                                             "core.rw",
                                             "/a/led",
                                             0,
+                                            NULL,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
 
     uint8_t numResourceInterfaces;
@@ -959,6 +989,7 @@ TEST(StackBind, BindResourceInterfaceNameGood)
                                             "core.rw",
                                             "/a/led",
                                             0,
+                                            NULL,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
 
     uint8_t numResourceInterfaces;
@@ -989,6 +1020,7 @@ TEST(StackBind, BindResourceInterfaceMethodsBad)
                                             "core.rw",
                                             "/a/led",
                                             0,
+                                            NULL,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
 
     uint8_t numResourceInterfaces;
@@ -1012,6 +1044,7 @@ TEST(StackBind, BindResourceInterfaceMethodsGood)
                                             "core.rw",
                                             "/a/led",
                                             0,
+                                            NULL,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
 
     uint8_t numResourceInterfaces;
@@ -1038,6 +1071,7 @@ TEST(StackBind, BindContainedResourceBad)
                                             "core.rw",
                                             "/a/kitchen",
                                             0,
+                                            NULL,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
 
     OCResourceHandle handle0;
@@ -1046,6 +1080,7 @@ TEST(StackBind, BindContainedResourceBad)
                                             "core.rw",
                                             "/a/led",
                                             0,
+                                            NULL,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
 
     EXPECT_EQ(OC_STACK_INVALID_PARAM, OCBindResource(containerHandle, containerHandle));
@@ -1072,6 +1107,7 @@ TEST(StackBind, BindContainedResourceGood)
                                             "core.rw",
                                             "/a/kitchen",
                                             0,
+                                            NULL,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
     EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
     EXPECT_EQ(++numExpectedResources, numResources);
@@ -1082,6 +1118,7 @@ TEST(StackBind, BindContainedResourceGood)
                                             "core.rw",
                                             "/a/led0",
                                             0,
+                                            NULL,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
     EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
     EXPECT_EQ(++numExpectedResources, numResources);
@@ -1092,6 +1129,7 @@ TEST(StackBind, BindContainedResourceGood)
                                             "core.rw",
                                             "/a/led1",
                                             0,
+                                            NULL,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
     EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
     EXPECT_EQ(++numExpectedResources, numResources);
@@ -1102,6 +1140,7 @@ TEST(StackBind, BindContainedResourceGood)
                                             "core.rw",
                                             "/a/led2",
                                             0,
+                                            NULL,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
     EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
     EXPECT_EQ(++numExpectedResources, numResources);
@@ -1112,6 +1151,7 @@ TEST(StackBind, BindContainedResourceGood)
                                             "core.rw",
                                             "/a/led3",
                                             0,
+                                            NULL,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
     EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
     EXPECT_EQ(++numExpectedResources, numResources);
@@ -1122,6 +1162,7 @@ TEST(StackBind, BindContainedResourceGood)
                                             "core.rw",
                                             "/a/led4",
                                             0,
+                                            NULL,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
     EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
     EXPECT_EQ(++numExpectedResources, numResources);
@@ -1132,6 +1173,7 @@ TEST(StackBind, BindContainedResourceGood)
                                             "core.rw",
                                             "/a/led5",
                                             0,
+                                            NULL,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
     EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
     EXPECT_EQ(++numExpectedResources, numResources);
@@ -1168,9 +1210,10 @@ TEST(StackBind, BindEntityHandlerBad)
                                             "core.rw",
                                             "/a/led",
                                             0,
+                                            NULL,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
 
-    EXPECT_EQ(OC_STACK_INVALID_PARAM, OCBindResourceHandler(NULL, NULL));
+    EXPECT_EQ(OC_STACK_INVALID_PARAM, OCBindResourceHandler(NULL, NULL, NULL));
 
     EXPECT_EQ(OC_STACK_OK, OCStop());
 }
@@ -1187,11 +1230,12 @@ TEST(StackBind, BindEntityHandlerGood)
                                             "core.rw",
                                             "/a/led",
                                             0,
+                                            NULL,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
 
     OCEntityHandler myHandler = entityHandler;
 
-    EXPECT_EQ(OC_STACK_OK, OCBindResourceHandler(handle, myHandler));
+    EXPECT_EQ(OC_STACK_OK, OCBindResourceHandler(handle, myHandler, NULL));
 
     EXPECT_EQ(myHandler, OCGetResourceHandler(handle));
 
@@ -1216,6 +1260,7 @@ TEST(StackResourceAccess, GetResourceByIndex)
                                             "core.rw",
                                             "/a/kitchen",
                                             0,
+                                            NULL,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
     EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
     EXPECT_EQ(++numExpectedResources, numResources);
@@ -1226,6 +1271,7 @@ TEST(StackResourceAccess, GetResourceByIndex)
                                             "core.rw",
                                             "/a/led0",
                                             0,
+                                            NULL,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
     EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
     EXPECT_EQ(++numExpectedResources, numResources);
@@ -1236,6 +1282,7 @@ TEST(StackResourceAccess, GetResourceByIndex)
                                             "core.rw",
                                             "/a/led1",
                                             0,
+                                            NULL,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
     EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
     EXPECT_EQ(++numExpectedResources, numResources);
@@ -1246,6 +1293,7 @@ TEST(StackResourceAccess, GetResourceByIndex)
                                             "core.rw",
                                             "/a/led2",
                                             0,
+                                            NULL,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
     EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
     EXPECT_EQ(++numExpectedResources, numResources);
@@ -1256,6 +1304,7 @@ TEST(StackResourceAccess, GetResourceByIndex)
                                             "core.rw",
                                             "/a/led3",
                                             0,
+                                            NULL,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
     EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
     EXPECT_EQ(++numExpectedResources, numResources);
@@ -1266,6 +1315,7 @@ TEST(StackResourceAccess, GetResourceByIndex)
                                             "core.rw",
                                             "/a/led4",
                                             0,
+                                            NULL,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
     EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
     EXPECT_EQ(++numExpectedResources, numResources);
@@ -1276,6 +1326,7 @@ TEST(StackResourceAccess, GetResourceByIndex)
                                             "core.rw",
                                             "/a/led5",
                                             0,
+                                            NULL,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
     EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
     EXPECT_EQ(++numExpectedResources, numResources);
@@ -1308,6 +1359,7 @@ TEST(StackResourceAccess, DeleteHeadResource)
                                             "core.rw",
                                             "/a/led0",
                                             0,
+                                            NULL,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
     EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
     EXPECT_EQ(++numExpectedResources, numResources);
@@ -1335,6 +1387,7 @@ TEST(StackResourceAccess, DeleteHeadResource2)
                                             "core.rw",
                                             "/a/led0",
                                             0,
+                                            NULL,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
     EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
     EXPECT_EQ(++numExpectedResources, numResources);
@@ -1345,6 +1398,7 @@ TEST(StackResourceAccess, DeleteHeadResource2)
                                             "core.rw",
                                             "/a/led1",
                                             0,
+                                            NULL,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
     EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
     EXPECT_EQ(++numExpectedResources, numResources);
@@ -1376,6 +1430,7 @@ TEST(StackResourceAccess, DeleteLastResource)
                                             "core.rw",
                                             "/a/led0",
                                             0,
+                                            NULL,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
     EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
     EXPECT_EQ(++numExpectedResources, numResources);
@@ -1386,6 +1441,7 @@ TEST(StackResourceAccess, DeleteLastResource)
                                             "core.rw",
                                             "/a/led1",
                                             0,
+                                            NULL,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
     EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
     EXPECT_EQ(++numExpectedResources, numResources);
@@ -1402,6 +1458,7 @@ TEST(StackResourceAccess, DeleteLastResource)
                                             "core.rw",
                                             "/a/led2",
                                             0,
+                                            NULL,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
     EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
     EXPECT_EQ(++numExpectedResources, numResources);
@@ -1427,6 +1484,7 @@ TEST(StackResourceAccess, DeleteMiddleResource)
                                             "core.rw",
                                             "/a/led0",
                                             0,
+                                            NULL,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
     EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
     EXPECT_EQ(++numExpectedResources, numResources);
@@ -1437,6 +1495,7 @@ TEST(StackResourceAccess, DeleteMiddleResource)
                                             "core.rw",
                                             "/a/led1",
                                             0,
+                                            NULL,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
     EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
     EXPECT_EQ(++numExpectedResources, numResources);
@@ -1447,6 +1506,7 @@ TEST(StackResourceAccess, DeleteMiddleResource)
                                             "core.rw",
                                             "/a/led2",
                                             0,
+                                            NULL,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
     EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
     EXPECT_EQ(++numExpectedResources, numResources);
index 6b6d8b6..b1821f8 100644 (file)
@@ -137,7 +137,8 @@ void formResourceRequest(OCEntityHandlerFlag flag,
 
 OCEntityHandlerResult DefaultEntityHandlerWrapper(OCEntityHandlerFlag flag,
                                                   OCEntityHandlerRequest * entityHandlerRequest,
-                                                  char* uri)
+                                                  char* uri,
+                                                  void * callbackParam)
 {
     OCEntityHandlerResult result = OC_EH_ERROR;
 
@@ -176,7 +177,8 @@ OCEntityHandlerResult DefaultEntityHandlerWrapper(OCEntityHandlerFlag flag,
 
 
 OCEntityHandlerResult EntityHandlerWrapper(OCEntityHandlerFlag flag,
-                                           OCEntityHandlerRequest * entityHandlerRequest)
+                                           OCEntityHandlerRequest * entityHandlerRequest,
+                                           void* callbackParam)
 {
     OCEntityHandlerResult result = OC_EH_ERROR;
 
@@ -344,6 +346,7 @@ namespace OC
                             resourceInterface.c_str(), //const char * resourceInterfaceName //TODO fix this
                             resourceURI.c_str(), // const char * uri
                             EntityHandlerWrapper, // OCEntityHandler entityHandler
+                            NULL,
                             resourceProperties // uint8_t resourceProperties
                             );
             }
@@ -354,6 +357,7 @@ namespace OC
                             resourceInterface.c_str(), //const char * resourceInterfaceName //TODO fix this
                             resourceURI.c_str(), // const char * uri
                             NULL, // OCEntityHandler entityHandler
+                            NULL,
                             resourceProperties // uint8_t resourceProperties
                             );
             }
@@ -391,12 +395,12 @@ namespace OC
 
         if(entityHandler)
         {
-            result = OCSetDefaultDeviceEntityHandler(DefaultEntityHandlerWrapper);
+            result = OCSetDefaultDeviceEntityHandler(DefaultEntityHandlerWrapper, NULL);
         }
         else
         {
             // If Null passed we unset
-            result = OCSetDefaultDeviceEntityHandler(NULL);
+            result = OCSetDefaultDeviceEntityHandler(NULL, NULL);
         }
 
         return result;
index 0768836..a70eb82 100644 (file)
@@ -124,7 +124,7 @@ namespace OCResourceResponseTest
         uint8_t resourceProperty = OC_DISCOVERABLE | OC_OBSERVABLE;
 
         EXPECT_EQ(OC_STACK_OK, OCCreateResource(&resHandle, resourceURI.c_str(),
-                resourceTypeName.c_str(), resourceInterface.c_str(), nullptr,
+                resourceTypeName.c_str(), resourceInterface.c_str(), nullptr, nullptr,
                 resourceProperty));
         EXPECT_EQ(NULL, response.getResourceHandle());
         EXPECT_NO_THROW(response.setResourceHandle(resHandle));
index dc74925..f70948c 100644 (file)
@@ -265,7 +265,8 @@ OCEntityHandlerResult handleNonExistingResourceRequest(OCEntityHandlerRequest *e
  *     OC_EH_ERROR
  */
 OCEntityHandlerResult resourceEntityHandlerCB (OCEntityHandlerFlag flag,
-        OCEntityHandlerRequest *entityHandlerRequest);
+        OCEntityHandlerRequest *entityHandlerRequest,
+        void *callbackParam);
 
 /**
  *
@@ -343,7 +344,7 @@ OCStackResult registerResourceAsCoordinatable(OCResourceHandle *handle,
     OC_LOG_V(DEBUG, HOSTING_TAG, "requiredUri+coordinatingFlag = %s", coordinatingURI);
 
     ret = OCCreateResource(handle, resourceTypeName, resourceInterfaceName,
-            coordinatingURI, entityHandler, resourceProperties);
+            coordinatingURI, entityHandler, NULL, resourceProperties);
     free(coordinatingURI);
     return ret;
 }
@@ -753,6 +754,7 @@ OCStackResult registerMirrorResource(MirrorResource *mirrorResource)
                               mirrorResource->prop.resourceInterfaceName[0],
                               mirrorResource->uri,
                               resourceEntityHandlerCB,
+                              NULL,
                               OC_DISCOVERABLE | OC_OBSERVABLE);
 
     OC_LOG_V(DEBUG, HOSTING_TAG, "created mirror resource Handle : %u",mirrorResource->resourceHandle[OIC_MIRROR_HANDLE]);
@@ -1026,7 +1028,8 @@ char *buildResponsePayload (OCEntityHandlerRequest *entityHandlerRequest)
 
 OCEntityHandlerResult
 resourceEntityHandlerCB (OCEntityHandlerFlag entifyHandlerFlag,
-                         OCEntityHandlerRequest *entityHandlerRequest)
+                         OCEntityHandlerRequest *entityHandlerRequest,
+                         void* callbackParam)
 {
     OC_LOG_V(DEBUG, HOSTING_TAG, "Inside device default entity handler - flags: 0x%x",
              entifyHandlerFlag);