nymea/libnymea-core/zwave/zwavenodeimplementation.cpp

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();
}
}
}