From: Samuel Ortiz Date: Tue, 29 Nov 2011 14:00:52 +0000 (+0100) Subject: wifi: Set device powered from the interface create callback X-Git-Tag: 0.78~6 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fupstream%2Fconnman.git;a=commitdiff_plain;h=ec4029b54511a11900807b97f243dcb5c72685ec wifi: Set device powered from the interface create callback As interface_added can potentially show up before the interface creation callback, the device powered flag can be set from the latter. --- diff --git a/gsupplicant/gsupplicant.h b/gsupplicant/gsupplicant.h index c710679..8e96e02 100644 --- a/gsupplicant/gsupplicant.h +++ b/gsupplicant/gsupplicant.h @@ -197,6 +197,7 @@ const void *g_supplicant_interface_get_wps_ssid(GSupplicantInterface *interface, unsigned int *ssid_len); GSupplicantWpsState g_supplicant_interface_get_wps_state(GSupplicantInterface *interface); unsigned int g_supplicant_interface_get_mode(GSupplicantInterface *interface); +dbus_bool_t g_supplicant_interface_get_ready(GSupplicantInterface *interface); unsigned int g_supplicant_interface_get_max_scan_ssids( GSupplicantInterface *interface); diff --git a/gsupplicant/supplicant.c b/gsupplicant/supplicant.c index 1c360fb..b8e939d 100644 --- a/gsupplicant/supplicant.c +++ b/gsupplicant/supplicant.c @@ -766,6 +766,14 @@ int g_supplicant_interface_enable_selected_network(GSupplicantInterface *interfa set_network_enabled, NULL, &enable); } +dbus_bool_t g_supplicant_interface_get_ready(GSupplicantInterface *interface) +{ + if (interface == NULL) + return FALSE; + + return interface->ready; +} + GSupplicantInterface *g_supplicant_network_get_interface( GSupplicantNetwork *network) { diff --git a/plugins/wifi.c b/plugins/wifi.c index 2070bb9..745c2cb 100644 --- a/plugins/wifi.c +++ b/plugins/wifi.c @@ -213,6 +213,18 @@ static void interface_create_callback(int result, wifi->interface = interface; g_supplicant_interface_set_data(interface, wifi); + + if (g_supplicant_interface_get_ready(interface) == FALSE) + return; + + DBG("interface is ready wifi %p tethering %d", wifi, wifi->tethering); + + if (wifi->device == NULL) { + connman_error("WiFi device not set"); + return; + } + + connman_device_set_powered(wifi->device, TRUE); } static void interface_remove_callback(int result,