Windows 7 - fix nativewifi bearer plugin
authorShane Kearns <ext-shane.2.kearns@nokia.com>
Fri, 4 May 2012 08:13:40 +0000 (09:13 +0100)
committerQt by Nokia <qt-info@nokia.com>
Fri, 4 May 2012 10:07:07 +0000 (12:07 +0200)
The plugin code only handled the 2 events from windows XP, while
there are more events defined on vista/7. As the scan complete event
was being ignored, updates did not complete.

Task-number: QTBUG-24503
Change-Id: Ib1fd6883b0fd6962f61dab7830e577b9292163ef
Reviewed-by: Martin Petersson <Martin.Petersson@nokia.com>
src/plugins/bearer/nativewifi/platformdefs.h
src/plugins/bearer/nativewifi/qnativewifiengine.cpp

index 7614bdb..bd6385d 100644 (file)
 #include <wtypes.h>
 #undef interface
 
+//proper header is wlanapi.h, but that is not included in windows XP
+
 #define WLAN_MAX_NAME_LENGTH 256
 #define WLAN_MAX_PHY_TYPE_NUMBER 8
+#define WLAN_NOTIFICATION_SOURCE_ACM 0x00000008
 #define WLAN_NOTIFICATION_SOURCE_ALL 0x0000ffff
 #define WLAN_AVAILABLE_NETWORK_CONNECTED 1
 #define WLAN_AVAILABLE_NETWORK_HAS_PROFILE 2
index 90230bb..f9cd6eb 100644 (file)
@@ -69,13 +69,24 @@ void qNotificationCallback(WLAN_NOTIFICATION_DATA *data, QNativeWifiEngine *d)
 {
     Q_UNUSED(d);
 
-    switch (data->NotificationCode) {
-    case wlan_notification_acm_connection_complete:
-    case wlan_notification_acm_disconnected:
-        QMetaObject::invokeMethod(d, "scanComplete", Qt::QueuedConnection);
-        break;
-    default:
-        ;
+    if (data->NotificationSource == WLAN_NOTIFICATION_SOURCE_ACM) {
+        switch (data->NotificationCode) {
+        case wlan_notification_acm_connection_complete:
+        case wlan_notification_acm_disconnected:
+        case wlan_notification_acm_scan_complete:
+        case wlan_notification_acm_scan_fail:
+            QMetaObject::invokeMethod(d, "scanComplete", Qt::QueuedConnection);
+            break;
+        default:
+#ifdef BEARER_MANAGEMENT_DEBUG
+            qDebug() << "wlan acm notification" << (int)data->NotificationCode;
+#endif
+            break;
+        }
+    } else {
+#ifdef BEARER_MANAGEMENT_DEBUG
+            qDebug() << "wlan notification source" << (int)data->NotificationSource << "code" << (int)data->NotificationCode;
+#endif
     }
 }