+gboolean zblib_request_set_response_cb(ZigBeeServiceInterface *service_interface,
+ guint request_id,
+ gpointer resp_cb, gpointer resp_cb_data)
+{
+ ZigBeeService *service = NULL;
+ ZigBeeRequest *request = NULL;
+
+ zblib_check_null_ret_error("request", request, FALSE);
+
+ /* Fetch service */
+ service = zblib_service_interface_ref_service(service_interface);
+ zblib_check_null_ret_error("service", service, FALSE);
+
+ /* Fetch request based on request_id */
+ request = __zblib_request_ref_request_by_by_request_id(service, request_id);
+ if (NULL == request) {
+ Z_LOGE("No request available for request_id: [%d]", request_id);
+ return FALSE;
+ }
+
+ /* Update response callback and response callback data */
+ request->resp_cb = resp_cb;
+ request->resp_cb_data = resp_cb_data;
+
+ return TRUE;
+}
+
+gpointer zblib_request_ref_response_cb(ZigBeeServiceInterface *service_interface,
+ guint request_id, gpointer *resp_cb_data)
+{
+ ZigBeeService *service = NULL;
+ ZigBeeRequest *request = NULL;
+
+ zblib_check_null_ret_error("request", request, NULL);
+
+ /* Fetch service */
+ service = zblib_service_interface_ref_service(service_interface);
+ zblib_check_null_ret_error("service", service, NULL);
+
+ /* Fetch request based on request_id */
+ request = __zblib_request_ref_request_by_by_request_id(service, request_id);
+ if (NULL == request) {
+ Z_LOGE("No request available for request_id: [%d]", request_id);
+ return NULL;
+ }
+
+ /* Response callback data */
+ *resp_cb_data = request->resp_cb_data;
+
+ /* Return response callback */
+ return request->resp_cb;
+}
+