UA-API Modification for service based device discriminant
authorAbhay Agarwal <ay.agarwal@samsung.com>
Tue, 1 Oct 2019 01:08:46 +0000 (10:08 +0900)
committersaerome.kim <saerome.kim@samsung.com>
Fri, 4 Oct 2019 11:20:12 +0000 (20:20 +0900)
Change-Id: If9a8e63f2b2ed0fdd0638abee09bee4105cf3430
Signed-off-by: Abhay Agarwal <ay.agarwal@samsung.com>
include/ua-api.h
include/ua-internal.h
ua-api/src/ua-api.c
ua-daemon/src/ua-manager-request-handler.c

index fe563af..72c6a32 100644 (file)
@@ -1205,6 +1205,27 @@ int _uam_service_remove_device(const char *service, char *device_id,
        uam_tech_type_e tech_type);
 
 /**
+ * @brief Sets a device discriminant for the service.
+ * @since_tizen 5.5
+ *
+ * @param[in] service Service idt.
+ * @param[in] device_id Device id.
+ * @param[in] tech_type Sensor type.
+ * @param[in] discriminant Device discriminant.
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #UAM_ERROR_NONE Successful
+ * @retval #UAM_ERROR_INVALID_PARAMETER Invalid parameters
+ * @retval #UAM_ERROR_INTERNAL Internal error
+ *
+ * @exception
+ * @pre
+ * @post
+ */
+int _uam_service_set_device_discriminant(const char *service,
+       char *device_id, uam_tech_type_e tech_type, gboolean discriminant);
+
+/**
  * @brief Sets detction cycle per eash service.
  * @since_tizen 5.5
  *
index 2cfd081..1bd2b65 100644 (file)
@@ -66,6 +66,7 @@ extern "C" {
        REQUEST(UAM_REQUEST_REMOVE_USER_FROM_SERVICE) \
        REQUEST(UAM_REQUEST_ADD_DEVICE_TO_SERVICE) \
        REQUEST(UAM_REQUEST_REMOVE_DEVICE_FROM_SERVICE) \
+       REQUEST(UAM_REQUEST_SET_DEVICE_DISCRIMINANT) \
        REQUEST(UAM_REQUEST_SET_SERVICE_DETECTION_CYCLE) \
        REQUEST(UAM_REQUEST_GET_SERVICE_DETECTION_CYCLE) \
        REQUEST(UAM_REQUEST_GET_DETECTION_WINDOW) \
index eb4cb88..bee8f4a 100644 (file)
@@ -998,6 +998,37 @@ UAM_EXPORT_API int _uam_service_remove_device(const char *service,
        return ret;
 }
 
+UAM_EXPORT_API int _uam_service_set_device_discriminant(const char *service,
+       char *device_id, uam_tech_type_e tech_type, gboolean discriminant)
+{
+       FUNC_ENTRY;
+       int ret;
+       char svc_str[UAM_SERVICE_MAX_STRING_LEN];
+       char str[UAM_DEVICE_ID_MAX_STRING_LEN];
+
+       UAM_VALIDATE_INPUT_PARAMETER(service);
+       UAM_VALIDATE_INPUT_PARAMETER(device_id);
+
+       UAM_INIT_PARAMS();
+       UAM_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
+
+       g_strlcpy(svc_str, service, UAM_SERVICE_MAX_STRING_LEN);
+       g_array_append_vals(in_param1, svc_str, sizeof(svc_str));
+
+       g_strlcpy(str, device_id, UAM_DEVICE_ID_MAX_STRING_LEN);
+       g_array_append_vals(in_param2, str, sizeof(str));
+       g_array_append_vals(in_param3, &tech_type, sizeof(int));
+       g_array_append_vals(in_param4, &discriminant, sizeof(int));
+
+       ret = _uam_sync_request(UAM_REQUEST_SET_DEVICE_DISCRIMINANT,
+                       in_param1, in_param2, in_param3, in_param4, &out_param);
+
+       UAM_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
+
+       FUNC_EXIT;
+       return ret;
+}
+
 UAM_EXPORT_API int _uam_set_service_detection_cycle(const char *service,
        unsigned int cycle)
 {
index 6e463e1..c5631e7 100644 (file)
@@ -481,6 +481,23 @@ static int __uam_manager_sync_request_handler(
                result = _uam_core_service_remove_device(svc_name, device_id, tech_type);
                break;
        }
+       case UAM_REQUEST_SET_DEVICE_DISCRIMINANT: {
+               const char *svc_name;
+               const char *device_id;
+               int tech_type;
+               gboolean discriminant;
+
+               svc_name = (char *)g_variant_get_data(in_param1);
+               device_id = (char *)g_variant_get_data(in_param2);
+               __uam_manager_copy_params(in_param3, &tech_type, sizeof(int));
+               __uam_manager_copy_params(in_param4, &discriminant, sizeof(gboolean));
+               UAM_DBG("Service: [%s] device_id: [%s], tech_type: %d, discriminant: %d",
+                               svc_name, device_id, tech_type, discriminant);
+
+               result = _uam_core_service_set_device_discriminant(svc_name, device_id,
+                                       tech_type, discriminant);
+               break;
+       }
        case UAM_REQUEST_SET_SERVICE_DETECTION_CYCLE: {
                const char *svc_name;
                unsigned int cycle;
@@ -778,6 +795,7 @@ static gboolean __uam_manager_is_sync_function(int function)
        case UAM_REQUEST_REMOVE_USER_FROM_SERVICE:
        case UAM_REQUEST_ADD_DEVICE_TO_SERVICE:
        case UAM_REQUEST_REMOVE_DEVICE_FROM_SERVICE:
+       case UAM_REQUEST_SET_DEVICE_DISCRIMINANT:
        case UAM_REQUEST_SET_SERVICE_DETECTION_CYCLE:
        case UAM_REQUEST_GET_SERVICE_DETECTION_CYCLE:
        case UAM_REQUEST_GET_DETECTION_WINDOW: