Request ID (skeleton)
[platform/core/connectivity/zigbee-manager.git] / zigbee-daemon / zigbee-lib / src / zblib_plugin.c
index f2136dd..539e9df 100644 (file)
@@ -56,7 +56,7 @@ ZigBeePlugin *zblib_plugin_new(ZigBeeService *service,
 
 void zblib_plugin_free(ZigBeePlugin *plugin)
 {
-       if (plugin == NULL) {
+       if (NULL == plugin) {
                Z_LOGE("ZigBee vendor plug-in is NULL");
                return;
        }
@@ -69,7 +69,7 @@ void zblib_plugin_free(ZigBeePlugin *plugin)
 
                for (list = plugin->driver_list; list; list = list->next) {
                        driver = list->data;
-                       if (!driver)
+                       if (NULL == driver)
                                continue;
 
                        zblib_driver_free(driver);
@@ -97,7 +97,7 @@ void zblib_plugin_free(ZigBeePlugin *plugin)
 
 const struct zblib_plugin_descriptor *zblib_plugin_get_descriptor(ZigBeePlugin *plugin)
 {
-       if (plugin == NULL) {
+       if (NULL == plugin) {
                Z_LOGE("ZigBee vendor plug-in is NULL");
                return NULL;
        }
@@ -107,10 +107,38 @@ const struct zblib_plugin_descriptor *zblib_plugin_get_descriptor(ZigBeePlugin *
 
 char *zblib_plugin_get_plugin_name(ZigBeePlugin *plugin)
 {
-       if (plugin == NULL) {
+       if (NULL == plugin) {
                Z_LOGE("ZigBee vendor plug-in is NULL");
                return NULL;
        }
 
        return g_strdup(plugin->plugin_name);
 }
+
+ZigBeeDriver *zblib_plugin_ref_driver(ZigBeePlugin *plugin, ZblibDriverType_e driver_type)
+{
+       ZigBeeDriver *driver = NULL;
+       ZblibDriverType_e _driver_type;
+       GSList *list = NULL;
+
+       if (NULL == plugin) {
+               Z_LOGE("ZigBee vendor plug-in is NULL");
+               return NULL;
+       }
+
+       list = plugin->driver_list;
+       while (list) {
+               /* Fetch driver type of driver */
+               _driver_type = zblib_driver_ref_driver_type((ZigBeeDriver *)(list->data));
+               if (_driver_type == driver_type) {
+                       /* Driver found */
+                       driver = (ZigBeeDriver *)(list->data);
+                       break;
+               }
+
+               /* Move to next driver */
+               list = g_slist_next(list);
+       }
+
+       return driver;
+}