summaryrefslogtreecommitdiffstats
path: root/network/wiredadapter.cpp
diff options
context:
space:
mode:
authorScott Murray <scott.murray@konsulko.com>2022-01-28 16:54:55 -0500
committerScott Murray <scott.murray@konsulko.com>2022-01-28 17:00:09 -0500
commit5ef90db242ad29c9772f2237b477c58ef65545c7 (patch)
treef9b7b2e56a0aaec37bb9ef99faa316465613b941 /network/wiredadapter.cpp
parent0fee9bfb0f656b78f34c44542329760be2980892 (diff)
Re-enable network supportmarlin_12.92.0marlin/12.92.012.92.0
Rework network support code to use new connman-glib library instead of the previously disabled agl-service-network API. The only user visible change is that a few extra previously exported header files have been pruned from installation to avoid exposing GLib usage and potentially requiring users needing to build against it. Bug-AGL: SPEC-4182 Signed-off-by: Scott Murray <scott.murray@konsulko.com> Change-Id: Iab8f3c9d04ee603e06b80dfd92ac03d9d52af477
Diffstat (limited to 'network/wiredadapter.cpp')
-rw-r--r--network/wiredadapter.cpp177
1 files changed, 114 insertions, 63 deletions
diff --git a/network/wiredadapter.cpp b/network/wiredadapter.cpp
index 297ba44..57a6678 100644
--- a/network/wiredadapter.cpp
+++ b/network/wiredadapter.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2019 Konsulko Group
+ * Copyright (C) 2019,2022 Konsulko Group
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -19,87 +19,138 @@
#include <QtQml/QQmlEngine>
#include "network.h"
-#include "networkadapter.h"
+#include "wiredadapter.h"
#include "wirednetworkmodel.h"
#include "connectionprofile.h"
WiredAdapter::WiredAdapter(Network *network, QQmlContext *context, QObject *parent) :
- QObject(parent),
- AdapterIf(),
- m_wiredConnected(false),
- m_wiredEnabled(false),
- m_model(nullptr),
- nw(network)
+ QObject(parent),
+ AdapterIf(),
+ m_wiredConnected(false),
+ m_wiredEnabled(false),
+ m_model(nullptr),
+ nw(network)
{
- m_model = new WiredNetworkModel();
- QSortFilterProxyModel *model = new QSortFilterProxyModel();
- model->setSourceModel(m_model);
- model->setSortRole(WiredNetworkModel::WiredNetworkRoles::ServiceRole);
- model->setSortCaseSensitivity(Qt::CaseInsensitive);
- model->sort(0);
-
- context->setContextProperty("WiredNetworkModel", m_model);
- context->setContextProperty("WiredAdapter", this);
+ m_model = new WiredNetworkModel();
+ QSortFilterProxyModel *model = new QSortFilterProxyModel();
+ model->setSourceModel(m_model);
+ model->setSortRole(WiredNetworkModel::WiredNetworkRoles::ServiceRole);
+ model->setSortCaseSensitivity(Qt::CaseInsensitive);
+ model->sort(0);
+
+ context->setContextProperty("WiredNetworkModel", m_model);
+ context->setContextProperty("WiredAdapter", this);
}
WiredAdapter::~WiredAdapter()
{
- delete m_model;
+ delete m_model;
}
-void WiredAdapter::updateStatus(QJsonObject properties)
+void WiredAdapter::updateStatus(const QVariantMap &properties)
{
- if (properties.contains("connected")) {
- m_wiredConnected = properties.value("connected").toBool();
- emit wiredConnectedChanged(m_wiredConnected);
- }
-
- if (properties.contains("powered")) {
- m_wiredEnabled = properties.value("powered").toBool();
- emit wiredEnabledChanged(m_wiredEnabled);
- if (m_wiredEnabled)
- nw->getServices();
- }
+ QString key = "Connected";
+ if (properties.contains(key)) {
+ m_wiredConnected = properties.value(key).toBool();
+ emit wiredConnectedChanged(m_wiredConnected);
+ }
+
+ key = "Powered";
+ if (properties.contains(key)) {
+ m_wiredEnabled = properties.value(key).toBool();
+ emit wiredEnabledChanged(m_wiredEnabled);
+ if (m_wiredEnabled)
+ nw->getServices();
+ }
}
-void WiredAdapter::updateProperties(QString id, QJsonObject properties)
+void WiredAdapter::updateProperties(const QString &id, const QVariantMap &properties)
{
- if (m_model->getNetwork(id))
- m_model->updateProperties(id, properties);
+ if (m_model->getNetwork(id))
+ m_model->updateProperties(id, properties);
}
-bool WiredAdapter::addService(QString id, QJsonObject properties)
+bool WiredAdapter::addService(const QString &id, const QVariantMap &properties)
{
- QString type = properties.value("type").toString();
- if (type != getType())
- return false;
-
- // Ignore services already added
- if (m_model->getNetwork(id))
- return false;
-
- QString state = properties.value("state").toString();
- // Initially support only IPv4 and the first security method found
- QString security = properties.value("security").toArray().at(0).toString();
- QJsonObject ipv4obj = properties.value("ipv4").toObject();
- QString address = ipv4obj.value("address").toString();
- QString netmask = ipv4obj.value("netmask").toString();
- QString gateway = ipv4obj.value("gateway").toString();
- QString amethod = ipv4obj.value("method").toString();
- QString ns = properties.value("nameservers").toString();
- QString nsmethod = (amethod == "dhcp")? "auto" : "manual";
-
- ConnectionProfile *network = new ConnectionProfile(address, security, id,
- state, "", 0, netmask,
- gateway, amethod, ns,
- nsmethod);
- m_model->addNetwork(network);
-
- return true;
+ QString type;
+ QString key = "Type";
+ if (properties.contains(key)) {
+ type = properties.value(key).toString();
+ if (type != getType())
+ return false;
+ }
+
+ // Ignore services already added
+ if (m_model->getNetwork(id))
+ return false;
+
+ QString state;
+ key = "State";
+ if (properties.contains(key))
+ state = properties.value(key).toString();
+
+ // Initially support only IPv4 and the first security method found
+ QString address;
+ QString netmask;
+ QString gateway;
+ QString amethod;
+ key = "IPv4";
+ if (properties.contains(key)) {
+ QVariantMap ip4_map = properties.value(key).toMap();
+
+ key = "Address";
+ if (ip4_map.contains(key))
+ address = ip4_map.value(key).toString();
+
+ key = "Netmask";
+ if (ip4_map.contains(key))
+ netmask = ip4_map.value(key).toString();
+
+ key = "Gateway";
+ if (ip4_map.contains(key))
+ gateway = ip4_map.value(key).toString();
+
+ key = "Method";
+ if (ip4_map.contains(key))
+ amethod = ip4_map.value(key).toString();
+ }
+
+ QString ns;
+ key = "Nameservers";
+ if (properties.contains(key))
+ ns = properties.value(key).toString();
+ QString nsmethod = (amethod == "dhcp")? "auto" : "manual";
+
+ QString security;
+ key = "Security";
+ if (properties.contains(key)) {
+ QVariantList security_list = properties.value(key).toList();
+
+ if (!security_list.isEmpty())
+ security = security_list[0].toString();
+ }
+
+#if LIBQTAPPFW_NETWORK_DEBUG
+ qDebug() << "WiredAdapter::addService: address = " << address
+ << ", id = " << id
+ << ", state = " << state
+ << ", netmask = " << netmask
+ << ", gateway = " << gateway
+ << ", address method = " << amethod
+ << ", nameservers = " << ns
+ << ", nameserver method = " << nsmethod
+ << ", security = " << security;
+#endif
+ ConnectionProfile *network = new ConnectionProfile(address, security, id,
+ state, "", 0, netmask,
+ gateway, amethod, ns,
+ nsmethod);
+ m_model->addNetwork(network);
+
+ return true;
}
-void WiredAdapter::removeService(QString id)
+void WiredAdapter::removeService(const QString &id)
{
- m_model->removeNetwork(m_model->getNetwork(id));
-
+ m_model->removeNetwork(m_model->getNetwork(id));
}