- There is some missing functions when dbus method called.
Change-Id: Ia650967c13febb7ee6e383479c398c810fb9cb3d
Signed-off-by: Jiwan Kim <ji-wan.kim@samsung.com>
#include <glib.h>
+#ifndef TIZEN_DEBUG_ENABLE
#define TIZEN_DEBUG_ENABLE
+#endif
#ifndef ZIGBEE_LOG_TAG
#define ZIGBEE_LOG_TAG "UNKNOWN"
Description=ZigBee daemon
[Service]
-User=zigbee
-Group=zigbee
+User=system
+Group=system
SmackProcessLabel=System
ExecStart=/usr/bin/zigbee-daemon
Restart=always
ZblibDriverType_e driver_type);
void zblib_driver_free(ZigBeeDriver *driver);
+gboolean zblib_driver_link_service(ZigBeeDriver *driver, ZigBeeService *service);
ZigBeeService *zblib_driver_ref_service(ZigBeeDriver *driver);
ZigBeePlugin *zblib_driver_ref_plugin(ZigBeeDriver *driver);
const ZblibPluginDescriptor_t *zblib_plugin_get_descriptor(ZigBeePlugin *plugin);
char *zblib_plugin_get_plugin_name(ZigBeePlugin *plugin);
+ZigBeeService *zblib_plugin_ref_service(ZigBeePlugin *plugin);
+
ZigBeeDriver *zblib_plugin_ref_driver(ZigBeePlugin *plugin, ZblibDriverType_e driver_type);
+void zblib_plugin_link_driver(ZigBeePlugin *plugin, ZigBeeDriver *driver);
gboolean zblib_plugin_dispatch_request(ZigBeePlugin *plugin,
guint request_id);
#include <zblib.h>
#include <zblib_driver.h>
+#include <zblib_plugin.h>
+#include <zblib_service.h>
#include <zblib_request.h>
#include "zblib_driver_service.h"
ZblibDriverServiceOps_t *ops)
{
ZigBeeDriver *driver = NULL;
+ ZigBeeService *service = NULL;
ZblibDriverServicePrivData_t *priv_data = NULL;
gboolean ret;
/* 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) {
Z_LOGI("Freeing Driver - Name [%p]", driver->driver_name);
/* Free driver memory */
+ g_free(driver->driver_name);
g_free(driver);
}
return driver->service;
}
+gboolean zblib_driver_link_service(ZigBeeDriver *driver,
+ ZigBeeService *service)
+{
+ zblib_check_null_ret_error("driver", driver, FALSE);
+ zblib_check_null_ret_error("service", service, FALSE);
+
+ driver->service = service;
+
+ return TRUE;
+}
+
ZigBeePlugin *zblib_driver_ref_plugin(ZigBeeDriver *driver)
{
zblib_check_null_ret_error("driver", driver, NULL);
return g_strdup(plugin->plugin_name);
}
+ZigBeeService *zblib_plugin_ref_service(ZigBeePlugin *plugin)
+{
+ zblib_check_null_ret_error("plugin", plugin, NULL);
+
+ return plugin->service;
+}
+
ZigBeeDriver *zblib_plugin_ref_driver(ZigBeePlugin *plugin, ZblibDriverType_e driver_type)
{
ZigBeeDriver *driver = NULL;
return driver;
}
+void zblib_plugin_link_driver(ZigBeePlugin *plugin, ZigBeeDriver *driver)
+{
+ zblib_check_null_ret("plugin", plugin);
+ zblib_check_null_ret("driver", driver);
+
+ plugin->driver_list = g_slist_append(plugin->driver_list, driver);
+ Z_LOGD("Driver appended into plugin [%s]", plugin->plugin_name);
+}
+
gboolean zblib_plugin_dispatch_request(ZigBeePlugin *plugin,
guint request_id)
{
ZigBeeService *service = NULL;
ZigBeeDriver *driver = NULL;
ZblibDriverType_e driver_type;
+ guint request_type;
zblib_check_null_ret_error("plugin", plugin, FALSE);
zblib_check_null_ret_error("service", service, FALSE);
/* Fetch driver type */
- driver_type = (ZblibDriverType_e)zblib_request_ref_request_type_by_request_id(service, request_id);
+ request_type = zblib_request_ref_request_type_by_request_id(service, request_id);
+ driver_type = zblib_request_get_driver_type(request_type);
/* Fetch driver */
driver = zblib_plugin_ref_driver(plugin, driver_type);
{
ZblibDriverType_e driver_type;
- driver_type = ((request_type && 0xFF000000) >> 24);
+ driver_type = ((request_type & 0xFF000000) >> 24);
return driver_type;
}
{
guint ops_id;
- ops_id = (request_type && 0x000000FF);
+ ops_id = (request_type & 0x000000FF);
return ops_id;
}