summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMayank Haarit <mayank.h@samsung.com>2019-07-09 18:48:01 +0530
committersaerome kim <saerome.kim@samsung.com>2019-07-10 08:06:03 +0900
commit2b6159afffb405aaf4aeda5e38758f900ef530ea (patch)
tree921093f23c23945b2685975ccc2bdfe4f0c50d18
parent77b067eb9e8ca88f64fe2ea9da6ddc6019856677 (diff)
downloadua-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.c43
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);