From 2a57ecbd87a3d5d77f14c54b030dd78ea97d2dca Mon Sep 17 00:00:00 2001 From: ivmarkov Date: Fri, 28 Apr 2023 06:13:54 +0000 Subject: [PATCH] Bugfix: only report devtype for the queried endpoint --- matter/src/data_model/system_model/descriptor.rs | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/matter/src/data_model/system_model/descriptor.rs b/matter/src/data_model/system_model/descriptor.rs index 2df17f5..b434586 100644 --- a/matter/src/data_model/system_model/descriptor.rs +++ b/matter/src/data_model/system_model/descriptor.rs @@ -71,7 +71,12 @@ impl DescriptorCluster { } else { match attr.attr_id.try_into()? { Attributes::DeviceTypeList => { - self.encode_devtype_list(attr.node, AttrDataWriter::TAG, &mut writer)?; + self.encode_devtype_list( + attr.node, + attr.endpoint_id, + AttrDataWriter::TAG, + &mut writer, + )?; writer.complete() } Attributes::ServerList => { @@ -111,13 +116,16 @@ impl DescriptorCluster { fn encode_devtype_list( &self, node: &Node, + endpoint_id: u16, tag: TagType, tw: &mut TLVWriter, ) -> Result<(), Error> { tw.start_array(tag)?; for endpoint in node.endpoints { - let dev_type = endpoint.device_type; - dev_type.to_tlv(tw, TagType::Anonymous)?; + if endpoint.id == endpoint_id { + let dev_type = endpoint.device_type; + dev_type.to_tlv(tw, TagType::Anonymous)?; + } } tw.end_container()