Add driver API to fetch request data
authorSuresh Kumar N <suresh.n@samsung.com>
Fri, 6 Jan 2017 16:23:29 +0000 (21:53 +0530)
committersaerome.kim <saerome.kim@samsung.com>
Thu, 11 May 2017 09:10:25 +0000 (18:10 +0900)
 - Request ID logic abstracted from external world
 - Moved zblib_request.h to internal headers folder

Change-Id: Iaa522dc1144beb5ac2a9fa499b92ceeb22164f3d
Signed-off-by: Suresh Kumar N <suresh.n@samsung.com>
zigbee-daemon/CMakeLists.txt
zigbee-daemon/zigbee-interface/src/zigbee_service_interface_common.h [changed mode: 0755->0644]
zigbee-daemon/zigbee-lib/CMakeLists.txt
zigbee-daemon/zigbee-lib/include/zblib_driver.h
zigbee-daemon/zigbee-lib/include_internal/zblib_request.h [moved from zigbee-daemon/zigbee-lib/include/zblib_request.h with 95% similarity]
zigbee-daemon/zigbee-lib/src/zblib_driver.c
zigbee-daemon/zigbee-lib/src/zblib_request.c

index 5f3f17b..67575d6 100644 (file)
@@ -41,6 +41,7 @@ MESSAGE(${pkgs_LDFLAGS})
 INCLUDE_DIRECTORIES(
         ${CMAKE_CURRENT_SOURCE_DIR}/src
         ${CMAKE_CURRENT_SOURCE_DIR}/zigbee-lib/include
+        ${CMAKE_CURRENT_SOURCE_DIR}/zigbee-lib/include_internal
         ${CMAKE_SOURCE_DIR}/common/include
         ${CMAKE_CURRENT_SOURCE_DIR}/zigbee-service/include
         ${CMAKE_CURRENT_SOURCE_DIR}/zigbee-interface/include
index d79ee34..352d5c1 100644 (file)
@@ -25,6 +25,7 @@ INCLUDE_DIRECTORIES(
         ${CMAKE_CURRENT_SOURCE_DIR}
         ${CMAKE_CURRENT_SOURCE_DIR}/src
         ${CMAKE_CURRENT_SOURCE_DIR}/include
+        ${CMAKE_CURRENT_SOURCE_DIR}/include_internal
 )
 
 MESSAGE(${CMAKE_C_FLAGS})
index ab73308..b906c65 100644 (file)
@@ -42,6 +42,9 @@ gboolean zblib_driver_set_free_hook(ZigBeeDriver *driver, ZblibDriverFreeHook_t
 
 ZblibDriverType_e zblib_driver_ref_driver_type(ZigBeeDriver *driver);
 
+gpointer zblib_driver_ref_request_data(ZigBeeDriver *driver,
+       guint request_id);
+
 gboolean zblib_driver_dispatch_request(ZigBeeDriver *driver, guint request_id);
 
 void zblib_driver_send_response(ZigBeeDriver *driver,
@@ -40,6 +40,8 @@ guint zblib_request_ref_request_type(ZigBeeRequest *request);
 ZigBeeServiceInterface *zblib_request_ref_service_interface(ZigBeeService *service,
        guint request_id);
 gpointer zblib_request_ref_request_data(ZigBeeRequest *request);
+gpointer zblib_request_ref_request_data_by_id(ZigBeeService *service,
+       guint request_id);
 
 guint zblib_request_generate_request_type(ZblibDriverType_e driver_type,
        guint ops_id);
index c4ccda6..d045aff 100644 (file)
@@ -20,6 +20,7 @@
 #include <zblib_driver.h>
 #include <zblib_plugin.h>
 #include <zblib_service.h>
+#include <zblib_request.h>
 
 /**< ZigBee driver object */
 struct zblib_driver_type {
@@ -127,6 +128,21 @@ ZblibDriverType_e zblib_driver_ref_driver_type(ZigBeeDriver *driver)
        return driver->driver_type;
 }
 
+gpointer zblib_driver_ref_request_data(ZigBeeDriver *driver,
+       guint request_id)
+{
+       ZigBeeService *service = NULL;
+
+       zblib_check_null_ret_error("driver", driver, NULL);
+
+       service = driver->service;
+       zblib_check_null_ret_error("service", service, NULL);
+
+       /* Fetch request data */
+       return zblib_request_ref_request_data_by_id(service,
+               request_id);
+}
+
 gboolean zblib_driver_dispatch_request(ZigBeeDriver *driver,
        guint request_id)
 {
index 5da7d22..43392a6 100644 (file)
@@ -4824,6 +4824,21 @@ gpointer zblib_request_ref_request_data(ZigBeeRequest *request)
        return request->request_data;
 }
 
+gpointer zblib_request_ref_request_data_by_id(ZigBeeService *service,
+       guint request_id)
+{
+       ZigBeeRequest *request = 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;
+       }
+
+       return request->request_data;
+}
+
 guint zblib_request_generate_request_type(ZblibDriverType_e driver_type,
        guint ops_id)
 {