diff options
author | Daniel Wagner <wagi@monom.org> | 2020-03-17 19:12:11 +0100 |
---|---|---|
committer | Daniel Wagner <wagi@monom.org> | 2020-03-22 19:14:43 +0100 |
commit | f1444a26bff1b4e3e980007f7fd54845d63825c1 (patch) | |
tree | 51da6013ebd45551e180c13a6ec3948195231b31 /plugins | |
parent | 8382eaf499ca4e62120aef0b117f5b244cd6a787 (diff) | |
download | connman-f1444a26bff1b4e3e980007f7fd54845d63825c1.tar.gz |
iwd: Mark network avaible after scaning
connman_device_set_scanning() marks all networks as unavailable during
the scan period. The iwd plugin needs mark the network available
again.
Fixes: 6b391cfd294d ("iwd: Synchronize station scanning property with scan state")
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/iwd.c | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/plugins/iwd.c b/plugins/iwd.c index 8568fcd4..5df3c088 100644 --- a/plugins/iwd.c +++ b/plugins/iwd.c @@ -972,12 +972,15 @@ static void _update_signal_strength(const char *path, int16_t signal_strength) connman_network_set_strength(iwdn->network, calculate_strength(signal_strength)); + connman_network_set_available(iwdn->network, true); connman_network_update(iwdn->network); } static void ordered_networks_cb(DBusMessage *message, void *user_data) { DBusMessageIter array, entry; + struct iwd_device *iwdd; + char *path = user_data; DBG(""); @@ -1005,6 +1008,11 @@ static void ordered_networks_cb(DBusMessage *message, void *user_data) dbus_message_iter_next(&entry); } + + iwdd = g_hash_table_lookup(devices, path); + if (iwdd) + connman_device_set_scanning(iwdd->device, + CONNMAN_SERVICE_TYPE_WIFI, false); } static void update_signal_strength(struct iwd_station *iwds) @@ -1012,7 +1020,7 @@ static void update_signal_strength(struct iwd_station *iwds) if (!g_dbus_proxy_method_call(iwds->proxy, "GetOrderedNetworks", NULL, ordered_networks_cb, - NULL, NULL)) + g_strdup(iwds->path), g_free)) DBG("GetOrderedNetworks() failed"); } @@ -1054,13 +1062,15 @@ static void station_property_change(GDBusProxy *proxy, const char *name, dbus_message_iter_get_basic(iter, &scanning); iwds->scanning = scanning; - if (!iwds->scanning) + if (iwds->scanning) { + iwdd = g_hash_table_lookup(devices, path); + if (iwdd) + connman_device_set_scanning(iwdd->device, + CONNMAN_SERVICE_TYPE_WIFI, true); + } else { update_signal_strength(iwds); + } - iwdd = g_hash_table_lookup(devices, path); - if (iwdd) - connman_device_set_scanning(iwdd->device, - CONNMAN_SERVICE_TYPE_WIFI, iwds->scanning); DBG("%s scanning %d", path, iwds->scanning); } |