Hi,
- Does NCS 3.2.1 currently support Descriptor Cluster TagList?
Yes, support should be in 3.2.1. From what I can see when searching for the cluster it is present in the closure sample (nrf\samples\matter\closure)
Any code example or pointer to the relevant source files would be greatly appreciated.
See nrf\samples\matter\closure https://github.com/nrfconnect/sdk-nrf/tree/v3.2.1/samples/matter/closure.
From src/closure_manager.cpp:
constexpr uint8_t kNamespaceClosure = 0x44;
constexpr uint8_t kTagClosureGarageDoor = 0x05;
const Clusters::Descriptor::Structs::SemanticTagStruct::Type kClosureControlEndpointTagList[] = {
{ .namespaceID = kNamespaceClosure,
.tag = kTagClosureGarageDoor,
.label = chip::MakeOptional(DataModel::Nullable<chip::CharSpan>("Closure.GarageDoor"_span)) }
};
...
ReturnErrorOnFailure(SetTagList(mClosureEndpoint,
Span<const Clusters::Descriptor::Structs::SemanticTagStruct::Type>(kClosureControlEndpointTagList)));
- Where should SemanticTagStruct values be defined for an endpoint?
It should be defined in the application code, and pass them to SetTagList() from modules/lib/matter/src/app/util/attribute-storage.h:
CHIP_ERROR SetTagList(chip::EndpointId endpoint,
chip::Span<const chip::app::Clusters::Descriptor::Structs::SemanticTagStruct::Type> tagList);
- Are standard semantic tag namespaces/tags already available in the SDK, or must they be manually defined?
Not as C++ constants for the Closure namespaces. Only a few common ones (Area, Landmark, Position and similar) get generated enums, through src/app/zap-templates/zcl/data-model/chip/semantic-tag-namespace-enums.xml. For anything else, you define the numeric IDs yourself, as the closure sample does. The spec data for Matter 1.5 is in modules/lib/matter/data_model/1.5/namespaces/:
| File | Namespace ID | Relevant tags |
|---|---|---|
Namespace-Closure.xml |
0x44 Closure |
0x00 Covering, 0x01 Window, 0x02 Barrier, 0x03 Cabinet, 0x04 Gate, 0x05 GarageDoor, 0x06 Door |
Namespace-Closure-Window.xml |
0x47 Closure Window |
0x00 Roof, 0x01 Facade |
Namespace-Common-Closure.xml |
0x01 Common Closure |
0x00 Opening, 0x01 Closing, 0x02 Stop |
Endpoint 1 maps cleanly to { namespaceID = 0x44, tag = 0x01 } (Closure.Window). There is no standard "Lock" tag in any of the 1.5 namespaces. For endpoint 2 you can do one of these:
mfgCode to your Vendor ID and choose your own namespace and tag IDs.0x07). Then use label for the human-readable text ("Open/Closed", "Locked").- Has anybody successfully verified TagList exposure using a Matter controller (Google Home, Apple Home, chip-tool, etc.)?
With chip-tool you can do
chip-tool descriptor read tag-list <node-id> 1 chip-tool descriptor read feature-map <node-id> 1
Kind regards,
Andreas