diff options
author | Gatis Paeglis <gatis.paeglis@digia.com> | 2014-05-08 17:36:52 +0200 |
---|---|---|
committer | Gatis Paeglis <gatis.paeglis@digia.com> | 2014-06-13 09:39:35 +0300 |
commit | e30a8e704c129315225368de6cf41bd31df62d64 (patch) | |
tree | c2f1e69abb9c642499585470d2cbcf290992b71d /src/imports/wifi/qwifimanager.cpp | |
parent | 84cb69dd5af6d2e44cce7bbef2536706d781f799 (diff) |
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 <eirik.aavitsland@digia.com>
Diffstat (limited to 'src/imports/wifi/qwifimanager.cpp')
-rw-r--r-- | src/imports/wifi/qwifimanager.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
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)) |