improve network manager api

This commit is contained in:
Simon Stürz 2016-10-05 18:53:31 +02:00 committed by Michael Zanetti
parent 27dcedba70
commit a3352f4787
10 changed files with 343 additions and 260 deletions

View File

@ -327,8 +327,8 @@ void GuhCore::executeRuleActions(const QList<RuleAction> ruleActions)
qCWarning(dcRuleEngine) << "Error executing action:" << status;
}
// if (status != DeviceManager::DeviceErrorAsync)
// m_logger->logAction(action, status == DeviceManager::DeviceErrorNoError ? Logging::LoggingLevelInfo : Logging::LoggingLevelAlert, status);
// if (status != DeviceManager::DeviceErrorAsync)
// m_logger->logAction(action, status == DeviceManager::DeviceErrorNoError ? Logging::LoggingLevelInfo : Logging::LoggingLevelAlert, status);
}
}
@ -461,11 +461,8 @@ GuhCore::GuhCore(QObject *parent) :
m_webServer = new WebServer(m_configuration->webServerAddress(), m_configuration->webServerPort(), m_configuration->webServerPublicFolder(), this);
m_serverManager->restServer()->registerWebserver(m_webServer);
if (!NetworkManager::available()) {
m_networkManager = 0;
} else {
m_networkManager = new NetworkManager(this);
}
// Create the NetworkManager
m_networkManager = new NetworkManager(this);
// Connect the configuration changes
connect(m_configuration, &GuhConfiguration::cloudEnabledChanged, m_cloudManager, &CloudManager::onCloudEnabledChanged);

View File

@ -81,7 +81,7 @@ namespace guhserver {
return s_##typeName; \
} \
static QString typeName##ToString(className::enumName value) { \
QMetaObject metaObject = className::staticMetaObject; \
const QMetaObject &metaObject = className::staticMetaObject; \
int enumIndex = metaObject.indexOfEnumerator(enumString); \
QMetaEnum metaEnum = metaObject.enumerator(enumIndex); \
return metaEnum.valueToKey(metaEnum.value(value)); \

View File

@ -85,6 +85,31 @@ NetworkManagerHandler::NetworkManagerHandler(QObject *parent) :
setParams("ConnectWifiNetwork", params);
returns.insert("networkManagerError", JsonTypes::networkManagerErrorRef());
setReturns("ConnectWifiNetwork", returns);
// Notifications
params.clear(); returns.clear();
setDescription("NetworkStatusChanged", "Emitted whenever a status of a NetworkManager changes.");
params.insert("status", status);
setParams("NetworkStatusChanged", params);
params.clear(); returns.clear();
setDescription("NetworkDeviceChanged", "Emitted whenever a NetworkDevice has changed.");
params.insert("networkDevice", JsonTypes::networkDeviceRef());
setParams("NetworkDeviceChanged", params);
params.clear(); returns.clear();
setDescription("NetworkDeviceAdded", "Emitted whenever a new NetworkDevice was added.");
params.insert("networkDevice", JsonTypes::networkDeviceRef());
setParams("NetworkDeviceAdded", params);
params.clear(); returns.clear();
setDescription("NetworkDeviceRemoved", "Emitted whenever a NetworkDevice was removed.");
params.insert("networkDevice", JsonTypes::networkDeviceRef());
setParams("NetworkDeviceRemoved", params);
connect(GuhCore::instance()->networkManager(), &NetworkManager::stateChanged, this, &NetworkManagerHandler::onNetworkManagerStatusChanged);
connect(GuhCore::instance()->networkManager(), &NetworkManager::networkingEnabledChanged, this, &NetworkManagerHandler::onNetworkManagerStatusChanged);
connect(GuhCore::instance()->networkManager(), &NetworkManager::wirelessEnabledChanged, this, &NetworkManagerHandler::onNetworkManagerStatusChanged);
}
QString NetworkManagerHandler::name() const
@ -101,11 +126,8 @@ JsonReply *NetworkManagerHandler::GetNetworkStatus(const QVariantMap &params)
return createReply(statusToReply(NetworkManager::NetworkManagerErrorNetworkManagerNotAvailable));
// Pack network manager status
QVariantMap returns; QVariantMap status;
status.insert("networkingEnabled", GuhCore::instance()->networkManager()->networkingEnabled());
status.insert("wirelessNetworkingEnabled", GuhCore::instance()->networkManager()->wirelessEnabled());
status.insert("state", JsonTypes::networkManagerStateToString(GuhCore::instance()->networkManager()->state()));
returns.insert("status", status);
QVariantMap returns;
returns.insert("status", packNetworkManagerStatus());
return createReply(returns);
}
@ -127,9 +149,10 @@ JsonReply *NetworkManagerHandler::EnableWirelessNetworking(const QVariantMap &pa
if (!GuhCore::instance()->networkManager()->available())
return createReply(statusToReply(NetworkManager::NetworkManagerErrorNetworkManagerNotAvailable));
bool enable = params.value("enable").toBool();
if (!GuhCore::instance()->networkManager()->wifiAvailable())
return createReply(statusToReply(NetworkManager::NetworkManagerErrorWirelessNotAvailable));
if (!GuhCore::instance()->networkManager()->enableWireless(enable))
if (!GuhCore::instance()->networkManager()->enableWireless(params.value("enable").toBool()))
return createReply(statusToReply(NetworkManager::NetworkManagerErrorUnknownError));
return createReply(statusToReply(NetworkManager::NetworkManagerErrorNoError));
@ -139,11 +162,13 @@ JsonReply *NetworkManagerHandler::GetWirelessAccessPoints(const QVariantMap &par
{
Q_UNUSED(params);
if (!GuhCore::instance()->networkManager()->available())
return createReply(statusToReply(NetworkManager::NetworkManagerErrorNetworkManagerNotAvailable));
if (!GuhCore::instance()->networkManager()->wifiAvailable())
return createReply(statusToReply(NetworkManager::NetworkManagerErrorWirelessNotAvailable));
QVariantList wirelessAccessPoints;
// TODO: check available
// TODO: returns (networkManager error)
foreach (WirelessAccessPoint *wirelessAccessPoint, GuhCore::instance()->networkManager()->wirelessNetworkManager()->accessPoints())
wirelessAccessPoints.append(JsonTypes::packWirelessAccessPoint(wirelessAccessPoint));
@ -156,11 +181,10 @@ JsonReply *NetworkManagerHandler::GetNetworkDevices(const QVariantMap &params)
{
Q_UNUSED(params);
if (!GuhCore::instance()->networkManager()->available())
return createReply(statusToReply(NetworkManager::NetworkManagerErrorNetworkManagerNotAvailable));
QVariantList networkDevices;
// TODO: check available
// TODO: returns (networkManager error)
foreach (NetworkDevice *networkDevice, GuhCore::instance()->networkManager()->networkDevices())
networkDevices.append(JsonTypes::packNetworkDevice(networkDevice));
@ -173,27 +197,58 @@ JsonReply *NetworkManagerHandler::ScanWifiNetworks(const QVariantMap &params)
{
Q_UNUSED(params);
// TODO: check available
// TODO: returns (networkManager error)
if (!GuhCore::instance()->networkManager()->available())
return createReply(statusToReply(NetworkManager::NetworkManagerErrorNetworkManagerNotAvailable));
if (!GuhCore::instance()->networkManager()->wifiAvailable())
return createReply(statusToReply(NetworkManager::NetworkManagerErrorWirelessNotAvailable));
GuhCore::instance()->networkManager()->wirelessNetworkManager()->scanWirelessNetworks();
QVariantMap returns;
return createReply(returns);
return createReply(statusToReply(NetworkManager::NetworkManagerErrorNoError));
}
JsonReply *NetworkManagerHandler::ConnectWifiNetwork(const QVariantMap &params)
{
if (!GuhCore::instance()->networkManager()->available())
return createReply(statusToReply(NetworkManager::NetworkManagerErrorNetworkManagerNotAvailable));
if (!GuhCore::instance()->networkManager()->wifiAvailable())
return createReply(statusToReply(NetworkManager::NetworkManagerErrorWirelessNotAvailable));
QString ssid = params.value("ssid").toString();
QString password = params.value("password").toString();
NetworkManager::NetworkManagerError error = GuhCore::instance()->networkManager()->connectWifi(ssid, password);
// TODO: check available
// TODO: returns (networkManager error)
return createReply(statusToReply(error));
}
GuhCore::instance()->networkManager()->connectWifi(ssid, password);
QVariantMap NetworkManagerHandler::packNetworkManagerStatus()
{
QVariantMap status;
status.insert("networkingEnabled", GuhCore::instance()->networkManager()->networkingEnabled());
status.insert("wirelessNetworkingEnabled", GuhCore::instance()->networkManager()->wirelessEnabled());
status.insert("state", GuhCore::instance()->networkManager()->stateString());
return status;
}
QVariantMap returns;
return createReply(returns);
void NetworkManagerHandler::onNetworkManagerStatusChanged()
{
emit NetworkStatusChanged(packNetworkManagerStatus());
}
void NetworkManagerHandler::onNetworkDeviceChanged(NetworkDevice *networkDevice)
{
Q_UNUSED(networkDevice)
}
void NetworkManagerHandler::onNetworkDeviceAdded(NetworkDevice *networkDevice)
{
Q_UNUSED(networkDevice)
}
void NetworkManagerHandler::onNetworkDeviceRemoved(NetworkDevice *networkDevice)
{
Q_UNUSED(networkDevice)
}
}

View File

@ -43,10 +43,20 @@ public:
Q_INVOKABLE JsonReply *ScanWifiNetworks(const QVariantMap &params);
Q_INVOKABLE JsonReply *ConnectWifiNetwork(const QVariantMap &params);
private:
QVariantMap packNetworkManagerStatus();
signals:
void NetworkStatusChanged(const QVariantMap &params);
void NetworkDeviceChanged(const QVariantMap &params);
void NetworkDeviceAdded(const QVariantMap &params);
void NetworkDeviceRemoved(const QVariantMap &params);
public slots:
private slots:
void onNetworkManagerStatusChanged();
void onNetworkDeviceChanged(NetworkDevice *networkDevice);
void onNetworkDeviceAdded(NetworkDevice *networkDevice);
void onNetworkDeviceRemoved(NetworkDevice *networkDevice);
};
}

View File

@ -30,8 +30,8 @@ NetworkDevice::NetworkDevice(const QDBusObjectPath &objectPath, QObject *parent)
m_objectPath(objectPath),
m_mtu(0),
m_metered(0),
m_deviceState(DeviceStateUnknown),
m_deviceStateReason(DeviceStateReasonUnknown)
m_deviceState(NetworkDeviceStateUnknown),
m_deviceStateReason(NetworkDeviceStateReasonUnknown)
{
QDBusConnection systemBus = QDBusConnection::systemBus();
if (!systemBus.isConnected()) {
@ -55,7 +55,7 @@ NetworkDevice::NetworkDevice(const QDBusObjectPath &objectPath, QObject *parent)
m_mtu = networkDeviceInterface.property("Mtu").toUInt();
m_metered = networkDeviceInterface.property("Metered").toUInt();
m_deviceState = DeviceState(networkDeviceInterface.property("State").toUInt());
m_deviceState = NetworkDeviceState(networkDeviceInterface.property("State").toUInt());
m_deviceType = DeviceType(networkDeviceInterface.property("DeviceType").toUInt());
m_activeConnection = qdbus_cast<QDBusObjectPath>(networkDeviceInterface.property("ActiveConnection"));
@ -114,12 +114,17 @@ uint NetworkDevice::metered() const
return m_metered;
}
NetworkDevice::DeviceState NetworkDevice::deviceState() const
NetworkDevice::NetworkDeviceState NetworkDevice::deviceState() const
{
return m_deviceState;
}
NetworkDevice::DeviceStateReason NetworkDevice::deviceStateReason() const
QString NetworkDevice::deviceStateString() const
{
return NetworkDevice::deviceStateToString(m_deviceState);
}
NetworkDevice::NetworkDeviceStateReason NetworkDevice::deviceStateReason() const
{
return m_deviceStateReason;
}
@ -152,27 +157,27 @@ QString NetworkDevice::deviceTypeToString(const NetworkDevice::DeviceType &devic
return QString(metaEnum.valueToKey(deviceType)).remove("DeviceType");
}
QString NetworkDevice::deviceStateToString(const NetworkDevice::DeviceState &deviceState)
QString NetworkDevice::deviceStateToString(const NetworkDevice::NetworkDeviceState &deviceState)
{
QMetaObject metaObject = NetworkDevice::staticMetaObject;
int enumIndex = metaObject.indexOfEnumerator(QString("DeviceState").toLatin1().data());
int enumIndex = metaObject.indexOfEnumerator(QString("NetworkDeviceState").toLatin1().data());
QMetaEnum metaEnum = metaObject.enumerator(enumIndex);
return QString(metaEnum.valueToKey(deviceState)).remove("DeviceState");
return QString(metaEnum.valueToKey(deviceState));
}
QString NetworkDevice::deviceStateReasonToString(const NetworkDevice::DeviceStateReason &deviceStateReason)
QString NetworkDevice::deviceStateReasonToString(const NetworkDevice::NetworkDeviceStateReason &deviceStateReason)
{
QMetaObject metaObject = NetworkDevice::staticMetaObject;
int enumIndex = metaObject.indexOfEnumerator(QString("DeviceStateReason").toLatin1().data());
int enumIndex = metaObject.indexOfEnumerator(QString("NetworkDeviceStateReason").toLatin1().data());
QMetaEnum metaEnum = metaObject.enumerator(enumIndex);
return QString(metaEnum.valueToKey(deviceStateReason)).remove("DeviceStateReason");
return QString(metaEnum.valueToKey(deviceStateReason));
}
void NetworkDevice::onStateChanged(uint newState, uint oldState, uint reason)
{
qCDebug(dcNetworkManager()) << m_interface << deviceStateToString(DeviceState(oldState)) << "-->" << deviceStateToString(DeviceState(newState)) << ":" << deviceStateReasonToString(DeviceStateReason(reason));
qCDebug(dcNetworkManager()) << m_interface << deviceStateToString(NetworkDeviceState(oldState)) << "-->" << deviceStateToString(NetworkDeviceState(newState)) << ":" << deviceStateReasonToString(NetworkDeviceStateReason(reason));
m_deviceState = DeviceState(newState);
m_deviceState = NetworkDeviceState(newState);
emit deviceStateChanged();
}

View File

@ -36,90 +36,90 @@ class NetworkDevice : public QObject
{
Q_OBJECT
Q_ENUMS(DeviceType)
Q_ENUMS(DeviceState)
Q_ENUMS(DeviceStateReason)
Q_ENUMS(NetworkDeviceState)
Q_ENUMS(NetworkDeviceStateReason)
public:
enum DeviceState {
DeviceStateUnknown = 0,
DeviceStateUnmanaged = 10,
DeviceStateUnavailable = 20,
DeviceStateDisconnected = 30,
DeviceStatePrepare = 40,
DeviceStateConfig = 50,
DeviceStateNeedAuth = 60,
DeviceStateIpConfig = 70,
DeviceStateIpCheck = 80,
DeviceStateSecondaries = 90,
DeviceStateActivated = 100,
DeviceStateDeactivating = 110,
DeviceStateFailed = 120
enum NetworkDeviceState {
NetworkDeviceStateUnknown = 0,
NetworkDeviceStateUnmanaged = 10,
NetworkDeviceStateUnavailable = 20,
NetworkDeviceStateDisconnected = 30,
NetworkDeviceStatePrepare = 40,
NetworkDeviceStateConfig = 50,
NetworkDeviceStateNeedAuth = 60,
NetworkDeviceStateIpConfig = 70,
NetworkDeviceStateIpCheck = 80,
NetworkDeviceStateSecondaries = 90,
NetworkDeviceStateActivated = 100,
NetworkDeviceStateDeactivating = 110,
NetworkDeviceStateFailed = 120
};
enum DeviceStateReason {
DeviceStateReasonNone = 0,
DeviceStateReasonUnknown = 1,
DeviceStateReasonNowManaged = 2,
DeviceStateReasonNowUnmanaged = 3,
DeviceStateReasonConfigFailed = 4,
DeviceStateReasonIpConfigUnavailable = 5,
DeviceStateReasonIpConfigExpired = 6,
DeviceStateReasonNoSecrets = 7,
DeviceStateReasonSupplicantDisconnected = 8,
DeviceStateReasonSupplicantConfigFailed = 9,
DeviceStateReasonSupplicantFailed = 10,
DeviceStateReasonSupplicantTimeout = 11,
DeviceStateReasonPppStartFailed = 12,
DeviceStateReasonPppDisconnected = 13,
DeviceStateReasonPppFailed = 14,
DeviceStateReasonDhcpStartFailed = 15,
DeviceStateReasonDhcpError = 16,
DeviceStateReasonDhcpFailed = 17,
DeviceStateReasonSharedStartFailed = 18,
DeviceStateReasonSharedFailed = 19,
DeviceStateReasonAutoIpStartFailed = 20,
DeviceStateReasonAutoIpError = 21,
DeviceStateReasonAutoIpFailed = 22,
DeviceStateReasonModemBusy = 23,
DeviceStateReasonModemNoDialTone = 24,
DeviceStateReasonModemNoCarrier = 25,
DeviceStateReasonModemDialTimeout = 26,
DeviceStateReasonModemDialFailed = 27,
DeviceStateReasonModemInitFailed = 28,
DeviceStateReasonGsmApnFailed = 29,
DeviceStateReasonGsmRegistrationNotSearching = 30,
DeviceStateReasonGsmRegistrationDenied = 31,
DeviceStateReasonGsmRegistrationTimeout = 32,
DeviceStateReasonGsmRegistrationFailed = 33,
DeviceStateReasonGsmPinCheckFailed = 34,
DeviceStateReasonFirmwareMissing = 35,
DeviceStateReasonRemoved = 36,
DeviceStateReasonSleeping = 37,
DeviceStateReasonConnectionRemoved = 38,
DeviceStateReasonUserRequest = 39,
DeviceStateReasonCarrier = 40,
DeviceStateReasonConnectionAssumed = 41,
DeviceStateReasonSupplicantAvailable = 42,
DeviceStateReasonModemNotFound = 43,
DeviceStateReasonBtFailed = 44,
DeviceStateReasonGsmSimNotInserted = 45,
DeviceStateReasonGsmSimPinRequired = 46,
DeviceStateReasonGsmSimPukRequired = 47,
DeviceStateReasonGsmSimWrong = 48,
DeviceStateReasonInfinibandMode = 49,
DeviceStateReasonDependencyFailed = 50,
DeviceStateReasonBR2684Failed = 51,
DeviceStateReasonModemManagerUnavailable = 52,
DeviceStateReasonSsidNotFound = 53,
DeviceStateReasonSecondaryConnectionFailed = 54,
DeviceStateReasonDcbFoecFailed = 55,
DeviceStateReasonTeamdControlFailed = 56,
DeviceStateReasonModemFailed = 57,
DeviceStateReasonModemAvailable = 58,
DeviceStateReasonSimPinIncorrect = 59,
DeviceStateReasonNewActivision = 60,
DeviceStateReasonParentChanged = 61,
DeviceStateReasonParentManagedChanged = 62
enum NetworkDeviceStateReason {
NetworkDeviceStateReasonNone = 0,
NetworkDeviceStateReasonUnknown = 1,
NetworkDeviceStateReasonNowManaged = 2,
NetworkDeviceStateReasonNowUnmanaged = 3,
NetworkDeviceStateReasonConfigFailed = 4,
NetworkDeviceStateReasonIpConfigUnavailable = 5,
NetworkDeviceStateReasonIpConfigExpired = 6,
NetworkDeviceStateReasonNoSecrets = 7,
NetworkDeviceStateReasonSupplicantDisconnected = 8,
NetworkDeviceStateReasonSupplicantConfigFailed = 9,
NetworkDeviceStateReasonSupplicantFailed = 10,
NetworkDeviceStateReasonSupplicantTimeout = 11,
NetworkDeviceStateReasonPppStartFailed = 12,
NetworkDeviceStateReasonPppDisconnected = 13,
NetworkDeviceStateReasonPppFailed = 14,
NetworkDeviceStateReasonDhcpStartFailed = 15,
NetworkDeviceStateReasonDhcpError = 16,
NetworkDeviceStateReasonDhcpFailed = 17,
NetworkDeviceStateReasonSharedStartFailed = 18,
NetworkDeviceStateReasonSharedFailed = 19,
NetworkDeviceStateReasonAutoIpStartFailed = 20,
NetworkDeviceStateReasonAutoIpError = 21,
NetworkDeviceStateReasonAutoIpFailed = 22,
NetworkDeviceStateReasonModemBusy = 23,
NetworkDeviceStateReasonModemNoDialTone = 24,
NetworkDeviceStateReasonModemNoCarrier = 25,
NetworkDeviceStateReasonModemDialTimeout = 26,
NetworkDeviceStateReasonModemDialFailed = 27,
NetworkDeviceStateReasonModemInitFailed = 28,
NetworkDeviceStateReasonGsmApnFailed = 29,
NetworkDeviceStateReasonGsmRegistrationNotSearching = 30,
NetworkDeviceStateReasonGsmRegistrationDenied = 31,
NetworkDeviceStateReasonGsmRegistrationTimeout = 32,
NetworkDeviceStateReasonGsmRegistrationFailed = 33,
NetworkDeviceStateReasonGsmPinCheckFailed = 34,
NetworkDeviceStateReasonFirmwareMissing = 35,
NetworkDeviceStateReasonRemoved = 36,
NetworkDeviceStateReasonSleeping = 37,
NetworkDeviceStateReasonConnectionRemoved = 38,
NetworkDeviceStateReasonUserRequest = 39,
NetworkDeviceStateReasonCarrier = 40,
NetworkDeviceStateReasonConnectionAssumed = 41,
NetworkDeviceStateReasonSupplicantAvailable = 42,
NetworkDeviceStateReasonModemNotFound = 43,
NetworkDeviceStateReasonBtFailed = 44,
NetworkDeviceStateReasonGsmSimNotInserted = 45,
NetworkDeviceStateReasonGsmSimPinRequired = 46,
NetworkDeviceStateReasonGsmSimPukRequired = 47,
NetworkDeviceStateReasonGsmSimWrong = 48,
NetworkDeviceStateReasonInfinibandMode = 49,
NetworkDeviceStateReasonDependencyFailed = 50,
NetworkDeviceStateReasonBR2684Failed = 51,
NetworkDeviceStateReasonModemManagerUnavailable = 52,
NetworkDeviceStateReasonSsidNotFound = 53,
NetworkDeviceStateReasonSecondaryConnectionFailed = 54,
NetworkDeviceStateReasonDcbFoecFailed = 55,
NetworkDeviceStateReasonTeamdControlFailed = 56,
NetworkDeviceStateReasonModemFailed = 57,
NetworkDeviceStateReasonModemAvailable = 58,
NetworkDeviceStateReasonSimPinIncorrect = 59,
NetworkDeviceStateReasonNewActivision = 60,
NetworkDeviceStateReasonParentChanged = 61,
NetworkDeviceStateReasonParentManagedChanged = 62
};
enum DeviceType {
@ -157,8 +157,10 @@ public:
QString physicalPortId() const;
uint mtu() const;
uint metered() const;
DeviceState deviceState() const;
DeviceStateReason deviceStateReason() const;
NetworkDeviceState deviceState() const;
QString deviceStateString() const;
NetworkDeviceStateReason deviceStateReason() const;
DeviceType deviceType() const;
QDBusObjectPath activeConnection() const;
@ -166,9 +168,8 @@ public:
QList<QDBusObjectPath> availableConnections() const;
static QString deviceTypeToString(const DeviceType &deviceType);
static QString deviceStateToString(const DeviceState &deviceState);
static QString deviceStateReasonToString(const DeviceStateReason &deviceStateReason);
static QString deviceStateToString(const NetworkDeviceState &deviceState);
static QString deviceStateReasonToString(const NetworkDeviceStateReason &deviceStateReason);
private:
QDBusObjectPath m_objectPath;
@ -182,8 +183,8 @@ private:
QString m_physicalPortId;
uint m_mtu;
uint m_metered;
DeviceState m_deviceState;
DeviceStateReason m_deviceStateReason;
NetworkDeviceState m_deviceState;
NetworkDeviceStateReason m_deviceStateReason;
DeviceType m_deviceType;
QDBusObjectPath m_activeConnection;

View File

@ -31,18 +31,28 @@ NetworkManager::NetworkManager(QObject *parent) :
QObject(parent),
m_networkManagerInterface(0),
m_wirelessNetworkManager(0),
m_available(false),
m_wifiAvailable(false),
m_state(NetworkManagerStateUnknown),
m_connectivityState(NetworkManagerConnectivityStateUnknown),
m_networkingEnabled(false),
m_wirelessEnabled(false)
{
// Check DBus connection
if (!QDBusConnection::systemBus().isConnected()) {
qCWarning(dcNetworkManager()) << "System DBus not connected. NetworkManagre not available.";
return;
}
// Create interface
m_networkManagerInterface = new QDBusInterface(serviceString, pathString, serviceString, QDBusConnection::systemBus(), this);
if(!m_networkManagerInterface->isValid()) {
qCWarning(dcNetworkManager()) << "Invalid DBus network manager interface";
qCWarning(dcNetworkManager()) << "Invalid DBus network manager interface. NetworkManagre not available.";
return;
}
m_available = true;
// Read properties
setVersion(m_networkManagerInterface->property("Version").toString());
setState((NetworkManagerState)m_networkManagerInterface->property("State").toUInt());
@ -65,19 +75,12 @@ NetworkManager::NetworkManager(QObject *parent) :
bool NetworkManager::available()
{
QDBusConnection systemBus = QDBusConnection::systemBus();
if (!systemBus.isConnected()) {
qCWarning(dcNetworkManager()) << "System DBus not connected";
return false;
}
return m_available;
}
QDBusInterface networkInterface(serviceString, pathString, serviceString, QDBusConnection::systemBus());
if(!networkInterface.isValid()) {
qCWarning(dcNetworkManager()) << "Invalid DBus network manager interface";
return false;
}
return true;
bool NetworkManager::wifiAvailable()
{
return m_wifiAvailable;
}
QList<NetworkDevice *> NetworkManager::networkDevices() const
@ -100,6 +103,11 @@ NetworkManager::NetworkManagerState NetworkManager::state() const
return m_state;
}
QString NetworkManager::stateString() const
{
return networkManagerStateToString(m_state);
}
NetworkManager::NetworkManagerConnectivityState NetworkManager::connectivityState() const
{
return m_connectivityState;
@ -197,7 +205,7 @@ bool NetworkManager::enableWireless(const bool &enabled)
if (m_wirelessEnabled == enabled)
return true;
return m_networkManagerInterface->setProperty("WirelessEnabled", true);
return m_networkManagerInterface->setProperty("WirelessEnabled", enabled);
}
void NetworkManager::loadDevices()
@ -226,7 +234,7 @@ QString NetworkManager::networkManagerStateToString(const NetworkManager::Networ
QMetaObject metaObject = NetworkManager::staticMetaObject;
int enumIndex = metaObject.indexOfEnumerator(QString("NetworkManagerState").toLatin1().data());
QMetaEnum metaEnum = metaObject.enumerator(enumIndex);
return QString(metaEnum.valueToKey(state)).remove("NetworkManagerState");
return QString(metaEnum.valueToKey(state));
}
QString NetworkManager::networkManagerConnectivityStateToString(const NetworkManager::NetworkManagerConnectivityState &state)
@ -274,8 +282,10 @@ void NetworkManager::onDeviceAdded(const QDBusObjectPath &deviceObjectPath)
NetworkDevice *networkDevice = new NetworkDevice(deviceObjectPath, this);
qCDebug(dcNetworkManager()) << "[+]" << networkDevice;
if (!m_wirelessNetworkManager && networkDevice->deviceType() == NetworkDevice::DeviceTypeWifi)
if (!m_wirelessNetworkManager && networkDevice->deviceType() == NetworkDevice::DeviceTypeWifi) {
m_wifiAvailable = true;
m_wirelessNetworkManager = new WirelessNetworkManager(networkDevice->objectPath(), this);
}
m_networkDevices.insert(deviceObjectPath, networkDevice);
}

View File

@ -77,7 +77,8 @@ public:
explicit NetworkManager(QObject *parent = 0);
static bool available();
bool available();
bool wifiAvailable();
QList<NetworkDevice *> networkDevices() const;
WirelessNetworkManager *wirelessNetworkManager() const;
@ -85,6 +86,7 @@ public:
// Properties
QString version() const;
NetworkManagerState state() const;
QString stateString() const;
NetworkManagerConnectivityState connectivityState() const;
NetworkManagerError connectWifi(const QString &ssid, const QString &password);
@ -104,6 +106,9 @@ private:
NetworkSettings *m_networkSettings;
WirelessNetworkManager *m_wirelessNetworkManager;
bool m_available;
bool m_wifiAvailable;
QString m_version;
NetworkManagerState m_state;

View File

@ -33,8 +33,8 @@ WirelessNetworkManager::WirelessNetworkManager(const QDBusObjectPath &objectPath
m_objectPath(objectPath),
m_connected(false),
m_managed(false),
m_state(DeviceStateUnknown),
m_stateReason(DeviceStateReasonUnknown)
m_state(NetworkDeviceStateUnknown),
m_stateReason(NetworkDeviceStateReasonUnknown)
{
QDBusConnection systemBus = QDBusConnection::systemBus();
if (!systemBus.isConnected()) {
@ -93,12 +93,12 @@ bool WirelessNetworkManager::managed() const
return m_managed;
}
WirelessNetworkManager::DeviceState WirelessNetworkManager::state() const
WirelessNetworkManager::NetworkDeviceState WirelessNetworkManager::state() const
{
return m_state;
}
WirelessNetworkManager::DeviceStateReason WirelessNetworkManager::stateReason() const
WirelessNetworkManager::NetworkDeviceStateReason WirelessNetworkManager::stateReason() const
{
return m_stateReason;
}
@ -144,20 +144,20 @@ WirelessAccessPoint *WirelessNetworkManager::getAccessPoint(const QDBusObjectPat
return m_accessPointsTable.value(objectPath);
}
QString WirelessNetworkManager::deviceStateToString(const WirelessNetworkManager::DeviceState &state)
QString WirelessNetworkManager::deviceStateToString(const WirelessNetworkManager::NetworkDeviceState &state)
{
QMetaObject metaObject = WirelessNetworkManager::staticMetaObject;
int enumIndex = metaObject.indexOfEnumerator(QString("DeviceState").toLatin1().data());
int enumIndex = metaObject.indexOfEnumerator(QString("NetworkDeviceState").toLatin1().data());
QMetaEnum metaEnum = metaObject.enumerator(enumIndex);
return QString(metaEnum.valueToKey(state)).remove("DeviceState");
return QString(metaEnum.valueToKey(state)).remove("NetworkDeviceState");
}
QString WirelessNetworkManager::deviceStateReasonToString(const WirelessNetworkManager::DeviceStateReason &stateReason)
QString WirelessNetworkManager::deviceStateReasonToString(const WirelessNetworkManager::NetworkDeviceStateReason &stateReason)
{
QMetaObject metaObject = WirelessNetworkManager::staticMetaObject;
int enumIndex = metaObject.indexOfEnumerator(QString("DeviceStateReason").toLatin1().data());
int enumIndex = metaObject.indexOfEnumerator(QString("NetworkDeviceStateReason").toLatin1().data());
QMetaEnum metaEnum = metaObject.enumerator(enumIndex);
return QString(metaEnum.valueToKey(stateReason)).remove("DeviceStateReason");
return QString(metaEnum.valueToKey(stateReason)).remove("NetworkDeviceStateReason");
}
void WirelessNetworkManager::readAccessPoints()
@ -207,7 +207,7 @@ void WirelessNetworkManager::readWirelessDeviceProperties()
m_driverVersion = driverInterface.property("DriverVersion").toString();
setManaged(driverInterface.property("Managed").toBool());
setState(DeviceState(driverInterface.property("State").toUInt()));
setState(NetworkDeviceState(driverInterface.property("State").toUInt()));
}
void WirelessNetworkManager::setConnected(const bool &connected)
@ -218,13 +218,13 @@ void WirelessNetworkManager::setConnected(const bool &connected)
}
}
void WirelessNetworkManager::setState(const DeviceState &state)
void WirelessNetworkManager::setState(const NetworkDeviceState &state)
{
m_state = state;
emit stateChanged(m_state);
switch (state) {
case DeviceStateActivated:
case NetworkDeviceStateActivated:
setConnected(true);
break;
default:
@ -233,7 +233,7 @@ void WirelessNetworkManager::setState(const DeviceState &state)
}
}
void WirelessNetworkManager::setStateReason(const WirelessNetworkManager::DeviceStateReason &stateReason)
void WirelessNetworkManager::setStateReason(const WirelessNetworkManager::NetworkDeviceStateReason &stateReason)
{
m_stateReason = stateReason;
}
@ -246,10 +246,10 @@ void WirelessNetworkManager::setManaged(const bool &managed)
void WirelessNetworkManager::deviceStateChanged(uint newState, uint oldState, uint reason)
{
qCDebug(dcNetworkManager()) << "WirelessManager: state changed" << deviceStateToString(DeviceState(oldState)) << "-->" << deviceStateToString(DeviceState(newState)) << ":" << deviceStateReasonToString(DeviceStateReason(reason));
qCDebug(dcNetworkManager()) << "WirelessManager: state changed" << deviceStateToString(NetworkDeviceState(oldState)) << "-->" << deviceStateToString(NetworkDeviceState(newState)) << ":" << deviceStateReasonToString(NetworkDeviceStateReason(reason));
setState(DeviceState(newState));
setStateReason(DeviceStateReason(reason));
setState(NetworkDeviceState(newState));
setStateReason(NetworkDeviceStateReason(reason));
}
void WirelessNetworkManager::accessPointAdded(const QDBusObjectPath &objectPath)

View File

@ -36,90 +36,90 @@ namespace guhserver {
class WirelessNetworkManager : public QObject
{
Q_OBJECT
Q_ENUMS(DeviceState)
Q_ENUMS(DeviceStateReason)
Q_ENUMS(NetworkDeviceState)
Q_ENUMS(NetworkDeviceStateReason)
public:
enum DeviceState {
DeviceStateUnknown = 0,
DeviceStateUnmanaged = 10,
DeviceStateUnavailable = 20,
DeviceStateDisconnected = 30,
DeviceStatePrepare = 40,
DeviceStateConfig = 50,
DeviceStateNeedAuth = 60,
DeviceStateIpConfig = 70,
DeviceStateIpCheck = 80,
DeviceStateSecondaries = 90,
DeviceStateActivated = 100,
DeviceStateDeactivating = 110,
DeviceStateFailed = 120
enum NetworkDeviceState {
NetworkDeviceStateUnknown = 0,
NetworkDeviceStateUnmanaged = 10,
NetworkDeviceStateUnavailable = 20,
NetworkDeviceStateDisconnected = 30,
NetworkDeviceStatePrepare = 40,
NetworkDeviceStateConfig = 50,
NetworkDeviceStateNeedAuth = 60,
NetworkDeviceStateIpConfig = 70,
NetworkDeviceStateIpCheck = 80,
NetworkDeviceStateSecondaries = 90,
NetworkDeviceStateActivated = 100,
NetworkDeviceStateDeactivating = 110,
NetworkDeviceStateFailed = 120
};
enum DeviceStateReason {
DeviceStateReasonNone = 0,
DeviceStateReasonUnknown = 1,
DeviceStateReasonNowManaged = 2,
DeviceStateReasonNowUnmanaged = 3,
DeviceStateReasonConfigFailed = 4,
DeviceStateReasonIpConfigUnavailable = 5,
DeviceStateReasonIpConfigExpired = 6,
DeviceStateReasonNoSecrets = 7,
DeviceStateReasonSupplicantDisconnected = 8,
DeviceStateReasonSupplicantConfigFailed = 9,
DeviceStateReasonSupplicantFailed = 10,
DeviceStateReasonSupplicantTimeout = 11,
DeviceStateReasonPppStartFailed = 12,
DeviceStateReasonPppDisconnected = 13,
DeviceStateReasonPppFailed = 14,
DeviceStateReasonDhcpStartFailed = 15,
DeviceStateReasonDhcpError = 16,
DeviceStateReasonDhcpFailed = 17,
DeviceStateReasonSharedStartFailed = 18,
DeviceStateReasonSharedFailed = 19,
DeviceStateReasonAutoIpStartFailed = 20,
DeviceStateReasonAutoIpError = 21,
DeviceStateReasonAutoIpFailed = 22,
DeviceStateReasonModemBusy = 23,
DeviceStateReasonModemNoDialTone = 24,
DeviceStateReasonModemNoCarrier = 25,
DeviceStateReasonModemDialTimeout = 26,
DeviceStateReasonModemDialFailed = 27,
DeviceStateReasonModemInitFailed = 28,
DeviceStateReasonGsmApnFailed = 29,
DeviceStateReasonGsmRegistrationNotSearching = 30,
DeviceStateReasonGsmRegistrationDenied = 31,
DeviceStateReasonGsmRegistrationTimeout = 32,
DeviceStateReasonGsmRegistrationFailed = 33,
DeviceStateReasonGsmPinCheckFailed = 34,
DeviceStateReasonFirmwareMissing = 35,
DeviceStateReasonRemoved = 36,
DeviceStateReasonSleeping = 37,
DeviceStateReasonConnectionRemoved = 38,
DeviceStateReasonUserRequest = 39,
DeviceStateReasonCarrier = 40,
DeviceStateReasonConnectionAssumed = 41,
DeviceStateReasonSupplicantAvailable = 42,
DeviceStateReasonModemNotFound = 43,
DeviceStateReasonBtFailed = 44,
DeviceStateReasonGsmSimNotInserted = 45,
DeviceStateReasonGsmSimPinRequired = 46,
DeviceStateReasonGsmSimPukRequired = 47,
DeviceStateReasonGsmSimWrong = 48,
DeviceStateReasonInfinibandMode = 49,
DeviceStateReasonDependencyFailed = 50,
DeviceStateReasonBR2684Failed = 51,
DeviceStateReasonModemManagerUnavailable = 52,
DeviceStateReasonSsidNotFound = 53,
DeviceStateReasonSecondaryConnectionFailed = 54,
DeviceStateReasonDcbFoecFailed = 55,
DeviceStateReasonTeamdControlFailed = 56,
DeviceStateReasonModemFailed = 57,
DeviceStateReasonModemAvailable = 58,
DeviceStateReasonSimPinIncorrect = 59,
DeviceStateReasonNewActivision = 60,
DeviceStateReasonParentChanged = 61,
DeviceStateReasonParentManagedChanged = 62
enum NetworkDeviceStateReason {
NetworkDeviceStateReasonNone = 0,
NetworkDeviceStateReasonUnknown = 1,
NetworkDeviceStateReasonNowManaged = 2,
NetworkDeviceStateReasonNowUnmanaged = 3,
NetworkDeviceStateReasonConfigFailed = 4,
NetworkDeviceStateReasonIpConfigUnavailable = 5,
NetworkDeviceStateReasonIpConfigExpired = 6,
NetworkDeviceStateReasonNoSecrets = 7,
NetworkDeviceStateReasonSupplicantDisconnected = 8,
NetworkDeviceStateReasonSupplicantConfigFailed = 9,
NetworkDeviceStateReasonSupplicantFailed = 10,
NetworkDeviceStateReasonSupplicantTimeout = 11,
NetworkDeviceStateReasonPppStartFailed = 12,
NetworkDeviceStateReasonPppDisconnected = 13,
NetworkDeviceStateReasonPppFailed = 14,
NetworkDeviceStateReasonDhcpStartFailed = 15,
NetworkDeviceStateReasonDhcpError = 16,
NetworkDeviceStateReasonDhcpFailed = 17,
NetworkDeviceStateReasonSharedStartFailed = 18,
NetworkDeviceStateReasonSharedFailed = 19,
NetworkDeviceStateReasonAutoIpStartFailed = 20,
NetworkDeviceStateReasonAutoIpError = 21,
NetworkDeviceStateReasonAutoIpFailed = 22,
NetworkDeviceStateReasonModemBusy = 23,
NetworkDeviceStateReasonModemNoDialTone = 24,
NetworkDeviceStateReasonModemNoCarrier = 25,
NetworkDeviceStateReasonModemDialTimeout = 26,
NetworkDeviceStateReasonModemDialFailed = 27,
NetworkDeviceStateReasonModemInitFailed = 28,
NetworkDeviceStateReasonGsmApnFailed = 29,
NetworkDeviceStateReasonGsmRegistrationNotSearching = 30,
NetworkDeviceStateReasonGsmRegistrationDenied = 31,
NetworkDeviceStateReasonGsmRegistrationTimeout = 32,
NetworkDeviceStateReasonGsmRegistrationFailed = 33,
NetworkDeviceStateReasonGsmPinCheckFailed = 34,
NetworkDeviceStateReasonFirmwareMissing = 35,
NetworkDeviceStateReasonRemoved = 36,
NetworkDeviceStateReasonSleeping = 37,
NetworkDeviceStateReasonConnectionRemoved = 38,
NetworkDeviceStateReasonUserRequest = 39,
NetworkDeviceStateReasonCarrier = 40,
NetworkDeviceStateReasonConnectionAssumed = 41,
NetworkDeviceStateReasonSupplicantAvailable = 42,
NetworkDeviceStateReasonModemNotFound = 43,
NetworkDeviceStateReasonBtFailed = 44,
NetworkDeviceStateReasonGsmSimNotInserted = 45,
NetworkDeviceStateReasonGsmSimPinRequired = 46,
NetworkDeviceStateReasonGsmSimPukRequired = 47,
NetworkDeviceStateReasonGsmSimWrong = 48,
NetworkDeviceStateReasonInfinibandMode = 49,
NetworkDeviceStateReasonDependencyFailed = 50,
NetworkDeviceStateReasonBR2684Failed = 51,
NetworkDeviceStateReasonModemManagerUnavailable = 52,
NetworkDeviceStateReasonSsidNotFound = 53,
NetworkDeviceStateReasonSecondaryConnectionFailed = 54,
NetworkDeviceStateReasonDcbFoecFailed = 55,
NetworkDeviceStateReasonTeamdControlFailed = 56,
NetworkDeviceStateReasonModemFailed = 57,
NetworkDeviceStateReasonModemAvailable = 58,
NetworkDeviceStateReasonSimPinIncorrect = 59,
NetworkDeviceStateReasonNewActivision = 60,
NetworkDeviceStateReasonParentChanged = 61,
NetworkDeviceStateReasonParentManagedChanged = 62
};
explicit WirelessNetworkManager(const QDBusObjectPath &objectPath, QObject *parent = 0);
@ -134,17 +134,17 @@ public:
bool connected() const;
bool managed() const;
DeviceState state() const;
DeviceStateReason stateReason() const;
NetworkDeviceState state() const;
NetworkDeviceStateReason stateReason() const;
void scanWirelessNetworks();
QList<WirelessAccessPoint *> accessPoints();
WirelessAccessPoint * getAccessPoint(const QString &ssid);
WirelessAccessPoint * getAccessPoint(const QDBusObjectPath &objectPath);
WirelessAccessPoint *getAccessPoint(const QString &ssid);
WirelessAccessPoint *getAccessPoint(const QDBusObjectPath &objectPath);
static QString deviceStateToString(const DeviceState &state);
static QString deviceStateReasonToString(const DeviceStateReason &stateReason);
static QString deviceStateToString(const NetworkDeviceState &state);
static QString deviceStateReasonToString(const NetworkDeviceStateReason &stateReason);
private:
QDBusObjectPath m_objectPath;
@ -158,8 +158,8 @@ private:
// Can change
bool m_connected;
bool m_managed;
DeviceState m_state;
DeviceStateReason m_stateReason;
NetworkDeviceState m_state;
NetworkDeviceStateReason m_stateReason;
QHash<QDBusObjectPath, WirelessAccessPoint *> m_accessPointsTable;
@ -167,8 +167,8 @@ private:
void readWirelessDeviceProperties();
void setConnected(const bool &connected);
void setState(const DeviceState &state);
void setStateReason(const DeviceStateReason &stateReason);
void setState(const NetworkDeviceState &state);
void setStateReason(const NetworkDeviceStateReason &stateReason);
void setManaged(const bool &managed);
private slots:
@ -180,7 +180,7 @@ private slots:
signals:
void connectedChanged(const bool &connected);
void managedChanged(const bool &managed);
void stateChanged(const DeviceState &state);
void stateChanged(const NetworkDeviceState &state);
};
QDebug operator<<(QDebug debug, WirelessNetworkManager *manager);