modules/woz_matter/include/matter_clusters.h
openaliro/openaliro
Module

matter_clusters.h

what this device answers, as opposed to how.

modules/woz_matter/include/matter_clusters.h3 documented symbols

Overview

what this device answers, as opposed to how. matter_im.c owns the ReportData wire format and knows nothing about door locks or vendor IDs. This is the other half: the endpoints, clusters and attributes that exist, and what they say. Scope is deliberately the commissioner's FIRST question and no further. A real iPhone, immediately after PASE, reads nine attribute paths: endpoint 0 GeneralCommissioning 0x0030 attributes 0x00..0x04 and 0x0C endpoint 0 BasicInformation 0x0028 VendorID 0x02, ProductID 0x04 endpoint 0 TimeSynchronization 0x0038 all attributes (wildcard) Everything else answers UNSUPPORTED_*, which is a legal answer and a truthful one. Clusters get added when a commissioner is observed asking for them, rather than because the spec lists them. Device-specific values arrive in @ref matter_device_info instead of being read from Kconfig here, so the host suite can build this without Zephyr and assert on the encoded bytes.

depends on matter_attest.h matter_fabric.h matter_im.h matter_thread.h  ·  used by matter_clusters.c

API

Cstruct matter_user

modules/woz_matter/include/matter_clusters.h:261

One user slot. Reported by GetUser, filled by SetUser.

Cstruct matter_device_info

modules/woz_matter/include/matter_clusters.h:497

Complete device information structure held by the Matter node, including vendor/product IDs, Aliro identity, user table, commissioning state, operational network configuration, and session-specific attestation and key data.

Cstruct matter_admin_hooks

modules/woz_matter/include/matter_clusters.h:752

What the application must do when a controller opens a commissioning window. The cluster decodes and validates; everything it would then have to TOUCH -- the SPAKE2+ verifier the PASE responder uses, the BLE advertising payload, the expiry timer -- belongs to the port. So this module stays free of both Bluetooth and Zephyr, which is what lets tests/host compile it. All three return a MATTER_ADMIN_STATUS_* code, or 0 for success.

##define MATTER_CLUSTER_BASIC_INFORMATION 0x0028u

modules/woz_matter/include/matter_clusters.h:45

##define MATTER_CLUSTER_GENERAL_COMMISSIONING 0x0030u

modules/woz_matter/include/matter_clusters.h:46

##define MATTER_CLUSTER_NETWORK_COMMISSIONING 0x0031u

modules/woz_matter/include/matter_clusters.h:47

##define MATTER_CLUSTER_DESCRIPTOR 0x001Du

modules/woz_matter/include/matter_clusters.h:48

##define MATTER_CLUSTER_ACCESS_CONTROL 0x001Fu

modules/woz_matter/include/matter_clusters.h:49

##define MATTER_CLUSTER_OPERATIONAL_CREDENTIALS 0x003Eu

modules/woz_matter/include/matter_clusters.h:50

##define MATTER_CLUSTER_ADMIN_COMMISSIONING 0x003Cu

modules/woz_matter/include/matter_clusters.h:51

##define MATTER_CLUSTER_DOOR_LOCK 0x0101u

modules/woz_matter/include/matter_clusters.h:52

##define MATTER_ATTR_ADMIN_WINDOW_STATUS 0x0000u

modules/woz_matter/include/matter_clusters.h:62

##define MATTER_ATTR_ADMIN_FABRIC_INDEX 0x0001u

modules/woz_matter/include/matter_clusters.h:63

##define MATTER_ATTR_ADMIN_VENDOR_ID 0x0002u

modules/woz_matter/include/matter_clusters.h:64

##define MATTER_CMD_ADMIN_OPEN_WINDOW 0x0000u

modules/woz_matter/include/matter_clusters.h:66

##define MATTER_CMD_ADMIN_OPEN_BASIC_WINDOW 0x0001u

modules/woz_matter/include/matter_clusters.h:67

##define MATTER_CMD_ADMIN_REVOKE 0x0002u

modules/woz_matter/include/matter_clusters.h:68

##define MATTER_ADMIN_WINDOW_NOT_OPEN 0u

modules/woz_matter/include/matter_clusters.h:71

CommissioningWindowStatusEnum (AdministratorCommissioning/Enums.h).

##define MATTER_ADMIN_WINDOW_ENHANCED 1u

modules/woz_matter/include/matter_clusters.h:72

##define MATTER_ADMIN_WINDOW_BASIC 2u

modules/woz_matter/include/matter_clusters.h:73

##define MATTER_ADMIN_STATUS_BUSY 1u

modules/woz_matter/include/matter_clusters.h:80

##define MATTER_ADMIN_STATUS_PAKE_PARAM_ERROR 2u

modules/woz_matter/include/matter_clusters.h:81

##define MATTER_ADMIN_STATUS_WINDOW_NOT_OPEN 3u

modules/woz_matter/include/matter_clusters.h:82

##define MATTER_ATTR_DESC_DEVICE_TYPE_LIST 0x0000u

modules/woz_matter/include/matter_clusters.h:85

##define MATTER_ATTR_DESC_SERVER_LIST 0x0001u

modules/woz_matter/include/matter_clusters.h:86

##define MATTER_ATTR_DESC_CLIENT_LIST 0x0002u

modules/woz_matter/include/matter_clusters.h:87

##define MATTER_ATTR_DESC_PARTS_LIST 0x0003u

modules/woz_matter/include/matter_clusters.h:88

##define MATTER_DEVICE_TYPE_ROOT_NODE 0x0016u

modules/woz_matter/include/matter_clusters.h:97

##define MATTER_DEVICE_TYPE_ROOT_REV 3u

modules/woz_matter/include/matter_clusters.h:98

##define MATTER_DEVICE_TYPE_DOOR_LOCK 0x000Au

modules/woz_matter/include/matter_clusters.h:107

##define MATTER_DEVICE_TYPE_LOCK_REV 3u

modules/woz_matter/include/matter_clusters.h:108

##define MATTER_ATTR_DL_LOCK_STATE 0x0000u

modules/woz_matter/include/matter_clusters.h:111

##define MATTER_ATTR_DL_LOCK_TYPE 0x0001u

modules/woz_matter/include/matter_clusters.h:112

##define MATTER_ATTR_DL_ACTUATOR_ENABLED 0x0002u

modules/woz_matter/include/matter_clusters.h:113

##define MATTER_ATTR_DL_OPERATING_MODE 0x0025u

modules/woz_matter/include/matter_clusters.h:114

##define MATTER_ATTR_DL_SUPPORTED_OPERATING_MODES 0x0026u

modules/woz_matter/include/matter_clusters.h:115

##define MATTER_ATTR_DL_ALIRO_VERIFICATION_KEY 0x0080u

modules/woz_matter/include/matter_clusters.h:125

##define MATTER_ATTR_DL_ALIRO_GROUP_ID 0x0081u

modules/woz_matter/include/matter_clusters.h:126

##define MATTER_ATTR_DL_ALIRO_GROUP_SUB_ID 0x0082u

modules/woz_matter/include/matter_clusters.h:127

##define MATTER_ATTR_DL_ALIRO_EXPEDITED_VERSIONS 0x0083u

modules/woz_matter/include/matter_clusters.h:128

##define MATTER_ATTR_DL_ALIRO_GROUP_RESOLVING_KEY 0x0084u

modules/woz_matter/include/matter_clusters.h:129

##define MATTER_ATTR_DL_ALIRO_BLE_UWB_VERSIONS 0x0085u

modules/woz_matter/include/matter_clusters.h:130

##define MATTER_ATTR_DL_ALIRO_BLE_ADV_VERSION 0x0086u

modules/woz_matter/include/matter_clusters.h:131

##define MATTER_ATTR_DL_ALIRO_ISSUER_KEYS_MAX 0x0087u

modules/woz_matter/include/matter_clusters.h:132

##define MATTER_ATTR_DL_ALIRO_ENDPOINT_KEYS_MAX 0x0088u

modules/woz_matter/include/matter_clusters.h:133

##define MATTER_DL_FEATURE_ALIRO_PROVISIONING 0x2000u

modules/woz_matter/include/matter_clusters.h:141

##define MATTER_DL_FEATURE_ALIRO_BLE_UWB 0x4000u

modules/woz_matter/include/matter_clusters.h:142

##define MATTER_DL_FEATURE_USER 0x0100u

modules/woz_matter/include/matter_clusters.h:150

##define MATTER_ATTR_DL_USERS_MAX 0x0011u

modules/woz_matter/include/matter_clusters.h:153

##define MATTER_ATTR_DL_CREDS_PER_USER_MAX 0x001Cu

modules/woz_matter/include/matter_clusters.h:154

##define MATTER_CMD_DL_SET_USER 0x001Au

modules/woz_matter/include/matter_clusters.h:155

##define MATTER_CMD_DL_GET_USER 0x001Bu

modules/woz_matter/include/matter_clusters.h:156

##define MATTER_CMD_DL_GET_USER_RESPONSE 0x001Cu

modules/woz_matter/include/matter_clusters.h:157

##define MATTER_CMD_DL_SET_ALIRO_READER_CONFIG 0x0028u

modules/woz_matter/include/matter_clusters.h:167

SetAliroReaderConfig (DoorLock/CommandIds.h:122-125). The command this whole Matter node exists to receive: it is how Apple Home hands over the reader identity, and it is what makes this device provisionable by its owner rather than only by whoever built the firmware. Always preceded by a TimedRequest, because it must not be replayed.

##define MATTER_CMD_DL_LOCK_DOOR 0x0000u

modules/woz_matter/include/matter_clusters.h:179

##define MATTER_CMD_DL_UNLOCK_DOOR 0x0001u

modules/woz_matter/include/matter_clusters.h:180

##define MATTER_CMD_DL_GET_CREDENTIAL_STATUS 0x0024u

modules/woz_matter/include/matter_clusters.h:189

##define MATTER_CMD_DL_GET_CREDENTIAL_STATUS_RESPONSE 0x0025u

modules/woz_matter/include/matter_clusters.h:190

##define TAG_CREDSTATUS_EXISTS 0u

modules/woz_matter/include/matter_clusters.h:193

##define TAG_CREDSTATUS_USER_INDEX 1u

modules/woz_matter/include/matter_clusters.h:194

##define TAG_CREDSTATUS_CREATOR_FABRIC 2u

modules/woz_matter/include/matter_clusters.h:195

##define TAG_CREDSTATUS_MODIFIER_FABRIC 3u

modules/woz_matter/include/matter_clusters.h:196

##define TAG_CREDSTATUS_NEXT_INDEX 4u

modules/woz_matter/include/matter_clusters.h:197

##define TAG_CREDSTATUS_DATA 5u

modules/woz_matter/include/matter_clusters.h:198

##define TAG_ALIRO_CFG_SIGNING_KEY 0u

modules/woz_matter/include/matter_clusters.h:201

##define TAG_ALIRO_CFG_VERIFICATION_KEY 1u

modules/woz_matter/include/matter_clusters.h:202

##define TAG_ALIRO_CFG_GROUP_ID 2u

modules/woz_matter/include/matter_clusters.h:203

##define TAG_ALIRO_CFG_GROUP_RESOLVING_KEY 3u

modules/woz_matter/include/matter_clusters.h:204

##define MATTER_ALIRO_SIGNING_KEY_LEN 32u

modules/woz_matter/include/matter_clusters.h:206

##define MATTER_ALIRO_VERIFICATION_KEY_LEN 65u

modules/woz_matter/include/matter_clusters.h:207

##define MATTER_CMD_DL_SET_CREDENTIAL 0x0022u

modules/woz_matter/include/matter_clusters.h:216

##define MATTER_CMD_DL_SET_CREDENTIAL_RESPONSE 0x0023u

modules/woz_matter/include/matter_clusters.h:217

##define TAG_SETCRED_OPERATION 0u

modules/woz_matter/include/matter_clusters.h:219

##define TAG_SETCRED_CREDENTIAL 1u

modules/woz_matter/include/matter_clusters.h:220

##define TAG_SETCRED_DATA 2u

modules/woz_matter/include/matter_clusters.h:221

##define TAG_SETCRED_USER_INDEX 3u

modules/woz_matter/include/matter_clusters.h:222

##define TAG_CREDSTRUCT_TYPE 0u

modules/woz_matter/include/matter_clusters.h:225

##define TAG_CREDSTRUCT_INDEX 1u

modules/woz_matter/include/matter_clusters.h:226

##define TAG_SETCREDRESP_STATUS 0u

modules/woz_matter/include/matter_clusters.h:229

##define TAG_SETCREDRESP_USER_INDEX 1u

modules/woz_matter/include/matter_clusters.h:230

##define TAG_SETCREDRESP_NEXT_INDEX 2u

modules/woz_matter/include/matter_clusters.h:231

##define MATTER_DL_CRED_ALIRO_ISSUER_KEY 6u

modules/woz_matter/include/matter_clusters.h:238

##define MATTER_DL_CRED_ALIRO_EVICTABLE_ENDPOINT 7u

modules/woz_matter/include/matter_clusters.h:239

##define MATTER_DL_CRED_ALIRO_ENDPOINT_KEY 8u

modules/woz_matter/include/matter_clusters.h:240

##define TAG_SETUSER_OPERATION 0u

modules/woz_matter/include/matter_clusters.h:252

##define TAG_SETUSER_INDEX 1u

modules/woz_matter/include/matter_clusters.h:253

##define TAG_SETUSER_NAME 2u

modules/woz_matter/include/matter_clusters.h:254

##define TAG_SETUSER_UNIQUE_ID 3u

modules/woz_matter/include/matter_clusters.h:255

##define TAG_SETUSER_STATUS 4u

modules/woz_matter/include/matter_clusters.h:256

##define TAG_SETUSER_TYPE 5u

modules/woz_matter/include/matter_clusters.h:257

##define TAG_SETUSER_CREDENTIAL_RULE 6u

modules/woz_matter/include/matter_clusters.h:258

##define TAG_GETUSER_INDEX 0u

modules/woz_matter/include/matter_clusters.h:272

##define TAG_GETUSER_NAME 1u

modules/woz_matter/include/matter_clusters.h:273

##define TAG_GETUSER_UNIQUE_ID 2u

modules/woz_matter/include/matter_clusters.h:274

##define TAG_GETUSER_STATUS 3u

modules/woz_matter/include/matter_clusters.h:275

##define TAG_GETUSER_TYPE 4u

modules/woz_matter/include/matter_clusters.h:276

##define TAG_GETUSER_CREDENTIAL_RULE 5u

modules/woz_matter/include/matter_clusters.h:277

##define TAG_GETUSER_CREDENTIALS 6u

modules/woz_matter/include/matter_clusters.h:278

##define TAG_GETUSER_CREATOR_FABRIC 7u

modules/woz_matter/include/matter_clusters.h:279

##define TAG_GETUSER_MODIFIER_FABRIC 8u

modules/woz_matter/include/matter_clusters.h:280

##define TAG_GETUSER_NEXT_INDEX 9u

modules/woz_matter/include/matter_clusters.h:281

##define MATTER_DL_USERS_MAX 10u

modules/woz_matter/include/matter_clusters.h:290

How many user slots this lock reports. Reported, not stored: this node holds no user database yet. The count has to be non-zero because a lock claiming the User feature with room for nobody is not a coherent answer.

##define MATTER_DL_CREDS_PER_USER_MAX 5u

modules/woz_matter/include/matter_clusters.h:291

##define MATTER_DL_LOCK_STATE_LOCKED 1u

modules/woz_matter/include/matter_clusters.h:294

##define MATTER_DL_LOCK_STATE_UNLOCKED 2u

modules/woz_matter/include/matter_clusters.h:295

##define MATTER_DL_OPERATING_MODE_NORMAL 0u

modules/woz_matter/include/matter_clusters.h:296

##define MATTER_DL_SUPPORTED_OPERATING_MODES 0x0001u

modules/woz_matter/include/matter_clusters.h:298

SupportedOperatingModes is a bitmap; bit 0 is Normal and it is the only one.

##define MATTER_ALIRO_PROTOCOL_VERSION 0x0100u

modules/woz_matter/include/matter_clusters.h:306

##define MATTER_ALIRO_BLE_ADV_VERSION 0u

modules/woz_matter/include/matter_clusters.h:308

0 is the only defined Aliro BLE advertising version.

##define MATTER_ALIRO_KEYS_SUPPORTED 10u

modules/woz_matter/include/matter_clusters.h:310

Matches the ESP32 lock's kAliroKeysSupported (aliro_reader_delegate.h:94).

##define MATTER_ALIRO_GROUP_ID_LEN 16u

modules/woz_matter/include/matter_clusters.h:312

Aliro group identifier, sub-identifier and resolving key are all 16 bytes.

##define MATTER_ATTR_AC_ACL 0x0000u

modules/woz_matter/include/matter_clusters.h:315

Access Control attributes (access-control-cluster.cpp, AclAttribute).

##define MATTER_ATTR_AC_EXTENSION 0x0001u

modules/woz_matter/include/matter_clusters.h:316

##define MATTER_ATTR_AC_SUBJECTS_PER_ENTRY 0x0002u

modules/woz_matter/include/matter_clusters.h:317

##define MATTER_ATTR_AC_TARGETS_PER_ENTRY 0x0003u

modules/woz_matter/include/matter_clusters.h:318

##define MATTER_ATTR_AC_ENTRIES_PER_FABRIC 0x0004u

modules/woz_matter/include/matter_clusters.h:319

##define MATTER_ACL_MAX 256u

modules/woz_matter/include/matter_clusters.h:328

How much of an ACL this node will hold. One fabric, and the spec's floor is four entries per fabric; a commissioner writes the whole list at once, so this bounds the encoded list rather than any single entry.

##define MATTER_ATTR_FEATURE_MAP 0xFFFCu

modules/woz_matter/include/matter_clusters.h:331

FeatureMap, on every cluster (GlobalAttributeIds.h).

##define MATTER_ATTR_BASIC_DATA_MODEL_REVISION 0x0000u

modules/woz_matter/include/matter_clusters.h:334

##define MATTER_ATTR_BASIC_VENDOR_NAME 0x0001u

modules/woz_matter/include/matter_clusters.h:335

##define MATTER_ATTR_BASIC_VENDOR_ID 0x0002u

modules/woz_matter/include/matter_clusters.h:336

##define MATTER_ATTR_BASIC_PRODUCT_NAME 0x0003u

modules/woz_matter/include/matter_clusters.h:337

##define MATTER_ATTR_BASIC_PRODUCT_ID 0x0004u

modules/woz_matter/include/matter_clusters.h:338

##define MATTER_ATTR_BASIC_NODE_LABEL 0x0005u

modules/woz_matter/include/matter_clusters.h:339

##define MATTER_ATTR_BASIC_LOCATION 0x0006u

modules/woz_matter/include/matter_clusters.h:340

##define MATTER_ATTR_BASIC_HARDWARE_VERSION 0x0007u

modules/woz_matter/include/matter_clusters.h:341

##define MATTER_ATTR_BASIC_HARDWARE_VERSION_STR 0x0008u

modules/woz_matter/include/matter_clusters.h:342

##define MATTER_ATTR_BASIC_SOFTWARE_VERSION 0x0009u

modules/woz_matter/include/matter_clusters.h:343

##define MATTER_ATTR_BASIC_SOFTWARE_VERSION_STR 0x000Au

modules/woz_matter/include/matter_clusters.h:344

##define MATTER_ATTR_BASIC_SERIAL_NUMBER 0x000Fu

modules/woz_matter/include/matter_clusters.h:345

##define MATTER_ATTR_BASIC_UNIQUE_ID 0x0012u

modules/woz_matter/include/matter_clusters.h:346

##define MATTER_ATTR_BASIC_CAPABILITY_MINIMA 0x0013u

modules/woz_matter/include/matter_clusters.h:347

##define MATTER_ATTR_BASIC_SPECIFICATION_VERSION 0x0015u

modules/woz_matter/include/matter_clusters.h:348

##define MATTER_ATTR_BASIC_MAX_PATHS_PER_INVOKE 0x0016u

modules/woz_matter/include/matter_clusters.h:349

##define MATTER_DATA_MODEL_REVISION 17u

modules/woz_matter/include/matter_clusters.h:359

##define MATTER_SPECIFICATION_VERSION 0x01020000u

modules/woz_matter/include/matter_clusters.h:360

##define MATTER_CASE_SESSIONS_PER_FABRIC 3u

modules/woz_matter/include/matter_clusters.h:368

##define MATTER_SUBSCRIPTIONS_PER_FABRIC 3u

modules/woz_matter/include/matter_clusters.h:369

##define MATTER_MAX_PATHS_PER_INVOKE 1u

modules/woz_matter/include/matter_clusters.h:372

CHIP_CONFIG_MAX_PATHS_PER_INVOKE (CHIPConfig.h:1877), and what this node parses.

##define MATTER_ATTR_GC_BREADCRUMB 0x0000u

modules/woz_matter/include/matter_clusters.h:375

##define MATTER_ATTR_GC_BASIC_COMMISSIONING_INFO 0x0001u

modules/woz_matter/include/matter_clusters.h:376

##define MATTER_ATTR_GC_REGULATORY_CONFIG 0x0002u

modules/woz_matter/include/matter_clusters.h:377

##define MATTER_ATTR_GC_LOCATION_CAPABILITY 0x0003u

modules/woz_matter/include/matter_clusters.h:378

##define MATTER_ATTR_GC_SUPPORTS_CONCURRENT_CONNECTION 0x0004u

modules/woz_matter/include/matter_clusters.h:379

##define MATTER_REGULATORY_INDOOR 0u

modules/woz_matter/include/matter_clusters.h:382

##define MATTER_REGULATORY_OUTDOOR 1u

modules/woz_matter/include/matter_clusters.h:383

##define MATTER_REGULATORY_INDOOR_OUTDOOR 2u

modules/woz_matter/include/matter_clusters.h:384

##define MATTER_CMD_GC_ARM_FAIL_SAFE 0x0000u

modules/woz_matter/include/matter_clusters.h:387

##define MATTER_CMD_GC_ARM_FAIL_SAFE_RESPONSE 0x0001u

modules/woz_matter/include/matter_clusters.h:388

##define MATTER_CMD_GC_SET_REGULATORY_CONFIG 0x0002u

modules/woz_matter/include/matter_clusters.h:389

##define MATTER_CMD_GC_SET_REGULATORY_CONFIG_RESPONSE 0x0003u

modules/woz_matter/include/matter_clusters.h:390

##define MATTER_CMD_GC_COMMISSIONING_COMPLETE 0x0004u

modules/woz_matter/include/matter_clusters.h:391

##define MATTER_CMD_GC_COMMISSIONING_COMPLETE_RESPONSE 0x0005u

modules/woz_matter/include/matter_clusters.h:392

##define MATTER_COMMISSIONING_OK 0u

modules/woz_matter/include/matter_clusters.h:395

##define MATTER_COMMISSIONING_VALUE_OUTSIDE_RANGE 1u

modules/woz_matter/include/matter_clusters.h:396

##define MATTER_COMMISSIONING_INVALID_AUTH 2u

modules/woz_matter/include/matter_clusters.h:397

##define MATTER_COMMISSIONING_NO_FAIL_SAFE 3u

modules/woz_matter/include/matter_clusters.h:398

##define MATTER_ATTR_NC_MAX_NETWORKS 0x0000u

modules/woz_matter/include/matter_clusters.h:401

##define MATTER_ATTR_NC_NETWORKS 0x0001u

modules/woz_matter/include/matter_clusters.h:402

##define MATTER_ATTR_NC_SCAN_MAX_TIME_S 0x0002u

modules/woz_matter/include/matter_clusters.h:403

##define MATTER_ATTR_NC_CONNECT_MAX_TIME_S 0x0003u

modules/woz_matter/include/matter_clusters.h:404

##define MATTER_ATTR_NC_INTERFACE_ENABLED 0x0004u

modules/woz_matter/include/matter_clusters.h:405

##define MATTER_ATTR_NC_LAST_NETWORKING_STATUS 0x0005u

modules/woz_matter/include/matter_clusters.h:406

##define MATTER_CMD_NC_ADD_OR_UPDATE_THREAD_NETWORK 0x0003u

modules/woz_matter/include/matter_clusters.h:409

##define MATTER_CMD_NC_REMOVE_NETWORK 0x0004u

modules/woz_matter/include/matter_clusters.h:410

##define MATTER_CMD_NC_NETWORK_CONFIG_RESPONSE 0x0005u

modules/woz_matter/include/matter_clusters.h:411

##define MATTER_CMD_NC_CONNECT_NETWORK 0x0006u

modules/woz_matter/include/matter_clusters.h:412

##define MATTER_CMD_NC_CONNECT_NETWORK_RESPONSE 0x0007u

modules/woz_matter/include/matter_clusters.h:413

##define MATTER_NC_FEATURE_THREAD 0x2u

modules/woz_matter/include/matter_clusters.h:416

NetworkCommissioning Feature bits (python clusters/Objects.py, Feature).

##define MATTER_NC_STATUS_SUCCESS 0x00u

modules/woz_matter/include/matter_clusters.h:419

##define MATTER_NC_STATUS_OUT_OF_RANGE 0x01u

modules/woz_matter/include/matter_clusters.h:420

##define MATTER_NC_STATUS_NETWORK_ID_NOT_FOUND 0x03u

modules/woz_matter/include/matter_clusters.h:421

##define MATTER_NC_STATUS_OTHER_CONNECTION_FAILUR 0x09u

modules/woz_matter/include/matter_clusters.h:422

##define MATTER_THREAD_DATASET_MAX 254u

modules/woz_matter/include/matter_clusters.h:428

A Thread operational dataset, kSizeOperationalDataset (lib/support/ThreadOperationalDataset.h:36).

##define MATTER_THREAD_XPANID_LEN 8u

modules/woz_matter/include/matter_clusters.h:431

Extended PAN ID: 8 bytes, and the id a network is referred to by.

##define MATTER_THREAD_ATTACH_TIMEOUT_MS 20000u

modules/woz_matter/include/matter_clusters.h:441

How long ConnectNetwork waits for the attach before answering. Well under the 60 s this node reports as ConnectMaxTimeSeconds, because the commissioner is blocked on the reply for the whole of it. A Thread attach to a network whose dataset is already known normally completes in a few seconds; this leaves room for a retry without leaving the phone waiting a minute.

##define MATTER_CMD_OC_ATTESTATION_REQUEST 0x0000u

modules/woz_matter/include/matter_clusters.h:444

##define MATTER_CMD_OC_ATTESTATION_RESPONSE 0x0001u

modules/woz_matter/include/matter_clusters.h:445

##define MATTER_CMD_OC_CERTIFICATE_CHAIN_REQUEST 0x0002u

modules/woz_matter/include/matter_clusters.h:446

##define MATTER_CMD_OC_CERTIFICATE_CHAIN_RESPONSE 0x0003u

modules/woz_matter/include/matter_clusters.h:447

##define MATTER_CMD_OC_CSR_REQUEST 0x0004u

modules/woz_matter/include/matter_clusters.h:448

##define MATTER_CMD_OC_CSR_RESPONSE 0x0005u

modules/woz_matter/include/matter_clusters.h:449

##define MATTER_CMD_OC_ADD_NOC 0x0006u

modules/woz_matter/include/matter_clusters.h:450

##define MATTER_CMD_OC_NOC_RESPONSE 0x0008u

modules/woz_matter/include/matter_clusters.h:451

##define MATTER_CMD_OC_ADD_TRUSTED_ROOT_CERTIFICATE 0x000Bu

modules/woz_matter/include/matter_clusters.h:452

##define MATTER_ATTR_OC_NOCS 0x0000u

modules/woz_matter/include/matter_clusters.h:455

##define MATTER_ATTR_OC_FABRICS 0x0001u

modules/woz_matter/include/matter_clusters.h:456

##define MATTER_ATTR_OC_SUPPORTED_FABRICS 0x0002u

modules/woz_matter/include/matter_clusters.h:457

##define MATTER_ATTR_OC_COMMISSIONED_FABRICS 0x0003u

modules/woz_matter/include/matter_clusters.h:458

##define MATTER_ATTR_OC_TRUSTED_ROOTS 0x0004u

modules/woz_matter/include/matter_clusters.h:459

##define MATTER_ATTR_OC_CURRENT_FABRIC_INDEX 0x0005u

modules/woz_matter/include/matter_clusters.h:460

##define MATTER_SUPPORTED_FABRICS 2u

modules/woz_matter/include/matter_clusters.h:472

How many fabrics this node can hold at once. Two, which is not a round number -- it is what a single Apple Home needs. The phone and the home hub commission the device onto SEPARATE fabrics, each with its own trusted root and its own operational key, and a node that advertises one answers the second AddNOC with TABLE_FULL and is never adopted. The spec's floor is five; there is a struct matter_fabric of RAM behind every entry and this part has 128 KB in total.

##define MATTER_NOC_STATUS_OK 0u

modules/woz_matter/include/matter_clusters.h:481

##define MATTER_NOC_STATUS_INVALID_PUBLIC_KEY 1u

modules/woz_matter/include/matter_clusters.h:482

##define MATTER_NOC_STATUS_INVALID_NOC 3u

modules/woz_matter/include/matter_clusters.h:483

##define MATTER_NOC_STATUS_MISSING_CSR 4u

modules/woz_matter/include/matter_clusters.h:484

##define MATTER_NOC_STATUS_TABLE_FULL 5u

modules/woz_matter/include/matter_clusters.h:485

##define MATTER_ENDPOINT_ROOT 0u

modules/woz_matter/include/matter_clusters.h:488

Every Matter node's root endpoint is 0.

##define MATTER_ENDPOINT_LOCK 1u

modules/woz_matter/include/matter_clusters.h:490

The Door Lock. Listed in the root endpoint's PartsList.

Fvoid matter_clusters_set_admin_hooks(const struct matter_admin_hooks *hooks)

modules/woz_matter/include/matter_clusters.h:786

Install the hooks above. Until this is called the cluster still APPEARS -- a controller reading ServerList sees it, which is the point, because a node that hides it can never be shared with a second ecosystem -- but every command answers FAILURE rather than pretending to have opened something.

Fvoid matter_clusters_init(struct matter_im_server *srv, struct matter_device_info *info)

modules/woz_matter/include/matter_clusters.h:788

Fvoid matter_clusters_failsafe_expire(struct matter_device_info *info)

modules/woz_matter/include/matter_clusters.h:809

Undo a commissioning that never finished. This is what the fail-safe MEANS, and until AddNOC there was nothing for it to undo -- so the flag recorded the state without enforcing it. Now a commissioner that gives up half way leaves a fabric behind, and the next attempt is answered TableFull for a reason that has nothing to do with what went wrong. The caller decides when: on this port, when the commissioning link drops. Does nothing once commissioning_complete is set -- a finished fabric is not the fail-safe's to remove. The THREAD attachment is deliberately kept. Strictly the fail-safe owns the network config too, but the commissioner re-sends the identical dataset on the next attempt, and staying attached turns the following attach from two seconds into none. Nothing secret is retained that the next commissioner would not immediately re-supply.

Fint matter_clusters_resume(struct matter_device_info *info)

modules/woz_matter/include/matter_clusters.h:826

Bring a restored identity back onto the network. A node that reloads its fabric table from storage is commissioned but not REACHABLE: the Thread dataset has not been handed to the stack and no SRP instance exists, so the controller resolves nothing and reports the accessory dead. Commissioning does both of those as a side effect of AddOrUpdateThreadNetwork and AddNOC; this is that same pair, for the boot path that has no commissioner to trigger them. Call it after loading info and only when a fabric was actually restored. @return MATTER_OK when Thread started and every fabric was advertised, MATTER_E_STATE when there is no stored dataset to start from.