#ifndef __ZIGBEE_LIB_SERVICE_INTERFACE_H__
#define __ZIGBEE_LIB_SERVICE_INTERFACE_H__
-/**< Service interface methods */
-struct zblib_service_interface_methods {
- gboolean (*send_response)();
- gboolean (*send_notification)();
-};
+/**< ZigBee service interface invalid request ID */
+#define ZIGBEE_SERVICE_INTERFACE_INVALID_REQUEST_ID (-1)
+
+/**< ZigBee Service interface response callback function pointer */
+typedef void (*ZblibServiceInterfaceResponseCb_t)(ZigBeeServiceInterface *service_interface,
+ guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data);
/**< Service interface APIs */
ZigBeeServiceInterface *zblib_service_interface_new(ZigBeeService *service,
- const gchar *object_name,
- struct zblib_service_interface_methods *methods);
+ const gchar *object_name);
void zblib_service_interface_free(ZigBeeService *service,
ZigBeeServiceInterface *service_interface);
ZigBeeService *zblib_service_interface_ref_service(ZigBeeServiceInterface *service_interface);
+gint zblib_service_interface_new_request(ZigBeeServiceInterface *service_interface,
+ ZblibDriverType_e driver_type, guint ops_id,
+ gpointer request_data, guint request_data_len,
+ ZblibServiceInterfaceResponseCb_t resp_cb, gpointer resp_cb_data);
+void zblib_service_interface_free_request(ZigBeeServiceInterface *service_interface,
+ guint request_id);
+
+gboolean zblib_service_interface_dispatch_request(ZigBeeServiceInterface *service_interface,
+ guint request_id);
+void zblib_service_interface_send_response(ZigBeeServiceInterface *service_interface,
+ guint request_id, gpointer resp_data, guint resp_data_len);
+
#endif /* __ZIGBEE_LIB_SERVICE_INTERFACE_H__ */