Merge PR #9: Add IP address information
This commit is contained in:
commit
bcbb089407
5
debian/changelog
vendored
5
debian/changelog
vendored
@ -1,3 +1,8 @@
|
|||||||
|
libnymea-networkmanager (0.4.0) UNRELEASED; urgency=medium
|
||||||
|
|
||||||
|
|
||||||
|
-- Michael Zanetti <michael.zanetti@guh.io> Mon, 27 Apr 2020 10:24:32 +0200
|
||||||
|
|
||||||
libnymea-networkmanager (0.3.0) xenial; urgency=medium
|
libnymea-networkmanager (0.3.0) xenial; urgency=medium
|
||||||
[ Michael Zanetti ]
|
[ Michael Zanetti ]
|
||||||
* Remove misleading return value, now that the method is async
|
* Remove misleading return value, now that the method is async
|
||||||
|
|||||||
@ -68,7 +68,7 @@ WirelessService::WirelessService(QLowEnergyService *service, NetworkManager *net
|
|||||||
m_device = m_networkManager->wirelessNetworkDevices().first();
|
m_device = m_networkManager->wirelessNetworkDevices().first();
|
||||||
connect(m_device, &WirelessNetworkDevice::bitRateChanged, this, &WirelessService::onWirelessDeviceBitRateChanged);
|
connect(m_device, &WirelessNetworkDevice::bitRateChanged, this, &WirelessService::onWirelessDeviceBitRateChanged);
|
||||||
connect(m_device, &WirelessNetworkDevice::stateChanged, this, &WirelessService::onWirelessDeviceStateChanged);
|
connect(m_device, &WirelessNetworkDevice::stateChanged, this, &WirelessService::onWirelessDeviceStateChanged);
|
||||||
connect(m_device, &WirelessNetworkDevice::modeChanged, this, &WirelessService::onWirelessModeChanged);
|
connect(m_device, &WirelessNetworkDevice::wirelessModeChanged, this, &WirelessService::onWirelessModeChanged);
|
||||||
}
|
}
|
||||||
|
|
||||||
QLowEnergyService *WirelessService::service()
|
QLowEnergyService *WirelessService::service()
|
||||||
@ -119,9 +119,9 @@ QLowEnergyServiceData WirelessService::serviceData(NetworkManager *networkManage
|
|||||||
wirelessModeCharacteristicData.addDescriptor(clientConfigDescriptorData);
|
wirelessModeCharacteristicData.addDescriptor(clientConfigDescriptorData);
|
||||||
wirelessModeCharacteristicData.setValueLength(1, 1);
|
wirelessModeCharacteristicData.setValueLength(1, 1);
|
||||||
if (networkManager->wirelessNetworkDevices().isEmpty()) {
|
if (networkManager->wirelessNetworkDevices().isEmpty()) {
|
||||||
wirelessModeCharacteristicData.setValue(WirelessService::getWirelessMode(WirelessNetworkDevice::ModeUnknown));
|
wirelessModeCharacteristicData.setValue(WirelessService::getWirelessMode(WirelessNetworkDevice::WirelessModeUnknown));
|
||||||
} else {
|
} else {
|
||||||
wirelessModeCharacteristicData.setValue(WirelessService::getWirelessMode(networkManager->wirelessNetworkDevices().first()->mode()));
|
wirelessModeCharacteristicData.setValue(WirelessService::getWirelessMode(networkManager->wirelessNetworkDevices().first()->wirelessMode()));
|
||||||
}
|
}
|
||||||
serviceData.addCharacteristic(wirelessModeCharacteristicData);
|
serviceData.addCharacteristic(wirelessModeCharacteristicData);
|
||||||
|
|
||||||
@ -190,16 +190,16 @@ QByteArray WirelessService::getWirelessNetworkDeviceState(const NetworkDevice::N
|
|||||||
return QByteArray::fromHex("00");
|
return QByteArray::fromHex("00");
|
||||||
}
|
}
|
||||||
|
|
||||||
QByteArray WirelessService::getWirelessMode(WirelessNetworkDevice::Mode mode)
|
QByteArray WirelessService::getWirelessMode(WirelessNetworkDevice::WirelessMode mode)
|
||||||
{
|
{
|
||||||
switch (mode) {
|
switch (mode) {
|
||||||
case WirelessNetworkDevice::ModeUnknown:
|
case WirelessNetworkDevice::WirelessModeUnknown:
|
||||||
return QByteArray::fromHex("00");
|
return QByteArray::fromHex("00");
|
||||||
case WirelessNetworkDevice::ModeAdhoc:
|
case WirelessNetworkDevice::WirelessModeAdhoc:
|
||||||
return QByteArray::fromHex("01");
|
return QByteArray::fromHex("01");
|
||||||
case WirelessNetworkDevice::ModeInfrastructure:
|
case WirelessNetworkDevice::WirelessModeInfrastructure:
|
||||||
return QByteArray::fromHex("02");
|
return QByteArray::fromHex("02");
|
||||||
case WirelessNetworkDevice::ModeAccessPoint:
|
case WirelessNetworkDevice::WirelessModeAccessPoint:
|
||||||
return QByteArray::fromHex("03");
|
return QByteArray::fromHex("03");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -385,7 +385,15 @@ void WirelessService::commandGetCurrentConnection(const QVariantMap &request)
|
|||||||
connectionDataMap.insert("p", 0);
|
connectionDataMap.insert("p", 0);
|
||||||
connectionDataMap.insert("i", "");
|
connectionDataMap.insert("i", "");
|
||||||
} else {
|
} else {
|
||||||
QHostAddress address = wifiInterface.addressEntries().first().ip();
|
QHostAddress address;
|
||||||
|
// Note: for now, we'll just use the first IPv4 address. However, in a future version
|
||||||
|
// this should somehow pack all addresses, IPv4 and IPv6 ones.
|
||||||
|
foreach (const QNetworkAddressEntry &entry, wifiInterface.addressEntries()) {
|
||||||
|
if (entry.ip().protocol() == QAbstractSocket::IPv4Protocol) {
|
||||||
|
address = entry.ip();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
qCDebug(dcNetworkManagerBluetoothServer()) << "Current connection:" << m_device->activeAccessPoint() << address.toString();
|
qCDebug(dcNetworkManagerBluetoothServer()) << "Current connection:" << m_device->activeAccessPoint() << address.toString();
|
||||||
connectionDataMap.insert("e", m_device->activeAccessPoint()->ssid());
|
connectionDataMap.insert("e", m_device->activeAccessPoint()->ssid());
|
||||||
connectionDataMap.insert("m", m_device->activeAccessPoint()->macAddress());
|
connectionDataMap.insert("m", m_device->activeAccessPoint()->macAddress());
|
||||||
@ -597,7 +605,7 @@ void WirelessService::onWirelessDeviceStateChanged(const NetworkDevice::NetworkD
|
|||||||
m_service->writeCharacteristic(characteristic, WirelessService::getWirelessNetworkDeviceState(state));
|
m_service->writeCharacteristic(characteristic, WirelessService::getWirelessNetworkDeviceState(state));
|
||||||
}
|
}
|
||||||
|
|
||||||
void WirelessService::onWirelessModeChanged(WirelessNetworkDevice::Mode mode)
|
void WirelessService::onWirelessModeChanged(WirelessNetworkDevice::WirelessMode mode)
|
||||||
{
|
{
|
||||||
if (!m_service) {
|
if (!m_service) {
|
||||||
qCWarning(dcNetworkManagerBluetoothServer()) << "WirelessService: Could not update wireless device mode. Service not valid";
|
qCWarning(dcNetworkManagerBluetoothServer()) << "WirelessService: Could not update wireless device mode. Service not valid";
|
||||||
|
|||||||
@ -86,7 +86,7 @@ private:
|
|||||||
|
|
||||||
// Note: static to be available in serviceData
|
// Note: static to be available in serviceData
|
||||||
static QByteArray getWirelessNetworkDeviceState(const NetworkDevice::NetworkDeviceState &state);
|
static QByteArray getWirelessNetworkDeviceState(const NetworkDevice::NetworkDeviceState &state);
|
||||||
static QByteArray getWirelessMode(WirelessNetworkDevice::Mode mode);
|
static QByteArray getWirelessMode(WirelessNetworkDevice::WirelessMode mode);
|
||||||
|
|
||||||
void streamData(const QVariantMap &responseMap);
|
void streamData(const QVariantMap &responseMap);
|
||||||
|
|
||||||
@ -116,7 +116,7 @@ private slots:
|
|||||||
// Wireless network device
|
// Wireless network device
|
||||||
void onWirelessDeviceBitRateChanged(const int &bitRate);
|
void onWirelessDeviceBitRateChanged(const int &bitRate);
|
||||||
void onWirelessDeviceStateChanged(const NetworkDevice::NetworkDeviceState &state);
|
void onWirelessDeviceStateChanged(const NetworkDevice::NetworkDeviceState &state);
|
||||||
void onWirelessModeChanged(WirelessNetworkDevice::Mode mode);
|
void onWirelessModeChanged(WirelessNetworkDevice::WirelessMode mode);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -170,6 +170,8 @@ NetworkDevice::NetworkDevice(const QDBusObjectPath &objectPath, QObject *parent)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QDBusConnection::systemBus().connect(NetworkManagerUtils::networkManagerServiceString(), m_objectPath.path(), NetworkManagerUtils::deviceInterfaceString(), "StateChanged", this, SLOT(onStateChanged(uint,uint,uint)));
|
||||||
|
|
||||||
m_udi = m_networkDeviceInterface->property("Udi").toString();
|
m_udi = m_networkDeviceInterface->property("Udi").toString();
|
||||||
m_interface = m_networkDeviceInterface->property("Interface").toString();
|
m_interface = m_networkDeviceInterface->property("Interface").toString();
|
||||||
m_ipInterface = m_networkDeviceInterface->property("IpInterface").toString();
|
m_ipInterface = m_networkDeviceInterface->property("IpInterface").toString();
|
||||||
@ -185,10 +187,8 @@ NetworkDevice::NetworkDevice(const QDBusObjectPath &objectPath, QObject *parent)
|
|||||||
m_deviceType = NetworkDeviceType(m_networkDeviceInterface->property("DeviceType").toUInt());
|
m_deviceType = NetworkDeviceType(m_networkDeviceInterface->property("DeviceType").toUInt());
|
||||||
|
|
||||||
m_activeConnection = qdbus_cast<QDBusObjectPath>(m_networkDeviceInterface->property("ActiveConnection"));
|
m_activeConnection = qdbus_cast<QDBusObjectPath>(m_networkDeviceInterface->property("ActiveConnection"));
|
||||||
m_ip4Config = qdbus_cast<QDBusObjectPath>(m_networkDeviceInterface->property("Ip4Config"));
|
m_ipv4Addresses = readIpAddresses("Ip4Config", "org.freedesktop.NetworkManager.IP4Config");
|
||||||
m_ip6Config = qdbus_cast<QDBusObjectPath>(m_networkDeviceInterface->property("Ip6Config"));
|
m_ipv6Addresses = readIpAddresses("Ip6Config", "org.freedesktop.NetworkManager.IP6Config");
|
||||||
|
|
||||||
QDBusConnection::systemBus().connect(NetworkManagerUtils::networkManagerServiceString(), m_objectPath.path(), NetworkManagerUtils::deviceInterfaceString(), "StateChanged", this, SLOT(onStateChanged(uint,uint,uint)));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*! Returns the dbus object path of this \l{NetworkDevice}. */
|
/*! Returns the dbus object path of this \l{NetworkDevice}. */
|
||||||
@ -257,6 +257,18 @@ bool NetworkDevice::autoconnect() const
|
|||||||
return m_autoconnect;
|
return m_autoconnect;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*! Returns IPv4 addresses for this \l{NetworkDevice}. */
|
||||||
|
QStringList NetworkDevice::ipv4Addresses() const
|
||||||
|
{
|
||||||
|
return m_ipv4Addresses;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*! Returns IPv4 addresses for this \l{NetworkDevice}. */
|
||||||
|
QStringList NetworkDevice::ipv6Addresses() const
|
||||||
|
{
|
||||||
|
return m_ipv6Addresses;
|
||||||
|
}
|
||||||
|
|
||||||
/*! Returns the device state of this \l{NetworkDevice}. \sa NetworkDeviceState, */
|
/*! Returns the device state of this \l{NetworkDevice}. \sa NetworkDeviceState, */
|
||||||
NetworkDevice::NetworkDeviceState NetworkDevice::deviceState() const
|
NetworkDevice::NetworkDeviceState NetworkDevice::deviceState() const
|
||||||
{
|
{
|
||||||
@ -287,12 +299,6 @@ QDBusObjectPath NetworkDevice::activeConnection() const
|
|||||||
return m_activeConnection;
|
return m_activeConnection;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*! Returns the dbus object path from the IPv4 configuration of this \l{NetworkDevice}. */
|
|
||||||
QDBusObjectPath NetworkDevice::ip4Config() const
|
|
||||||
{
|
|
||||||
return m_ip4Config;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*! Returns the list of dbus object paths for the currently available connection of this \l{NetworkDevice}. */
|
/*! Returns the list of dbus object paths for the currently available connection of this \l{NetworkDevice}. */
|
||||||
QList<QDBusObjectPath> NetworkDevice::availableConnections() const
|
QList<QDBusObjectPath> NetworkDevice::availableConnections() const
|
||||||
{
|
{
|
||||||
@ -335,15 +341,43 @@ QString NetworkDevice::deviceStateReasonToString(const NetworkDevice::NetworkDev
|
|||||||
return QString(metaEnum.valueToKey(deviceStateReason));
|
return QString(metaEnum.valueToKey(deviceStateReason));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QStringList NetworkDevice::readIpAddresses(const QString &property, const QString &interface)
|
||||||
|
{
|
||||||
|
QStringList ret;
|
||||||
|
QDBusObjectPath configPath = qdbus_cast<QDBusObjectPath>(m_networkDeviceInterface->property(property.toUtf8()));
|
||||||
|
|
||||||
|
if (configPath.path() != "/") {
|
||||||
|
QDBusInterface iface(NetworkManagerUtils::networkManagerServiceString(), configPath.path(), "org.freedesktop.DBus.Properties", QDBusConnection::systemBus());
|
||||||
|
|
||||||
|
QDBusMessage reply = iface.call("Get", interface, "AddressData");
|
||||||
|
QVariant v = reply.arguments().first();
|
||||||
|
QDBusArgument arg = v.value<QDBusVariant>().variant().value<QDBusArgument>();
|
||||||
|
|
||||||
|
arg.beginArray();
|
||||||
|
while(!arg.atEnd()) {
|
||||||
|
QVariantMap m;
|
||||||
|
arg >> m;
|
||||||
|
ret.append(m.value("address").toString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
void NetworkDevice::onStateChanged(uint newState, uint oldState, uint reason)
|
void NetworkDevice::onStateChanged(uint newState, uint oldState, uint reason)
|
||||||
{
|
{
|
||||||
Q_UNUSED(oldState)
|
Q_UNUSED(oldState)
|
||||||
qCDebug(dcNetworkManager()) << m_interface << "--> State changed:" << deviceStateToString(NetworkDeviceState(newState)) << ":" << deviceStateReasonToString(NetworkDeviceStateReason(reason));
|
qCDebug(dcNetworkManager()) << m_interface << "--> State changed:" << deviceStateToString(NetworkDeviceState(newState)) << ":" << deviceStateReasonToString(NetworkDeviceStateReason(reason));
|
||||||
|
|
||||||
|
|
||||||
if (m_deviceState != NetworkDeviceState(newState)) {
|
if (m_deviceState != NetworkDeviceState(newState)) {
|
||||||
m_deviceState = NetworkDeviceState(newState);
|
m_ipv4Addresses = readIpAddresses("Ip4Config", "org.freedesktop.NetworkManager.IP4Config");
|
||||||
|
m_ipv6Addresses = readIpAddresses("Ip6Config", "org.freedesktop.NetworkManager.IP6Config");
|
||||||
emit deviceChanged();
|
emit deviceChanged();
|
||||||
|
|
||||||
|
m_deviceState = NetworkDeviceState(newState);
|
||||||
emit stateChanged(m_deviceState);
|
emit stateChanged(m_deviceState);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QDebug operator<<(QDebug debug, NetworkDevice *device)
|
QDebug operator<<(QDebug debug, NetworkDevice *device)
|
||||||
|
|||||||
@ -170,6 +170,8 @@ public:
|
|||||||
uint mtu() const;
|
uint mtu() const;
|
||||||
uint metered() const;
|
uint metered() const;
|
||||||
bool autoconnect() const;
|
bool autoconnect() const;
|
||||||
|
QStringList ipv4Addresses() const;
|
||||||
|
QStringList ipv6Addresses() const;
|
||||||
|
|
||||||
NetworkDeviceState deviceState() const;
|
NetworkDeviceState deviceState() const;
|
||||||
QString deviceStateString() const;
|
QString deviceStateString() const;
|
||||||
@ -200,6 +202,8 @@ private:
|
|||||||
QString m_driverVersion;
|
QString m_driverVersion;
|
||||||
QString m_firmwareVersion;
|
QString m_firmwareVersion;
|
||||||
QString m_physicalPortId;
|
QString m_physicalPortId;
|
||||||
|
QList<QString> m_ipv4Addresses;
|
||||||
|
QList<QString> m_ipv6Addresses;
|
||||||
uint m_mtu = 0;
|
uint m_mtu = 0;
|
||||||
uint m_metered = 0;
|
uint m_metered = 0;
|
||||||
bool m_autoconnect = false;
|
bool m_autoconnect = false;
|
||||||
@ -208,11 +212,12 @@ private:
|
|||||||
NetworkDeviceType m_deviceType = NetworkDeviceTypeUnknown;
|
NetworkDeviceType m_deviceType = NetworkDeviceTypeUnknown;
|
||||||
|
|
||||||
QDBusObjectPath m_activeConnection;
|
QDBusObjectPath m_activeConnection;
|
||||||
QDBusObjectPath m_ip4Config;
|
|
||||||
QDBusObjectPath m_ip6Config;
|
|
||||||
|
|
||||||
QList<QDBusObjectPath> m_availableConnections;
|
QList<QDBusObjectPath> m_availableConnections;
|
||||||
|
|
||||||
|
private:
|
||||||
|
QStringList readIpAddresses(const QString &property, const QString &interface);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void onStateChanged(uint newState, uint oldState, uint reason);
|
void onStateChanged(uint newState, uint oldState, uint reason);
|
||||||
|
|
||||||
|
|||||||
@ -355,7 +355,7 @@ void NetworkManager::init()
|
|||||||
qCDebug(dcNetworkManager()) << "Initializing network manager";
|
qCDebug(dcNetworkManager()) << "Initializing network manager";
|
||||||
// Check DBus connection
|
// Check DBus connection
|
||||||
if (!QDBusConnection::systemBus().isConnected()) {
|
if (!QDBusConnection::systemBus().isConnected()) {
|
||||||
qCWarning(dcNetworkManager()) << "System DBus not connected. NetworkManagre not available.";
|
qCWarning(dcNetworkManager()) << "System DBus not connected. NetworkManager not available.";
|
||||||
setAvailable(false);
|
setAvailable(false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -86,9 +86,9 @@ WirelessNetworkDevice::WirelessNetworkDevice(const QDBusObjectPath &objectPath,
|
|||||||
|
|
||||||
readAccessPoints();
|
readAccessPoints();
|
||||||
|
|
||||||
setMacAddress(m_wirelessInterface->property("HwAddress").toString());
|
m_macAddress = m_wirelessInterface->property("HwAddress").toString();
|
||||||
setMode(static_cast<Mode>(m_wirelessInterface->property("Mode").toUInt()));
|
m_wirelessMode = static_cast<WirelessMode>(m_wirelessInterface->property("Mode").toUInt());
|
||||||
setBitrate(m_wirelessInterface->property("Bitrate").toInt());
|
m_bitRate = m_wirelessInterface->property("Bitrate").toInt() / 1000;
|
||||||
setActiveAccessPoint(qdbus_cast<QDBusObjectPath>(m_wirelessInterface->property("ActiveAccessPoint")));
|
setActiveAccessPoint(qdbus_cast<QDBusObjectPath>(m_wirelessInterface->property("ActiveAccessPoint")));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -104,9 +104,9 @@ int WirelessNetworkDevice::bitRate() const
|
|||||||
return m_bitRate;
|
return m_bitRate;
|
||||||
}
|
}
|
||||||
|
|
||||||
WirelessNetworkDevice::Mode WirelessNetworkDevice::mode() const
|
WirelessNetworkDevice::WirelessMode WirelessNetworkDevice::wirelessMode() const
|
||||||
{
|
{
|
||||||
return m_mode;
|
return m_wirelessMode;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*! Returns the current active \l{WirelessAccessPoint} of this \l{WirelessNetworkDevice}. */
|
/*! Returns the current active \l{WirelessAccessPoint} of this \l{WirelessNetworkDevice}. */
|
||||||
@ -169,34 +169,6 @@ void WirelessNetworkDevice::readAccessPoints()
|
|||||||
argument.endArray();
|
argument.endArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
void WirelessNetworkDevice::setMacAddress(const QString &macAddress)
|
|
||||||
{
|
|
||||||
m_macAddress = macAddress;
|
|
||||||
}
|
|
||||||
|
|
||||||
void WirelessNetworkDevice::setMode(WirelessNetworkDevice::Mode mode)
|
|
||||||
{
|
|
||||||
if (m_mode == mode)
|
|
||||||
return;
|
|
||||||
|
|
||||||
m_mode = mode;
|
|
||||||
emit modeChanged(m_mode);
|
|
||||||
}
|
|
||||||
|
|
||||||
void WirelessNetworkDevice::setBitrate(int bitRate)
|
|
||||||
{
|
|
||||||
if (m_bitRate != bitRate / 1000) {
|
|
||||||
m_bitRate = bitRate / 1000;
|
|
||||||
emit bitRateChanged(m_bitRate);
|
|
||||||
emit deviceChanged();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void WirelessNetworkDevice::setLastScan(int lastScan)
|
|
||||||
{
|
|
||||||
m_lastScan = lastScan;
|
|
||||||
}
|
|
||||||
|
|
||||||
void WirelessNetworkDevice::setActiveAccessPoint(const QDBusObjectPath &activeAccessPointObjectPath)
|
void WirelessNetworkDevice::setActiveAccessPoint(const QDBusObjectPath &activeAccessPointObjectPath)
|
||||||
{
|
{
|
||||||
if (m_activeAccessPointObjectPath != activeAccessPointObjectPath) {
|
if (m_activeAccessPointObjectPath != activeAccessPointObjectPath) {
|
||||||
@ -251,20 +223,27 @@ void WirelessNetworkDevice::propertiesChanged(const QVariantMap &properties)
|
|||||||
{
|
{
|
||||||
//qCDebug(dcNetworkManager()) << "WirelessNetworkDevice: Property changed" << properties;
|
//qCDebug(dcNetworkManager()) << "WirelessNetworkDevice: Property changed" << properties;
|
||||||
|
|
||||||
if (properties.contains("Bitrate"))
|
if (properties.contains("Bitrate")) {
|
||||||
setBitrate(properties.value("Bitrate").toInt());
|
m_bitRate = properties.value("Bitrate").toInt() / 1000;
|
||||||
|
emit bitRateChanged(m_bitRate);
|
||||||
|
}
|
||||||
|
|
||||||
if (properties.contains("ActiveAccessPoint"))
|
if (properties.contains("Mode")) {
|
||||||
setActiveAccessPoint(qdbus_cast<QDBusObjectPath>(properties.value("ActiveAccessPoint")));
|
m_wirelessMode = static_cast<WirelessMode>(m_wirelessInterface->property("Mode").toUInt());
|
||||||
|
emit wirelessModeChanged(m_wirelessMode);
|
||||||
if (properties.contains("Mode"))
|
}
|
||||||
setMode(static_cast<Mode>(m_wirelessInterface->property("Mode").toUInt()));
|
|
||||||
|
|
||||||
// Note: available since 1.12 (-1 means never scanned)
|
// Note: available since 1.12 (-1 means never scanned)
|
||||||
if (properties.contains("LastScan"))
|
if (properties.contains("LastScan")) {
|
||||||
setLastScan(m_wirelessInterface->property("LastScan").toInt());
|
m_lastScan = m_wirelessInterface->property("LastScan").toInt();
|
||||||
|
emit lastScanChanged(m_lastScan);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (properties.contains("ActiveAccessPoint")) {
|
||||||
|
setActiveAccessPoint(qdbus_cast<QDBusObjectPath>(properties.value("ActiveAccessPoint")));
|
||||||
|
}
|
||||||
|
|
||||||
|
emit deviceChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*! Writes the given \a device to the given to \a debug. \sa WirelessNetworkDevice, */
|
/*! Writes the given \a device to the given to \a debug. \sa WirelessNetworkDevice, */
|
||||||
@ -272,7 +251,7 @@ QDebug operator<<(QDebug debug, WirelessNetworkDevice *device)
|
|||||||
{
|
{
|
||||||
debug.nospace() << "WirelessNetworkDevice(" << device->interface() << ", ";
|
debug.nospace() << "WirelessNetworkDevice(" << device->interface() << ", ";
|
||||||
debug.nospace() << device->macAddress() << ", ";
|
debug.nospace() << device->macAddress() << ", ";
|
||||||
debug.nospace() << device->mode() << ", ";
|
debug.nospace() << device->wirelessMode() << ", ";
|
||||||
debug.nospace() << device->bitRate() << " [Mb/s], ";
|
debug.nospace() << device->bitRate() << " [Mb/s], ";
|
||||||
debug.nospace() << device->deviceStateString() << ") ";
|
debug.nospace() << device->deviceStateString() << ") ";
|
||||||
return debug.space();
|
return debug.space();
|
||||||
|
|||||||
@ -46,20 +46,20 @@ class WirelessNetworkDevice : public NetworkDevice
|
|||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
enum Mode {
|
enum WirelessMode {
|
||||||
ModeUnknown = 0,
|
WirelessModeUnknown = 0,
|
||||||
ModeAdhoc = 1,
|
WirelessModeAdhoc = 1,
|
||||||
ModeInfrastructure = 2,
|
WirelessModeInfrastructure = 2,
|
||||||
ModeAccessPoint = 3
|
WirelessModeAccessPoint = 3
|
||||||
};
|
};
|
||||||
Q_ENUM(Mode)
|
Q_ENUM(WirelessMode)
|
||||||
|
|
||||||
explicit WirelessNetworkDevice(const QDBusObjectPath &objectPath, QObject *parent = nullptr);
|
explicit WirelessNetworkDevice(const QDBusObjectPath &objectPath, QObject *parent = nullptr);
|
||||||
|
|
||||||
// Properties
|
// Properties
|
||||||
QString macAddress() const;
|
QString macAddress() const;
|
||||||
int bitRate() const;
|
int bitRate() const;
|
||||||
Mode mode() const;
|
WirelessMode wirelessMode() const;
|
||||||
WirelessAccessPoint *activeAccessPoint();
|
WirelessAccessPoint *activeAccessPoint();
|
||||||
|
|
||||||
// Accesspoints
|
// Accesspoints
|
||||||
@ -70,13 +70,23 @@ public:
|
|||||||
// Methods
|
// Methods
|
||||||
void scanWirelessNetworks();
|
void scanWirelessNetworks();
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void bitRateChanged(int bitRate);
|
||||||
|
void wirelessModeChanged(WirelessMode mode);
|
||||||
|
void lastScanChanged(int lastScan);
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void accessPointAdded(const QDBusObjectPath &objectPath);
|
||||||
|
void accessPointRemoved(const QDBusObjectPath &objectPath);
|
||||||
|
void propertiesChanged(const QVariantMap &properties);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QDBusInterface *m_wirelessInterface = nullptr;
|
QDBusInterface *m_wirelessInterface = nullptr;
|
||||||
WirelessAccessPoint *m_activeAccessPoint = nullptr;
|
WirelessAccessPoint *m_activeAccessPoint = nullptr;
|
||||||
|
|
||||||
int m_bitRate;
|
int m_bitRate;
|
||||||
QString m_macAddress;
|
QString m_macAddress;
|
||||||
Mode m_mode = ModeUnknown;
|
WirelessMode m_wirelessMode = WirelessModeUnknown;
|
||||||
int m_lastScan = -1;
|
int m_lastScan = -1;
|
||||||
QDBusObjectPath m_activeAccessPointObjectPath;
|
QDBusObjectPath m_activeAccessPointObjectPath;
|
||||||
|
|
||||||
@ -84,21 +94,7 @@ private:
|
|||||||
|
|
||||||
void readAccessPoints();
|
void readAccessPoints();
|
||||||
|
|
||||||
void setMacAddress(const QString &macAddress);
|
|
||||||
void setMode(Mode mode);
|
|
||||||
void setBitrate(int bitRate);
|
|
||||||
void setLastScan(int lastScan);
|
|
||||||
void setActiveAccessPoint(const QDBusObjectPath &activeAccessPointObjectPath);
|
void setActiveAccessPoint(const QDBusObjectPath &activeAccessPointObjectPath);
|
||||||
|
|
||||||
private slots:
|
|
||||||
void accessPointAdded(const QDBusObjectPath &objectPath);
|
|
||||||
void accessPointRemoved(const QDBusObjectPath &objectPath);
|
|
||||||
void propertiesChanged(const QVariantMap &properties);
|
|
||||||
|
|
||||||
signals:
|
|
||||||
void bitRateChanged(int bitRate);
|
|
||||||
void modeChanged(Mode mode);
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
QDebug operator<<(QDebug debug, WirelessNetworkDevice *device);
|
QDebug operator<<(QDebug debug, WirelessNetworkDevice *device);
|
||||||
|
|||||||
Reference in New Issue
Block a user