Merge branch 'nxp-backend' of github.com:nymea/nymea-zigbee into nxp-backend
commit
a219fa46ef
|
|
@ -116,6 +116,17 @@ ZigbeeClusterReply *ZigbeeCluster::readAttributes(QList<quint16> attributes)
|
|||
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)
|
||||
{
|
||||
qCDebug(dcZigbeeCluster()) << "Configure reporting on" << m_node << m_endpoint << this << reportingConfigurations;
|
||||
|
|
|
|||
|
|
@ -91,6 +91,7 @@ public:
|
|||
|
||||
// ZCL global commands
|
||||
ZigbeeClusterReply *readAttributes(QList<quint16> attributes);
|
||||
ZigbeeClusterReply *writeAttributes(QList<ZigbeeClusterLibrary::WriteAttributeRecord> writeAttributeRecords);
|
||||
ZigbeeClusterReply *configureReporting(QList<ZigbeeClusterLibrary::AttributeReportingConfiguration> reportingConfigurations);
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -276,6 +276,20 @@ QByteArray ZigbeeClusterLibrary::buildAttributeReportingConfiguration(const Zigb
|
|||
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> statusRecords;
|
||||
|
|
|
|||
|
|
@ -251,6 +251,13 @@ public:
|
|||
ZigbeeDataType dataType;
|
||||
} ReadAttributeStatusRecord;
|
||||
|
||||
// Write attribute
|
||||
typedef struct WriteAttributeRecord {
|
||||
quint16 attributeId;
|
||||
Zigbee::DataType dataType;
|
||||
QByteArray data;
|
||||
} WriteAttributeRecord;
|
||||
|
||||
// Reporting attributes
|
||||
typedef struct AttributeReportingConfiguration {
|
||||
ReportingDirection direction = ReportingDirectionReporting;
|
||||
|
|
@ -286,6 +293,7 @@ public:
|
|||
|
||||
// AttributeReportingConfiguration
|
||||
static QByteArray buildAttributeReportingConfiguration(const AttributeReportingConfiguration &reportingConfiguration);
|
||||
static QByteArray buildWriteAttributeRecord(const WriteAttributeRecord &writeAttributeRecord);
|
||||
// TODO: parseAttributeReportingConfiguration
|
||||
|
||||
static QList<AttributeReportingStatusRecord> parseAttributeReportingStatusRecords(const QByteArray &payload);
|
||||
|
|
|
|||
Loading…
Reference in New Issue