Add api to set the zigbee channel during network setup

This commit is contained in:
Michael Zanetti 2021-10-21 18:48:55 +02:00
parent bd7205866f
commit eee810aa4d
6 changed files with 22 additions and 6 deletions

View File

@ -128,6 +128,7 @@ ZigbeeHandler::ZigbeeHandler(ZigbeeManager *zigbeeManager, QObject *parent) :
params.insert("serialPort", enumValueName(String));
params.insert("baudRate", enumValueName(Uint));
params.insert("backend", enumValueName(String));
params.insert("o:channelMask", enumValueName(Uint));
returns.insert("zigbeeError", enumRef<ZigbeeManager::ZigbeeError>());
returns.insert("o:networkUuid", enumValueName(Uuid));
registerMethod("AddNetwork", description, params, returns);
@ -300,7 +301,16 @@ JsonReply *ZigbeeHandler::AddNetwork(const QVariantMap &params)
return createReply(returnMap);
}
QPair<ZigbeeManager::ZigbeeError, QUuid> result = m_zigbeeManager->createZigbeeNetwork(serialPort, baudRate, ZigbeeAdapter::backendNames().key(backendString));
ZigbeeChannelMask channelMask = ZigbeeChannelMask::ChannelConfigurationAllChannels;
if (params.contains("channelMask")) {
channelMask = params.value("channelMask").toUInt() & ZigbeeChannelMask::ChannelConfigurationAllChannels;
if (channelMask == ZigbeeChannelMask::ChannelConfigurationNoChannel) {
returnMap.insert("zigbeeError", enumValueName<ZigbeeManager::ZigbeeError>(ZigbeeManager::ZigbeeErrorInvalidChannel));
return createReply(returnMap);
}
}
QPair<ZigbeeManager::ZigbeeError, QUuid> result = m_zigbeeManager->createZigbeeNetwork(serialPort, baudRate, ZigbeeAdapter::backendNames().key(backendString), channelMask);
if (result.first == ZigbeeManager::ZigbeeErrorNoError) {
returnMap.insert("networkUuid", result.second);
}

View File

@ -149,7 +149,7 @@ QHash<QUuid, ZigbeeNetwork *> ZigbeeManager::zigbeeNetworks() const
QPair<ZigbeeManager::ZigbeeError, QUuid> ZigbeeManager::createZigbeeNetwork(const QString &serialPort, uint baudRate, ZigbeeAdapter::ZigbeeBackendType backendType, ZigbeeChannelMask channelMask)
{
qCDebug(dcZigbee()) << "Start creating network for" << serialPort << baudRate << backendType << channelMask;
qCDebug(dcZigbee()) << "Creating network for" << serialPort << baudRate << backendType << channelMask;
// Make sure we don't have aleardy a network for this adapter
foreach (ZigbeeNetwork *existingNetwork, m_zigbeeNetworks.values()) {

View File

@ -62,7 +62,8 @@ public:
ZigbeeErrorNetworkOffline,
ZigbeeErrorUnknownBackend,
ZigbeeErrorNodeNotFound,
ZigbeeErrorForbidden
ZigbeeErrorForbidden,
ZigbeeErrorInvalidChannel,
};
Q_ENUM(ZigbeeError)

View File

@ -5,7 +5,7 @@ NYMEA_VERSION_STRING=$$system('dpkg-parsechangelog | sed -n -e "s/^Version: //p"
# define protocol versions
JSON_PROTOCOL_VERSION_MAJOR=5
JSON_PROTOCOL_VERSION_MINOR=7
JSON_PROTOCOL_VERSION_MINOR=8
JSON_PROTOCOL_VERSION="$${JSON_PROTOCOL_VERSION_MAJOR}.$${JSON_PROTOCOL_VERSION_MINOR}"
LIBNYMEA_API_VERSION_MAJOR=7
LIBNYMEA_API_VERSION_MINOR=2

View File

@ -10,6 +10,9 @@ INSTALLS += target
QT += sql xml websockets bluetooth dbus network
CONFIG += link_pkgconfig
PKGCONFIG += nymea-zigbee
LIBS += -L$$top_builddir/libnymea/ -lnymea \
-L$$top_builddir/libnymea-core -lnymea-core \
-lnymea-remoteproxyclient

View File

@ -1,4 +1,4 @@
5.7
5.8
{
"enums": {
"BasicType": [
@ -411,7 +411,8 @@
"ZigbeeErrorNetworkOffline",
"ZigbeeErrorUnknownBackend",
"ZigbeeErrorNodeNotFound",
"ZigbeeErrorForbidden"
"ZigbeeErrorForbidden",
"ZigbeeErrorInvalidChannel"
],
"ZigbeeNetworkState": [
"ZigbeeNetworkStateOffline",
@ -2119,6 +2120,7 @@
"params": {
"backend": "String",
"baudRate": "Uint",
"o:channelMask": "Uint",
"serialPort": "String"
},
"returns": {