Implement remove node into the resource and missing network state changed signal handling
This commit is contained in:
parent
685948f8c8
commit
e9b5b618b2
@ -46,6 +46,7 @@ ZigbeeHardwareResourceImplementation::ZigbeeHardwareResourceImplementation(Zigbe
|
||||
ZigbeeHardwareResource(parent),
|
||||
m_zigbeeManager(zigbeeManager)
|
||||
{
|
||||
connect(m_zigbeeManager, &ZigbeeManager::zigbeeNetworkChanged, this, &ZigbeeHardwareResourceImplementation::onZigbeeNetworkChanged);
|
||||
connect(m_zigbeeManager, &ZigbeeManager::nodeAdded, this, &ZigbeeHardwareResourceImplementation::onZigbeeNodeAdded);
|
||||
connect(m_zigbeeManager, &ZigbeeManager::nodeRemoved, this, &ZigbeeHardwareResourceImplementation::onZigbeeNodeRemoved);
|
||||
connect(m_zigbeeManager, &ZigbeeManager::availableChanged, this, &ZigbeeHardwareResourceImplementation::onZigbeeAvailableChanged);
|
||||
@ -78,6 +79,17 @@ ZigbeeNode *ZigbeeHardwareResourceImplementation::getNode(const QUuid &networkUu
|
||||
return network->getZigbeeNode(extendedAddress);
|
||||
}
|
||||
|
||||
void ZigbeeHardwareResourceImplementation::removeNodeFromNetwork(const QUuid &networkUuid, ZigbeeNode *node)
|
||||
{
|
||||
ZigbeeNetwork *network = m_zigbeeManager->zigbeeNetworks().value(networkUuid);
|
||||
if (!network) {
|
||||
qCWarning(dcZigbeeResource()) << "Can not remove note from network" << networkUuid << "because there is no network with this uuid.";
|
||||
return;
|
||||
}
|
||||
|
||||
network->removeZigbeeNode(node->extendedAddress());
|
||||
}
|
||||
|
||||
ZigbeeNetwork::State ZigbeeHardwareResourceImplementation::networkState(const QUuid &networkUuid)
|
||||
{
|
||||
ZigbeeNetwork *network = m_zigbeeManager->zigbeeNetworks().value(networkUuid);
|
||||
@ -141,6 +153,11 @@ void ZigbeeHardwareResourceImplementation::onZigbeeAvailableChanged(bool availab
|
||||
emit availableChanged(available);
|
||||
}
|
||||
|
||||
void ZigbeeHardwareResourceImplementation::onZigbeeNetworkChanged(ZigbeeNetwork *network)
|
||||
{
|
||||
emit networkStateChanged(network->networkUuid(), network->state());
|
||||
}
|
||||
|
||||
void ZigbeeHardwareResourceImplementation::onZigbeeNodeAdded(const QUuid &networkUuid, ZigbeeNode *node)
|
||||
{
|
||||
qCDebug(dcZigbeeResource()) << node << "joined the network" << m_zigbeeManager->zigbeeNetworks().value(networkUuid);
|
||||
|
||||
@ -51,6 +51,8 @@ public:
|
||||
void registerHandler(ZigbeeHandler *handler, HandlerType type = HandlerTypeVendor) override;
|
||||
|
||||
ZigbeeNode* getNode(const QUuid &networkUuid, const ZigbeeAddress &extendedAddress) override;
|
||||
void removeNodeFromNetwork(const QUuid &networkUuid, ZigbeeNode *node) override;
|
||||
|
||||
ZigbeeNetwork::State networkState(const QUuid &networkUuid) override;
|
||||
|
||||
public slots:
|
||||
@ -62,6 +64,7 @@ protected:
|
||||
|
||||
private slots:
|
||||
void onZigbeeAvailableChanged(bool available);
|
||||
void onZigbeeNetworkChanged(ZigbeeNetwork *network);
|
||||
void onZigbeeNodeAdded(const QUuid &networkUuid, ZigbeeNode *node);
|
||||
void onZigbeeNodeRemoved(const QUuid &networkUuid, ZigbeeNode *node);
|
||||
|
||||
|
||||
@ -56,6 +56,7 @@ public:
|
||||
|
||||
virtual void registerHandler(ZigbeeHandler *handler, HandlerType type = HandlerTypeVendor) = 0;
|
||||
virtual ZigbeeNode* getNode(const QUuid &networkUuid, const ZigbeeAddress &extendedAddress) = 0;
|
||||
virtual void removeNodeFromNetwork(const QUuid &networkUuid, ZigbeeNode *node) = 0;
|
||||
|
||||
virtual ZigbeeNetwork::State networkState(const QUuid &networkUuid) = 0;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user