Merge branch 'nxp-backend' of github.com:nymea/nymea-zigbee into nxp-backend
This commit is contained in:
commit
a219fa46ef
@ -116,6 +116,17 @@ ZigbeeClusterReply *ZigbeeCluster::readAttributes(QList<quint16> attributes)
|
|||||||
return executeGlobalCommand(ZigbeeClusterLibrary::CommandReadAttributes, payload);
|
return executeGlobalCommand(ZigbeeClusterLibrary::CommandReadAttributes, payload);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ZigbeeClusterReply *ZigbeeCluster::writeAttributes(QList<ZigbeeClusterLibrary::WriteAttributeRecord> writeAttributeRecords)
|
||||||
|
{
|
||||||
|
qCDebug(dcZigbeeCluster()) << "Write attributes on" << m_node << m_endpoint << this;
|
||||||
|
QByteArray payload;
|
||||||
|
foreach (const ZigbeeClusterLibrary::WriteAttributeRecord &writeAttributeRecord, writeAttributeRecords) {
|
||||||
|
payload += ZigbeeClusterLibrary::buildWriteAttributeRecord(writeAttributeRecord);
|
||||||
|
}
|
||||||
|
|
||||||
|
return executeGlobalCommand(ZigbeeClusterLibrary::CommandWriteAttributes, payload);
|
||||||
|
}
|
||||||
|
|
||||||
ZigbeeClusterReply *ZigbeeCluster::configureReporting(QList<ZigbeeClusterLibrary::AttributeReportingConfiguration> reportingConfigurations)
|
ZigbeeClusterReply *ZigbeeCluster::configureReporting(QList<ZigbeeClusterLibrary::AttributeReportingConfiguration> reportingConfigurations)
|
||||||
{
|
{
|
||||||
qCDebug(dcZigbeeCluster()) << "Configure reporting on" << m_node << m_endpoint << this << reportingConfigurations;
|
qCDebug(dcZigbeeCluster()) << "Configure reporting on" << m_node << m_endpoint << this << reportingConfigurations;
|
||||||
|
|||||||
@ -91,6 +91,7 @@ public:
|
|||||||
|
|
||||||
// ZCL global commands
|
// ZCL global commands
|
||||||
ZigbeeClusterReply *readAttributes(QList<quint16> attributes);
|
ZigbeeClusterReply *readAttributes(QList<quint16> attributes);
|
||||||
|
ZigbeeClusterReply *writeAttributes(QList<ZigbeeClusterLibrary::WriteAttributeRecord> writeAttributeRecords);
|
||||||
ZigbeeClusterReply *configureReporting(QList<ZigbeeClusterLibrary::AttributeReportingConfiguration> reportingConfigurations);
|
ZigbeeClusterReply *configureReporting(QList<ZigbeeClusterLibrary::AttributeReportingConfiguration> reportingConfigurations);
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -276,6 +276,20 @@ QByteArray ZigbeeClusterLibrary::buildAttributeReportingConfiguration(const Zigb
|
|||||||
return payload;
|
return payload;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QByteArray ZigbeeClusterLibrary::buildWriteAttributeRecord(const ZigbeeClusterLibrary::WriteAttributeRecord &writeAttributeRecord)
|
||||||
|
{
|
||||||
|
QByteArray payload;
|
||||||
|
QDataStream stream(&payload, QIODevice::WriteOnly);
|
||||||
|
stream.setByteOrder(QDataStream::LittleEndian);
|
||||||
|
stream << writeAttributeRecord.attributeId;
|
||||||
|
stream << static_cast<quint8>(writeAttributeRecord.dataType);
|
||||||
|
for (int i = 0; i < writeAttributeRecord.data.count(); i++) {
|
||||||
|
stream << static_cast<quint8>(writeAttributeRecord.data.at(i));
|
||||||
|
}
|
||||||
|
|
||||||
|
return payload;
|
||||||
|
}
|
||||||
|
|
||||||
QList<ZigbeeClusterLibrary::AttributeReportingStatusRecord> ZigbeeClusterLibrary::parseAttributeReportingStatusRecords(const QByteArray &payload)
|
QList<ZigbeeClusterLibrary::AttributeReportingStatusRecord> ZigbeeClusterLibrary::parseAttributeReportingStatusRecords(const QByteArray &payload)
|
||||||
{
|
{
|
||||||
QList<ZigbeeClusterLibrary::AttributeReportingStatusRecord> statusRecords;
|
QList<ZigbeeClusterLibrary::AttributeReportingStatusRecord> statusRecords;
|
||||||
|
|||||||
@ -251,6 +251,13 @@ public:
|
|||||||
ZigbeeDataType dataType;
|
ZigbeeDataType dataType;
|
||||||
} ReadAttributeStatusRecord;
|
} ReadAttributeStatusRecord;
|
||||||
|
|
||||||
|
// Write attribute
|
||||||
|
typedef struct WriteAttributeRecord {
|
||||||
|
quint16 attributeId;
|
||||||
|
Zigbee::DataType dataType;
|
||||||
|
QByteArray data;
|
||||||
|
} WriteAttributeRecord;
|
||||||
|
|
||||||
// Reporting attributes
|
// Reporting attributes
|
||||||
typedef struct AttributeReportingConfiguration {
|
typedef struct AttributeReportingConfiguration {
|
||||||
ReportingDirection direction = ReportingDirectionReporting;
|
ReportingDirection direction = ReportingDirectionReporting;
|
||||||
@ -286,6 +293,7 @@ public:
|
|||||||
|
|
||||||
// AttributeReportingConfiguration
|
// AttributeReportingConfiguration
|
||||||
static QByteArray buildAttributeReportingConfiguration(const AttributeReportingConfiguration &reportingConfiguration);
|
static QByteArray buildAttributeReportingConfiguration(const AttributeReportingConfiguration &reportingConfiguration);
|
||||||
|
static QByteArray buildWriteAttributeRecord(const WriteAttributeRecord &writeAttributeRecord);
|
||||||
// TODO: parseAttributeReportingConfiguration
|
// TODO: parseAttributeReportingConfiguration
|
||||||
|
|
||||||
static QList<AttributeReportingStatusRecord> parseAttributeReportingStatusRecords(const QByteArray &payload);
|
static QList<AttributeReportingStatusRecord> parseAttributeReportingStatusRecords(const QByteArray &payload);
|
||||||
|
|||||||
Reference in New Issue
Block a user