Fix some missing function flow
[platform/core/connectivity/zigbee-manager.git] / zigbee-daemon / zigbee-lib / src / drivers / zblib_driver_service.c
index 8f5e9a8..f50ba4c 100644 (file)
@@ -18,6 +18,8 @@
 
 #include <zblib.h>
 #include <zblib_driver.h>
+#include <zblib_plugin.h>
+#include <zblib_service.h>
 #include <zblib_request.h>
 
 #include "zblib_driver_service.h"
@@ -210,6 +212,7 @@ ZigBeeDriver *zblib_driver_service_new(ZigBeePlugin *plugin,
        ZblibDriverServiceOps_t *ops)
 {
        ZigBeeDriver *driver = NULL;
+       ZigBeeService *service = NULL;
        ZblibDriverServicePrivData_t *priv_data = NULL;
        gboolean ret;
 
@@ -225,6 +228,19 @@ ZigBeeDriver *zblib_driver_service_new(ZigBeePlugin *plugin,
        /* Update private data */
        priv_data->ops = ops;
 
+       /* Link service to driver */
+       service = zblib_plugin_ref_service(plugin);
+       if (NULL == service) {
+               Z_LOGE("zblib_plugin_ref_service failed!");
+
+               /* Free allocated resources */
+               g_free(priv_data);
+               g_free(driver);
+
+               return NULL;
+       }
+       zblib_driver_link_service(driver, service);
+
        /* Link private data to driver */
        ret = zblib_driver_link_object(driver, priv_data);
        if (FALSE == ret) {