mirror of https://github.com/nymea/nymea.git
383 lines
9.1 KiB
C++
383 lines
9.1 KiB
C++
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
|
*
|
|
* Copyright 2013 - 2022, nymea GmbH
|
|
* Contact: contact@nymea.io
|
|
*
|
|
* This file is part of nymea.
|
|
* This project including source code and documentation is protected by
|
|
* copyright law, and remains the property of nymea GmbH. All rights, including
|
|
* reproduction, publication, editing and translation, are reserved. The use of
|
|
* this project is subject to the terms of a license agreement to be concluded
|
|
* with nymea GmbH in accordance with the terms of use of nymea GmbH, available
|
|
* under https://nymea.io/license
|
|
*
|
|
* GNU General Public License Usage
|
|
* Alternatively, this project may be redistributed and/or modified under the
|
|
* terms of the GNU General Public License as published by the Free Software
|
|
* Foundation, GNU version 3. This project is distributed in the hope that it
|
|
* will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty
|
|
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
|
* Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License along with
|
|
* this project. If not, see <https://www.gnu.org/licenses/>.
|
|
*
|
|
* For any further details and any questions please contact us under
|
|
* contact@nymea.io or see our FAQ/Licensing Information on
|
|
* https://nymea.io/license/faq
|
|
*
|
|
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
|
|
|
#include "zwavenodeimplementation.h"
|
|
#include <QUuid>
|
|
#include <QDebug>
|
|
|
|
#include "zwavemanager.h"
|
|
|
|
namespace nymeaserver
|
|
{
|
|
|
|
nymeaserver::ZWaveNodeImplementation::ZWaveNodeImplementation(ZWaveManager *manager, const QUuid &networkUuid, quint8 nodeId, QObject *parent):
|
|
ZWaveNode{parent},
|
|
m_manager(manager),
|
|
m_networkUuid(networkUuid),
|
|
m_nodeId(nodeId)
|
|
{
|
|
|
|
}
|
|
|
|
QUuid ZWaveNodeImplementation::networkUuid() const
|
|
{
|
|
return m_networkUuid;
|
|
}
|
|
|
|
quint8 ZWaveNodeImplementation::nodeId() const
|
|
{
|
|
return m_nodeId;
|
|
}
|
|
|
|
ZWaveNodeImplementation::ZWaveNodeType ZWaveNodeImplementation::nodeType() const
|
|
{
|
|
return m_nodeType;
|
|
}
|
|
|
|
void ZWaveNodeImplementation::setNodeType(ZWaveNodeType nodeType)
|
|
{
|
|
if (m_nodeType != nodeType) {
|
|
m_nodeType = nodeType;
|
|
emit nodeTypeChanged();
|
|
emit nodeChanged();
|
|
}
|
|
}
|
|
|
|
ZWaveNode::ZWaveNodeRole ZWaveNodeImplementation::role() const
|
|
{
|
|
return m_role;
|
|
}
|
|
|
|
void ZWaveNodeImplementation::setRole(ZWaveNodeRole role)
|
|
{
|
|
if (m_role != role) {
|
|
m_role = role;
|
|
emit roleChanged();
|
|
emit nodeChanged();
|
|
}
|
|
}
|
|
|
|
ZWaveNodeImplementation::ZWaveDeviceType ZWaveNodeImplementation::deviceType() const
|
|
{
|
|
return m_deviceType;
|
|
}
|
|
|
|
void ZWaveNodeImplementation::setDeviceType(ZWaveDeviceType deviceType)
|
|
{
|
|
if (m_deviceType != deviceType) {
|
|
m_deviceType = deviceType;
|
|
emit deviceTypeChanged();
|
|
emit nodeChanged();
|
|
}
|
|
}
|
|
|
|
ZWaveNode::ZWavePlusDeviceType ZWaveNodeImplementation::plusDeviceType() const
|
|
{
|
|
return m_plusDeviceType;
|
|
}
|
|
|
|
void ZWaveNodeImplementation::setPlusDeviceType(ZWavePlusDeviceType plusDeviceType)
|
|
{
|
|
if (m_plusDeviceType != plusDeviceType) {
|
|
m_plusDeviceType = plusDeviceType;
|
|
emit plusDeviceTypeChanged();
|
|
emit nodeChanged();
|
|
}
|
|
}
|
|
|
|
quint16 ZWaveNodeImplementation::manufacturerId() const
|
|
{
|
|
return m_manufacturerId;
|
|
}
|
|
|
|
void ZWaveNodeImplementation::setManufacturerId(quint16 manufacturerId)
|
|
{
|
|
if (m_manufacturerId != manufacturerId) {
|
|
m_manufacturerId = manufacturerId;
|
|
emit manufacturerIdChanged();
|
|
emit nodeChanged();
|
|
}
|
|
}
|
|
|
|
QString ZWaveNodeImplementation::manufacturerName() const
|
|
{
|
|
return m_manufacturerName;
|
|
}
|
|
|
|
void ZWaveNodeImplementation::setManufacturerName(const QString &manufacturerName)
|
|
{
|
|
if (m_manufacturerName != manufacturerName) {
|
|
m_manufacturerName = manufacturerName;
|
|
emit manufacturerNameChanged();
|
|
emit nodeChanged();
|
|
}
|
|
}
|
|
|
|
QString ZWaveNodeImplementation::name() const
|
|
{
|
|
return m_name;
|
|
}
|
|
|
|
void ZWaveNodeImplementation::setName(const QString &name)
|
|
{
|
|
if (m_name != name) {
|
|
m_name = name;
|
|
emit nameChanged();
|
|
emit nodeChanged();
|
|
}
|
|
}
|
|
|
|
quint16 ZWaveNodeImplementation::productId() const
|
|
{
|
|
return m_productId;
|
|
}
|
|
|
|
void ZWaveNodeImplementation::setProductId(quint16 productId)
|
|
{
|
|
if (m_productId != productId) {
|
|
m_productId = productId;
|
|
emit productIdChanged();
|
|
emit nodeChanged();
|
|
}
|
|
}
|
|
|
|
QString ZWaveNodeImplementation::productName() const
|
|
{
|
|
return m_productName;
|
|
}
|
|
|
|
void ZWaveNodeImplementation::setProductName(const QString &productName)
|
|
{
|
|
if (m_productName != productName) {
|
|
m_productName = productName;
|
|
emit productNameChanged();
|
|
emit nodeChanged();
|
|
}
|
|
}
|
|
|
|
quint16 ZWaveNodeImplementation::productType() const
|
|
{
|
|
return m_productType;
|
|
}
|
|
|
|
void ZWaveNodeImplementation::setProductType(quint16 productType)
|
|
{
|
|
if (m_productType != productType) {
|
|
m_productType = productType;
|
|
emit productTypeChanged();
|
|
emit nodeChanged();
|
|
}
|
|
}
|
|
|
|
quint8 ZWaveNodeImplementation::version() const
|
|
{
|
|
return m_version;
|
|
}
|
|
|
|
void ZWaveNodeImplementation::setVersion(quint8 version)
|
|
{
|
|
if (m_version != version) {
|
|
m_version = version;
|
|
emit versionChanged();
|
|
emit nodeChanged();
|
|
}
|
|
}
|
|
|
|
bool ZWaveNodeImplementation::isZWavePlusDevice() const
|
|
{
|
|
return m_isZWavePlusDevice;
|
|
}
|
|
|
|
void ZWaveNodeImplementation::setIsZWavePlusDevice(bool isZWavePlusDevice)
|
|
{
|
|
if (m_isZWavePlusDevice != isZWavePlusDevice) {
|
|
m_isZWavePlusDevice = isZWavePlusDevice;
|
|
emit isZWavePlusDeviceChanged();
|
|
emit nodeChanged();
|
|
}
|
|
}
|
|
|
|
bool ZWaveNodeImplementation::isSecurityDevice() const
|
|
{
|
|
return m_isSecurityDevice;
|
|
}
|
|
|
|
void ZWaveNodeImplementation::setIsSecurityDevice(bool isSecurityDevice)
|
|
{
|
|
if (m_isSecurityDevice != isSecurityDevice) {
|
|
m_isSecurityDevice = isSecurityDevice;
|
|
emit isSecurityDeviceChanged();
|
|
emit nodeChanged();
|
|
}
|
|
}
|
|
|
|
bool ZWaveNodeImplementation::isBeamingDevice() const
|
|
{
|
|
return m_isBeamingDevice;
|
|
}
|
|
|
|
void ZWaveNodeImplementation::setIsBeamingDevice(bool isBeamingDevice)
|
|
{
|
|
if (m_isBeamingDevice != isBeamingDevice) {
|
|
m_isBeamingDevice = isBeamingDevice;
|
|
emit isBeamingDeviceChanged();
|
|
emit nodeChanged();
|
|
}
|
|
}
|
|
|
|
void ZWaveNodeImplementation::updateValue(const ZWaveValue &value)
|
|
{
|
|
if (m_values.contains(value.id())) {
|
|
m_values[value.id()] = value;
|
|
emit valueChanged(value);
|
|
} else {
|
|
m_values.insert(value.id(), value);
|
|
emit valueAdded(value);
|
|
}
|
|
}
|
|
|
|
void ZWaveNodeImplementation::removeValue(quint64 id)
|
|
{
|
|
if (m_values.contains(id)) {
|
|
emit valueRemoved(m_values.take(id));
|
|
}
|
|
}
|
|
|
|
QList<ZWaveValue> ZWaveNodeImplementation::values() const
|
|
{
|
|
return m_values.values();
|
|
}
|
|
|
|
ZWaveValue ZWaveNodeImplementation::value(quint64 valueId) const
|
|
{
|
|
return m_values.value(valueId);
|
|
}
|
|
|
|
ZWaveValue ZWaveNodeImplementation::value(ZWaveValue::Genre genre, ZWaveValue::CommandClass commandClass, quint8 instance, quint16 index, ZWaveValue::Type type) const
|
|
{
|
|
foreach (const ZWaveValue &value, m_values) {
|
|
if (value.genre() == genre && value.commandClass() == commandClass && value.instance() == instance && value.index() == index && value.type() == type) {
|
|
return value;
|
|
}
|
|
}
|
|
return ZWaveValue();
|
|
}
|
|
|
|
void ZWaveNodeImplementation::setValue(const ZWaveValue &value)
|
|
{
|
|
m_manager->setValue(m_networkUuid, m_nodeId, value);
|
|
}
|
|
|
|
bool ZWaveNodeImplementation::reachable() const
|
|
{
|
|
return m_reachable;
|
|
}
|
|
|
|
void ZWaveNodeImplementation::setReachable(bool reachable)
|
|
{
|
|
if (m_reachable != reachable) {
|
|
m_reachable = reachable;
|
|
emit reachableChanged(reachable);
|
|
emit nodeChanged();
|
|
}
|
|
}
|
|
|
|
bool ZWaveNodeImplementation::initialized() const
|
|
{
|
|
return m_initialized;
|
|
}
|
|
|
|
void ZWaveNodeImplementation::setInitialized(bool initialized)
|
|
{
|
|
if (m_initialized != initialized) {
|
|
m_initialized = initialized;
|
|
emit initializedChanged(initialized);
|
|
emit nodeChanged();
|
|
}
|
|
}
|
|
|
|
bool ZWaveNodeImplementation::failed() const
|
|
{
|
|
return m_failed;
|
|
}
|
|
|
|
void ZWaveNodeImplementation::setFailed(bool failed)
|
|
{
|
|
if (m_failed != failed) {
|
|
m_failed = failed;
|
|
emit failedChanged(failed);
|
|
emit nodeChanged();
|
|
}
|
|
}
|
|
|
|
bool ZWaveNodeImplementation::sleeping() const
|
|
{
|
|
return m_sleeping;
|
|
}
|
|
|
|
void ZWaveNodeImplementation::setSleeping(bool sleeping)
|
|
{
|
|
if (m_sleeping != sleeping) {
|
|
m_sleeping = sleeping;
|
|
emit sleepingChanged(sleeping);
|
|
emit nodeChanged();
|
|
}
|
|
}
|
|
|
|
quint8 ZWaveNodeImplementation::linkQuality() const
|
|
{
|
|
return m_linkQuality;
|
|
}
|
|
|
|
void ZWaveNodeImplementation::setLinkQuality(quint8 linkQuality)
|
|
{
|
|
if (m_linkQuality != linkQuality) {
|
|
m_linkQuality = linkQuality;
|
|
emit linkQualityChanged(linkQuality);
|
|
emit nodeChanged();
|
|
}
|
|
}
|
|
|
|
quint8 ZWaveNodeImplementation::securityMode() const
|
|
{
|
|
return m_securityMode;
|
|
}
|
|
|
|
void ZWaveNodeImplementation::setSecurityMode(quint8 securityMode)
|
|
{
|
|
if (m_securityMode != securityMode) {
|
|
m_securityMode = securityMode;
|
|
emit securityModeChanged(securityMode);
|
|
emit nodeChanged();
|
|
}
|
|
}
|
|
|
|
}
|