Get payload device user data
authorAbhay agarwal <ay.agarwal@samsung.com>
Thu, 26 Dec 2019 13:43:20 +0000 (19:13 +0530)
committerDoHyun Pyun <dh79.pyun@samsung.com>
Mon, 30 Dec 2019 07:45:56 +0000 (16:45 +0900)
Signed-off-by: Abhay agarwal <ay.agarwal@samsung.com>
include/user-awareness.h
src/user-awareness-payload.c
test/uat-payload.c

index bf80e28ccd25c9c1df2b86f21671f5a3850814a8..d5ff9d40b2e136eef4db2775f7ad5b2c61c5d001 100644 (file)
@@ -3024,6 +3024,27 @@ int ua_payload_get_secondary_key(
                ua_payload_h handle,
                char *secondary_key);
 
+/**
+ * @ingroup CAPI_NETWORK_UA_MODULE
+ * @brief Gets device's BLE payload user_data.
+ * @since_tizen 5.5
+ *
+ * @param[in] handle The payload handle.
+ * @param[out] user_data The BLE payload user_data.
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #UA_ERROR_NONE Successful
+ * @retval #UA_ERROR_INVALID_PARAMETER Invalid parameter
+ *
+ * @exception
+ * @pre
+ * @post
+ *
+ */
+int ua_payload_get_user_data(
+               ua_payload_h handle,
+               char **user_data);
+
 /**
  * @ingroup CAPI_NETWORK_UA_MODULE
  * @brief Gets device's BLE payload DEVICE_UID.
index 3650dfde0d8614ab0e2ee6fcb7c2b334804a8c8c..6b82934bc3234f34e21a38ba745d50a343506098 100644 (file)
@@ -267,6 +267,7 @@ ua_payload_info_s* _ua_get_payload_from_uam(uam_ble_payload_s *uam_payload)
 {
        FUNC_ENTRY;
        ua_payload_info_s *payload = NULL;
+       int user_data_len = 0;
 
        retv_if(NULL == uam_payload, NULL);
 
@@ -280,7 +281,8 @@ ua_payload_info_s* _ua_get_payload_from_uam(uam_ble_payload_s *uam_payload)
        payload->device_icon = uam_payload->device_icon;
        payload->secondary_key = uam_payload->secondary_key;
 
-       payload->device_uid = g_memdup(uam_payload->device_uid, UA_BLE_PAYLOAD_DEVICE_UID_MAX_LEN + 1);
+       payload->device_uid_len = uam_payload->device_uid_len;
+       payload->device_uid = g_memdup(uam_payload->device_uid, uam_payload->device_uid_len);
        if (!payload->device_uid) {
                UA_ERR("g_malloc0 failed");
                _ua_free_ua_payload_info_s(payload);
@@ -294,6 +296,14 @@ ua_payload_info_s* _ua_get_payload_from_uam(uam_ble_payload_s *uam_payload)
                return NULL;
        }
 
+       user_data_len = UA_BLE_PAYLOAD_DEVICE_UID_MAX_LEN - 1 - uam_payload->device_uid_len;
+       payload->user_data = g_memdup(uam_payload->user_data, user_data_len);
+       if (!payload->user_data) {
+               UA_ERR("g_malloc0 failed");
+               _ua_free_ua_payload_info_s(payload);
+               return NULL;
+       }
+
        FUNC_EXIT;
        return payload;
 }
@@ -381,6 +391,7 @@ ua_payload_info_s* _ua_payload_clone(ua_payload_info_s *org_payload)
 {
        FUNC_ENTRY;
        ua_payload_info_s *payload = NULL;
+       int user_data_len = 0;
 
        retv_if(NULL == org_payload, NULL);
 
@@ -394,7 +405,8 @@ ua_payload_info_s* _ua_payload_clone(ua_payload_info_s *org_payload)
        payload->device_icon = org_payload->device_icon;
        payload->secondary_key = org_payload->secondary_key;
 
-       payload->device_uid = g_memdup(org_payload->device_uid, UA_BLE_PAYLOAD_DEVICE_UID_MAX_LEN + 1);
+       payload->device_uid_len = org_payload->device_uid_len;
+       payload->device_uid = g_memdup(org_payload->device_uid, org_payload->device_uid_len);
        if (!payload->device_uid && org_payload->device_uid) {
                UA_ERR("g_malloc0 failed");
                _ua_free_ua_payload_info_s(payload);
@@ -408,6 +420,14 @@ ua_payload_info_s* _ua_payload_clone(ua_payload_info_s *org_payload)
                return NULL;
        }
 
+       user_data_len = UA_BLE_PAYLOAD_DEVICE_UID_MAX_LEN - 1 - org_payload->device_uid_len;
+       payload->user_data = g_memdup(org_payload->user_data, user_data_len);
+       if (!payload->user_data && org_payload->user_data) {
+               UA_ERR("g_malloc0 failed");
+               _ua_free_ua_payload_info_s(payload);
+               return NULL;
+       }
+
        FUNC_EXIT;
        return payload;
 }
@@ -501,7 +521,8 @@ int ua_payload_get_device_uid(
                goto done;
        }
 
-       *device_uid = g_memdup(payload->device_uid, UA_BLE_PAYLOAD_DEVICE_UID_MAX_LEN);
+       UA_DBG("payload(device_uid_len) [%d]", payload->device_uid_len);
+       *device_uid = g_memdup(payload->device_uid, payload->device_uid_len);
        if (*device_uid == NULL) {
                // LCOV_EXCL_START
                UA_ERR("g_memdup failed");
@@ -537,3 +558,35 @@ done:
        FUNC_EXIT;
        return UA_ERROR_NONE;
 }
+
+int ua_payload_get_user_data(
+               ua_payload_h handle,
+               char **user_data)
+{
+       FUNC_ENTRY;
+       ua_payload_info_s *payload = (ua_payload_info_s *)handle;
+       int user_data_len = 0;
+
+       UA_VALIDATE_INPUT_PARAMETER(handle);
+       UA_VALIDATE_INPUT_PARAMETER(user_data);
+       UA_PRINT_PAYLOAD_HANDLE(handle);
+
+       if (!payload || !payload->user_data) {
+               *user_data = NULL;
+               UA_DBG("payload(user_data) is not found");
+               goto done;
+       }
+
+       user_data_len = UA_BLE_PAYLOAD_DEVICE_UID_MAX_LEN - 1 - payload->device_uid_len;
+       *user_data = g_memdup(payload->user_data, user_data_len);
+       if (*user_data == NULL) {
+               // LCOV_EXCL_START
+               UA_ERR("g_memdup failed");
+               return UA_ERROR_OUT_OF_MEMORY;
+               // LCOV_EXCL_START
+       }
+
+done:
+       FUNC_EXIT;
+       return UA_ERROR_NONE;
+}
index e55fc57c6c2cac100774bc761336a18bc1391a49..e6067a131d8a3d9d75bcacd00e4c60e63cffb0dc 100644 (file)
@@ -138,11 +138,15 @@ static int _scan_payload_device_uid_str(
 {
        int ret = UA_ERROR_NONE;
        int temp = 0;
+       int device_uid_len = 0;
 
        msg("Input 17 bytes device_uid, each byte is 0 to 255 value");
        memset(g_payload_device_uid_str, 0, MENU_DATA_SIZE + 1);
 
-       for (int i = 0; i < UA_BLE_PAYLOAD_DEVICE_UID_MAX_LEN; i++) {
+       if (strlen(g_payload_device_uid_len))
+               device_uid_len = (unsigned char)strtol(g_payload_device_uid_len, NULL, 10);
+
+       for (int i = 0; i < device_uid_len; i++) {
                ret = fscanf(stdin, "%d", &temp);
                if(!ret)
                        msg(" - fscanf ret: %d", ret);
@@ -274,6 +278,7 @@ static bool __foreach_added_payload_cb(
        char secondary_key = 0;
        char *device_uid = NULL;
        char device_icon = 0;
+       char *payload_user_data = NULL;
 
        if (!payload_handle) {
                msgr("payload_handle is NULL");
@@ -308,6 +313,11 @@ static bool __foreach_added_payload_cb(
        if (UA_ERROR_NONE == ret)
                msglr("Payload device icon : %d", device_icon);
 
+       ret = ua_payload_get_user_data(handle, &payload_user_data);
+       if (UA_ERROR_NONE == ret) {
+               msglr("Payload user data : %s", payload_user_data);
+       }
+
        return true;
 }