#if defined TIZEN_EXT
void (*system_power_off) (void);
void (*assoc_failed) (void *user_data);
+ void (*scan_done) (GSupplicantInterface *interface);
#endif
void (*sta_authorized) (GSupplicantInterface *interface,
const char *addr);
callbacks_pointer->assoc_failed(user_data);
}
+
+static void callback_scan_done(GSupplicantInterface *interface)
+{
+ if (!callbacks_pointer)
+ return;
+
+ if (!callbacks_pointer->scan_done)
+ return;
+
+ callbacks_pointer->scan_done(interface);
+}
#endif
static void callback_network_changed(GSupplicantNetwork *network,
/*Fixed : stucking in scanning state when scan failed*/
#if defined TIZEN_EXT
- GSupplicantInterfaceCallback scan_callback;
+ GSupplicantInterfaceCallback scan_callback;
+ SUPPLICANT_DBG("");
#endif
if (iter)
interface);
#if defined TIZEN_EXT
- scan_callback = interface->scan_callback;
+ scan_callback = interface->scan_callback;
+ callback_scan_done(interface);
#endif
if (interface->scan_callback)
interface->scan_callback(0, interface, interface->scan_data);
#if defined TIZEN_EXT
- if (interface->scan_callback == scan_callback) {
+ if (interface->scan_callback == scan_callback) {
#endif
interface->scan_callback = NULL;
interface->scan_data = NULL;
CONNMAN_MULTI_SCAN_SSID_FREQ,
} connman_multi_scan_type_e;
+typedef enum {
+ CONNMAN_SCAN_TYPE_FULL_CHANNEL = 0x00,
+ CONNMAN_SCAN_TYPE_SPECIFIC_AP,
+ CONNMAN_SCAN_TYPE_MULTI_AP,
+ CONNMAN_SCAN_TYPE_WPA_SUPPLICANT,
+} connman_scan_type_e;
+
typedef struct {
char str[128];
gboolean flag;
bool is_5_0_Ghz_supported);
void connman_techonology_set_max_scan_ssids(struct connman_technology *technology,
int max_scan_ssids);
+void __connman_technology_notify_scan_done(int val);
#endif
#ifdef __cplusplus
struct connman_network *network = user_data;
connman_network_set_associating(network, false);
}
+
+static void scan_done(GSupplicantInterface *interface)
+{
+ GList *list;
+ int scan_type = CONNMAN_SCAN_TYPE_WPA_SUPPLICANT;
+ struct wifi_data *wifi;
+ bool scanning;
+
+ for (list = iface_list; list; list = list->next) {
+ wifi = list->data;
+
+ if (interface == wifi->interface) {
+ scanning = connman_device_get_scanning(wifi->device,
+ CONNMAN_SERVICE_TYPE_WIFI);
+ if (!scanning)
+ __connman_technology_notify_scan_done(scan_type);
+ break;
+ }
+ }
+}
#endif
static void debug(const char *str)
.peer_request = peer_request,
#if defined TIZEN_EXT
.system_power_off = system_power_off,
- .network_merged = network_merged,
+ .network_merged = network_merged,
.assoc_failed = assoc_failed,
+ .scan_done = scan_done,
#endif
.debug = debug,
.disconnect_reasoncode = disconnect_reasoncode,
static bool global_offlinemode;
#if defined TIZEN_EXT
-typedef enum {
- CONNMAN_SCAN_TYPE_FULL_CHANNEL = 0x00,
- CONNMAN_SCAN_TYPE_SPECIFIC_AP,
- CONNMAN_SCAN_TYPE_MULTI_AP,
-} connman_scan_type_e;
-
static connman_scan_type_e g_scan_type = -1;
#endif
return result;
}
+
+void __connman_technology_notify_scan_done(int val)
+{
+ DBG("");
+ DBusMessage *signal;
+ DBusMessageIter iter;
+
+ signal = dbus_message_new_signal(CONNMAN_MANAGER_PATH,
+ CONNMAN_MANAGER_INTERFACE, "ScanDone");
+ if (!signal)
+ return;
+
+ dbus_message_iter_init_append(signal, &iter);
+ connman_dbus_property_append_basic(&iter, "Scantype",
+ DBUS_TYPE_INT32, &val);
+
+ dbus_connection_send(connection, signal, NULL);
+ dbus_message_unref(signal);
+
+ DBG("Successfuly sent signal");
+}
#endif
void __connman_technology_scan_started(struct connman_device *device)
#if defined TIZEN_EXT
if (count == 0) {
- DBusMessage *signal;
- DBusMessageIter iter;
dbus_bool_t status = 0;
- __connman_technology_notify_scan_changed("scan_done", &status);
-
- signal = dbus_message_new_signal(CONNMAN_MANAGER_PATH,
- CONNMAN_MANAGER_INTERFACE, "ScanDone");
- if (!signal)
- return;
- dbus_message_iter_init_append(signal, &iter);
- connman_dbus_property_append_basic(&iter, "Scantype",
- DBUS_TYPE_INT32, &g_scan_type);
-
- dbus_connection_send(connection, signal, NULL);
- dbus_message_unref(signal);
+ __connman_technology_notify_scan_changed("scan_done", &status);
+ __connman_technology_notify_scan_done((int)g_scan_type);
reply_scan_pending(technology, 0);
DBG("Successfuly sent ScanDone signal");