Merge PR #288: Improve networking API
This commit is contained in:
commit
fecce90ba3
2
debian/control
vendored
2
debian/control
vendored
@ -10,7 +10,7 @@ Build-Depends: debhelper (>= 9.0.0),
|
|||||||
dh-systemd,
|
dh-systemd,
|
||||||
dpkg-dev (>= 1.16.1~),
|
dpkg-dev (>= 1.16.1~),
|
||||||
libnymea-mqtt-dev (>= 0.1.2),
|
libnymea-mqtt-dev (>= 0.1.2),
|
||||||
libnymea-networkmanager-dev (>= 0.3.0),
|
libnymea-networkmanager-dev (>= 0.4.0),
|
||||||
libnymea-remoteproxyclient-dev,
|
libnymea-remoteproxyclient-dev,
|
||||||
libqt5websockets5-dev,
|
libqt5websockets5-dev,
|
||||||
libqt5bluetooth5,
|
libqt5bluetooth5,
|
||||||
|
|||||||
@ -569,7 +569,7 @@ void JsonRPCServerImplementation::setup()
|
|||||||
registerHandler(new LoggingHandler(this));
|
registerHandler(new LoggingHandler(this));
|
||||||
registerHandler(new StateHandler(this));
|
registerHandler(new StateHandler(this));
|
||||||
registerHandler(new ConfigurationHandler(this));
|
registerHandler(new ConfigurationHandler(this));
|
||||||
registerHandler(new NetworkManagerHandler(this));
|
registerHandler(new NetworkManagerHandler(NymeaCore::instance()->networkManager(), this));
|
||||||
registerHandler(new TagsHandler(this));
|
registerHandler(new TagsHandler(this));
|
||||||
registerHandler(new SystemHandler(NymeaCore::instance()->platform(), this));
|
registerHandler(new SystemHandler(NymeaCore::instance()->platform(), this));
|
||||||
registerHandler(new UsersHandler(NymeaCore::instance()->userManager(), this));
|
registerHandler(new UsersHandler(NymeaCore::instance()->userManager(), this));
|
||||||
|
|||||||
@ -76,22 +76,21 @@
|
|||||||
The \a params contains the map for the notification.
|
The \a params contains the map for the notification.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include "nymeacore.h"
|
|
||||||
#include "loggingcategories.h"
|
#include "loggingcategories.h"
|
||||||
#include "networkmanagerhandler.h"
|
#include "networkmanagerhandler.h"
|
||||||
|
|
||||||
|
|
||||||
namespace nymeaserver {
|
namespace nymeaserver {
|
||||||
|
|
||||||
/*! Constructs a new \l{NetworkManagerHandler} with the given \a parent. */
|
/*! Constructs a new \l{NetworkManagerHandler} with the given \a parent. */
|
||||||
NetworkManagerHandler::NetworkManagerHandler(QObject *parent) :
|
NetworkManagerHandler::NetworkManagerHandler(NetworkManager *networkManager, QObject *parent) :
|
||||||
JsonHandler(parent)
|
JsonHandler(parent),
|
||||||
|
m_networkManager(networkManager)
|
||||||
{
|
{
|
||||||
// Enums
|
// Enums
|
||||||
registerEnum<NetworkManager::NetworkManagerError>();
|
registerEnum<NetworkManager::NetworkManagerError>();
|
||||||
registerEnum<NetworkManager::NetworkManagerState>();
|
registerEnum<NetworkManager::NetworkManagerState>();
|
||||||
registerEnum<NetworkDevice::NetworkDeviceState>();
|
registerEnum<NetworkDevice::NetworkDeviceState>();
|
||||||
|
registerEnum<WirelessNetworkDevice::WirelessMode>();
|
||||||
|
|
||||||
// Objects
|
// Objects
|
||||||
QVariantMap wirelessAccessPoint;
|
QVariantMap wirelessAccessPoint;
|
||||||
@ -106,17 +105,22 @@ NetworkManagerHandler::NetworkManagerHandler(QObject *parent) :
|
|||||||
QVariantMap wiredNetworkDevice;
|
QVariantMap wiredNetworkDevice;
|
||||||
wiredNetworkDevice.insert("r:interface", enumValueName(String));
|
wiredNetworkDevice.insert("r:interface", enumValueName(String));
|
||||||
wiredNetworkDevice.insert("r:macAddress", enumValueName(String));
|
wiredNetworkDevice.insert("r:macAddress", enumValueName(String));
|
||||||
|
wiredNetworkDevice.insert("r:ipv4Addresses", enumValueName(StringList));
|
||||||
|
wiredNetworkDevice.insert("r:ipv6Addresses", enumValueName(StringList));
|
||||||
wiredNetworkDevice.insert("r:state", enumRef<NetworkDevice::NetworkDeviceState>());
|
wiredNetworkDevice.insert("r:state", enumRef<NetworkDevice::NetworkDeviceState>());
|
||||||
wiredNetworkDevice.insert("r:bitRate", enumValueName(String));
|
wiredNetworkDevice.insert("r:bitRate", enumValueName(String));
|
||||||
wiredNetworkDevice.insert("r:pluggedIn", enumValueName(Bool));
|
wiredNetworkDevice.insert("r:pluggedIn", enumValueName(Bool));
|
||||||
registerObject("WiredNetworkDevice", wiredNetworkDevice);
|
registerObject("WiredNetworkDevice", wiredNetworkDevice);
|
||||||
|
|
||||||
QVariantMap wirelessNetworkDevice;
|
QVariantMap wirelessNetworkDevice;
|
||||||
wirelessNetworkDevice.insert("interface", enumValueName(String));
|
wirelessNetworkDevice.insert("r:interface", enumValueName(String));
|
||||||
wirelessNetworkDevice.insert("macAddress", enumValueName(String));
|
wirelessNetworkDevice.insert("r:macAddress", enumValueName(String));
|
||||||
wirelessNetworkDevice.insert("state", enumRef<NetworkDevice::NetworkDeviceState>());
|
wirelessNetworkDevice.insert("r:ipv4Addresses", enumValueName(StringList));
|
||||||
wirelessNetworkDevice.insert("bitRate", enumValueName(String));
|
wirelessNetworkDevice.insert("r:ipv6Addresses", enumValueName(StringList));
|
||||||
wirelessNetworkDevice.insert("o:currentAccessPoint", objectRef<WirelessAccessPoint>());
|
wirelessNetworkDevice.insert("r:state", enumRef<NetworkDevice::NetworkDeviceState>());
|
||||||
|
wirelessNetworkDevice.insert("r:bitRate", enumValueName(String));
|
||||||
|
wirelessNetworkDevice.insert("r:mode", enumRef<WirelessNetworkDevice::WirelessMode>());
|
||||||
|
wirelessNetworkDevice.insert("r:o:currentAccessPoint", objectRef<WirelessAccessPoint>());
|
||||||
registerObject("WirelessNetworkDevice", wirelessNetworkDevice);
|
registerObject("WirelessNetworkDevice", wirelessNetworkDevice);
|
||||||
|
|
||||||
// Methods
|
// Methods
|
||||||
@ -176,6 +180,15 @@ NetworkManagerHandler::NetworkManagerHandler(QObject *parent) :
|
|||||||
returns.insert("networkManagerError", enumRef<NetworkManager::NetworkManagerError>());
|
returns.insert("networkManagerError", enumRef<NetworkManager::NetworkManagerError>());
|
||||||
registerMethod("ConnectWifiNetwork", description, params, returns);
|
registerMethod("ConnectWifiNetwork", description, params, returns);
|
||||||
|
|
||||||
|
params.clear(); returns.clear();
|
||||||
|
description = "Start a WiFi Access point on the given interface with the given SSID and "
|
||||||
|
"password. Use DisconnectInterface to stop it again.";
|
||||||
|
params.insert("interface", enumValueName(String));
|
||||||
|
params.insert("ssid", enumValueName(String));
|
||||||
|
params.insert("password", enumValueName(String));
|
||||||
|
returns.insert("networkManagerError", enumRef<NetworkManager::NetworkManagerError>());
|
||||||
|
registerMethod("StartAccessPoint", description, params, returns);
|
||||||
|
|
||||||
// Notifications
|
// Notifications
|
||||||
params.clear(); returns.clear();
|
params.clear(); returns.clear();
|
||||||
description = "Emitted whenever a status of a NetworkManager changes.";
|
description = "Emitted whenever a status of a NetworkManager changes.";
|
||||||
@ -212,17 +225,17 @@ NetworkManagerHandler::NetworkManagerHandler(QObject *parent) :
|
|||||||
params.insert("wiredNetworkDevice", objectRef("WiredNetworkDevice"));
|
params.insert("wiredNetworkDevice", objectRef("WiredNetworkDevice"));
|
||||||
registerNotification("WiredNetworkDeviceChanged", description, params);
|
registerNotification("WiredNetworkDeviceChanged", description, params);
|
||||||
|
|
||||||
connect(NymeaCore::instance()->networkManager(), &NetworkManager::stateChanged, this, &NetworkManagerHandler::onNetworkManagerStatusChanged);
|
connect(m_networkManager, &NetworkManager::stateChanged, this, &NetworkManagerHandler::onNetworkManagerStatusChanged);
|
||||||
connect(NymeaCore::instance()->networkManager(), &NetworkManager::networkingEnabledChanged, this, &NetworkManagerHandler::onNetworkManagerStatusChanged);
|
connect(m_networkManager, &NetworkManager::networkingEnabledChanged, this, &NetworkManagerHandler::onNetworkManagerStatusChanged);
|
||||||
connect(NymeaCore::instance()->networkManager(), &NetworkManager::wirelessEnabledChanged, this, &NetworkManagerHandler::onNetworkManagerStatusChanged);
|
connect(m_networkManager, &NetworkManager::wirelessEnabledChanged, this, &NetworkManagerHandler::onNetworkManagerStatusChanged);
|
||||||
|
|
||||||
connect(NymeaCore::instance()->networkManager(), &NetworkManager::wirelessDeviceAdded, this, &NetworkManagerHandler::onWirelessNetworkDeviceAdded);
|
connect(m_networkManager, &NetworkManager::wirelessDeviceAdded, this, &NetworkManagerHandler::onWirelessNetworkDeviceAdded);
|
||||||
connect(NymeaCore::instance()->networkManager(), &NetworkManager::wirelessDeviceRemoved, this, &NetworkManagerHandler::onWirelessNetworkDeviceRemoved);
|
connect(m_networkManager, &NetworkManager::wirelessDeviceRemoved, this, &NetworkManagerHandler::onWirelessNetworkDeviceRemoved);
|
||||||
connect(NymeaCore::instance()->networkManager(), &NetworkManager::wirelessDeviceChanged, this, &NetworkManagerHandler::onWirelessNetworkDeviceChanged);
|
connect(m_networkManager, &NetworkManager::wirelessDeviceChanged, this, &NetworkManagerHandler::onWirelessNetworkDeviceChanged);
|
||||||
|
|
||||||
connect(NymeaCore::instance()->networkManager(), &NetworkManager::wiredDeviceAdded, this, &NetworkManagerHandler::onWiredNetworkDeviceAdded);
|
connect(m_networkManager, &NetworkManager::wiredDeviceAdded, this, &NetworkManagerHandler::onWiredNetworkDeviceAdded);
|
||||||
connect(NymeaCore::instance()->networkManager(), &NetworkManager::wiredDeviceRemoved, this, &NetworkManagerHandler::onWiredNetworkDeviceRemoved);
|
connect(m_networkManager, &NetworkManager::wiredDeviceRemoved, this, &NetworkManagerHandler::onWiredNetworkDeviceRemoved);
|
||||||
connect(NymeaCore::instance()->networkManager(), &NetworkManager::wiredDeviceChanged, this, &NetworkManagerHandler::onWiredNetworkDeviceChanged);
|
connect(m_networkManager, &NetworkManager::wiredDeviceChanged, this, &NetworkManagerHandler::onWiredNetworkDeviceChanged);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*! Returns the name of the \l{NetworkManagerHandler}. In this case \b NetworkManager. */
|
/*! Returns the name of the \l{NetworkManagerHandler}. In this case \b NetworkManager. */
|
||||||
@ -236,7 +249,7 @@ JsonReply *NetworkManagerHandler::GetNetworkStatus(const QVariantMap ¶ms)
|
|||||||
Q_UNUSED(params)
|
Q_UNUSED(params)
|
||||||
|
|
||||||
// Check available
|
// Check available
|
||||||
if (!NymeaCore::instance()->networkManager()->available())
|
if (!m_networkManager->available())
|
||||||
return createReply(statusToReply(NetworkManager::NetworkManagerErrorNetworkManagerNotAvailable));
|
return createReply(statusToReply(NetworkManager::NetworkManagerErrorNetworkManagerNotAvailable));
|
||||||
|
|
||||||
// Pack network manager status
|
// Pack network manager status
|
||||||
@ -247,12 +260,12 @@ JsonReply *NetworkManagerHandler::GetNetworkStatus(const QVariantMap ¶ms)
|
|||||||
|
|
||||||
JsonReply *NetworkManagerHandler::EnableNetworking(const QVariantMap ¶ms)
|
JsonReply *NetworkManagerHandler::EnableNetworking(const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
if (!NymeaCore::instance()->networkManager()->available())
|
if (!m_networkManager->available())
|
||||||
return createReply(statusToReply(NetworkManager::NetworkManagerErrorNetworkManagerNotAvailable));
|
return createReply(statusToReply(NetworkManager::NetworkManagerErrorNetworkManagerNotAvailable));
|
||||||
|
|
||||||
bool enable = params.value("enable").toBool();
|
bool enable = params.value("enable").toBool();
|
||||||
|
|
||||||
if (!NymeaCore::instance()->networkManager()->enableNetworking(enable))
|
if (!m_networkManager->enableNetworking(enable))
|
||||||
return createReply(statusToReply(NetworkManager::NetworkManagerErrorUnknownError));
|
return createReply(statusToReply(NetworkManager::NetworkManagerErrorUnknownError));
|
||||||
|
|
||||||
return createReply(statusToReply(NetworkManager::NetworkManagerErrorNoError));
|
return createReply(statusToReply(NetworkManager::NetworkManagerErrorNoError));
|
||||||
@ -260,13 +273,13 @@ JsonReply *NetworkManagerHandler::EnableNetworking(const QVariantMap ¶ms)
|
|||||||
|
|
||||||
JsonReply *NetworkManagerHandler::EnableWirelessNetworking(const QVariantMap ¶ms)
|
JsonReply *NetworkManagerHandler::EnableWirelessNetworking(const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
if (!NymeaCore::instance()->networkManager()->available())
|
if (!m_networkManager->available())
|
||||||
return createReply(statusToReply(NetworkManager::NetworkManagerErrorNetworkManagerNotAvailable));
|
return createReply(statusToReply(NetworkManager::NetworkManagerErrorNetworkManagerNotAvailable));
|
||||||
|
|
||||||
if (!NymeaCore::instance()->networkManager()->wirelessAvailable())
|
if (!m_networkManager->wirelessAvailable())
|
||||||
return createReply(statusToReply(NetworkManager::NetworkManagerErrorWirelessNotAvailable));
|
return createReply(statusToReply(NetworkManager::NetworkManagerErrorWirelessNotAvailable));
|
||||||
|
|
||||||
if (!NymeaCore::instance()->networkManager()->enableWireless(params.value("enable").toBool()))
|
if (!m_networkManager->enableWireless(params.value("enable").toBool()))
|
||||||
return createReply(statusToReply(NetworkManager::NetworkManagerErrorUnknownError));
|
return createReply(statusToReply(NetworkManager::NetworkManagerErrorUnknownError));
|
||||||
|
|
||||||
return createReply(statusToReply(NetworkManager::NetworkManagerErrorNoError));
|
return createReply(statusToReply(NetworkManager::NetworkManagerErrorNoError));
|
||||||
@ -274,24 +287,24 @@ JsonReply *NetworkManagerHandler::EnableWirelessNetworking(const QVariantMap &pa
|
|||||||
|
|
||||||
JsonReply *NetworkManagerHandler::GetWirelessAccessPoints(const QVariantMap ¶ms)
|
JsonReply *NetworkManagerHandler::GetWirelessAccessPoints(const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
if (!NymeaCore::instance()->networkManager()->available())
|
if (!m_networkManager->available())
|
||||||
return createReply(statusToReply(NetworkManager::NetworkManagerErrorNetworkManagerNotAvailable));
|
return createReply(statusToReply(NetworkManager::NetworkManagerErrorNetworkManagerNotAvailable));
|
||||||
|
|
||||||
if (!NymeaCore::instance()->networkManager()->wirelessAvailable())
|
if (!m_networkManager->wirelessAvailable())
|
||||||
return createReply(statusToReply(NetworkManager::NetworkManagerErrorWirelessNotAvailable));
|
return createReply(statusToReply(NetworkManager::NetworkManagerErrorWirelessNotAvailable));
|
||||||
|
|
||||||
if (!NymeaCore::instance()->networkManager()->networkingEnabled())
|
if (!m_networkManager->networkingEnabled())
|
||||||
return createReply(statusToReply(NetworkManager::NetworkManagerErrorNetworkingDisabled));
|
return createReply(statusToReply(NetworkManager::NetworkManagerErrorNetworkingDisabled));
|
||||||
|
|
||||||
if (!NymeaCore::instance()->networkManager()->wirelessEnabled())
|
if (!m_networkManager->wirelessEnabled())
|
||||||
return createReply(statusToReply(NetworkManager::NetworkManagerErrorWirelessNetworkingDisabled));
|
return createReply(statusToReply(NetworkManager::NetworkManagerErrorWirelessNetworkingDisabled));
|
||||||
|
|
||||||
QString interface = params.value("interface").toString();
|
QString interface = params.value("interface").toString();
|
||||||
|
|
||||||
if (!NymeaCore::instance()->networkManager()->getNetworkDevice(interface))
|
if (!m_networkManager->getNetworkDevice(interface))
|
||||||
return createReply(statusToReply(NetworkManager::NetworkManagerErrorNetworkInterfaceNotFound));
|
return createReply(statusToReply(NetworkManager::NetworkManagerErrorNetworkInterfaceNotFound));
|
||||||
|
|
||||||
foreach (WirelessNetworkDevice *networkDevice, NymeaCore::instance()->networkManager()->wirelessNetworkDevices()) {
|
foreach (WirelessNetworkDevice *networkDevice, m_networkManager->wirelessNetworkDevices()) {
|
||||||
if (networkDevice->interface() == interface) {
|
if (networkDevice->interface() == interface) {
|
||||||
QVariantList wirelessAccessPoints;
|
QVariantList wirelessAccessPoints;
|
||||||
foreach (WirelessAccessPoint *wirelessAccessPoint, networkDevice->accessPoints())
|
foreach (WirelessAccessPoint *wirelessAccessPoint, networkDevice->accessPoints())
|
||||||
@ -311,15 +324,15 @@ JsonReply *NetworkManagerHandler::GetNetworkDevices(const QVariantMap ¶ms)
|
|||||||
{
|
{
|
||||||
Q_UNUSED(params)
|
Q_UNUSED(params)
|
||||||
|
|
||||||
if (!NymeaCore::instance()->networkManager()->available())
|
if (!m_networkManager->available())
|
||||||
return createReply(statusToReply(NetworkManager::NetworkManagerErrorNetworkManagerNotAvailable));
|
return createReply(statusToReply(NetworkManager::NetworkManagerErrorNetworkManagerNotAvailable));
|
||||||
|
|
||||||
QVariantList wirelessNetworkDevices;
|
QVariantList wirelessNetworkDevices;
|
||||||
foreach (WirelessNetworkDevice *networkDevice, NymeaCore::instance()->networkManager()->wirelessNetworkDevices())
|
foreach (WirelessNetworkDevice *networkDevice, m_networkManager->wirelessNetworkDevices())
|
||||||
wirelessNetworkDevices.append(packWirelessNetworkDevice(networkDevice));
|
wirelessNetworkDevices.append(packWirelessNetworkDevice(networkDevice));
|
||||||
|
|
||||||
QVariantList wiredNetworkDevices;
|
QVariantList wiredNetworkDevices;
|
||||||
foreach (WiredNetworkDevice *networkDevice, NymeaCore::instance()->networkManager()->wiredNetworkDevices())
|
foreach (WiredNetworkDevice *networkDevice, m_networkManager->wiredNetworkDevices())
|
||||||
wiredNetworkDevices.append(packWiredNetworkDevice(networkDevice));
|
wiredNetworkDevices.append(packWiredNetworkDevice(networkDevice));
|
||||||
|
|
||||||
QVariantMap returns = statusToReply(NetworkManager::NetworkManagerErrorNoError);
|
QVariantMap returns = statusToReply(NetworkManager::NetworkManagerErrorNoError);
|
||||||
@ -332,25 +345,25 @@ JsonReply *NetworkManagerHandler::ScanWifiNetworks(const QVariantMap ¶ms)
|
|||||||
{
|
{
|
||||||
Q_UNUSED(params)
|
Q_UNUSED(params)
|
||||||
|
|
||||||
if (!NymeaCore::instance()->networkManager()->available())
|
if (!m_networkManager->available())
|
||||||
return createReply(statusToReply(NetworkManager::NetworkManagerErrorNetworkManagerNotAvailable));
|
return createReply(statusToReply(NetworkManager::NetworkManagerErrorNetworkManagerNotAvailable));
|
||||||
|
|
||||||
if (!NymeaCore::instance()->networkManager()->wirelessAvailable())
|
if (!m_networkManager->wirelessAvailable())
|
||||||
return createReply(statusToReply(NetworkManager::NetworkManagerErrorWirelessNotAvailable));
|
return createReply(statusToReply(NetworkManager::NetworkManagerErrorWirelessNotAvailable));
|
||||||
|
|
||||||
if (!NymeaCore::instance()->networkManager()->networkingEnabled())
|
if (!m_networkManager->networkingEnabled())
|
||||||
return createReply(statusToReply(NetworkManager::NetworkManagerErrorNetworkingDisabled));
|
return createReply(statusToReply(NetworkManager::NetworkManagerErrorNetworkingDisabled));
|
||||||
|
|
||||||
if (!NymeaCore::instance()->networkManager()->wirelessEnabled())
|
if (!m_networkManager->wirelessEnabled())
|
||||||
return createReply(statusToReply(NetworkManager::NetworkManagerErrorWirelessNetworkingDisabled));
|
return createReply(statusToReply(NetworkManager::NetworkManagerErrorWirelessNetworkingDisabled));
|
||||||
|
|
||||||
|
|
||||||
QString interface = params.value("interface").toString();
|
QString interface = params.value("interface").toString();
|
||||||
|
|
||||||
if (!NymeaCore::instance()->networkManager()->getNetworkDevice(interface))
|
if (!m_networkManager->getNetworkDevice(interface))
|
||||||
return createReply(statusToReply(NetworkManager::NetworkManagerErrorNetworkInterfaceNotFound));
|
return createReply(statusToReply(NetworkManager::NetworkManagerErrorNetworkInterfaceNotFound));
|
||||||
|
|
||||||
foreach (WirelessNetworkDevice *networkDevice, NymeaCore::instance()->networkManager()->wirelessNetworkDevices()) {
|
foreach (WirelessNetworkDevice *networkDevice, m_networkManager->wirelessNetworkDevices()) {
|
||||||
if (networkDevice->interface() == interface) {
|
if (networkDevice->interface() == interface) {
|
||||||
networkDevice->scanWirelessNetworks();
|
networkDevice->scanWirelessNetworks();
|
||||||
return createReply(statusToReply(NetworkManager::NetworkManagerErrorNoError));
|
return createReply(statusToReply(NetworkManager::NetworkManagerErrorNoError));
|
||||||
@ -362,16 +375,16 @@ JsonReply *NetworkManagerHandler::ScanWifiNetworks(const QVariantMap ¶ms)
|
|||||||
|
|
||||||
JsonReply *NetworkManagerHandler::ConnectWifiNetwork(const QVariantMap ¶ms)
|
JsonReply *NetworkManagerHandler::ConnectWifiNetwork(const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
if (!NymeaCore::instance()->networkManager()->available())
|
if (!m_networkManager->available())
|
||||||
return createReply(statusToReply(NetworkManager::NetworkManagerErrorNetworkManagerNotAvailable));
|
return createReply(statusToReply(NetworkManager::NetworkManagerErrorNetworkManagerNotAvailable));
|
||||||
|
|
||||||
if (!NymeaCore::instance()->networkManager()->wirelessAvailable())
|
if (!m_networkManager->wirelessAvailable())
|
||||||
return createReply(statusToReply(NetworkManager::NetworkManagerErrorWirelessNotAvailable));
|
return createReply(statusToReply(NetworkManager::NetworkManagerErrorWirelessNotAvailable));
|
||||||
|
|
||||||
if (!NymeaCore::instance()->networkManager()->networkingEnabled())
|
if (!m_networkManager->networkingEnabled())
|
||||||
return createReply(statusToReply(NetworkManager::NetworkManagerErrorNetworkingDisabled));
|
return createReply(statusToReply(NetworkManager::NetworkManagerErrorNetworkingDisabled));
|
||||||
|
|
||||||
if (!NymeaCore::instance()->networkManager()->wirelessEnabled())
|
if (!m_networkManager->wirelessEnabled())
|
||||||
return createReply(statusToReply(NetworkManager::NetworkManagerErrorWirelessNetworkingDisabled));
|
return createReply(statusToReply(NetworkManager::NetworkManagerErrorWirelessNetworkingDisabled));
|
||||||
|
|
||||||
|
|
||||||
@ -379,16 +392,16 @@ JsonReply *NetworkManagerHandler::ConnectWifiNetwork(const QVariantMap ¶ms)
|
|||||||
QString password = params.value("password").toString();
|
QString password = params.value("password").toString();
|
||||||
QString interface = params.value("interface").toString();
|
QString interface = params.value("interface").toString();
|
||||||
|
|
||||||
return createReply(statusToReply(NymeaCore::instance()->networkManager()->connectWifi(interface, ssid, password)));
|
return createReply(statusToReply(m_networkManager->connectWifi(interface, ssid, password)));
|
||||||
}
|
}
|
||||||
|
|
||||||
JsonReply *NetworkManagerHandler::DisconnectInterface(const QVariantMap ¶ms)
|
JsonReply *NetworkManagerHandler::DisconnectInterface(const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
if (!NymeaCore::instance()->networkManager()->available())
|
if (!m_networkManager->available())
|
||||||
return createReply(statusToReply(NetworkManager::NetworkManagerErrorNetworkManagerNotAvailable));
|
return createReply(statusToReply(NetworkManager::NetworkManagerErrorNetworkManagerNotAvailable));
|
||||||
|
|
||||||
QString interface = params.value("interface").toString();
|
QString interface = params.value("interface").toString();
|
||||||
NetworkDevice *networkDevice = NymeaCore::instance()->networkManager()->getNetworkDevice(interface);
|
NetworkDevice *networkDevice = m_networkManager->getNetworkDevice(interface);
|
||||||
if (!networkDevice)
|
if (!networkDevice)
|
||||||
return createReply(statusToReply(NetworkManager::NetworkManagerErrorNetworkInterfaceNotFound));
|
return createReply(statusToReply(NetworkManager::NetworkManagerErrorNetworkInterfaceNotFound));
|
||||||
|
|
||||||
@ -396,12 +409,25 @@ JsonReply *NetworkManagerHandler::DisconnectInterface(const QVariantMap ¶ms)
|
|||||||
return createReply(statusToReply(NetworkManager::NetworkManagerErrorNoError));
|
return createReply(statusToReply(NetworkManager::NetworkManagerErrorNoError));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
JsonReply *NetworkManagerHandler::StartAccessPoint(const QVariantMap ¶ms)
|
||||||
|
{
|
||||||
|
if (!m_networkManager->available()) {
|
||||||
|
return createReply(statusToReply(NetworkManager::NetworkManagerErrorNetworkManagerNotAvailable));
|
||||||
|
}
|
||||||
|
|
||||||
|
QString interface = params.value("interface").toString();
|
||||||
|
QString ssid = params.value("ssid").toString();
|
||||||
|
QString password = params.value("password").toString();
|
||||||
|
NetworkManager::NetworkManagerError status = m_networkManager->startAccessPoint(interface, ssid, password);
|
||||||
|
return createReply(statusToReply(status));
|
||||||
|
}
|
||||||
|
|
||||||
QVariantMap NetworkManagerHandler::packNetworkManagerStatus()
|
QVariantMap NetworkManagerHandler::packNetworkManagerStatus()
|
||||||
{
|
{
|
||||||
QVariantMap status;
|
QVariantMap status;
|
||||||
status.insert("networkingEnabled", NymeaCore::instance()->networkManager()->networkingEnabled());
|
status.insert("networkingEnabled", m_networkManager->networkingEnabled());
|
||||||
status.insert("wirelessNetworkingEnabled", NymeaCore::instance()->networkManager()->wirelessEnabled());
|
status.insert("wirelessNetworkingEnabled", m_networkManager->wirelessEnabled());
|
||||||
status.insert("state", NymeaCore::instance()->networkManager()->stateString());
|
status.insert("state", m_networkManager->stateString());
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -470,6 +496,8 @@ QVariantMap NetworkManagerHandler::packWiredNetworkDevice(WiredNetworkDevice *ne
|
|||||||
QVariantMap networkDeviceVariant;
|
QVariantMap networkDeviceVariant;
|
||||||
networkDeviceVariant.insert("interface", networkDevice->interface());
|
networkDeviceVariant.insert("interface", networkDevice->interface());
|
||||||
networkDeviceVariant.insert("macAddress", networkDevice->macAddress());
|
networkDeviceVariant.insert("macAddress", networkDevice->macAddress());
|
||||||
|
networkDeviceVariant.insert("ipv4Addresses", networkDevice->ipv4Addresses());
|
||||||
|
networkDeviceVariant.insert("ipv6Addresses", networkDevice->ipv6Addresses());
|
||||||
networkDeviceVariant.insert("state", networkDevice->deviceStateString());
|
networkDeviceVariant.insert("state", networkDevice->deviceStateString());
|
||||||
networkDeviceVariant.insert("bitRate", QString("%1 [Mb/s]").arg(QString::number(networkDevice->bitRate())));
|
networkDeviceVariant.insert("bitRate", QString("%1 [Mb/s]").arg(QString::number(networkDevice->bitRate())));
|
||||||
networkDeviceVariant.insert("pluggedIn", networkDevice->pluggedIn());
|
networkDeviceVariant.insert("pluggedIn", networkDevice->pluggedIn());
|
||||||
@ -481,7 +509,10 @@ QVariantMap NetworkManagerHandler::packWirelessNetworkDevice(WirelessNetworkDevi
|
|||||||
QVariantMap networkDeviceVariant;
|
QVariantMap networkDeviceVariant;
|
||||||
networkDeviceVariant.insert("interface", networkDevice->interface());
|
networkDeviceVariant.insert("interface", networkDevice->interface());
|
||||||
networkDeviceVariant.insert("macAddress", networkDevice->macAddress());
|
networkDeviceVariant.insert("macAddress", networkDevice->macAddress());
|
||||||
|
networkDeviceVariant.insert("ipv4Addresses", networkDevice->ipv4Addresses());
|
||||||
|
networkDeviceVariant.insert("ipv6Addresses", networkDevice->ipv6Addresses());
|
||||||
networkDeviceVariant.insert("state", networkDevice->deviceStateString());
|
networkDeviceVariant.insert("state", networkDevice->deviceStateString());
|
||||||
|
networkDeviceVariant.insert("mode", enumValueName(networkDevice->wirelessMode()));
|
||||||
networkDeviceVariant.insert("bitRate", QString("%1 [Mb/s]").arg(QString::number(networkDevice->bitRate())));
|
networkDeviceVariant.insert("bitRate", QString("%1 [Mb/s]").arg(QString::number(networkDevice->bitRate())));
|
||||||
if (networkDevice->activeAccessPoint())
|
if (networkDevice->activeAccessPoint())
|
||||||
networkDeviceVariant.insert("currentAccessPoint", packWirelessAccessPoint(networkDevice->activeAccessPoint()));
|
networkDeviceVariant.insert("currentAccessPoint", packWirelessAccessPoint(networkDevice->activeAccessPoint()));
|
||||||
|
|||||||
@ -42,7 +42,7 @@ class NetworkManagerHandler : public JsonHandler
|
|||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
explicit NetworkManagerHandler(QObject *parent = nullptr);
|
explicit NetworkManagerHandler(NetworkManager *networkManager, QObject *parent = nullptr);
|
||||||
|
|
||||||
QString name() const;
|
QString name() const;
|
||||||
|
|
||||||
@ -54,6 +54,7 @@ public:
|
|||||||
Q_INVOKABLE JsonReply *ScanWifiNetworks(const QVariantMap ¶ms);
|
Q_INVOKABLE JsonReply *ScanWifiNetworks(const QVariantMap ¶ms);
|
||||||
Q_INVOKABLE JsonReply *ConnectWifiNetwork(const QVariantMap ¶ms);
|
Q_INVOKABLE JsonReply *ConnectWifiNetwork(const QVariantMap ¶ms);
|
||||||
Q_INVOKABLE JsonReply *DisconnectInterface(const QVariantMap ¶ms);
|
Q_INVOKABLE JsonReply *DisconnectInterface(const QVariantMap ¶ms);
|
||||||
|
Q_INVOKABLE JsonReply *StartAccessPoint(const QVariantMap ¶ms);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QVariantMap packNetworkManagerStatus();
|
QVariantMap packNetworkManagerStatus();
|
||||||
@ -91,6 +92,8 @@ private:
|
|||||||
|
|
||||||
QVariantMap statusToReply(NetworkManager::NetworkManagerError status) const;
|
QVariantMap statusToReply(NetworkManager::NetworkManagerError status) const;
|
||||||
|
|
||||||
|
NetworkManager* m_networkManager = nullptr;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -358,6 +358,12 @@
|
|||||||
"ValueOperatorGreater",
|
"ValueOperatorGreater",
|
||||||
"ValueOperatorLessOrEqual",
|
"ValueOperatorLessOrEqual",
|
||||||
"ValueOperatorGreaterOrEqual"
|
"ValueOperatorGreaterOrEqual"
|
||||||
|
],
|
||||||
|
"WirelessMode": [
|
||||||
|
"WirelessModeUnknown",
|
||||||
|
"WirelessModeAdhoc",
|
||||||
|
"WirelessModeInfrastructure",
|
||||||
|
"WirelessModeAccessPoint"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"flags": {
|
"flags": {
|
||||||
@ -1487,6 +1493,17 @@
|
|||||||
"networkManagerError": "$ref:NetworkManagerError"
|
"networkManagerError": "$ref:NetworkManagerError"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"NetworkManager.StartAccessPoint": {
|
||||||
|
"description": "Start a WiFi Access point on the given interface with the given SSID and password. Use DisconnectInterface to stop it again.",
|
||||||
|
"params": {
|
||||||
|
"interface": "String",
|
||||||
|
"password": "String",
|
||||||
|
"ssid": "String"
|
||||||
|
},
|
||||||
|
"returns": {
|
||||||
|
"networkManagerError": "$ref:NetworkManagerError"
|
||||||
|
}
|
||||||
|
},
|
||||||
"Rules.AddRule": {
|
"Rules.AddRule": {
|
||||||
"description": "Add a rule. You can describe rules by one or many EventDesciptors and a StateEvaluator. Note that only one of either eventDescriptor or eventDescriptorList may be passed at a time. A rule can be created but left disabled, meaning it won't actually be executed until set to enabled. If not given, enabled defaults to true. A rule can have a list of actions and exitActions. It must have at least one Action. For state based rules, actions will be executed when the system enters a state matching the stateDescriptor. The exitActions will be executed when the system leaves the described state again. For event based rules, actions will be executed when a matching event happens and if the stateEvaluator matches the system's state. ExitActions for such rules will be executed when a matching event happens and the stateEvaluator is not matching the system's state. A rule marked as executable can be executed via the API using Rules.ExecuteRule, that means, its actions will be executed regardless of the eventDescriptor and stateEvaluators.",
|
"description": "Add a rule. You can describe rules by one or many EventDesciptors and a StateEvaluator. Note that only one of either eventDescriptor or eventDescriptorList may be passed at a time. A rule can be created but left disabled, meaning it won't actually be executed until set to enabled. If not given, enabled defaults to true. A rule can have a list of actions and exitActions. It must have at least one Action. For state based rules, actions will be executed when the system enters a state matching the stateDescriptor. The exitActions will be executed when the system leaves the described state again. For event based rules, actions will be executed when a matching event happens and if the stateEvaluator matches the system's state. ExitActions for such rules will be executed when a matching event happens and the stateEvaluator is not matching the system's state. A rule marked as executable can be executed via the API using Rules.ExecuteRule, that means, its actions will be executed regardless of the eventDescriptor and stateEvaluators.",
|
||||||
"params": {
|
"params": {
|
||||||
@ -2765,6 +2782,8 @@
|
|||||||
"WiredNetworkDevice": {
|
"WiredNetworkDevice": {
|
||||||
"r:bitRate": "String",
|
"r:bitRate": "String",
|
||||||
"r:interface": "String",
|
"r:interface": "String",
|
||||||
|
"r:ipv4Addresses": "StringList",
|
||||||
|
"r:ipv6Addresses": "StringList",
|
||||||
"r:macAddress": "String",
|
"r:macAddress": "String",
|
||||||
"r:pluggedIn": "Bool",
|
"r:pluggedIn": "Bool",
|
||||||
"r:state": "$ref:NetworkDeviceState"
|
"r:state": "$ref:NetworkDeviceState"
|
||||||
@ -2777,11 +2796,14 @@
|
|||||||
"r:ssid": "String"
|
"r:ssid": "String"
|
||||||
},
|
},
|
||||||
"WirelessNetworkDevice": {
|
"WirelessNetworkDevice": {
|
||||||
"bitRate": "String",
|
"r:bitRate": "String",
|
||||||
"interface": "String",
|
"r:interface": "String",
|
||||||
"macAddress": "String",
|
"r:ipv4Addresses": "StringList",
|
||||||
"o:currentAccessPoint": "$ref:WirelessAccessPoint",
|
"r:ipv6Addresses": "StringList",
|
||||||
"state": "$ref:NetworkDeviceState"
|
"r:macAddress": "String",
|
||||||
|
"r:mode": "$ref:WirelessMode",
|
||||||
|
"r:o:currentAccessPoint": "$ref:WirelessAccessPoint",
|
||||||
|
"r:state": "$ref:NetworkDeviceState"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user