diff options
author | Mayank Haarit <mayank.h@samsung.com> | 2019-07-09 18:48:01 +0530 |
---|---|---|
committer | saerome kim <saerome.kim@samsung.com> | 2019-07-10 08:06:03 +0900 |
commit | 2b6159afffb405aaf4aeda5e38758f900ef530ea (patch) | |
tree | 921093f23c23945b2685975ccc2bdfe4f0c50d18 | |
parent | 77b067eb9e8ca88f64fe2ea9da6ddc6019856677 (diff) | |
download | ua-plugin-wifi-dummy-2b6159afffb405aaf4aeda5e38758f900ef530ea.tar.gz ua-plugin-wifi-dummy-2b6159afffb405aaf4aeda5e38758f900ef530ea.tar.bz2 ua-plugin-wifi-dummy-2b6159afffb405aaf4aeda5e38758f900ef530ea.zip |
Sends device_added event to upper layer after return from add_device call.
Change-Id: I3f6b80e37e85be3cc1f7906c2591c72ecede9b4a
Signed-off-by: Mayank Haarit <mayank.h@samsung.com>
-rw-r--r-- | src/wifi-plugin.c | 43 |
1 files changed, 42 insertions, 1 deletions
diff --git a/src/wifi-plugin.c b/src/wifi-plugin.c index 95208c8..4d9ae2b 100644 --- a/src/wifi-plugin.c +++ b/src/wifi-plugin.c @@ -333,6 +333,46 @@ void __check_mobile_list_finish(bool is_check) FUNC_EXIT; } +static void __check_add_device_finish() +{ + GSList *l; + uas_device_info_t *dev_info = NULL; + + initial_bursts = true; + for (l = dev_list; NULL != l; l = g_slist_next(l)) { + uas_wifi_info_t *wifi_info = l->data; + + if (wifi_info->new_device == true) { + wifi_info->new_device = false; + + if (NULL == uas_cbs || NULL == uas_cbs->device_added_cb) { + dev_list = g_slist_remove(dev_list, wifi_info); + free(wifi_info); + return; + } + + dev_info = _wifi_plugin_util_get_dev_info_from_wifi_info(wifi_info); + + if (!dev_info) { + UA_WIFI_ERR("Unable to get dev_info"); + dev_list = g_slist_remove(dev_list, wifi_info); + free(wifi_info); + break; + } + + uas_cbs->device_added_cb(UAS_STATUS_SUCCESS, dev_info); + _wifi_plugin_util_uas_device_info_free(dev_info); + break; + } + } +} + +static gboolean __add_device_send(gpointer data) +{ + __check_add_device_finish(); + return FALSE; +} + static int add_device(uas_device_info_t *device) { FUNC_ENTER; @@ -355,6 +395,7 @@ static int add_device(uas_device_info_t *device) return UAS_STATUS_FAIL; } + wifi_info->new_device = true; /* Add to list */ dev_list = g_slist_prepend(dev_list, g_memdup(wifi_info, sizeof(uas_wifi_info_t))); @@ -363,7 +404,7 @@ static int add_device(uas_device_info_t *device) if (mac_len && ip_len && (strcasecmp(wifi_info->mac_addr, BROADCAST_MAC_ADDR) != 0)) { initial_bursts = true; - uas_cbs->device_added_cb(UAS_STATUS_SUCCESS, device); + g_idle_add(__add_device_send, NULL); } free(wifi_info); |