struct _priv {
wifi_manager_h wifi;
+ wifi_manager_ap_h prev_ap;
Eina_List *list;
void (*event_cb)(enum event_type type, void *data);
void *cb_data;
static void _wifi_manager_connected_cb(wifi_manager_error_e err, void *data)
{
struct _priv *priv;
+ int rv;
if (!data) {
_ERR("Invalid argument.");
return;
} else {
+ rv = wifi_manager_forget_ap(priv->wifi, priv->prev_ap);
+ if (rv != WIFI_MANAGER_ERROR_NONE)
+ _ERR("Fail to forget previous AP");
+ else
+ wifi_manager_ap_destroy(priv->prev_ap);
if (priv->event_cb)
priv->event_cb(EVENT_DATA_CONNECTED, priv->cb_data);
}
}
-static void _wifi_prev_ap_disconnected(wifi_manager_error_e err, void *data)
-{
- struct _priv *priv;
-
- if (!data) {
- _ERR("Invalid argument.");
- return;
- }
-
- priv = data;
-
- _wifi_manager_connect_new_ap(priv);
-}
-
static bool _select(void *dclass_data, Elm_Object_Item *it, void *data)
{
struct _priv *priv;
return false;
}
- r = wifi_manager_disconnect(priv->wifi, prev_ap, _wifi_prev_ap_disconnected, priv);
- if (r != WIFI_MANAGER_ERROR_NONE) {
- _ERR("Forget ap failed.");
- wifi_manager_ap_destroy(prev_ap);
- return false;
- }
-
- wifi_manager_ap_destroy(prev_ap);
+ priv->prev_ap = prev_ap;
+ _wifi_manager_connect_new_ap(priv);
return true;
}