/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Copyright (C) 2018 Simon Stürz * * * * This file is part of libnymea-networkmanager. * * * * libnymea-networkmanager is free software: you can redistribute it and/or * * modify it under the terms of the GNU General Public License as published by * * the Free Software Foundation, either version 3 of the License, * * or (at your option) any later version. * * * * libnymea-networkmanager is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License along * * with libnymea-networkmanager. If not, see . * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ #ifndef WIRELESSNETWORKMANAGER_H #define WIRELESSNETWORKMANAGER_H #include #include #include #include #include #include #include #include "networkdevice.h" #include "wirelessaccesspoint.h" class WirelessNetworkDevice : public NetworkDevice { Q_OBJECT public: enum Mode { ModeUnknown = 0, ModeAdhoc = 1, ModeInfrastructure = 2, ModeAccessPoint = 3 }; Q_ENUM(Mode) explicit WirelessNetworkDevice(const QDBusObjectPath &objectPath, QObject *parent = nullptr); // Properties QString macAddress() const; int bitRate() const; Mode mode() const; WirelessAccessPoint *activeAccessPoint(); // Accesspoints QList accessPoints(); WirelessAccessPoint *getAccessPoint(const QString &ssid); WirelessAccessPoint *getAccessPoint(const QDBusObjectPath &objectPath); // Methods void scanWirelessNetworks(); private: QDBusInterface *m_wirelessInterface = nullptr; WirelessAccessPoint *m_activeAccessPoint = nullptr; int m_bitRate; QString m_macAddress; Mode m_mode = ModeUnknown; QDBusObjectPath m_activeAccessPointObjectPath; QHash m_accessPointsTable; void readAccessPoints(); void setMacAddress(const QString &macAddress); void setMode(Mode mode); void setBitrate(int bitRate); 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); #endif // WIRELESSNETWORKMANAGER_H