Merge pull request #16627 from s-hadinger/zigbee_syn

Zigbee move synonyms to a specific method
This commit is contained in:
s-hadinger 2022-09-22 22:20:59 +02:00 committed by GitHub
commit 91f5b30212
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 19 additions and 3 deletions

View File

@ -173,6 +173,7 @@ public:
void parseReportAttributes(Z_attribute_list& attr_list); void parseReportAttributes(Z_attribute_list& attr_list);
void generateSyntheticAttributes(Z_attribute_list& attr_list); void generateSyntheticAttributes(Z_attribute_list& attr_list);
void removeInvalidAttributes(Z_attribute_list& attr_list); void removeInvalidAttributes(Z_attribute_list& attr_list);
void applySynonymAttributes(Z_attribute_list& attr_list);
void computeSyntheticAttributes(Z_attribute_list& attr_list); void computeSyntheticAttributes(Z_attribute_list& attr_list);
void generateCallBacks(Z_attribute_list& attr_list); void generateCallBacks(Z_attribute_list& attr_list);
void parseReadAttributes(uint16_t shortaddr, Z_attribute_list& attr_list); void parseReadAttributes(uint16_t shortaddr, Z_attribute_list& attr_list);
@ -700,11 +701,11 @@ void ZCLFrame::removeInvalidAttributes(Z_attribute_list& attr_list) {
} }
} }
// //
// Compute new attributes based on the standard set // Apply synonyms from the plug-in synonym definitions
// Note: both function are now split to compute on extracted attributes
// //
void ZCLFrame::computeSyntheticAttributes(Z_attribute_list& attr_list) { void ZCLFrame::applySynonymAttributes(Z_attribute_list& attr_list) {
Z_Device & device = zigbee_devices.findShortAddr(shortaddr); Z_Device & device = zigbee_devices.findShortAddr(shortaddr);
String modelId((char*) device.modelId); String modelId((char*) device.modelId);
@ -732,6 +733,20 @@ void ZCLFrame::computeSyntheticAttributes(Z_attribute_list& attr_list) {
attr.setFloat(fval); attr.setFloat(fval);
} }
} }
}
}
//
// Compute new attributes based on the standard set
// Note: both function are now split to compute on extracted attributes
//
void ZCLFrame::computeSyntheticAttributes(Z_attribute_list& attr_list) {
Z_Device & device = zigbee_devices.findShortAddr(shortaddr);
String modelId((char*) device.modelId);
// scan through attributes and apply specific converters
for (auto &attr : attr_list) {
if (attr.key_is_str) { continue; } // pass if key is a name
uint32_t ccccaaaa = (attr.cluster << 16) | attr.attr_id; uint32_t ccccaaaa = (attr.cluster << 16) | attr.attr_id;

View File

@ -1763,6 +1763,7 @@ void Z_IncomingMessage(class ZCLFrame &zcl_received) {
zcl_received.generateSyntheticAttributes(attr_list); zcl_received.generateSyntheticAttributes(attr_list);
zcl_received.removeInvalidAttributes(attr_list); zcl_received.removeInvalidAttributes(attr_list);
zcl_received.applySynonymAttributes(attr_list);
zcl_received.computeSyntheticAttributes(attr_list); zcl_received.computeSyntheticAttributes(attr_list);
zcl_received.generateCallBacks(attr_list); // set deferred callbacks, ex: Occupancy zcl_received.generateCallBacks(attr_list); // set deferred callbacks, ex: Occupancy
Z_postProcessAttributes(srcaddr, zcl_received.getSrcEndpoint(), attr_list); Z_postProcessAttributes(srcaddr, zcl_received.getSrcEndpoint(), attr_list);