summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAbhay agarwal <ay.agarwal@samsung.com>2019-12-06 17:32:41 +0530
committerDoHyun Pyun <dh79.pyun@samsung.com>2019-12-30 16:45:56 +0900
commit9d8f2d34906d1dc510cf7fdcbb6d631ee3ac588f (patch)
tree2488d328734c68224d207972f076dcbbc56c5b2b
parent083c77566609d985175376abab54109dc1741260 (diff)
downloaduser-awareness-9d8f2d34906d1dc510cf7fdcbb6d631ee3ac588f.tar.gz
user-awareness-9d8f2d34906d1dc510cf7fdcbb6d631ee3ac588f.tar.bz2
user-awareness-9d8f2d34906d1dc510cf7fdcbb6d631ee3ac588f.zip
Add APIs to get list of added payload info
Signed-off-by: Abhay agarwal <ay.agarwal@samsung.com>
-rw-r--r--include/user-awareness-private.h20
-rw-r--r--include/user-awareness.h45
-rw-r--r--src/user-awareness-payload.c92
-rw-r--r--test/uat-devices.c4
-rw-r--r--test/uat-payload.c133
-rw-r--r--test/uat-users.c3
6 files changed, 284 insertions, 13 deletions
diff --git a/include/user-awareness-private.h b/include/user-awareness-private.h
index 28bcd3e..19ac1b9 100644
--- a/include/user-awareness-private.h
+++ b/include/user-awareness-private.h
@@ -538,6 +538,26 @@ void _ua_get_uam_payload_from_ua(uam_ble_payload_s *uam_payload, ua_payload_info
ua_payload_info_s* _ua_payload_clone(ua_payload_info_s *org_payload);
/**
+ * @brief Retrieves the payload handle of all the added payloads.
+ * @since_tizen 5.5
+ *
+ * @param[in] foreach_cb Callback function to be invoked with payload handle.
+ * @param[in] user_data The user data to be passed when callback is called.
+ *
+ * @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_added_payload_cb()
+ */
+int _ua_foreach_added_payload(ua_added_payload_cb foreach_cb,
+ void *user_data);
+
+/**
* @brief Add a device handle to internal device-list.
* @since_tizen 5.5
*
diff --git a/include/user-awareness.h b/include/user-awareness.h
index aad6a2c..98bc85b 100644
--- a/include/user-awareness.h
+++ b/include/user-awareness.h
@@ -3065,6 +3065,51 @@ int ua_payload_add_service(
/**
* @ingroup CAPI_NETWORK_UA_MODULE
+ * @brief Callback to get all payload handles.
+ * @since_tizen 5.5
+ *
+ * @remarks The @a payload_handle should not be released.
+ * @remarks The @a payload_handle can be used only in the callback.
+ *
+ * @param[in] payload_handle The payload handle.
+ * @param[in] user_data User data passed in ua_payload_foreach_added().
+ *
+ * @exception
+ * @pre
+ * @post
+ *
+ * @see ua_payload_foreach_added()
+ */
+typedef bool (*ua_added_payload_cb)(
+ ua_payload_h payload_handle,
+ void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_UA_MODULE
+ * @brief Retrieves the payload handle of all the registered payloads.
+ * @since_tizen 5.5
+ *
+ * @param[in] foreach_cb Callback function to be invoked with payload handle.
+ * @param[in] user_data The user data to be passed when callback is called.
+ *
+ * @return 0 on success, otherwise a negative error value
+ * @retval #UA_ERROR_NONE Successful
+ * @retval #UA_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #UA_ERROR_OUT_OF_MEMORY Out of memory
+ * @retval #UA_ERROR_OPERATION_FAILED Operation failed
+ *
+ * @exception
+ * @pre
+ * @post
+ *
+ * @see ua_added_payload_cb()
+ */
+int ua_payload_foreach_added(
+ ua_added_payload_cb foreach_cb,
+ void *user_data);
+
+/**
+ * @ingroup CAPI_NETWORK_UA_MODULE
* @brief Gets sensor's status.
* @since_tizen 5.5
*
diff --git a/src/user-awareness-payload.c b/src/user-awareness-payload.c
index ec0ed4d..b4c5973 100644
--- a/src/user-awareness-payload.c
+++ b/src/user-awareness-payload.c
@@ -23,7 +23,7 @@
#include <user-awareness-private.h>
#include <user-awareness-util.h>
-GSList *ua_payload_list;
+GSList *ua_payloads_list;
int ua_payload_create(ua_payload_h *payload_handle)
{
@@ -51,7 +51,7 @@ int ua_payload_create(ua_payload_h *payload_handle)
*payload_handle = (ua_payload_h)payload;
payload->handle = *payload_handle;
- ua_payload_list = g_slist_append(ua_payload_list, payload);
+ ua_payloads_list = g_slist_append(ua_payloads_list, payload);
FUNC_EXIT;
return UA_ERROR_NONE;
@@ -77,7 +77,7 @@ int ua_payload_destroy(ua_payload_h handle)
ua_payload_info_s *payload = (ua_payload_info_s *)handle;
UA_VALIDATE_INPUT_PARAMETER(handle);
- UA_VALIDATE_HANDLE(handle, ua_payload_list);
+ UA_VALIDATE_HANDLE(handle, ua_payloads_list);
/* Do not remove from list if payload is added to database */
if (payload->isadded) {
@@ -86,7 +86,7 @@ int ua_payload_destroy(ua_payload_h handle)
/* LCOV_EXCL_STOP */
}
- ua_payload_list = g_slist_remove(ua_payload_list, payload);
+ ua_payloads_list = g_slist_remove(ua_payloads_list, payload);
_ua_free_ua_payload_info_s(payload);
FUNC_EXIT;
@@ -260,7 +260,6 @@ int ua_payload_add_service(ua_payload_h payload_handle,
return UA_ERROR_NONE;
}
-/*
ua_payload_info_s* _ua_get_payload_from_uam(uam_ble_payload_s *uam_payload)
{
FUNC_ENTRY;
@@ -296,6 +295,86 @@ ua_payload_info_s* _ua_get_payload_from_uam(uam_ble_payload_s *uam_payload)
return payload;
}
+int _ua_foreach_added_payload(ua_added_payload_cb foreach_cb,
+ void *user_data)
+{
+ FUNC_ENTRY;
+ int i;
+ int ret = UAM_ERROR_NONE;
+ GSList *l;
+ ua_payload_info_s *u;
+ GPtrArray *payload_list = NULL;
+ uam_ble_payload_s *ptr;
+
+ UA_VALIDATE_INPUT_PARAMETER(foreach_cb);
+
+ payload_list = g_ptr_array_new();
+ retv_if(NULL == payload_list, UA_ERROR_OUT_OF_MEMORY);
+
+ ret = _ua_get_error_code(_uam_get_added_payloads(&payload_list));
+ if (UA_ERROR_NONE != ret) {
+ /* LCOV_EXCL_START */
+ UA_ERR("Failed with error: %s(0x%X)",
+ _ua_get_error_string(ret), ret);
+ g_ptr_array_free(payload_list, TRUE);
+ /* LCOV_EXCL_STOP */
+ return ret;
+ }
+
+ if (ua_payloads_list) {
+ g_slist_free_full(ua_payloads_list, _ua_free_ua_payload_info_s);
+ ua_payloads_list = NULL;
+ }
+
+ for (i = 0; i < payload_list->len; i++) {
+ ptr = g_ptr_array_index(payload_list, i);
+ if (ptr) {
+ ua_payload_info_s* payload_info;
+ payload_info = _ua_get_payload_from_uam(ptr);
+
+ payload_info->isadded = true;
+ payload_info->handle = (ua_payload_h)payload_info;
+
+ ua_payloads_list = g_slist_append(ua_payloads_list, payload_info);
+ } else {
+ /* LCOV_EXCL_START */
+ UA_ERR("OPERATION_FAILED(0x%08x)",
+ UA_ERROR_OPERATION_FAILED);
+ ret = UA_ERROR_OPERATION_FAILED;
+ /* LCOV_EXCL_STOP */
+ goto done;
+ }
+ }
+
+ for (l = ua_payloads_list; l; l = g_slist_next(l)) {
+ u = (ua_payload_info_s *)l->data;
+
+ if (!foreach_cb(u->handle, user_data))
+ break;
+ }
+
+done:
+ g_ptr_array_foreach(payload_list, (GFunc)g_free, NULL);
+ g_ptr_array_free(payload_list, TRUE);
+
+ FUNC_EXIT;
+ return ret;
+}
+
+int ua_payload_foreach_added(
+ ua_added_payload_cb foreach_cb,
+ void *user_data)
+{
+ FUNC_ENTRY;
+ UA_VALIDATE_INPUT_PARAMETER(foreach_cb);
+
+ int ret = _ua_foreach_added_payload(foreach_cb, user_data);
+
+ FUNC_EXIT;
+ return ret;
+}
+
+/*
ua_payload_info_s* _ua_payload_clone(ua_payload_info_s *org_payload)
{
FUNC_ENTRY;
@@ -330,8 +409,7 @@ ua_payload_info_s* _ua_payload_clone(ua_payload_info_s *org_payload)
FUNC_EXIT;
return payload;
}
-*/
-/*
+
int ua_payload_get_primary_key(
ua_device_h handle,
char *primary_key)
diff --git a/test/uat-devices.c b/test/uat-devices.c
index be54b56..d3db478 100644
--- a/test/uat-devices.c
+++ b/test/uat-devices.c
@@ -441,8 +441,7 @@ static int run_ua_device_foreach_added(
uat_clear_device_list();
- ret = ua_device_foreach_added(
- __foreach_added_device_cb, NULL);
+ ret = ua_device_foreach_added(__foreach_added_device_cb, NULL);
msg(" - ua_device_foreach_added() ret: [0x%X] [%s]",
ret, uat_get_error_str(ret));
@@ -598,4 +597,3 @@ struct menu_data menu_sel_device[] = {
{ "2", "Apply", NULL, uat_select_device, NULL },
{ NULL, NULL, },
};
-
diff --git a/test/uat-payload.c b/test/uat-payload.c
index fddef8e..2f7ded1 100644
--- a/test/uat-payload.c
+++ b/test/uat-payload.c
@@ -21,6 +21,9 @@
#include <glib.h>
#include <gio/gio.h>
+#include <user-awareness.h>
+
+#include "uat-menu.h"
#include "uat-common.h"
extern ua_device_h g_device_h; /**< Device handle */
@@ -32,6 +35,25 @@ static char g_payload_device_icon[MENU_DATA_SIZE + 1] = {0,}; /**< payload devic
static char g_payload_secondary_key[MENU_DATA_SIZE + 1] = {0,}; /**< payload secondary_key for the selected device */
static char g_payload_device_uid_str[MENU_DATA_SIZE + 1] = {0,}; /**< payload device_uid for the selected device */
+GSList *payload_list = NULL; /**< Payload List */
+int idx_payload = 0; /**< Found payload sequence number */
+
+char g_selected_payload_idx[MENU_DATA_SIZE + 1] = {0,}; /** Selected payload id */
+
+static void ___free_payload(gpointer data)
+{
+ ua_payload_h handle = data;
+ ua_payload_destroy(handle);
+ handle = NULL;
+}
+
+void uat_clear_payload_list(void)
+{
+ g_slist_free_full(payload_list, ___free_payload);
+ payload_list = NULL;
+ idx_payload = 0;
+}
+
static int run_ua_payload_create(
MManager *mm, struct menu_data *menu)
{
@@ -196,6 +218,100 @@ static int run_ua_payload_add_service(
return RET_SUCCESS;
}
+static bool __foreach_added_payload_cb(
+ ua_payload_h payload_handle, void *user_data)
+{
+/*
+ int ret = UA_ERROR_NONE;
+ ua_user_h handle = NULL;
+ char *account = NULL;
+ char *name = NULL;
+ unsigned long long last_seen = 0;
+
+ if (!user_handle) {
+ msgr("user_handle is NULL");
+ return true;
+ }
+
+ ret = ua_user_clone(&handle, user_handle);
+ if (UA_ERROR_NONE != ret) {
+ msgr("ua_user_clone() result: [0x%X] [%s]",
+ ret, uat_get_error_str(ret));
+ }
+
+ user_list = g_slist_append(user_list, handle);
+ idx_user++;
+
+ ret = ua_user_get_account(handle, &account);
+ if (UA_ERROR_NONE == ret) {
+ msglr("[%d]", idx_user);
+ msglr("User account info %s", account);
+ g_free(account);
+ }
+
+ ret = ua_user_get_name(handle, &name);
+ if (UA_ERROR_NONE == ret) {
+ msglr("User Name : %s", name);
+ g_free(name);
+ }
+
+ ret = ua_user_get_last_presence(handle, &last_seen);
+ if (UA_ERROR_NONE == ret)
+ msglr("last present at %llu", last_seen);
+*/
+
+ return true;
+}
+
+static int run_ua_payload_foreach_added(
+ MManager *mm, struct menu_data *menu)
+{
+ int ret = UA_ERROR_NONE;
+
+ msg("ua_payload_foreach_added");
+
+ uat_clear_payload_list();
+
+ ret = ua_payload_foreach_added(__foreach_added_payload_cb, NULL);
+
+ msg(" - ua_payload_foreach_added() ret: [0x%X] [%s]",
+ ret, uat_get_error_str(ret));
+
+ return RET_SUCCESS;
+}
+
+int uat_select_payload(MManager *mm, struct menu_data *menu)
+{
+/*
+ GSList *iter = user_list;
+
+ int id = 0;
+ int selected_id = 0;
+
+ if (strlen(g_selected_user_idx))
+ selected_id = (unsigned char)strtol(g_selected_user_idx, NULL, 10);
+
+ if (selected_id <= 0) {
+ msg("Please select user first");
+ return RET_SUCCESS;
+ }
+
+ while (NULL != iter) {
+ GSList *next = iter->next;
+ ua_user_h *handle = iter->data;
+ if (handle && ++id == selected_id) {
+ g_user_h = handle; // Make selected user as a current one
+ update_user_info(); // Update user info.
+ msg("Select user done");
+ return RET_SUCCESS;
+ }
+ iter = next;
+ }
+*/
+
+ return RET_SUCCESS;
+}
+
static struct menu_data menu_ua_payload_set_primary_key[] = {
{ "1", "Primary Key (0 to 255)",
NULL, NULL, g_payload_primary_key },
@@ -213,7 +329,7 @@ static struct menu_data menu_ua_payload_set_device_icon[] = {
};
static struct menu_data menu_ua_payload_set_secondary_key[] = {
- { "1", "Purpose (0 to 255)",
+ { "1", "Secondary Key (0 to 255)",
NULL, NULL, g_payload_secondary_key },
{ "2", "run", NULL,
run_ua_payload_set_secondary_key, NULL },
@@ -232,6 +348,13 @@ static struct menu_data menu_ua_payload_set_device_uid[] = {
{ NULL, NULL, },
};
+struct menu_data menu_sel_added_payload[] = {
+ { "1", "Payload list", NULL,
+ run_ua_payload_foreach_added, g_selected_payload_idx},
+ { "2", "Apply", NULL, uat_select_payload, NULL },
+ { NULL, NULL, },
+};
+
struct menu_data menu_ua_payloads[] = {
{ "1", "ua_payload_create",
NULL, run_ua_payload_create, NULL },
@@ -249,5 +372,13 @@ struct menu_data menu_ua_payloads[] = {
NULL, run_ua_payload_add, NULL },
{ "8", ANSI_COLOR_LIGHTGREEN "ua_payload_add_service" ANSI_COLOR_NORMAL,
NULL, run_ua_payload_add_service, NULL },
+ { "9", ANSI_COLOR_LIGHTMAGENTA "ua_payload_foreach_added" ANSI_COLOR_NORMAL,
+ menu_sel_added_payload, NULL, NULL },
{ NULL, NULL, },
};
+
+//struct menu_data menu_sel_payload[] = {
+// { "1", "User list", NULL, run_ua_payload_foreach_added, g_selected_payload_idx},
+// { "2", "Apply", NULL, uat_select_payload , NULL },
+// { NULL, NULL, },
+//};
diff --git a/test/uat-users.c b/test/uat-users.c
index e1d5a37..fb2ed36 100644
--- a/test/uat-users.c
+++ b/test/uat-users.c
@@ -42,7 +42,7 @@ extern char g_mac_addr_str[MENU_DATA_SIZE + 1]; /**< MAC of the selected device
extern char g_service_str[MENU_DATA_SIZE + 1]; /**< Service name */
GSList *user_list = NULL; /**< User List */
-int idx_user = 0; /**< Found device sequence number */
+int idx_user = 0; /**< Found user sequence number */
extern char g_selected_device_idx[MENU_DATA_SIZE + 1]; /**< Selected device id */
extern GSList *g_device_list; /**< Device List */
@@ -712,4 +712,3 @@ struct menu_data menu_sel_user[] = {
{ "2", "Apply", NULL, uat_select_user , NULL },
{ NULL, NULL, },
};
-