summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTimothy Pearson <kb9vqf@pearsoncomputing.net>2012-09-08 23:54:40 -0500
committerTimothy Pearson <kb9vqf@pearsoncomputing.net>2012-09-08 23:54:40 -0500
commit69038478ebe36615fb749e82ee625a131416fe0c (patch)
tree771676aa807201198145dc37e5e698f7ab21fffd
parent083f3b3b0416cce1342e3710e0732a30d8fbe769 (diff)
downloadtdenetworkmanager-69038478.tar.gz
tdenetworkmanager-69038478.zip
Use BSSID instead of storing APInfo pointers internally
-rw-r--r--tdenetworkmanager/src/configwidgets/tdenetman-connection_setting_wireless_security_widget.cpp2
-rw-r--r--tdenetworkmanager/src/tdenetman-wireless_manager.cpp6
-rw-r--r--tdenetworkmanager/src/tdenetman-wireless_network.cpp154
-rw-r--r--tdenetworkmanager/src/tdenetman-wireless_network.h4
4 files changed, 141 insertions, 25 deletions
diff --git a/tdenetworkmanager/src/configwidgets/tdenetman-connection_setting_wireless_security_widget.cpp b/tdenetworkmanager/src/configwidgets/tdenetman-connection_setting_wireless_security_widget.cpp
index bd4b593..654d1f8 100644
--- a/tdenetworkmanager/src/configwidgets/tdenetman-connection_setting_wireless_security_widget.cpp
+++ b/tdenetworkmanager/src/configwidgets/tdenetman-connection_setting_wireless_security_widget.cpp
@@ -121,7 +121,7 @@ WirelessSecurityWEPImpl::WirelessSecurityWEPImpl(TDEWiFiConnection* sec, TQWidge
void WirelessSecurityWEPImpl::slotAuthAlgChanged(int index)
{
if (index == 0) {
- _security_setting->securitySettings.authType =TDENetworkWiFiAuthType::Open;
+ _security_setting->securitySettings.authType = TDENetworkWiFiAuthType::Open;
}
else if (index == 1) {
_security_setting->securitySettings.authType = TDENetworkWiFiAuthType::Shared;
diff --git a/tdenetworkmanager/src/tdenetman-wireless_manager.cpp b/tdenetworkmanager/src/tdenetman-wireless_manager.cpp
index 6a9b28c..747fc04 100644
--- a/tdenetworkmanager/src/tdenetman-wireless_manager.cpp
+++ b/tdenetworkmanager/src/tdenetman-wireless_manager.cpp
@@ -49,12 +49,12 @@ TQValueList<WirelessNetwork> WirelessManager::getWirelessNetworks(TDENetworkDevi
// check if we have a network matching this AP
for (TQValueList<WirelessNetwork>::Iterator netIt = nets.begin(); netIt != nets.end(); ++netIt) {
- if ((*netIt).contains(ap) ) {
+ if ((*netIt).contains(ap->BSSID) ) {
// we alread have a network where this AP belongs to
found = true;
// attach this ap to the network
- (*netIt).addAP(ap);
+ (*netIt).addAP(ap->BSSID, (dev)?dev->uniqueID():TQString::null);
/* // FIXME active?
if (active_ap)
@@ -70,7 +70,7 @@ TQValueList<WirelessNetwork> WirelessManager::getWirelessNetworks(TDENetworkDevi
if (!found) {
// create a new network-descriptor according to this ap
WirelessNetwork net(match);
- net.addAP(ap);
+ net.addAP(ap->BSSID, (dev)?dev->uniqueID():TQString::null);
nets.append(net);
}
}
diff --git a/tdenetworkmanager/src/tdenetman-wireless_network.cpp b/tdenetworkmanager/src/tdenetman-wireless_network.cpp
index d3105df..5e6770b 100644
--- a/tdenetworkmanager/src/tdenetman-wireless_network.cpp
+++ b/tdenetworkmanager/src/tdenetman-wireless_network.cpp
@@ -48,7 +48,7 @@ class WirelessNetworkPrivate
bool active;
TQ_UINT32 match;
- TQValueList<const TDENetworkWiFiAPInfo*> aps;
+ TQMap<TDEMACAddress,TQString> aps;
};
WirelessNetwork::WirelessNetwork(const WirelessNetwork& other)
@@ -71,15 +71,35 @@ WirelessNetwork::~WirelessNetwork()
WirelessNetwork& WirelessNetwork::operator= (const WirelessNetwork& other)
{
- if (d)
+ if (d) {
delete d;
+ }
d = new WirelessNetworkPrivate(*other.d);
return *this;
}
-bool WirelessNetwork::contains (const TDENetworkWiFiAPInfo * const ap)
+bool WirelessNetwork::contains(const TDEMACAddress ap)
{
- if ( (d->match & MATCH_SSID) && getSsid() != ap->SSID) {
+ TDEHardwareDevices* hwdevices = KGlobal::hardwareDevices();
+ TDEGlobalNetworkManager* nm = KGlobal::networkManager();
+
+ TDENetworkDevice* dev = dynamic_cast<TDENetworkDevice*>(hwdevices->findByUniqueID(d->aps[ap]));
+ TDENetworkWiFiAPInfo* apInfo = NULL;
+ if (dev) {
+ TDENetworkConnectionManager* deviceConnMan = dev->connectionManager();
+ apInfo = deviceConnMan->findAccessPointByBSSID(ap);
+ }
+ else if (d->aps[ap] == "") {
+ apInfo = nm->findAccessPointByBSSID(ap);
+ }
+
+ if (apInfo) {
+ if ( (d->match & MATCH_SSID) && (getSsid() != apInfo->SSID)) {
+ return false;
+ }
+ }
+ else {
+ // AP was not found in list
return false;
}
@@ -87,10 +107,10 @@ bool WirelessNetwork::contains (const TDENetworkWiFiAPInfo * const ap)
return true;
}
-bool WirelessNetwork::addAP(const TDENetworkWiFiAPInfo * const ap)
+bool WirelessNetwork::addAP(const TDEMACAddress ap, const TQString dev)
{
- if ( this->contains( ap ) || d->aps.isEmpty()) {
- d->aps.append(ap);
+ if ( this->contains(ap) || d->aps.isEmpty()) {
+ d->aps[ap] = dev;
return true;
}
return false;
@@ -98,8 +118,26 @@ bool WirelessNetwork::addAP(const TDENetworkWiFiAPInfo * const ap)
const TQByteArray WirelessNetwork::getSsid() const
{
+ TDEHardwareDevices* hwdevices = KGlobal::hardwareDevices();
+ TDEGlobalNetworkManager* nm = KGlobal::networkManager();
+
if ( !d->aps.isEmpty() ) {
- return (*(d->aps.begin()))->SSID;
+ TDENetworkDevice* dev = dynamic_cast<TDENetworkDevice*>(hwdevices->findByUniqueID(d->aps.begin().data()));
+ TDENetworkWiFiAPInfo* apInfo = NULL;
+ if (dev) {
+ TDENetworkConnectionManager* deviceConnMan = dev->connectionManager();
+ apInfo = deviceConnMan->findAccessPointByBSSID(d->aps.begin().key());
+ }
+ else if (d->aps.begin().data() == "") {
+ apInfo = nm->findAccessPointByBSSID(d->aps.begin().key());
+ }
+
+ if (apInfo) {
+ return apInfo->SSID;
+ }
+ else {
+ return TQByteArray();
+ }
}
else {
return TQByteArray();
@@ -108,8 +146,26 @@ const TQByteArray WirelessNetwork::getSsid() const
TQString WirelessNetwork::getDisplaySsid() const
{
+ TDEHardwareDevices* hwdevices = KGlobal::hardwareDevices();
+ TDEGlobalNetworkManager* nm = KGlobal::networkManager();
+
if (!d->aps.isEmpty()) {
- return (*(d->aps.begin()))->friendlySSID();
+ TDENetworkDevice* dev = dynamic_cast<TDENetworkDevice*>(hwdevices->findByUniqueID(d->aps.begin().data()));
+ TDENetworkWiFiAPInfo* apInfo = NULL;
+ if (dev) {
+ TDENetworkConnectionManager* deviceConnMan = dev->connectionManager();
+ apInfo = deviceConnMan->findAccessPointByBSSID(d->aps.begin().key());
+ }
+ else if (d->aps.begin().data() == "") {
+ apInfo = nm->findAccessPointByBSSID(d->aps.begin().key());
+ }
+
+ if (apInfo) {
+ return apInfo->friendlySSID();
+ }
+ else {
+ return TQString();
+ }
}
else {
return TQString();
@@ -118,30 +174,75 @@ TQString WirelessNetwork::getDisplaySsid() const
TDENetworkWiFiAPFlags::TDENetworkWiFiAPFlags WirelessNetwork::getFlags() const
{
+ TDEHardwareDevices* hwdevices = KGlobal::hardwareDevices();
+ TDEGlobalNetworkManager* nm = KGlobal::networkManager();
+
TDENetworkWiFiAPFlags::TDENetworkWiFiAPFlags flags = TDENetworkWiFiAPFlags::None;
- for (TQValueList<const TDENetworkWiFiAPInfo*>::Iterator it = d->aps.begin(); it != d->aps.end(); ++it) {
- flags |= ((*it)->wpaFlags & TDENetworkWiFiAPFlags::GeneralFlagsMask);
- flags |= ((*it)->rsnFlags & TDENetworkWiFiAPFlags::GeneralFlagsMask);
+ for (TQMap<TDEMACAddress,TQString>::Iterator it = d->aps.begin(); it != d->aps.end(); ++it) {
+ TDENetworkDevice* dev = dynamic_cast<TDENetworkDevice*>(hwdevices->findByUniqueID(it.data()));
+ TDENetworkWiFiAPInfo* apInfo = NULL;
+ if (dev) {
+ TDENetworkConnectionManager* deviceConnMan = dev->connectionManager();
+ apInfo = deviceConnMan->findAccessPointByBSSID(it.key());
+ }
+ else if (it.data() == "") {
+ apInfo = nm->findAccessPointByBSSID(it.key());
+ }
+
+ if (apInfo) {
+ flags |= (apInfo->wpaFlags & TDENetworkWiFiAPFlags::GeneralFlagsMask);
+ flags |= (apInfo->rsnFlags & TDENetworkWiFiAPFlags::GeneralFlagsMask);
+ }
}
return flags;
}
TDENetworkWiFiAPFlags::TDENetworkWiFiAPFlags WirelessNetwork::getWpaFlags() const
{
+ TDEHardwareDevices* hwdevices = KGlobal::hardwareDevices();
+ TDEGlobalNetworkManager* nm = KGlobal::networkManager();
+
TDENetworkWiFiAPFlags::TDENetworkWiFiAPFlags flags = TDENetworkWiFiAPFlags::None;
- for (TQValueList<const TDENetworkWiFiAPInfo*>::Iterator it = d->aps.begin(); it != d->aps.end(); ++it)
+ for (TQMap<TDEMACAddress,TQString>::Iterator it = d->aps.begin(); it != d->aps.end(); ++it)
{
- flags |= ((*it)->wpaFlags & TDENetworkWiFiAPFlags::EncryptionFlagsMask);
+ TDENetworkDevice* dev = dynamic_cast<TDENetworkDevice*>(hwdevices->findByUniqueID(it.data()));
+ TDENetworkWiFiAPInfo* apInfo = NULL;
+ if (dev) {
+ TDENetworkConnectionManager* deviceConnMan = dev->connectionManager();
+ apInfo = deviceConnMan->findAccessPointByBSSID(it.key());
+ }
+ else if (it.data() == "") {
+ apInfo = nm->findAccessPointByBSSID(it.key());
+ }
+
+ if (apInfo) {
+ flags |= (apInfo->wpaFlags & TDENetworkWiFiAPFlags::EncryptionFlagsMask);
+ }
}
return flags;
}
TDENetworkWiFiAPFlags::TDENetworkWiFiAPFlags WirelessNetwork::getRsnFlags() const
{
+ TDEHardwareDevices* hwdevices = KGlobal::hardwareDevices();
+ TDEGlobalNetworkManager* nm = KGlobal::networkManager();
+
TDENetworkWiFiAPFlags::TDENetworkWiFiAPFlags flags = TDENetworkWiFiAPFlags::None;
- for (TQValueList<const TDENetworkWiFiAPInfo*>::Iterator it = d->aps.begin(); it != d->aps.end(); ++it)
+ for (TQMap<TDEMACAddress,TQString>::Iterator it = d->aps.begin(); it != d->aps.end(); ++it)
{
- flags |= ((*it)->rsnFlags & TDENetworkWiFiAPFlags::EncryptionFlagsMask);
+ TDENetworkDevice* dev = dynamic_cast<TDENetworkDevice*>(hwdevices->findByUniqueID(it.data()));
+ TDENetworkWiFiAPInfo* apInfo = NULL;
+ if (dev) {
+ TDENetworkConnectionManager* deviceConnMan = dev->connectionManager();
+ apInfo = deviceConnMan->findAccessPointByBSSID(it.key());
+ }
+ else if (it.data() == "") {
+ apInfo = nm->findAccessPointByBSSID(it.key());
+ }
+
+ if (apInfo) {
+ flags |= (apInfo->rsnFlags & TDENetworkWiFiAPFlags::EncryptionFlagsMask);
+ }
}
return flags;
}
@@ -153,10 +254,25 @@ bool WirelessNetwork::isEncrypted() const
TQ_UINT8 WirelessNetwork::getStrength() const
{
+ TDEHardwareDevices* hwdevices = KGlobal::hardwareDevices();
+ TDEGlobalNetworkManager* nm = KGlobal::networkManager();
+
TQ_UINT8 strength = 0;
- for (TQValueList<const TDENetworkWiFiAPInfo*>::Iterator it = d->aps.begin(); it != d->aps.end(); ++it) {
- if (((*it)->signalQuality*100.0) > strength) {
- strength = ((*it)->signalQuality*100.0);
+ for (TQMap<TDEMACAddress,TQString>::Iterator it = d->aps.begin(); it != d->aps.end(); ++it) {
+ TDENetworkDevice* dev = dynamic_cast<TDENetworkDevice*>(hwdevices->findByUniqueID(it.data()));
+ TDENetworkWiFiAPInfo* apInfo = NULL;
+ if (dev) {
+ TDENetworkConnectionManager* deviceConnMan = dev->connectionManager();
+ apInfo = deviceConnMan->findAccessPointByBSSID(it.key());
+ }
+ else if (it.data() == "") {
+ apInfo = nm->findAccessPointByBSSID(it.key());
+ }
+
+ if (apInfo) {
+ if ((apInfo->signalQuality*100.0) > strength) {
+ strength = (apInfo->signalQuality*100.0);
+ }
}
}
return strength;
diff --git a/tdenetworkmanager/src/tdenetman-wireless_network.h b/tdenetworkmanager/src/tdenetman-wireless_network.h
index 8ace658..473dbb6 100644
--- a/tdenetworkmanager/src/tdenetman-wireless_network.h
+++ b/tdenetworkmanager/src/tdenetman-wireless_network.h
@@ -57,10 +57,10 @@ class WirelessNetwork
WirelessNetwork& operator= (const WirelessNetwork&);
// check if the AccessPoint represents the same net
- bool contains(const TDENetworkWiFiAPInfo * const);
+ bool contains(const TDEMACAddress);
// add an AP to the Network
- bool addAP(const TDENetworkWiFiAPInfo * const);
+ bool addAP(const TDEMACAddress, const TQString);
// combined flags of all APs
TDENetworkWiFiAPFlags::TDENetworkWiFiAPFlags getFlags() const;