summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJaehyun Kim <jeik01.kim@samsung.com>2019-10-14 12:53:54 +0000
committerGerrit Code Review <gerrit@review.ap-northeast-2.compute.internal>2019-10-14 12:53:54 +0000
commitfcfb1714c531184c6e32b32fcd1a47714d054053 (patch)
tree477e0f2e92a7cc5cbd95452f8bd7ca7c1b5d3fec
parent85aa71a6d25c806e2ef43cbb3caddb1fcfb67f77 (diff)
parent7ab66353f97478e11a9179cea237a429273b3071 (diff)
downloadconnman-fcfb1714c531184c6e32b32fcd1a47714d054053.tar.gz
connman-fcfb1714c531184c6e32b32fcd1a47714d054053.tar.bz2
connman-fcfb1714c531184c6e32b32fcd1a47714d054053.zip
Merge "Try to auto-connect with favorite service before full channel scan" into tizen
-rwxr-xr-x[-rw-r--r--]plugins/wifi.c43
1 files changed, 33 insertions, 10 deletions
diff --git a/plugins/wifi.c b/plugins/wifi.c
index e1f23aeb..57d8572c 100644..100755
--- a/plugins/wifi.c
+++ b/plugins/wifi.c
@@ -2091,6 +2091,12 @@ static void scan_callback(int result, GSupplicantInterface *interface,
struct connman_device *device = user_data;
struct wifi_data *wifi = connman_device_get_data(device);
bool scanning;
+#if defined TIZEN_EXT
+ GSList *list = NULL;
+ bool favorite_exists = false;
+ struct connman_network *network = NULL;
+ struct connman_service *service = NULL;
+#endif
DBG("result %d wifi %p", result, wifi);
@@ -2138,18 +2144,35 @@ static void scan_callback(int result, GSupplicantInterface *interface,
}
#if defined TIZEN_EXT
- if (wifi && wifi->allow_full_scan) {
- int ret;
- DBG("Trigger Full Channel Scan");
- wifi->allow_full_scan = FALSE;
+ if (wifi) {
+ for (list = wifi->networks; list; list = list->next) {
+ network = list->data;
+ service = connman_service_lookup_from_network(network);
+
+ if (service != NULL &&
+ (connman_service_get_favorite(service) == true) &&
+ (connman_service_get_autoconnect(service) == true)) {
+ DBG("Favorite service exists [%s]", connman_network_get_string(network, "Name"));
+ favorite_exists = true;
+ break;
+ }
+ }
+ }
- ret = g_supplicant_interface_scan(wifi->interface, NULL,
- scan_callback_hidden, device);
- if (ret == 0)
- return;
+ if (favorite_exists == false) {
+ if (wifi && wifi->allow_full_scan) {
+ int ret;
+ DBG("Trigger full channel scan");
+ wifi->allow_full_scan = false;
- /* On error, let's recall scan_callback, which will cleanup */
- return scan_callback(ret, interface, user_data);
+ ret = g_supplicant_interface_scan(wifi->interface, NULL,
+ scan_callback_hidden, device);
+ if (ret == 0)
+ return;
+
+ /* On error, let's recall scan_callback, which will cleanup */
+ return scan_callback(ret, interface, user_data);
+ }
}
#endif