+
+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;
+}