Adding service interface layer logic for request processing
[platform/core/connectivity/zigbee-manager.git] / zigbee-daemon / zigbee-lib / include / zblib_service_interface.h
index 9eb0d9a..985e1bc 100644 (file)
 #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);
 
@@ -40,4 +40,16 @@ gpointer zblib_service_interface_ref_user_data(ZigBeeServiceInterface *service_i
 
 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__ */