From e30a8e704c129315225368de6cf41bd31df62d64 Mon Sep 17 00:00:00 2001 From: Gatis Paeglis Date: Thu, 8 May 2014 17:36:52 +0200 Subject: Fix Wifi issues on Android 4.4.2 - Reload Wi-Fi firmware on a device startup (initializes wlan0 interface). - Android version 4.4 (and above) requires IFNAME=wlan0 prefix to the wpa_supplicant calls, without this all calls to the wpa_supplicant fail. - Fix "broken pipe" issue - a message in the logcat when trying to access a broken network. This seems to be a generic message whenever something is wrong with a network configuration (broken routing table, firewall issues, DNS issues etc.). Android uses Connectivity and NetworkManagement JAVA services to handle network configuration - we can use qconnectivity daemon for this. Task-number: QTEE-562 Change-Id: Ib5a93c677439a0e9bf92ede532667542d2bc4bed Reviewed-by: Eirik Aavitsland --- src/imports/wifi/qwifimanager.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'src/imports/wifi/qwifimanager.cpp') diff --git a/src/imports/wifi/qwifimanager.cpp b/src/imports/wifi/qwifimanager.cpp index 65073f1..dd395c0 100644 --- a/src/imports/wifi/qwifimanager.cpp +++ b/src/imports/wifi/qwifimanager.cpp @@ -618,8 +618,13 @@ QByteArray QWifiManager::call(const char *command) const { char data[2048]; size_t len = sizeof(data) - 1; // -1: room to add a 0-terminator - if (q_wifi_command(m_interface.constData(), command, data, &len) < 0) { - qWarning("QWifiManager: call failed: %s", command); + QByteArray cmd; +#if !(Q_ANDROID_VERSION_MAJOR == 4 && Q_ANDROID_VERSION_MINOR < 4) + cmd.append("IFNAME=").append(m_interface).append(" "); +#endif + cmd.append(command); + if (q_wifi_command(m_interface.constData(), cmd.constData(), data, &len) < 0) { + qWarning("QWifiManager: call failed: %s", cmd.constData()); return QByteArray(); } if (len < sizeof(data)) -- cgit v1.2.3 From 7fd7d05ca382fd4dc1d609c8fe4544bb88764cff Mon Sep 17 00:00:00 2001 From: Gatis Paeglis Date: Mon, 30 Jun 2014 12:18:08 +0200 Subject: Fix #ifdef for Android detection It was wrongly adding "IFNAME=" to wpa_supplicant calls on eLinux, "IFNAME=" is required only for eAndroid. Change-Id: Ic16d321765071df66fbffc1c3d6ce78180eb3b1c Reviewed-by: Eirik Aavitsland --- src/imports/wifi/qwifimanager.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src/imports/wifi/qwifimanager.cpp') diff --git a/src/imports/wifi/qwifimanager.cpp b/src/imports/wifi/qwifimanager.cpp index dd395c0..8eec3e0 100644 --- a/src/imports/wifi/qwifimanager.cpp +++ b/src/imports/wifi/qwifimanager.cpp @@ -619,8 +619,10 @@ QByteArray QWifiManager::call(const char *command) const char data[2048]; size_t len = sizeof(data) - 1; // -1: room to add a 0-terminator QByteArray cmd; +#ifdef Q_OS_ANDROID #if !(Q_ANDROID_VERSION_MAJOR == 4 && Q_ANDROID_VERSION_MINOR < 4) cmd.append("IFNAME=").append(m_interface).append(" "); +#endif #endif cmd.append(command); if (q_wifi_command(m_interface.constData(), cmd.constData(), data, &len) < 0) { @@ -630,7 +632,7 @@ QByteArray QWifiManager::call(const char *command) const if (len < sizeof(data)) data[len] = 0; QByteArray result = QByteArray::fromRawData(data, len); - if (QT_WIFI_DEBUG) qDebug("QWifiManager::call: %s ==>\n%s", command, result.constData()); + if (QT_WIFI_DEBUG) qDebug("QWifiManager::call: %s ==>\n%s", cmd.constData(), result.constData()); return result; } -- cgit v1.2.3