summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/wifi/qwifidevice.cpp35
-rw-r--r--src/wifi/qwifidevice.h7
-rw-r--r--src/wifi/qwifielinux.cpp5
-rw-r--r--src/wifi/qwifimanager.cpp2
-rw-r--r--src/wifi/qwifimanager_p.h2
5 files changed, 50 insertions, 1 deletions
diff --git a/src/wifi/qwifidevice.cpp b/src/wifi/qwifidevice.cpp
index 0e421b7..0b52780 100644
--- a/src/wifi/qwifidevice.cpp
+++ b/src/wifi/qwifidevice.cpp
@@ -27,6 +27,39 @@
QT_BEGIN_NAMESPACE
+class QWifiDevicePrivate
+{
+ Q_DECLARE_PUBLIC(QWifiDevice)
+public:
+ QWifiDevicePrivate(QWifiDevice *device);
+
+ // methods
+ void createSupplicantConfig();
+ // member variables
+ QWifiDevice *const q_ptr;
+};
+
+QWifiDevicePrivate::QWifiDevicePrivate(QWifiDevice *device)
+ : q_ptr(device)
+{
+}
+
+void QWifiDevicePrivate::createSupplicantConfig()
+{
+ QFile supplicantConfig(QStringLiteral("/etc/wpa_supplicant.qtwifi.conf"));
+ if (supplicantConfig.exists())
+ return;
+
+ if (supplicantConfig.open(QIODevice::WriteOnly)) {
+ supplicantConfig.write("ctrl_interface=/var/run/wpa_supplicant\n"
+ "ctrl_interface_group=0\n"
+ "update_config=1\n");
+ } else {
+ qCWarning(B2QT_WIFI) << "failed to create supplicant configuration file.";
+ }
+}
+
+
/*!
\class QWifiDevice
\inmodule B2Qt.Wifi.Cpp
@@ -49,7 +82,9 @@ QT_BEGIN_NAMESPACE
*/
QWifiDevice::QWifiDevice()
+ : d_ptr(new QWifiDevicePrivate(this))
{
+ d_ptr->createSupplicantConfig();
}
QWifiDevice::~QWifiDevice()
diff --git a/src/wifi/qwifidevice.h b/src/wifi/qwifidevice.h
index 80b4891..02724b4 100644
--- a/src/wifi/qwifidevice.h
+++ b/src/wifi/qwifidevice.h
@@ -23,6 +23,8 @@
#include <QtCore/QByteArray>
#include <QtCore/QLoggingCategory>
+class QWifiDevicePrivate;
+
QT_BEGIN_NAMESPACE
Q_DECLARE_LOGGING_CATEGORY(B2QT_WIFI)
@@ -37,6 +39,11 @@ public:
Q_INVOKABLE static bool wifiSupported();
static QByteArray wifiInterfaceName();
static void setWifiInterfaceName(const QByteArray &name);
+
+private:
+ Q_DISABLE_COPY(QWifiDevice)
+ Q_DECLARE_PRIVATE(QWifiDevice)
+ QWifiDevicePrivate *const d_ptr;
};
QT_END_NAMESPACE
diff --git a/src/wifi/qwifielinux.cpp b/src/wifi/qwifielinux.cpp
index 7456173..5d1fb3e 100644
--- a/src/wifi/qwifielinux.cpp
+++ b/src/wifi/qwifielinux.cpp
@@ -30,7 +30,10 @@
QT_BEGIN_NAMESPACE
-const char SUPP_CONFIG_FILE[] = "/etc/wpa_supplicant.conf";
+// TODO: When cleaning up the library from Android code move this into a proper class
+// (QWifiDevice?) since we won't depend on C style API from Android anymore.
+
+const char SUPP_CONFIG_FILE[] = "/etc/wpa_supplicant.qtwifi.conf";
const char IFACE_DIR[] = "/var/run/wpa_supplicant/";
const char WPA_EVENT_IGNORE[] = "CTRL-EVENT-IGNORE ";
diff --git a/src/wifi/qwifimanager.cpp b/src/wifi/qwifimanager.cpp
index 2a5cfff..739b399 100644
--- a/src/wifi/qwifimanager.cpp
+++ b/src/wifi/qwifimanager.cpp
@@ -37,6 +37,7 @@ const char *bsText[] = { "Initializing", "Running", "Terminating", "NotRunning"
QWifiManagerPrivate::QWifiManagerPrivate(QWifiManager *manager)
: q_ptr(manager)
, m_networkListModel(new QWifiNetworkListModel())
+ , m_device(new QWifiDevice())
, m_scanTimer(0)
, m_scanning(false)
, m_interface(QWifiDevice::wifiInterfaceName())
@@ -50,6 +51,7 @@ QWifiManagerPrivate::~QWifiManagerPrivate()
{
delete m_wifiController;
delete m_networkListModel;
+ delete m_device;
}
void QWifiManagerPrivate::setCurrentSSID(const QString &ssid)
diff --git a/src/wifi/qwifimanager_p.h b/src/wifi/qwifimanager_p.h
index 6142c83..1046880 100644
--- a/src/wifi/qwifimanager_p.h
+++ b/src/wifi/qwifimanager_p.h
@@ -20,6 +20,7 @@
#define QWIFIMANAGER_P_H
#include "qwifimanager.h"
+#include "qwifidevice.h"
#include <QtCore/QString>
@@ -52,6 +53,7 @@ public:
QWifiManager *const q_ptr;
QWifiController *m_wifiController;
QWifiNetworkListModel *m_networkListModel;
+ QWifiDevice *m_device;
int m_scanTimer;
bool m_scanning;