diff --git a/libnymea-core/hardware/zigbee/zigbeehardwareresourceimplementation.cpp b/libnymea-core/hardware/zigbee/zigbeehardwareresourceimplementation.cpp index f7efd46b..80a54cd5 100644 --- a/libnymea-core/hardware/zigbee/zigbeehardwareresourceimplementation.cpp +++ b/libnymea-core/hardware/zigbee/zigbeehardwareresourceimplementation.cpp @@ -118,6 +118,16 @@ ZigbeeNetwork::State ZigbeeHardwareResourceImplementation::networkState(const QU return network->state(); } +ZigbeeAddress ZigbeeHardwareResourceImplementation::coordinatorAddress(const QUuid &networkUuid) +{ + ZigbeeNetwork *network = m_zigbeeManager->zigbeeNetworks().value(networkUuid); + if (!network) { + qCWarning(dcZigbeeResource()) << "Network" << networkUuid << "not found."; + return ZigbeeAddress(); + } + return network->coordinatorNode()->extendedAddress(); +} + void ZigbeeHardwareResourceImplementation::setEnabled(bool enabled) { qCDebug(dcZigbeeResource()) << "Set" << (enabled ? "enabled" : "disabled"); diff --git a/libnymea-core/hardware/zigbee/zigbeehardwareresourceimplementation.h b/libnymea-core/hardware/zigbee/zigbeehardwareresourceimplementation.h index c01e2b8b..d14a093c 100644 --- a/libnymea-core/hardware/zigbee/zigbeehardwareresourceimplementation.h +++ b/libnymea-core/hardware/zigbee/zigbeehardwareresourceimplementation.h @@ -54,6 +54,7 @@ public: void removeNodeFromNetwork(const QUuid &networkUuid, ZigbeeNode *node) override; ZigbeeNetwork::State networkState(const QUuid &networkUuid) override; + ZigbeeAddress coordinatorAddress(const QUuid &networkUuid) override; public slots: bool enable(); diff --git a/libnymea-core/zigbee/zigbeemanager.cpp b/libnymea-core/zigbee/zigbeemanager.cpp index 374f7a35..be46a14d 100644 --- a/libnymea-core/zigbee/zigbeemanager.cpp +++ b/libnymea-core/zigbee/zigbeemanager.cpp @@ -132,6 +132,10 @@ QPair ZigbeeManager::createZigbeeNetwork(cons return QPair(ZigbeeManager::ZigbeeErrorAdapterNotAvailable, QUuid()); } +// ZigbeeChannelMask testChannelMask = ZigbeeChannelMask(0); +// testChannelMask.setChannel(Zigbee::ZigbeeChannel13); +// qCWarning(dcZigbee()) << "Using test channel mask" << testChannelMask; + ZigbeeNetwork *network = buildNetworkObject(QUuid::createUuid(), backendType); network->setChannelMask(channelMask); network->setSerialPortName(serialPort); @@ -452,6 +456,7 @@ void ZigbeeManager::addNetwork(ZigbeeNetwork *network) qCDebug(dcZigbee()) << " Model" << endpoint->modelIdentifier(); qCDebug(dcZigbee()) << " Version" << endpoint->softwareBuildId(); } + qCDebug(dcZigbee()) << " Input clusters (" << endpoint->inputClusters().count() << ")"; foreach (ZigbeeCluster *cluster, endpoint->inputClusters()) { qCDebug(dcZigbee()) << " -" << cluster; diff --git a/libnymea/hardware/zigbee/zigbeehardwareresource.h b/libnymea/hardware/zigbee/zigbeehardwareresource.h index 5f8a64a7..c4a7b860 100644 --- a/libnymea/hardware/zigbee/zigbeehardwareresource.h +++ b/libnymea/hardware/zigbee/zigbeehardwareresource.h @@ -59,6 +59,7 @@ public: virtual void removeNodeFromNetwork(const QUuid &networkUuid, ZigbeeNode *node) = 0; virtual ZigbeeNetwork::State networkState(const QUuid &networkUuid) = 0; + virtual ZigbeeAddress coordinatorAddress(const QUuid &networkUuid) = 0; signals: void networkStateChanged(const QUuid &networkUuid, ZigbeeNetwork::State state);