Add ua-manager core API to insert payload information to a service
authorAbhay agarwal <ay.agarwal@samsung.com>
Mon, 2 Dec 2019 10:06:53 +0000 (15:36 +0530)
committerDoHyun Pyun <dh79.pyun@samsung.com>
Mon, 30 Dec 2019 07:29:55 +0000 (16:29 +0900)
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/include/ua-manager-core.h
ua-daemon/src/ua-manager-common.c
ua-daemon/src/ua-manager-core.c
ua-daemon/src/ua-manager-device-service-db.c
ua-daemon/src/ua-manager-request-handler.c

index 808a36c..7d68602 100644 (file)
@@ -1414,6 +1414,25 @@ int _uam_add_ibeacon_adv_data(unsigned int adv_len, const char *ibeacon_adv);
 int _uam_request_add_payload(uam_ble_payload_s *payload,
        char *device_id, uam_tech_type_e tech_type);
 
+/**
+ * @brief Adds a payload for a device to a service.
+ * @since_tizen 5.5
+ *
+ * @param[in] service Service name.
+ * @param[in] payload Payload information.
+ *
+ * @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_add_payload(const char *service,
+       uam_ble_payload_s *payload);
+
 #ifdef __cplusplus
 }
 #endif
index 672401c..71afe94 100644 (file)
@@ -84,6 +84,7 @@ extern "C" {
        REQUEST(UAM_REQUEST_GET_SERVICES) \
        REQUEST(UAM_REQUEST_ADD_IBEACON_ADV) \
        REQUEST(UAM_REQUEST_ADD_PAYLOAD) \
+       REQUEST(UAM_REQUEST_ADD_PAYLOAD_TO_SERVICE) \
        REQUEST(UAM_REQUEST_MAX)
 
 #define GENERATE_REQUEST_ENUM(ENUM) ENUM,
index 2cf3f1d..4ca2a7d 100644 (file)
@@ -1464,3 +1464,31 @@ UAM_EXPORT_API int _uam_request_add_payload(uam_ble_payload_s *payload,
        FUNC_EXIT;
        return ret;
 }
+
+UAM_EXPORT_API int _uam_service_add_payload(const char *service,
+       uam_ble_payload_s *payload)
+{
+       FUNC_ENTRY;
+       int ret;
+       char svc_str[UAM_SERVICE_MAX_STRING_LEN];
+
+       UAM_VALIDATE_INPUT_PARAMETER(service);
+       UAM_VALIDATE_INPUT_PARAMETER(payload);
+
+       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_array_append_vals(in_param2, payload, sizeof(uam_ble_payload_s));
+
+       ret = _uam_async_request(UAM_REQUEST_ADD_PAYLOAD_TO_SERVICE,
+                       in_param1, in_param2, in_param3, in_param4,
+                       cb_info.callback, cb_info.user_data);
+
+       UAM_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
+
+       FUNC_EXIT;
+       return ret;
+}
index 434fa57..1a2f15f 100644 (file)
@@ -256,6 +256,9 @@ void _uam_core_handle_status_changed(unsigned int sensor, void *info);
 int _uam_core_add_payload(uam_ble_payload_s *payload, const char *device_id,
        int tech_type);
 
+int _uam_core_service_add_payload(uam_ble_payload_s *payload,
+               const char *svc_name);
+
 #ifdef __cplusplus
 }
 #endif
index 14db69a..7acab7b 100644 (file)
@@ -237,4 +237,4 @@ unsigned long long _uam_get_timestamp(void)
                return 0;
        }
        return ((unsigned long long)(t.tv_sec) * 1000000000LL + t.tv_nsec) / 1000000;
-}
\ No newline at end of file
+}
index 1cc2eae..c25cc79 100644 (file)
@@ -827,9 +827,8 @@ int _uam_core_remove_user(const char *account)
                UAM_ERR("Failed to send UAM_EVENT_USER_REMOVED");
 
        ret = __free_uam_db_user_info((gpointer)user);
-       if (UAM_ERROR_NONE != ret) {
+       if (UAM_ERROR_NONE != ret)
                UAM_WARN("_free_uam_db_user_info failed");
-       }
 
        FUNC_EXIT;
        return UAM_ERROR_NONE;
@@ -997,9 +996,8 @@ static int __uam_remove_device(int user_id, uam_db_device_info_t *device,
                        continue;
                ret = _uam_core_service_remove_device(svc->name,
                                dev_info->device_id, dev_info->type);
-               if (UAM_ERROR_NONE != ret) {
+               if (UAM_ERROR_NONE != ret)
                        UAM_ERR("_uam_device_db_delete_device_info failed");
-               }
        }
        __uam_db_end_transaction(1);
 
@@ -3896,7 +3894,34 @@ int _uam_core_add_payload(uam_ble_payload_s *payload,
        /*** Add payload to database ***/
        ret = _uam_db_insert_payload_info(device_id, tech_type, mac, payload);
        if (UAM_ERROR_NONE != ret) {
-               UAM_ERR("_uam_db_insert_adv_info failed");
+               UAM_ERR("_uam_db_insert_payload_info failed");
+               return ret;
+       }
+
+       FUNC_EXIT;
+       return UAM_ERROR_NONE;
+}
+
+int _uam_core_service_add_payload(uam_ble_payload_s *payload,
+               const char *svc_name)
+{
+       FUNC_ENTRY;
+       int ret = UAM_ERROR_NONE;
+//     uam_db_service_info_t *service;
+//     GSList *l;
+
+       retv_if(NULL == payload, UAM_ERROR_INVALID_PARAMETER);
+       retv_if(NULL == svc_name, UAM_ERROR_INVALID_PARAMETER);
+
+       /* Retrieve service from list */
+//     l = g_slist_find_custom(services, svc_name, __compare_svc_name);
+//     retv_if(NULL == l, UAM_ERROR_INVALID_PARAMETER);
+//     service = l->data;
+
+       /*** Add payload to database ***/
+//     ret = _uam_db_insert_payload_service_info(payload, service);
+       if (UAM_ERROR_NONE != ret) {
+               UAM_ERR("_uam_db_insert_payload_service_info failed");
                return ret;
        }
 
index 0d9684e..37bff4a 100644 (file)
@@ -418,9 +418,9 @@ int _uam_db_update_device_service_discriminant(const char *device_id,
                goto handle_error;
 
        ret = _uam_db_get_service_info(service_name, &info);
-       if (UAM_ERROR_NONE == ret) {
+       if (UAM_ERROR_NONE == ret)
                service_number = info.service_number;
-       else
+       else
                goto handle_error;
 
        ret = __uam_db_update_discriminant(device_number, service_number, discriminant);
@@ -453,9 +453,9 @@ int _uam_db_update_device_service_last_seen(const char *device_id,
                goto handle_error;
 
        ret = _uam_db_get_service_info(service_name, &info);
-       if (UAM_ERROR_NONE == ret) {
+       if (UAM_ERROR_NONE == ret)
                service_number = info.service_number;
-       else
+       else
                goto handle_error;
 
        ret = __uam_db_update_last_seen(device_number, service_number, last_seen);
index 635c5ee..5c1001f 100644 (file)
@@ -705,6 +705,18 @@ static int __uam_manager_sync_request_handler(
 
                break;
        }
+       case UAM_REQUEST_ADD_PAYLOAD_TO_SERVICE: {
+               uam_ble_payload_s *payload;
+               const char *svc_name;
+
+               svc_name = (char *)g_variant_get_data(in_param1);
+               __uam_manager_copy_params(in_param2, &payload, sizeof(uam_ble_payload_s));
+               UAM_DBG("Payload primary key: [%d], Service [%s]",
+                               payload->primary_key, svc_name);
+
+               result = _uam_core_service_add_payload(payload, svc_name);
+               break;
+       }
        default:
                UAM_WARN("UnSupported function [%s(0x%4.4X)]",
                                _uam_manager_request_to_str(function), function);
@@ -903,6 +915,7 @@ static gboolean __uam_manager_is_sync_function(int function)
        case UAM_REQUEST_GET_SERVICES:
        case UAM_REQUEST_ADD_IBEACON_ADV:
        case UAM_REQUEST_ADD_PAYLOAD:
+       case UAM_REQUEST_ADD_PAYLOAD_TO_SERVICE:
                return TRUE;
        default:
                return FALSE;