Hi Tomasz, I have tested this patch, it works fine.
cheers, daniel On 25.04.2012 12:24, Tomasz Bursztyka wrote:
--- Hi, An updated version. I use a variable already present but unusen until now: "connected". plugins/wifi.c | 32 +++++++++++++++++++++++++++++++- 1 files changed, 31 insertions(+), 1 deletions(-) diff --git a/plugins/wifi.c b/plugins/wifi.c index d10612c..1c0033f 100644 --- a/plugins/wifi.c +++ b/plugins/wifi.c @@ -1180,7 +1180,9 @@ static void interface_state(GSupplicantInterface *interface) case G_SUPPLICANT_STATE_ASSOCIATING: stop_autoscan(device); - connman_network_set_associating(network, TRUE); + if (wifi->connected == FALSE) + connman_network_set_associating(network, TRUE); + break; case G_SUPPLICANT_STATE_COMPLETED: @@ -1251,6 +1253,34 @@ static void interface_state(GSupplicantInterface *interface) wifi->state = state; + /* Saving wpa_s state policy: + * If connected and if the state changes are roaming related: + * --> We stay connected + * If completed: + * --> We are connected + * All other case: + * --> We are not connected + * */ + switch (state) { + case G_SUPPLICANT_STATE_AUTHENTICATING: + case G_SUPPLICANT_STATE_ASSOCIATING: + case G_SUPPLICANT_STATE_ASSOCIATED: + case G_SUPPLICANT_STATE_4WAY_HANDSHAKE: + case G_SUPPLICANT_STATE_GROUP_HANDSHAKE: + if (wifi->connected == TRUE) + connman_warn("Probably roaming right now!" + " Staying connected..."); + else + wifi->connected = FALSE; + break; + case G_SUPPLICANT_STATE_COMPLETED: + wifi->connected = TRUE; + break; + default: + wifi->connected = FALSE; + break; + } + DBG("DONE"); }
_______________________________________________ connman mailing list connman@connman.net http://lists.connman.net/listinfo/connman