Implement module dispatcher functions
[platform/core/connectivity/zigbee-manager.git] / zigbee-daemon / zigbee-lib / src / zblib_driver.c
index 2ecd48d..b6d1538 100644 (file)
@@ -54,10 +54,7 @@ ZigBeeDriver *zblib_driver_new(ZigBeePlugin *plugin,
 
 void zblib_driver_free(ZigBeeDriver *driver)
 {
-       if (driver == NULL) {
-               Z_LOGE("driver is NULL");
-               return;
-       }
+       zblib_check_null_ret("driver", driver);
 
        /* Invoke free hook */
        if (driver->free_hook_fn)
@@ -69,12 +66,24 @@ void zblib_driver_free(ZigBeeDriver *driver)
        g_free(driver);
 }
 
-gboolean zblib_driver_link_object(ZigBeeDriver *driver, gpointer object)
+ZigBeeService *zblib_driver_ref_service(ZigBeeDriver *driver)
 {
-       if (driver == NULL) {
-               Z_LOGE("driver is NULL");
-               return FALSE;
-       }
+       zblib_check_null_ret_error("driver", driver, NULL);
+
+       return driver->service;
+}
+
+ZigBeePlugin *zblib_driver_ref_plugin(ZigBeeDriver *driver)
+{
+       zblib_check_null_ret_error("driver", driver, NULL);
+
+       return driver->plugin;
+}
+
+gboolean zblib_driver_link_object(ZigBeeDriver *driver,
+       gpointer object)
+{
+       zblib_check_null_ret_error("driver", driver, FALSE);
 
        driver->priv_object = object;
 
@@ -83,32 +92,25 @@ gboolean zblib_driver_link_object(ZigBeeDriver *driver, gpointer object)
 
 gpointer zblib_driver_ref_object(ZigBeeDriver *driver)
 {
-       if (driver == NULL) {
-               Z_LOGE("driver is NULL");
-               return NULL;
-       }
+       zblib_check_null_ret_error("driver", driver, NULL);
 
        return driver->priv_object;
 }
 
-gboolean zblib_driver_set_dispatcher(ZigBeeDriver *driver, ZblibDriverDispatcher_t dispatcher_fn)
+gboolean zblib_driver_set_dispatcher(ZigBeeDriver *driver,
+       ZblibDriverDispatcher_t dispatcher_fn)
 {
-       if (driver == NULL) {
-               Z_LOGE("driver is NULL");
-               return FALSE;
-       }
+       zblib_check_null_ret_error("driver", driver, FALSE);
 
        driver->dispatcher_fn = dispatcher_fn;
 
        return TRUE;
 }
 
-gboolean zblib_driver_set_free_hook(ZigBeeDriver *driver, ZblibDriverFreeHook_t free_hook_fn)
+gboolean zblib_driver_set_free_hook(ZigBeeDriver *driver,
+       ZblibDriverFreeHook_t free_hook_fn)
 {
-       if (driver == NULL) {
-               Z_LOGE("driver is NULL");
-               return FALSE;
-       }
+       zblib_check_null_ret_error("driver", driver, FALSE);
 
        driver->free_hook_fn = free_hook_fn;
 
@@ -117,10 +119,19 @@ gboolean zblib_driver_set_free_hook(ZigBeeDriver *driver, ZblibDriverFreeHook_t
 
 ZblibDriverType_e zblib_driver_ref_driver_type(ZigBeeDriver *driver)
 {
-       if (driver == NULL) {
-               Z_LOGE("driver is NULL");
-               return ZBLIB_DRIVER_TYPE_NONE;
-       }
+       zblib_check_null_ret_error("driver",
+               driver, ZBLIB_DRIVER_TYPE_NONE);
 
        return driver->driver_type;
-}
\ No newline at end of file
+}
+
+gboolean zblib_driver_dispatch_request(ZigBeeDriver *driver,
+       guint request_id)
+{
+       zblib_check_null_ret_error("driver", driver, FALSE);
+       zblib_check_null_ret_error("driver->dispatcher_fn",
+               driver->dispatcher_fn, FALSE);
+
+       /* Dispatch request to driver dispatcher function */
+       return driver->dispatcher_fn(driver, request_id);
+}