summaryrefslogtreecommitdiffstats
path: root/src/imports/wifi/qwifinetworklistmodel.cpp
diff options
context:
space:
mode:
authorGatis Paeglis <gatis.paeglis@digia.com>2014-03-28 13:32:05 +0100
committerSamuli Piippo <samuli.piippo@digia.com>2014-05-15 17:00:15 +0300
commit31f6f73a691ff49fc3aeba062f8561e6c981baff (patch)
treea7407e443e4c95840a89c3a3d6ba0b2bbfe9a1cb /src/imports/wifi/qwifinetworklistmodel.cpp
parent3022f83d1f7726bddbec3ca469baa3a6ecdde8ae (diff)
Port QtWifi to eLinux
Current limitations: - Wifi adapter must be connected before staring the device (and ethernet cable should not be connected at the same time). "allow-hotplug wlan0" in /etc/network/interfaces doesn't seem to help for detecting wifi adapter on-the-fly. Change-Id: I8be407e9e042fc86136efd3e220680fb2ce64bd6 Reviewed-by: Eirik Aavitsland <eirik.aavitsland@digia.com>
Diffstat (limited to 'src/imports/wifi/qwifinetworklistmodel.cpp')
-rw-r--r--src/imports/wifi/qwifinetworklistmodel.cpp13
1 files changed, 7 insertions, 6 deletions
diff --git a/src/imports/wifi/qwifinetworklistmodel.cpp b/src/imports/wifi/qwifinetworklistmodel.cpp
index 4fbf25f..f95af36 100644
--- a/src/imports/wifi/qwifinetworklistmodel.cpp
+++ b/src/imports/wifi/qwifinetworklistmodel.cpp
@@ -88,14 +88,15 @@ void QWifiNetworkListModel::parseScanResults(const QByteArray &results)
QWifiNetwork *knownNetwork = networkForSSID(info.at(4), &pos);
if (!knownNetwork)
knownNetwork = outOfRangeListContains(info.at(4));
-
+ // signal strength is in dBm. Deprecated, but still widely used "wext"
+ // wifi driver reports positive values for signal strength, we workaround that.
+ int signalStrength = qAbs(info.at(2).trimmed().toInt()) * -1;
if (!knownNetwork) {
QWifiNetwork *network = new QWifiNetwork();
network->setOutOfRange(false);
network->setBssid(info.at(0));
network->setFlags(info.at(3));
- // signal strength is in dBm
- network->setSignalStrength(info.at(2).toInt());
+ network->setSignalStrength(signalStrength);
network->setSsid(info.at(4));
beginInsertRows(QModelIndex(), m_networks.size(), m_networks.size());
m_networks << network;
@@ -112,15 +113,15 @@ void QWifiNetworkListModel::parseScanResults(const QByteArray &results)
// ssids are the same, compare bssids..
if (knownNetwork->bssid() == info.at(0)) {
// same access point, simply update the signal strength
- knownNetwork->setSignalStrength(info.at(2).toInt());
+ knownNetwork->setSignalStrength(signalStrength);
knownNetwork->setOutOfRange(false);
dataChanged(createIndex(pos, 0), createIndex(pos, 0));
- } else if (knownNetwork->signalStrength() < info.at(2).toInt()) {
+ } else if (knownNetwork->signalStrength() < signalStrength) {
// replace with a stronger access point within the same network
m_networks.at(pos)->setOutOfRange(false);
m_networks.at(pos)->setBssid(info.at(0));
m_networks.at(pos)->setFlags(info.at(3));
- m_networks.at(pos)->setSignalStrength(info.at(2).toInt());
+ m_networks.at(pos)->setSignalStrength(signalStrength);
m_networks.at(pos)->setSsid(info.at(4));
dataChanged(createIndex(pos, 0), createIndex(pos, 0));
}