150 lines
4.8 KiB
C++
150 lines
4.8 KiB
C++
// SPDX-License-Identifier: LGPL-3.0-or-later
|
|
|
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
|
*
|
|
* Copyright (C) 2013 - 2024, nymea GmbH
|
|
* Copyright (C) 2024 - 2025, chargebyte austria GmbH
|
|
*
|
|
* This file is part of libnymea-app.
|
|
*
|
|
* libnymea-app is free software: you can redistribute it and/or
|
|
* modify it under the terms of the GNU Lesser General Public License
|
|
* as published by the Free Software Foundation, either version 3
|
|
* of the License, or (at your option) any later version.
|
|
*
|
|
* libnymea-app 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 Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public License
|
|
* along with libnymea-app. If not, see <https://www.gnu.org/licenses/>.
|
|
*
|
|
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
|
|
|
#ifndef ZIGBEENETWORK_H
|
|
#define ZIGBEENETWORK_H
|
|
|
|
#include <QUuid>
|
|
#include <QObject>
|
|
#include <QTimer>
|
|
|
|
#include "zigbeenodes.h"
|
|
#include "zigbeeadapter.h"
|
|
|
|
class ZigbeeNetwork : public QObject
|
|
{
|
|
Q_OBJECT
|
|
Q_PROPERTY(QUuid networkUuid READ networkUuid NOTIFY networkUuidChanged)
|
|
Q_PROPERTY(bool enabled READ enabled NOTIFY enabledChanged)
|
|
Q_PROPERTY(QString serialPort READ serialPort NOTIFY serialPortChanged)
|
|
Q_PROPERTY(uint baudRate READ baudRate NOTIFY baudRateChanged)
|
|
Q_PROPERTY(QString macAddress READ macAddress NOTIFY macAddressChanged)
|
|
Q_PROPERTY(QString firmwareVersion READ firmwareVersion NOTIFY firmwareVersionChanged)
|
|
Q_PROPERTY(uint panId READ panId NOTIFY panIdChanged)
|
|
Q_PROPERTY(uint channel READ channel NOTIFY channelChanged)
|
|
Q_PROPERTY(uint channelMask READ channelMask NOTIFY channelMaskChanged)
|
|
Q_PROPERTY(bool permitJoiningEnabled READ permitJoiningEnabled NOTIFY permitJoiningEnabledChanged)
|
|
Q_PROPERTY(uint permitJoiningDuration READ permitJoiningDuration NOTIFY permitJoiningDurationChanged)
|
|
Q_PROPERTY(uint permitJoiningRemaining READ permitJoiningRemaining NOTIFY permitJoiningRemainingChanged)
|
|
Q_PROPERTY(QString backend READ backend NOTIFY backendChanged)
|
|
Q_PROPERTY(ZigbeeNetworkState networkState READ networkState NOTIFY networkStateChanged)
|
|
Q_PROPERTY(ZigbeeNodes *nodes READ nodes CONSTANT)
|
|
|
|
// Internal properties
|
|
|
|
public:
|
|
enum ZigbeeNetworkState {
|
|
ZigbeeNetworkStateOffline,
|
|
ZigbeeNetworkStateStarting,
|
|
ZigbeeNetworkStateUpdating,
|
|
ZigbeeNetworkStateOnline,
|
|
ZigbeeNetworkStateError
|
|
};
|
|
Q_ENUM(ZigbeeNetworkState)
|
|
|
|
explicit ZigbeeNetwork(QObject *parent = nullptr);
|
|
|
|
ZigbeeNodes *nodes() const;
|
|
|
|
QUuid networkUuid() const;
|
|
void setNetworkUuid(const QUuid &networkUuid);
|
|
|
|
bool enabled() const;
|
|
void setEnabled(bool enabled);
|
|
|
|
QString serialPort() const;
|
|
void setSerialPort(const QString &serialPort);
|
|
|
|
uint baudRate() const;
|
|
void setBaudRate(uint baudRate);
|
|
|
|
QString macAddress() const;
|
|
void setMacAddress(const QString &macAddress);
|
|
|
|
QString firmwareVersion() const;
|
|
void setFirmwareVersion(const QString &firmwareVersion);
|
|
|
|
uint panId() const;
|
|
void setPanId(uint panId);
|
|
|
|
uint channel() const;
|
|
void setChannel(uint channel);
|
|
|
|
uint channelMask() const;
|
|
void setChannelMask(uint channelMask);
|
|
|
|
bool permitJoiningEnabled() const;
|
|
void setPermitJoiningEnabled(bool permitJoiningEnabled);
|
|
|
|
uint permitJoiningDuration() const;
|
|
void setPermitJoiningDuration(uint permitJoiningDuration);
|
|
|
|
uint permitJoiningRemaining() const;
|
|
void setPermitJoiningRemaining(uint permitJoiningRemaining);
|
|
|
|
QString backend() const;
|
|
void setBackend(const QString &backend);
|
|
|
|
ZigbeeNetworkState networkState() const;
|
|
void setNetworkState(ZigbeeNetworkState networkState);
|
|
|
|
signals:
|
|
void networkUuidChanged();
|
|
void enabledChanged();
|
|
void serialPortChanged();
|
|
void baudRateChanged();
|
|
void macAddressChanged();
|
|
void firmwareVersionChanged();
|
|
void panIdChanged();
|
|
void channelChanged();
|
|
void channelMaskChanged();
|
|
void permitJoiningEnabledChanged();
|
|
void permitJoiningDurationChanged();
|
|
void permitJoiningRemainingChanged();
|
|
void backendChanged();
|
|
void networkStateChanged();
|
|
|
|
private:
|
|
QUuid m_networkUuid;
|
|
bool m_enabled;
|
|
QString m_serialPort;
|
|
uint m_baudRate;
|
|
QString m_macAddress;
|
|
QString m_firmwareVersion;
|
|
uint m_panId;
|
|
uint m_channel;
|
|
uint m_channelMask;
|
|
bool m_permitJoiningEnabled;
|
|
uint m_permitJoiningDuration;
|
|
uint m_permitJoiningRemaining;
|
|
QString m_backend;
|
|
ZigbeeNetworkState m_networkState;
|
|
|
|
ZigbeeNodes *m_nodes = nullptr;
|
|
|
|
QTimer *m_permitJoinTimer = nullptr;
|
|
};
|
|
|
|
#endif // ZIGBEENETWORK_H
|