#ifndef __ZIGBEE_LIB_DRIVER_H__
#define __ZIGBEE_LIB_DRIVER_H__
-/* Driver APIs */
+/**< ZigBee driver dispatcher function pointer */
+typedef gboolean (*ZblibDriverDispatcher_t)(ZigBeeDriver *driver, guint request_id);
+
+/**< ZigBee driver free hook function pointer */
+typedef void (*ZblibDriverFreeHook_t)(ZigBeeDriver *driver);
+
+/**< Driver APIs */
ZigBeeDriver *zblib_driver_new(ZigBeePlugin *plugin,
- const gchar *object_name,
- gint object_type);
+ const gchar *driver_name,
+ ZblibDriverType_e driver_type);
void zblib_driver_free(ZigBeeDriver *driver);
+ZigBeeService *zblib_driver_ref_service(ZigBeeDriver *driver);
+ZigBeePlugin *zblib_driver_ref_plugin(ZigBeeDriver *driver);
+
+gboolean zblib_driver_link_object(ZigBeeDriver *driver, gpointer object);
+gpointer zblib_driver_ref_object(ZigBeeDriver *driver);
+
+gboolean zblib_driver_set_dispatcher(ZigBeeDriver *driver, ZblibDriverDispatcher_t dispatcher_fn);
+gboolean zblib_driver_set_free_hook(ZigBeeDriver *driver, ZblibDriverFreeHook_t free_hook_fn);
+
+ZblibDriverType_e zblib_driver_ref_driver_type(ZigBeeDriver *driver);
+
+gboolean zblib_driver_dispatch_request(ZigBeeDriver *driver, guint request_id);
+
#endif /* __ZIGBEE_LIB_DRIVER_H__ */