From 09630729cb29639af235ea40cd5eca059f5ac5ec Mon Sep 17 00:00:00 2001 From: Michael Zanetti Date: Mon, 4 May 2020 15:35:10 +0200 Subject: [PATCH] Add wifi mode property --- .../bluetooth/wirelessservice.cpp | 18 ++--- .../bluetooth/wirelessservice.h | 4 +- .../wirelessnetworkdevice.cpp | 65 +++++++------------ .../wirelessnetworkdevice.h | 40 +++++------- 4 files changed, 51 insertions(+), 76 deletions(-) diff --git a/libnymea-networkmanager/bluetooth/wirelessservice.cpp b/libnymea-networkmanager/bluetooth/wirelessservice.cpp index 4900d2f..8fceea6 100644 --- a/libnymea-networkmanager/bluetooth/wirelessservice.cpp +++ b/libnymea-networkmanager/bluetooth/wirelessservice.cpp @@ -68,7 +68,7 @@ WirelessService::WirelessService(QLowEnergyService *service, NetworkManager *net m_device = m_networkManager->wirelessNetworkDevices().first(); connect(m_device, &WirelessNetworkDevice::bitRateChanged, this, &WirelessService::onWirelessDeviceBitRateChanged); 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() @@ -119,9 +119,9 @@ QLowEnergyServiceData WirelessService::serviceData(NetworkManager *networkManage wirelessModeCharacteristicData.addDescriptor(clientConfigDescriptorData); wirelessModeCharacteristicData.setValueLength(1, 1); if (networkManager->wirelessNetworkDevices().isEmpty()) { - wirelessModeCharacteristicData.setValue(WirelessService::getWirelessMode(WirelessNetworkDevice::ModeUnknown)); + wirelessModeCharacteristicData.setValue(WirelessService::getWirelessMode(WirelessNetworkDevice::WirelessModeUnknown)); } else { - wirelessModeCharacteristicData.setValue(WirelessService::getWirelessMode(networkManager->wirelessNetworkDevices().first()->mode())); + wirelessModeCharacteristicData.setValue(WirelessService::getWirelessMode(networkManager->wirelessNetworkDevices().first()->wirelessMode())); } serviceData.addCharacteristic(wirelessModeCharacteristicData); @@ -190,16 +190,16 @@ QByteArray WirelessService::getWirelessNetworkDeviceState(const NetworkDevice::N return QByteArray::fromHex("00"); } -QByteArray WirelessService::getWirelessMode(WirelessNetworkDevice::Mode mode) +QByteArray WirelessService::getWirelessMode(WirelessNetworkDevice::WirelessMode mode) { switch (mode) { - case WirelessNetworkDevice::ModeUnknown: + case WirelessNetworkDevice::WirelessModeUnknown: return QByteArray::fromHex("00"); - case WirelessNetworkDevice::ModeAdhoc: + case WirelessNetworkDevice::WirelessModeAdhoc: return QByteArray::fromHex("01"); - case WirelessNetworkDevice::ModeInfrastructure: + case WirelessNetworkDevice::WirelessModeInfrastructure: return QByteArray::fromHex("02"); - case WirelessNetworkDevice::ModeAccessPoint: + case WirelessNetworkDevice::WirelessModeAccessPoint: return QByteArray::fromHex("03"); } @@ -605,7 +605,7 @@ void WirelessService::onWirelessDeviceStateChanged(const NetworkDevice::NetworkD m_service->writeCharacteristic(characteristic, WirelessService::getWirelessNetworkDeviceState(state)); } -void WirelessService::onWirelessModeChanged(WirelessNetworkDevice::Mode mode) +void WirelessService::onWirelessModeChanged(WirelessNetworkDevice::WirelessMode mode) { if (!m_service) { qCWarning(dcNetworkManagerBluetoothServer()) << "WirelessService: Could not update wireless device mode. Service not valid"; diff --git a/libnymea-networkmanager/bluetooth/wirelessservice.h b/libnymea-networkmanager/bluetooth/wirelessservice.h index d9a813f..f879034 100644 --- a/libnymea-networkmanager/bluetooth/wirelessservice.h +++ b/libnymea-networkmanager/bluetooth/wirelessservice.h @@ -86,7 +86,7 @@ private: // Note: static to be available in serviceData static QByteArray getWirelessNetworkDeviceState(const NetworkDevice::NetworkDeviceState &state); - static QByteArray getWirelessMode(WirelessNetworkDevice::Mode mode); + static QByteArray getWirelessMode(WirelessNetworkDevice::WirelessMode mode); void streamData(const QVariantMap &responseMap); @@ -116,7 +116,7 @@ private slots: // Wireless network device void onWirelessDeviceBitRateChanged(const int &bitRate); void onWirelessDeviceStateChanged(const NetworkDevice::NetworkDeviceState &state); - void onWirelessModeChanged(WirelessNetworkDevice::Mode mode); + void onWirelessModeChanged(WirelessNetworkDevice::WirelessMode mode); }; diff --git a/libnymea-networkmanager/wirelessnetworkdevice.cpp b/libnymea-networkmanager/wirelessnetworkdevice.cpp index ea0c450..40227c8 100644 --- a/libnymea-networkmanager/wirelessnetworkdevice.cpp +++ b/libnymea-networkmanager/wirelessnetworkdevice.cpp @@ -86,9 +86,9 @@ WirelessNetworkDevice::WirelessNetworkDevice(const QDBusObjectPath &objectPath, readAccessPoints(); - setMacAddress(m_wirelessInterface->property("HwAddress").toString()); - setMode(static_cast(m_wirelessInterface->property("Mode").toUInt())); - setBitrate(m_wirelessInterface->property("Bitrate").toInt()); + m_macAddress = m_wirelessInterface->property("HwAddress").toString(); + m_wirelessMode = static_cast(m_wirelessInterface->property("Mode").toUInt()); + m_bitRate = m_wirelessInterface->property("Bitrate").toInt() / 1000; setActiveAccessPoint(qdbus_cast(m_wirelessInterface->property("ActiveAccessPoint"))); } @@ -104,9 +104,9 @@ int WirelessNetworkDevice::bitRate() const 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}. */ @@ -169,34 +169,6 @@ void WirelessNetworkDevice::readAccessPoints() 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) { if (m_activeAccessPointObjectPath != activeAccessPointObjectPath) { @@ -251,20 +223,27 @@ void WirelessNetworkDevice::propertiesChanged(const QVariantMap &properties) { //qCDebug(dcNetworkManager()) << "WirelessNetworkDevice: Property changed" << properties; - if (properties.contains("Bitrate")) - setBitrate(properties.value("Bitrate").toInt()); + if (properties.contains("Bitrate")) { + m_bitRate = properties.value("Bitrate").toInt() / 1000; + emit bitRateChanged(m_bitRate); + } - if (properties.contains("ActiveAccessPoint")) - setActiveAccessPoint(qdbus_cast(properties.value("ActiveAccessPoint"))); - - if (properties.contains("Mode")) - setMode(static_cast(m_wirelessInterface->property("Mode").toUInt())); + if (properties.contains("Mode")) { + m_wirelessMode = static_cast(m_wirelessInterface->property("Mode").toUInt()); + emit wirelessModeChanged(m_wirelessMode); + } // Note: available since 1.12 (-1 means never scanned) - if (properties.contains("LastScan")) - setLastScan(m_wirelessInterface->property("LastScan").toInt()); + if (properties.contains("LastScan")) { + m_lastScan = m_wirelessInterface->property("LastScan").toInt(); + emit lastScanChanged(m_lastScan); + } + if (properties.contains("ActiveAccessPoint")) { + setActiveAccessPoint(qdbus_cast(properties.value("ActiveAccessPoint"))); + } + emit deviceChanged(); } /*! 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() << device->macAddress() << ", "; - debug.nospace() << device->mode() << ", "; + debug.nospace() << device->wirelessMode() << ", "; debug.nospace() << device->bitRate() << " [Mb/s], "; debug.nospace() << device->deviceStateString() << ") "; return debug.space(); diff --git a/libnymea-networkmanager/wirelessnetworkdevice.h b/libnymea-networkmanager/wirelessnetworkdevice.h index 0dac008..667734c 100644 --- a/libnymea-networkmanager/wirelessnetworkdevice.h +++ b/libnymea-networkmanager/wirelessnetworkdevice.h @@ -46,20 +46,20 @@ class WirelessNetworkDevice : public NetworkDevice { Q_OBJECT public: - enum Mode { - ModeUnknown = 0, - ModeAdhoc = 1, - ModeInfrastructure = 2, - ModeAccessPoint = 3 + enum WirelessMode { + WirelessModeUnknown = 0, + WirelessModeAdhoc = 1, + WirelessModeInfrastructure = 2, + WirelessModeAccessPoint = 3 }; - Q_ENUM(Mode) + Q_ENUM(WirelessMode) explicit WirelessNetworkDevice(const QDBusObjectPath &objectPath, QObject *parent = nullptr); // Properties QString macAddress() const; int bitRate() const; - Mode mode() const; + WirelessMode wirelessMode() const; WirelessAccessPoint *activeAccessPoint(); // Accesspoints @@ -70,13 +70,23 @@ public: // Methods 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: QDBusInterface *m_wirelessInterface = nullptr; WirelessAccessPoint *m_activeAccessPoint = nullptr; int m_bitRate; QString m_macAddress; - Mode m_mode = ModeUnknown; + WirelessMode m_wirelessMode = WirelessModeUnknown; int m_lastScan = -1; QDBusObjectPath m_activeAccessPointObjectPath; @@ -84,21 +94,7 @@ private: void readAccessPoints(); - void setMacAddress(const QString &macAddress); - void setMode(Mode mode); - void setBitrate(int bitRate); - void setLastScan(int lastScan); 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);