Add API to get service specific device discriminant
authorAbhay Agarwal <ay.agarwal@samsung.com>
Fri, 4 Oct 2019 07:05:12 +0000 (16:05 +0900)
committersaerome.kim <saerome.kim@samsung.com>
Fri, 4 Oct 2019 11:06:49 +0000 (20:06 +0900)
Change-Id: I4651c96e27ac8fae5f98ceae4e198becc444260a
Signed-off-by: Abhay Agarwal <ay.agarwal@samsung.com>
include/user-awareness.h
src/user-awareness-service.c
test/uat-devices.c

index 6070c881887c43f93b5741eadc7370d1de78d4ed..b36d51047382357a1ffbf025fe0f597b11a51ca6 100644 (file)
@@ -1836,6 +1836,31 @@ int ua_service_set_device_discriminant(
                ua_device_h device_handle,
                gboolean discriminant);
 
+/**
+ * @ingroup CAPI_NETWORK_UA_MODULE
+ * @brief Gets device discriminant for a specific service.
+ * @since_tizen 5.5
+ *
+ * @param[in] service_handle The service handle.
+ * @param[in] device_handle The device handle.
+ * @param[out] discriminant The device discriminant.
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #UA_ERROR_NONE Successful
+ * @retval #UA_ERROR_INVALID_PARAMETER Invalid parameter
+ *
+ * @exception
+ * @pre
+ * @post
+ *
+ * @see ua_service_add_device()
+ * @see ua_service_remove_device()
+ */
+int ua_service_get_device_discriminant(
+               ua_service_h service_handle,
+               ua_device_h device_handle,
+               gboolean *discriminant);
+
 /**
  * @ingroup CAPI_NETWORK_UA_MODULE
  * @brief Retrieves the service handle of all the added services.
index de382750ff429b881f7b027c906192637ed0afa3..9949572c3e49c125ab2f829ed147596274f31a3a 100644 (file)
@@ -719,6 +719,33 @@ int ua_service_set_device_discriminant(ua_service_h service_handle,
        return UA_ERROR_NONE;
 }
 
+int ua_service_get_device_discriminant(ua_service_h service_handle,
+       ua_device_h device_handle, gboolean *discriminant)
+{
+       FUNC_ENTRY;
+       int ret;
+
+       ua_service_info_s* service_info = (ua_service_info_s*)service_handle;
+       ua_dev_info_s* device_info = (ua_dev_info_s*)device_handle;
+
+       UA_VALIDATE_INPUT_PARAMETER(service_info);
+       UA_VALIDATE_INPUT_PARAMETER(device_handle);
+       UA_VALIDATE_HANDLE(service_handle, ua_services_list);
+       UA_PRINT_DEVICE_HANDLE(device_handle);
+       retv_if(device_info->isadded == FALSE, UA_ERROR_INVALID_PARAMETER);
+
+       ret = _ua_get_error_code(_uam_service_get_device_discriminant(service_info->name,
+                               device_info->device_id, _ua_to_uam_tech_type(device_info->type),
+                               discriminant));
+       if (UA_ERROR_NONE != ret) {
+               UA_ERR("_uam_service_get_device_discriminant returned %s",
+                               _ua_get_error_string(ret));
+               return ret;
+       }
+
+       FUNC_EXIT;
+       return UA_ERROR_NONE;
+}
 
 int ua_service_foreach_added_services(ua_service_added_service_cb foreach_cb,
                void *user_data)
index 0bc0bdf219f97b5903263e5e0b5690177e0ac8d8..6b71985ec2529fe8bfbaecccf93b558889f2ef78 100644 (file)
@@ -47,7 +47,7 @@ static char g_payload_service_id[MENU_DATA_SIZE + 1] = {0,}; /**< payload servic
 static char g_payload_device_icon[MENU_DATA_SIZE + 1] = {0,}; /**< payload device_icon for the selected device */
 static char g_payload_purpose[MENU_DATA_SIZE + 1] = {0,}; /**< payload purpose for the selected device */
 static char g_payload_duid_str[MENU_DATA_SIZE + 1] = {0,}; /**< payload duid for the selected device */
-static char g_service_device_discriminant[MENU_DATA_SIZE + 1] = {0,}; /**< Discriminant for a device in a service */
+static char g_service_device_discriminant[MENU_DATA_SIZE + 1] = {"1",}; /**< Discriminant for a device in a service */
 
 char g_selected_device_id[MENU_DATA_SIZE + 1] = {0,}; /**< Selected device id */
 extern char g_service_str[MENU_DATA_SIZE + 1];  /**< Service name string */
@@ -988,6 +988,28 @@ static int run_ua_service_set_device_discriminant(
        return RET_SUCCESS;
 }
 
+static int run_ua_service_get_device_discriminant(
+       MManager *mm, struct menu_data *menu)
+{
+       int ret = UA_ERROR_NONE;
+       gboolean discriminant = true;
+
+       msg("ua_service_get_device_discriminant");
+
+       check_if(NULL == g_service_h);
+       check_if(NULL == g_device_h);
+
+       ret = ua_service_get_device_discriminant(g_service_h, g_device_h, &discriminant);
+
+       msg(" - ua_service_add_device() ret: [0x%X] [%s]",
+                       ret, uat_get_error_str(ret));
+
+       if (UA_ERROR_NONE == ret)
+               msgb("Device Discriminant %d", discriminant);
+
+       return RET_SUCCESS;
+}
+
 static int run_ua_service_foreach_added_devices(MManager *mm,
        struct menu_data *menu)
 {
@@ -1197,7 +1219,9 @@ struct menu_data menu_ua_devices[] = {
                NULL, run_ua_service_remove_device, NULL },
        { "25", "ua_service_set_device_discriminant",
                menu_ua_service_set_device_discriminant, NULL, NULL },
-       { "26", "ua_service_foreach_added_devices",
+       { "26", "ua_service_get_device_discriminant",
+               NULL, run_ua_service_get_device_discriminant, NULL },
+       { "27", "ua_service_foreach_added_devices",
                NULL, run_ua_service_foreach_added_devices, NULL },
        { NULL, NULL, },
 };