void zblib_plugin_free(ZigBeePlugin *plugin)
{
- if (plugin == NULL) {
+ if (NULL == plugin) {
Z_LOGE("ZigBee vendor plug-in is NULL");
return;
}
for (list = plugin->driver_list; list; list = list->next) {
driver = list->data;
- if (!driver)
+ if (NULL == driver)
continue;
zblib_driver_free(driver);
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;
}
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;
+}