NetworkManagerQt

accesspoint.cpp
1/*
2 SPDX-FileCopyrightText: 2008 Will Stephenson <wstephenson@kde.org>
3 SPDX-FileCopyrightText: 2013 Daniel Nicoletti <dantti12@gmail.com>
4 SPDX-FileCopyrightText: 2013 Jan Grulich <jgrulich@redhat.com>
5
6 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
7*/
8
9#include "accesspoint_p.h"
10#include "manager_p.h"
11#include "wirelessdevice.h"
12
13#include "nmdebug.h"
14
15NetworkManager::AccessPointPrivate::AccessPointPrivate(const QString &path, AccessPoint *q)
16#ifdef NMQT_STATIC
17 : iface(NetworkManagerPrivate::DBUS_SERVICE, path, QDBusConnection::sessionBus())
18#else
19 : iface(NetworkManagerPrivate::DBUS_SERVICE, path, QDBusConnection::systemBus())
20#endif
21 , capabilities(AccessPoint::None)
22 , wpaFlags()
23 , rsnFlags()
24 , frequency(0)
25 , maxBitRate(0)
26 , mode(AccessPoint::Unknown)
27 , signalStrength(0)
28 , lastSeen(-1)
29 , bandwidth(0)
30 , q_ptr(q)
31{
32 uni = path;
33}
34
35NetworkManager::AccessPoint::Capabilities NetworkManager::AccessPointPrivate::convertCapabilities(int caps)
36{
37 NetworkManager::AccessPoint::Capabilities capFlags;
38 if (caps & NM_802_11_AP_FLAGS_PRIVACY) {
39 capFlags |= AccessPoint::Privacy;
40 }
41
42 return capFlags;
43}
44
45NetworkManager::AccessPoint::WpaFlags NetworkManager::AccessPointPrivate::convertWpaFlags(uint theirFlags)
46{
47 return (AccessPoint::WpaFlags)theirFlags;
48}
49
50NetworkManager::AccessPoint::AccessPoint(const QString &path, QObject *parent)
51 : QObject(parent)
52 , d_ptr(new AccessPointPrivate(path, this))
53{
54 Q_D(AccessPoint);
55
56 QDBusConnection::systemBus().connect(NetworkManagerPrivate::DBUS_SERVICE,
57 d->uni,
58 NetworkManagerPrivate::FDO_DBUS_PROPERTIES,
59 QLatin1String("PropertiesChanged"),
60 d,
61 SLOT(dbusPropertiesChanged(QString, QVariantMap, QStringList)));
62
63 // Get all AccessPoint's properties at once
64 QVariantMap initialProperties = NetworkManagerPrivate::retrieveInitialProperties(d->iface.staticInterfaceName(), path);
65 if (!initialProperties.isEmpty()) {
66 d->propertiesChanged(initialProperties);
67 }
68}
69
70NetworkManager::AccessPoint::~AccessPoint()
71{
72 Q_D(AccessPoint);
73 delete d;
74}
75
77{
78 Q_D(const AccessPoint);
79 return d->uni;
80}
81
83{
84 Q_D(const AccessPoint);
85 return d->hardwareAddress;
86}
87
88NetworkManager::AccessPoint::Capabilities NetworkManager::AccessPoint::capabilities() const
89{
90 Q_D(const AccessPoint);
91 return d->capabilities;
92}
93
94NetworkManager::AccessPoint::WpaFlags NetworkManager::AccessPoint::wpaFlags() const
95{
96 Q_D(const AccessPoint);
97 return d->wpaFlags;
98}
99
100NetworkManager::AccessPoint::WpaFlags NetworkManager::AccessPoint::rsnFlags() const
101{
102 Q_D(const AccessPoint);
103 return d->rsnFlags;
104}
105
107{
108 Q_D(const AccessPoint);
109 return d->ssid;
110}
111
113{
114 Q_D(const AccessPoint);
115 return d->rawSsid;
116}
117
119{
120 Q_D(const AccessPoint);
121 return d->frequency;
122}
123
125{
126 Q_D(const AccessPoint);
127 return d->maxBitRate;
128}
129
131{
132 Q_D(const AccessPoint);
133 return d->mode;
134}
135
137{
138 Q_D(const AccessPoint);
139 return d->signalStrength;
140}
141
143{
144 Q_D(const AccessPoint);
145 return d->lastSeen;
146}
147
149{
150 Q_D(const AccessPoint);
151 return d->bandwidth;
152}
153
155{
157 switch (mode) {
158 case NM_802_11_MODE_UNKNOWN:
160 break;
161 case NM_802_11_MODE_ADHOC:
163 break;
164 case NM_802_11_MODE_INFRA:
166 break;
167 case NM_802_11_MODE_AP:
169 break;
170 default:
171 qCDebug(NMQT) << Q_FUNC_INFO << "Unhandled mode" << mode;
172 }
173 return ourMode;
174}
175
176void NetworkManager::AccessPointPrivate::dbusPropertiesChanged(const QString &interfaceName,
177 const QVariantMap &properties,
178 const QStringList &invalidatedProperties)
179{
180 Q_UNUSED(invalidatedProperties);
181 if (interfaceName == QLatin1String("org.freedesktop.NetworkManager.AccessPoint")) {
182 propertiesChanged(properties);
183 }
184}
185
186void NetworkManager::AccessPointPrivate::propertiesChanged(const QVariantMap &properties)
187{
188 Q_Q(AccessPoint);
189
190 // qCDebug(NMQT) << Q_FUNC_INFO << properties;
191
192 QVariantMap::const_iterator it = properties.constBegin();
193 while (it != properties.constEnd()) {
194 const QString property = it.key();
195 if (property == QLatin1String("Flags")) {
196 capabilities = convertCapabilities(it->toUInt());
197 Q_EMIT q->capabilitiesChanged(capabilities);
198 } else if (property == QLatin1String("WpaFlags")) {
199 wpaFlags = convertWpaFlags(it->toUInt());
200 Q_EMIT q->wpaFlagsChanged(wpaFlags);
201 } else if (property == QLatin1String("RsnFlags")) {
202 rsnFlags = convertWpaFlags(it->toUInt());
203 Q_EMIT q->rsnFlagsChanged(rsnFlags);
204 } else if (property == QLatin1String("Ssid")) {
205 rawSsid = it->toByteArray();
206 ssid = QString::fromUtf8(rawSsid);
207 Q_EMIT q->ssidChanged(ssid);
208 } else if (property == QLatin1String("Frequency")) {
209 frequency = it->toUInt();
210 Q_EMIT q->frequencyChanged(frequency);
211 } else if (property == QLatin1String("HwAddress")) {
212 hardwareAddress = it->toString();
213 } else if (property == QLatin1String("Mode")) {
214 mode = q->convertOperationMode(it->toUInt());
215 } else if (property == QLatin1String("MaxBitrate")) {
216 maxBitRate = it->toUInt();
217 Q_EMIT q->bitRateChanged(maxBitRate);
218 } else if (property == QLatin1String("Strength")) {
219 signalStrength = it->toInt();
220 Q_EMIT q->signalStrengthChanged(signalStrength);
221 } else if (property == QLatin1String("LastSeen")) {
222 lastSeen = it->toInt();
223 Q_EMIT q->lastSeenChanged(lastSeen);
224 } else if (property == QLatin1String("Bandwidth")) {
225 bandwidth = it->toUInt();
226 Q_EMIT q->bandwidthChanged(bandwidth);
227 } else {
228 qCDebug(NMQT) << Q_FUNC_INFO << "Unhandled property" << property;
229 }
230 ++it;
231 }
232}
233
234#include "moc_accesspoint.cpp"
235#include "moc_accesspoint_p.cpp"
Represents an access point.
Definition accesspoint.h:28
QString hardwareAddress() const
AccessPoint::WpaFlags wpaFlags() const
static OperationMode convertOperationMode(uint mode)
Helper method to convert wire representation of operation mode to enum.
OperationMode mode() const
uint bandwidth() const
The bandwidth announced by the access point in MHz.
OperationMode
The access point's current operating mode.
Definition accesspoint.h:36
@ Unknown
not associated with a network
Definition accesspoint.h:37
@ ApMode
access point in an infrastructure network
Definition accesspoint.h:40
@ Infra
a station in an infrastructure wireless network
Definition accesspoint.h:39
@ Adhoc
part of an adhoc network
Definition accesspoint.h:38
AccessPoint::WpaFlags rsnFlags() const
Capabilities capabilities() const
QByteArray rawSsid() const
Capabilities capabilities()
QString path(const QString &relativePath)
KGuiItem properties()
bool connect(const QString &service, const QString &path, const QString &interface, const QString &name, QObject *receiver, const char *slot)
QDBusConnection sessionBus()
QDBusConnection systemBus()
QString fromUtf8(QByteArrayView str)
Q_D(Todo)
This file is part of the KDE documentation.
Documentation copyright © 1996-2025 The KDE developers.
Generated on Fri Mar 28 2025 11:58:59 by doxygen 1.13.2 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.