summaryrefslogtreecommitdiffstats
path: root/src/imports/wifi/pluginmain.cpp
diff options
context:
space:
mode:
authorGatis Paeglis <gatis.paeglis@digia.com>2014-09-18 17:50:36 +0200
committerGatis Paeglis <gatis.paeglis@digia.com>2014-09-19 12:46:31 +0300
commit6b1c6cb2f84f5824d765da1d7a54ea81eb0389f8 (patch)
treee97aad11b960332215ee854a00c33b52794f0dc1 /src/imports/wifi/pluginmain.cpp
parent2671db076e6b27f4267c488a50aef24285738a61 (diff)
Fix timing issues in wifi library
There is a timing issue on a device startup if the default application calls Wifi.Interface.wifiSupported() before qconnectivity service has finished initialize wifi firmware/driver. This results in wifiSupported() returing false on nexus 2013, even if this device supports wifi. The solution is to move firmware/driver initialization to Qt Wifi library. Change-Id: If5b4650181f8b7237bd19f3fc3afbd2c75f759e8 Task-number: QTEE-770 Reviewed-by: Eirik Aavitsland <eirik.aavitsland@digia.com>
Diffstat (limited to 'src/imports/wifi/pluginmain.cpp')
-rw-r--r--src/imports/wifi/pluginmain.cpp66
1 files changed, 3 insertions, 63 deletions
diff --git a/src/imports/wifi/pluginmain.cpp b/src/imports/wifi/pluginmain.cpp
index 51a2e7c..a779e44 100644
--- a/src/imports/wifi/pluginmain.cpp
+++ b/src/imports/wifi/pluginmain.cpp
@@ -17,74 +17,14 @@
**
****************************************************************************/
#include "qwifimanager.h"
+#include "qwifiinterface.h"
-#include <QtCore/QDir>
-#include <QtCore/QDebug>
-#include <QtCore/QByteArray>
#include <QtQml/QQmlExtensionPlugin>
#include <QtQml/qqml.h>
-#ifdef Q_OS_ANDROID
-#include <hardware_legacy/wifi.h>
-#endif
-/*!
- \qmltype Interface
- \inqmlmodule Qt.labs.wifi
- \ingroup wifi-qmltypes
- \brief The Interface element provides the module API.
-
- This element cannot be directly created. It can only be accessed via a namespace import.
-
- \code
- import Qt.labs.wifi 0.1
- import Qt.labs.wifi 0.1 as Wifi
-
- Component.onCompleted: {
- if (Wifi.Interface.wifiSupported()) {
- var component = Qt.createComponent("WifiMenu.qml")
- } else {
- print("WiFi functionality not available on this device.")
- }
- }
- \endcode
-*/
-
-/*!
- \qmlmethod bool Interface::wifiSupported()
-
- Returns true if the device is WiFi capable (provides a WiFi driver), otherwise returns false.
-*/
-
-
-class QWifiGlobal : public QObject
-{
- Q_OBJECT
-public:
- explicit QWifiGlobal(QObject *parent = 0)
- : QObject(parent) {}
- ~QWifiGlobal() {}
-
- Q_INVOKABLE bool wifiSupported() const
- {
- bool hasInterface = QDir().exists(QStringLiteral("/sys/class/net/wlan0"));
- if (!hasInterface)
- qWarning() << "QWifiGlobal: could not find wifi interface in /sys/class/net/";
-#ifdef Q_OS_ANDROID
- if (hasInterface && wifi_load_driver() == 0 && wifi_start_supplicant(0) == 0) {
- return true;
- } else {
- qWarning() << "QWifiGlobal: wifi driver is not available";
- return false;
- }
-#else
- return hasInterface;
-#endif
- }
-};
-
static QObject *global_object_wifi(QQmlEngine *, QJSEngine *)
{
- return new QWifiGlobal;
+ return new QWifiInterface;
}
class QWifiPlugin : public QQmlExtensionPlugin
@@ -99,7 +39,7 @@ public:
qmlRegisterType<QWifiManager>(uri, 0, 1, "WifiManager");
qmlRegisterType<QWifiNetworkListModel>();
- qmlRegisterSingletonType<QWifiGlobal>(uri, 0, 1, "Interface", global_object_wifi);
+ qmlRegisterSingletonType<QWifiInterface>(uri, 0, 1, "Interface", global_object_wifi);
}
};