diff options
author | Abhay agarwal <ay.agarwal@samsung.com> | 2019-12-06 17:32:41 +0530 |
---|---|---|
committer | DoHyun Pyun <dh79.pyun@samsung.com> | 2019-12-30 16:45:56 +0900 |
commit | 9d8f2d34906d1dc510cf7fdcbb6d631ee3ac588f (patch) | |
tree | 2488d328734c68224d207972f076dcbbc56c5b2b | |
parent | 083c77566609d985175376abab54109dc1741260 (diff) | |
download | user-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.h | 20 | ||||
-rw-r--r-- | include/user-awareness.h | 45 | ||||
-rw-r--r-- | src/user-awareness-payload.c | 92 | ||||
-rw-r--r-- | test/uat-devices.c | 4 | ||||
-rw-r--r-- | test/uat-payload.c | 133 | ||||
-rw-r--r-- | test/uat-users.c | 3 |
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, }, }; - |