int servicing;
#if defined TIZEN_EXT
int assoc_retry_count;
- struct connman_network *interface_disconnected_network;
struct connman_network *scan_pending_network;
+ bool allow_full_scan;
#endif
};
#if defined TIZEN_EXT
#include "connman.h"
-#define TIZEN_ASSOC_RETRY_COUNT 3
+#define TIZEN_ASSOC_RETRY_COUNT 4
static gboolean wifi_first_scan = false;
static gboolean found_with_first_scan = false;
static gboolean is_wifi_notifier_registered = false;
#endif
+
static GList *iface_list = NULL;
static GList *pending_wifi_device = NULL;
connman_device_unref(device);
#if defined TIZEN_EXT
- if (wifi && wifi->scan_pending_network) {
+ if (wifi && wifi->allow_full_scan) {
+ DBG("Trigger Full Channel Scan");
+ throw_wifi_scan(device, scan_callback);
+ wifi->allow_full_scan = FALSE;
+ }
+ if (wifi && wifi->scan_pending_network && result != -EIO) {
network_connect(wifi->scan_pending_network);
wifi->scan_pending_network = NULL;
+ connman_network_set_connecting(wifi->network);
}
if (is_wifi_notifier_registered != true &&
#if defined TIZEN_EXT
wifi->scan_pending_network = NULL;
- wifi->interface_disconnected_network = NULL;
if (is_wifi_notifier_registered == true) {
connman_notifier_unregister(¬ifier);
connman_device_ref(device);
+#if defined TIZEN_EXT
+ /*To allow the Full Scan after ssid based scan, set the flag here
+ It is required because Tizen does not use the ConnMan specific
+ backgroung Scan feature.Tizen has added the BG Scan feature in net-config
+ To sync with up ConnMan, we need to issue the Full Scan after SSID specific scan.*/
+ wifi->allow_full_scan = TRUE;
+#endif
reset_autoscan(device);
-#if defined TIZEN_EXT
- if (wifi->hidden) {
- ret = g_supplicant_interface_scan(wifi->interface, scan_params,
- scan_callback, device);
- }
- else {
- ret = g_supplicant_interface_scan(wifi->interface, NULL,
- scan_callback_hidden, device);
- }
-#else
ret = g_supplicant_interface_scan(wifi->interface, scan_params,
scan_callback, device);
-#endif
+
if (ret == 0) {
connman_device_set_scanning(device,
CONNMAN_SERVICE_TYPE_WIFI, true);
if (wifi->scan_pending_network == network)
wifi->scan_pending_network = NULL;
-
- if (wifi->interface_disconnected_network == network)
- wifi->interface_disconnected_network = NULL;
#endif
}
return;
found:
- wifi->interface_disconnected_network = NULL;
#endif
if (result == -ENOKEY) {
connman_network_set_error(network,
ssid_init(ssid, network);
-#if defined TIZEN_EXT
- if (wifi->interface_disconnected_network == network) {
- g_free(ssid);
- throw_wifi_scan(device, scan_callback);
-
- if (wifi->disconnecting != TRUE) {
- wifi->scan_pending_network = network;
- wifi->interface_disconnected_network = NULL;
- }
-
- return -EINPROGRESS;
- }
-#endif
-
if (wifi->disconnecting) {
wifi->pending_network = network;
g_free(ssid);
wifi->network = connman_network_ref(network);
wifi->retries = 0;
#if defined TIZEN_EXT
- wifi->interface_disconnected_network = NULL;
wifi->scan_pending_network = NULL;
#endif
if (wifi->scan_pending_network == network)
wifi->scan_pending_network = NULL;
- if (wifi->interface_disconnected_network == network)
- wifi->interface_disconnected_network = NULL;
#endif
connman_network_set_associating(network, false);
wifi->retries = 0;
connman_network_set_error(network, CONNMAN_NETWORK_ERROR_INVALID_KEY);
-#if defined TIZEN_EXT
- /* not retry autoconnect in case of invalid-key error */
- __connman_service_set_autoconnect(service, false);
-#endif
-
return false;
}
* however QA team recommends that the invalid-key error
* might be better to display for user experience.
*/
- connman_network_set_error(network, CONNMAN_NETWORK_ERROR_INVALID_KEY);
+ connman_network_set_error(network, CONNMAN_NETWORK_ERROR_ASSOCIATE_FAIL);
return false;
}
reset_autoscan(device);
wifi->assoc_retry_count = 0;
+
+ wifi->scan_pending_network = NULL;
#else
/* though it should be already stopped: */
stop_autoscan(device);
if (err < 0)
wifi->disconnecting = false;
- if (wifi->connected)
- wifi->interface_disconnected_network = wifi->network;
- else
- wifi->interface_disconnected_network = NULL;
-
connman_network_set_connected(network, false);
connman_network_set_associating(network, false);
{
#if defined TIZEN_EXT
struct wifi_data *wifi;
+ bool is_associating = false;
+ static bool is_scanning = true;
#endif
DBG("");
network_connect(wifi->scan_pending_network);
wifi->scan_pending_network = NULL;
}
+
+ //service state - associating
+ if(!wifi || !wifi->network)
+ return;
+
+ is_associating = connman_network_get_associating(wifi->network);
+ if(is_associating && is_scanning){
+ is_scanning = false;
+ DBG("send scan for connecting");
+ throw_wifi_scan(wifi->device, scan_callback);
+
+ return;
+ }
+ is_scanning = true;
+
+ //go scan
+
#endif
}
g_supplicant_network_get_maxrate(supplicant_network));
connman_network_set_enc_mode(network,
g_supplicant_network_get_enc_mode(supplicant_network));
- connman_network_set_rsn_selected(network,
- g_supplicant_network_get_rsn_selected(supplicant_network));
+ connman_network_set_rsn_mode(network,
+ g_supplicant_network_get_rsn_mode(supplicant_network));
connman_network_set_keymgmt(network,
g_supplicant_network_get_keymgmt(supplicant_network));
#endif
#endif
if (wifi->hidden && ssid) {
+#if defined TIZEN_EXT
+ if (network_security(wifi->hidden->security) ==
+ network_security(security) &&
+#else
if (!g_strcmp0(wifi->hidden->security, security) &&
+#endif
wifi->hidden->ssid_len == ssid_len &&
!memcmp(wifi->hidden->ssid, ssid, ssid_len)) {
connman_network_connect_hidden(network,
if (connman_network == wifi->scan_pending_network)
wifi->scan_pending_network = NULL;
- if (connman_network == wifi->interface_disconnected_network)
- wifi->interface_disconnected_network = NULL;
-
if (connman_network == wifi->pending_network)
wifi->pending_network = NULL;