Continue node api development
This commit is contained in:
parent
a0169b179d
commit
eef44c78c6
@ -199,6 +199,27 @@ ZigbeeHandler::ZigbeeHandler(ZigbeeManager *zigbeeManager, QObject *parent) :
|
|||||||
returns.insert("zigbeeError", enumRef<ZigbeeManager::ZigbeeError>());
|
returns.insert("zigbeeError", enumRef<ZigbeeManager::ZigbeeError>());
|
||||||
registerMethod("RemoveNode", description, params, returns);
|
registerMethod("RemoveNode", description, params, returns);
|
||||||
|
|
||||||
|
// NodeAdded
|
||||||
|
params.clear();
|
||||||
|
description = "Emitted whenever a new ZigBee node has joined the network with the given \'networkUuid\'.";
|
||||||
|
params.insert("networkUuid", enumValueName(Uuid));
|
||||||
|
params.insert("zigbeeNode", objectRef("ZigbeeNode"));
|
||||||
|
registerNotification("NodeAdded", description, params);
|
||||||
|
|
||||||
|
// NodeRemoved
|
||||||
|
params.clear();
|
||||||
|
description = "Emitted whenever a ZigBee node has removed from the network with the given \'networkUuid\'.";
|
||||||
|
params.insert("networkUuid", enumValueName(Uuid));
|
||||||
|
params.insert("zigbeeNode", objectRef("ZigbeeNode"));
|
||||||
|
registerNotification("NodeRemoved", description, params);
|
||||||
|
|
||||||
|
// NodeChanged
|
||||||
|
params.clear();
|
||||||
|
description = "Emitted whenever a ZigBee node has changed.";
|
||||||
|
params.insert("networkUuid", enumValueName(Uuid));
|
||||||
|
params.insert("zigbeeNode", objectRef("ZigbeeNode"));
|
||||||
|
registerNotification("NodeChanged", description, params);
|
||||||
|
|
||||||
connect(m_zigbeeManager, &ZigbeeManager::availableAdapterAdded, this, [this](const ZigbeeAdapter &adapter){
|
connect(m_zigbeeManager, &ZigbeeManager::availableAdapterAdded, this, [this](const ZigbeeAdapter &adapter){
|
||||||
QVariantMap params;
|
QVariantMap params;
|
||||||
params.insert("adapter", pack(adapter));
|
params.insert("adapter", pack(adapter));
|
||||||
@ -228,6 +249,11 @@ ZigbeeHandler::ZigbeeHandler(ZigbeeManager *zigbeeManager, QObject *parent) :
|
|||||||
params.insert("networkUuid", networkUuid);
|
params.insert("networkUuid", networkUuid);
|
||||||
emit NetworkRemoved(params);
|
emit NetworkRemoved(params);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
connect(m_zigbeeManager, &ZigbeeManager::nodeJoined, this, &ZigbeeHandler::onNodeJoined);
|
||||||
|
connect(m_zigbeeManager, &ZigbeeManager::nodeAdded, this, &ZigbeeHandler::onNodeAdded);
|
||||||
|
connect(m_zigbeeManager, &ZigbeeManager::nodeRemoved, this, &ZigbeeHandler::onNodeRemoved);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QString ZigbeeHandler::name() const
|
QString ZigbeeHandler::name() const
|
||||||
@ -241,9 +267,9 @@ JsonReply *ZigbeeHandler::GetAvailableBackends(const QVariantMap ¶ms)
|
|||||||
|
|
||||||
QVariantMap returnMap;
|
QVariantMap returnMap;
|
||||||
QVariantList backendsList;
|
QVariantList backendsList;
|
||||||
foreach (const QString &backendName, ZigbeeAdapter::backendNames().values())
|
foreach (const QString &backendName, ZigbeeAdapter::backendNames().values()) {
|
||||||
backendsList << backendName;
|
backendsList << backendName;
|
||||||
|
}
|
||||||
returnMap.insert("backends", backendsList);
|
returnMap.insert("backends", backendsList);
|
||||||
return createReply(returnMap);
|
return createReply(returnMap);
|
||||||
}
|
}
|
||||||
@ -460,4 +486,29 @@ QVariantMap ZigbeeHandler::packNode(ZigbeeNode *node)
|
|||||||
return nodeMap;
|
return nodeMap;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ZigbeeHandler::onNodeJoined(const QUuid &networkUuid, ZigbeeNode *node)
|
||||||
|
{
|
||||||
|
QVariantMap params;
|
||||||
|
params.insert("networkUuid", networkUuid);
|
||||||
|
params.insert("zigbeeNode", packNode(node));
|
||||||
|
emit NodeAdded(params);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ZigbeeHandler::onNodeAdded(const QUuid &networkUuid, ZigbeeNode *node)
|
||||||
|
{
|
||||||
|
// Note: we emit the node changed signal here, since the node has been added internally after initialization.
|
||||||
|
QVariantMap params;
|
||||||
|
params.insert("networkUuid", networkUuid);
|
||||||
|
params.insert("zigbeeNode", packNode(node));
|
||||||
|
emit NodeChanged(params);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ZigbeeHandler::onNodeRemoved(const QUuid &networkUuid, ZigbeeNode *node)
|
||||||
|
{
|
||||||
|
QVariantMap params;
|
||||||
|
params.insert("networkUuid", networkUuid);
|
||||||
|
params.insert("zigbeeNode", packNode(node));
|
||||||
|
emit NodeRemoved(params);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -67,12 +67,19 @@ public:
|
|||||||
private:
|
private:
|
||||||
ZigbeeManager *m_zigbeeManager = nullptr;
|
ZigbeeManager *m_zigbeeManager = nullptr;
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void onNodeJoined(const QUuid &networkUuid, ZigbeeNode *node);
|
||||||
|
void onNodeAdded(const QUuid &networkUuid, ZigbeeNode *node);
|
||||||
|
void onNodeRemoved(const QUuid &networkUuid, ZigbeeNode *node);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void AdapterAdded(const QVariantMap ¶ms);
|
void AdapterAdded(const QVariantMap ¶ms);
|
||||||
void AdapterRemoved(const QVariantMap ¶ms);
|
void AdapterRemoved(const QVariantMap ¶ms);
|
||||||
|
|
||||||
void NetworkAdded(const QVariantMap ¶ms);
|
void NetworkAdded(const QVariantMap ¶ms);
|
||||||
void NetworkRemoved(const QVariantMap ¶ms);
|
void NetworkRemoved(const QVariantMap ¶ms);
|
||||||
void NetworkChanged(const QVariantMap ¶ms);
|
void NetworkChanged(const QVariantMap ¶ms);
|
||||||
|
|
||||||
void NodeAdded(const QVariantMap ¶ms);
|
void NodeAdded(const QVariantMap ¶ms);
|
||||||
void NodeRemoved(const QVariantMap ¶ms);
|
void NodeRemoved(const QVariantMap ¶ms);
|
||||||
void NodeChanged(const QVariantMap ¶ms);
|
void NodeChanged(const QVariantMap ¶ms);
|
||||||
|
|||||||
@ -343,19 +343,19 @@ void ZigbeeManager::loadZigbeeNetworks()
|
|||||||
void ZigbeeManager::checkPlatformConfiguration()
|
void ZigbeeManager::checkPlatformConfiguration()
|
||||||
{
|
{
|
||||||
/* Example platform configurations
|
/* Example platform configurations
|
||||||
*
|
*
|
||||||
* serialPort=/dev/ttymxc2
|
* serialPort=/dev/ttymxc2
|
||||||
* baudRate=115200
|
* baudRate=115200
|
||||||
* backend=nxp
|
* backend=nxp
|
||||||
* autoSetup=false
|
* autoSetup=false
|
||||||
*
|
*
|
||||||
* serialPort=/dev/ttyS0
|
* serialPort=/dev/ttyS0
|
||||||
* baudRate=38400
|
* baudRate=38400
|
||||||
* backend=deconz
|
* backend=deconz
|
||||||
* autoSetup=false
|
* autoSetup=false
|
||||||
*
|
*
|
||||||
* autoSetup=true
|
* autoSetup=true
|
||||||
*/
|
*/
|
||||||
|
|
||||||
QFileInfo platformConfigurationFileInfo(NymeaSettings::settingsPath() + QDir::separator() + "zigbee-platform.conf");
|
QFileInfo platformConfigurationFileInfo(NymeaSettings::settingsPath() + QDir::separator() + "zigbee-platform.conf");
|
||||||
if (platformConfigurationFileInfo.exists()) {
|
if (platformConfigurationFileInfo.exists()) {
|
||||||
@ -544,6 +544,12 @@ void ZigbeeManager::addNetwork(ZigbeeNetwork *network)
|
|||||||
emit nodeRemoved(network->networkUuid(), node);
|
emit nodeRemoved(network->networkUuid(), node);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
connect(network, &ZigbeeNetwork::nodeJoined, this, [this, network](ZigbeeNode *node){
|
||||||
|
// The node has joined but is still initializing. Once the node has been initialized by the stack, the node added signal will be emitted.
|
||||||
|
qCDebug(dcZigbee()) << "Node joined the network" << network->networkUuid().toString() << node;
|
||||||
|
emit nodeJoined(network->networkUuid(), node);
|
||||||
|
});
|
||||||
|
|
||||||
connect(network, &ZigbeeNetwork::firmwareVersionChanged, this, [this, network](const QString &firmwareVersion){
|
connect(network, &ZigbeeNetwork::firmwareVersionChanged, this, [this, network](const QString &firmwareVersion){
|
||||||
qCDebug(dcZigbee()) << "Network adapter firmware version changed for" << network << firmwareVersion;
|
qCDebug(dcZigbee()) << "Network adapter firmware version changed for" << network << firmwareVersion;
|
||||||
emit zigbeeNetworkChanged(network);
|
emit zigbeeNetworkChanged(network);
|
||||||
|
|||||||
@ -125,6 +125,7 @@ signals:
|
|||||||
void zigbeeNetworkRemoved(const QUuid networkUuid);
|
void zigbeeNetworkRemoved(const QUuid networkUuid);
|
||||||
void zigbeeNetworkChanged(ZigbeeNetwork *zigbeeNetwork);
|
void zigbeeNetworkChanged(ZigbeeNetwork *zigbeeNetwork);
|
||||||
|
|
||||||
|
void nodeJoined(const QUuid &networkUuid, ZigbeeNode *node);
|
||||||
void nodeAdded(const QUuid &networkUuid, ZigbeeNode *node);
|
void nodeAdded(const QUuid &networkUuid, ZigbeeNode *node);
|
||||||
void nodeRemoved(const QUuid &networkUuid, ZigbeeNode *node);
|
void nodeRemoved(const QUuid &networkUuid, ZigbeeNode *node);
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user