connman_bool_t powered);
int connman_device_set_scanning(struct connman_device *device,
connman_bool_t scanning);
+void connman_device_reset_scanning(struct connman_device *device);
int connman_device_set_disconnected(struct connman_device *device,
connman_bool_t disconnected);
DBG("result %d", result);
- connman_device_set_scanning(device, FALSE);
+ if (result < 0)
+ connman_device_reset_scanning(device);
+ else
+ connman_device_set_scanning(device, FALSE);
}
static int wifi_scan(struct connman_device *device)
{
struct wifi_data *wifi = connman_device_get_data(device);
+ int ret;
DBG("device %p %p", device, wifi->interface);
- return g_supplicant_interface_scan(wifi->interface, scan_callback,
+ ret = g_supplicant_interface_scan(wifi->interface, scan_callback,
device);
+ if (ret == 0)
+ connman_device_set_scanning(device, TRUE);
+
+ return ret;
}
static struct connman_device_driver wifi_ng_driver = {
switch (state) {
case G_SUPPLICANT_STATE_SCANNING:
- connman_device_set_scanning(device, TRUE);
break;
case G_SUPPLICANT_STATE_AUTHENTICATING:
if (wifi == NULL)
return;
-
- if (wifi->device)
- connman_device_set_scanning(wifi->device, TRUE);
}
static void scan_finished(GSupplicantInterface *interface)
return 0;
}
+static void mark_network_available(gpointer key, gpointer value,
+ gpointer user_data)
+{
+ struct connman_network *network = value;
+
+ connman_network_set_available(network, TRUE);
+}
+
static void mark_network_unavailable(gpointer key, gpointer value,
gpointer user_data)
{
return device->scanning;
}
+void connman_device_reset_scanning(struct connman_device *device)
+{
+ device->scanning = FALSE;
+
+ g_hash_table_foreach(device->networks,
+ mark_network_available, NULL);
+
+}
+
/**
* connman_device_set_scanning:
* @device: device structure