From 22367513ced9ff5921eb6b1dd7b65c5d108b2a99 Mon Sep 17 00:00:00 2001 From: Niraj Kumar Goit Date: Thu, 5 Apr 2018 11:57:15 +0530 Subject: Add SSID and Frequency mixed scan. Change-Id: I6ca91a5f073c11712a936844589aa72c27c0145e Signed-off-by: Niraj Kumar Goit --- src/technology.c | 49 ++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 42 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/technology.c b/src/technology.c index 5d5b70f0..57ab8e14 100755 --- a/src/technology.c +++ b/src/technology.c @@ -27,6 +27,7 @@ #include #if defined TIZEN_EXT #include +#include #endif #include @@ -1280,7 +1281,7 @@ static DBusMessage *specific_scan(DBusConnection *conn, DBusMessage *msg, void * GSList *specific_scan_list = NULL; int scan_type = 0; const char *name = NULL; - unsigned int freq = 0; + const char *freq = NULL; DBusMessageIter iter, dict; int err; @@ -1321,20 +1322,53 @@ static DBusMessage *specific_scan(DBusConnection *conn, DBusMessage *msg, void * return __connman_error_invalid_arguments(msg); } - scan_type = 1; /* SSID based scan */ + scan_type = CONNMAN_MULTI_SCAN_SSID; /* SSID based scan */ dbus_message_iter_get_basic(&value2, &name); DBG("name %s", name); specific_scan_list = g_slist_append(specific_scan_list, g_strdup(name)); } else if (g_str_equal(key, "Frequency")) { - if (type != DBUS_TYPE_UINT16) { + if (type != DBUS_TYPE_STRING) { + g_slist_free_full(specific_scan_list, g_free); + return __connman_error_invalid_arguments(msg); + } + + scan_type = CONNMAN_MULTI_SCAN_FREQ; /* Frequency based scan */ + dbus_message_iter_get_basic(&value2, &freq); + DBG("freq %s", freq); + specific_scan_list = g_slist_append(specific_scan_list, GINT_TO_POINTER(atoi(freq))); + } else if (g_str_equal(key, "SSID_Mixed")) { + if (type != DBUS_TYPE_STRING) { + g_slist_free_full(specific_scan_list, g_free); + return __connman_error_invalid_arguments(msg); + } + + scan_type = CONNMAN_MULTI_SCAN_SSID_FREQ; /* SSID & Frequency mixed scan */ + dbus_message_iter_get_basic(&value2, &name); + + connman_multi_scan_ap_s *ap = (connman_multi_scan_ap_s*)g_try_malloc0(sizeof(connman_multi_scan_ap_s)); + if (ap) { + g_strlcpy(ap->str, name, strlen(name) + 1); + ap->flag = true; + specific_scan_list = g_slist_append(specific_scan_list, ap); + } else + DBG("Failed to allocate memory"); + + } else if (g_str_equal(key, "Frequency_Mixed")) { + if (type != DBUS_TYPE_STRING) { g_slist_free_full(specific_scan_list, g_free); return __connman_error_invalid_arguments(msg); } - scan_type = 2; /* Frequency based scan */ + scan_type = CONNMAN_MULTI_SCAN_SSID_FREQ; /* SSID & Frequency mixed scan */ dbus_message_iter_get_basic(&value2, &freq); - DBG("freq %d", freq); - specific_scan_list = g_slist_append(specific_scan_list, GINT_TO_POINTER(freq)); + + connman_multi_scan_ap_s *ap = (connman_multi_scan_ap_s*)g_try_malloc0(sizeof(connman_multi_scan_ap_s)); + if (ap) { + g_strlcpy(ap->str, freq, strlen(freq) + 1); + ap->flag = false; + specific_scan_list = g_slist_append(specific_scan_list, ap); + } else + DBG("Failed to allocate memory"); } dbus_message_iter_next(&dict); } @@ -1356,7 +1390,8 @@ static DBusMessage *specific_scan(DBusConnection *conn, DBusMessage *msg, void * technology->scan_pending = g_slist_prepend(technology->scan_pending, msg); - if (scan_type == 1) { + if (scan_type == CONNMAN_MULTI_SCAN_SSID || + scan_type == CONNMAN_MULTI_SCAN_SSID_FREQ) { g_slist_free_full(specific_scan_list, g_free); scan_type = 0; } -- cgit v1.2.3