@matter/protocol 0.17.4-alpha.0-20260629-e2d2715b7 → 0.17.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"InputChunk.d.ts","sourceRoot":"","sources":["../../../../src/action/client/InputChunk.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAK5D,OAAO,EAGH,UAAU,EAMV,kBAAkB,EAOlB,cAAc,EACjB,MAAM,eAAe,CAAC;AAyBvB;;;;;;;GAOG;AACH,wBAAuB,UAAU,CAC7B,KAAK,EAAE,UAAU,EACjB,wBAAwB,CAAC,EAAE,cAAc,CAAC,OAAO,kBAAkB,CAAC,EAAE,GACvE,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,CAGnC"}
1
+ {"version":3,"file":"InputChunk.d.ts","sourceRoot":"","sources":["../../../../src/action/client/InputChunk.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAc5D,OAAO,EAGH,UAAU,EAMV,kBAAkB,EAQlB,cAAc,EACjB,MAAM,eAAe,CAAC;AAuHvB;;;;;;;GAOG;AACH,wBAAuB,UAAU,CAC7B,KAAK,EAAE,UAAU,EACjB,wBAAwB,CAAC,EAAE,cAAc,CAAC,OAAO,kBAAkB,CAAC,EAAE,GACvE,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,CAGnC"}
@@ -33,6 +33,79 @@ var import_types = require("@matter/types");
33
33
  */
34
34
  const logger = import_general.Logger.get("InputChunk");
35
35
  const DATA_REPORT_DECODE_OPTIONS = { relaxNumberTypeChecks: true };
36
+ function schemaOfModel(model) {
37
+ try {
38
+ return (0, import_types.TlvOfModel)(model);
39
+ } catch {
40
+ return void 0;
41
+ }
42
+ }
43
+ const globalAttributeSchemas = /* @__PURE__ */ new Map();
44
+ for (const id of [
45
+ import_model.ClusterRevision.id,
46
+ import_model.FeatureMap.id,
47
+ import_model.AttributeList.id,
48
+ import_model.EventList.id,
49
+ import_model.AcceptedCommandList.id,
50
+ import_model.GeneratedCommandList.id
51
+ ]) {
52
+ const model = import_model.Matter.attributes(id);
53
+ const schema = model === void 0 ? void 0 : schemaOfModel(model);
54
+ if (schema !== void 0) {
55
+ globalAttributeSchemas.set(id, schema);
56
+ }
57
+ }
58
+ const seededGlobalAttributeSchemas = new Map(globalAttributeSchemas);
59
+ seededGlobalAttributeSchemas.delete(import_model.FeatureMap.id);
60
+ const clusterCache = /* @__PURE__ */ new Map();
61
+ function clusterCacheOf(clusterId) {
62
+ let cache = clusterCache.get(clusterId);
63
+ if (cache === void 0) {
64
+ const model = import_model.Matter.clusters(clusterId);
65
+ if (model === void 0) {
66
+ return void 0;
67
+ }
68
+ cache = { model, attributes: new Map(seededGlobalAttributeSchemas), events: /* @__PURE__ */ new Map() };
69
+ clusterCache.set(clusterId, cache);
70
+ }
71
+ return cache;
72
+ }
73
+ function attributeSchemaOf(clusterId, attributeId) {
74
+ const cache = clusterCacheOf(clusterId);
75
+ if (cache === void 0) {
76
+ return globalAttributeSchemas.get(attributeId);
77
+ }
78
+ const cached = cache.attributes.get(attributeId);
79
+ if (cached !== void 0) {
80
+ return cached;
81
+ }
82
+ const attributeModel = cache.model.attributes(attributeId);
83
+ if (attributeModel === void 0) {
84
+ return void 0;
85
+ }
86
+ const schema = schemaOfModel(attributeModel);
87
+ if (schema !== void 0) {
88
+ cache.attributes.set(attributeId, schema);
89
+ }
90
+ return schema;
91
+ }
92
+ function eventSchemaOf(clusterId, eventId) {
93
+ const cache = clusterCacheOf(clusterId);
94
+ if (cache === void 0) {
95
+ return void 0;
96
+ }
97
+ const cached = cache.events.get(eventId);
98
+ if (cached !== void 0) {
99
+ return cached;
100
+ }
101
+ const eventModel = cache.model.events(eventId);
102
+ if (eventModel === void 0) {
103
+ return void 0;
104
+ }
105
+ const schema = (0, import_types.TlvOfModel)(eventModel);
106
+ cache.events.set(eventId, schema);
107
+ return schema;
108
+ }
36
109
  async function* InputChunk(input, leftoverAttributeReports) {
37
110
  yield* emitAttributes(input, leftoverAttributeReports);
38
111
  yield* emitEvents(input);
@@ -128,20 +201,8 @@ function mayContinueInNextReport(data) {
128
201
  function decodeAttributeGroup(path, dataVersion, entries) {
129
202
  const { nodeId, endpointId, clusterId, attributeId } = path;
130
203
  try {
131
- const clusterModel = import_model.Matter.clusters(clusterId);
132
- const attributeModel = clusterModel?.attributes(attributeId) ?? import_model.Matter.attributes(attributeId);
133
- let value;
134
- if (attributeModel === void 0) {
135
- value = (0, import_AttributeDataDecoder.decodeUnknownAttributeValue)(entries);
136
- } else {
137
- let schema;
138
- try {
139
- schema = (0, import_types.TlvOfModel)(attributeModel);
140
- } catch {
141
- schema = void 0;
142
- }
143
- value = schema === void 0 ? (0, import_AttributeDataDecoder.decodeUnknownAttributeValue)(entries) : (0, import_AttributeDataDecoder.decodeAttributeValueWithSchema)(schema, entries, void 0, DATA_REPORT_DECODE_OPTIONS);
144
- }
204
+ const schema = attributeSchemaOf(clusterId, attributeId);
205
+ const value = schema === void 0 ? (0, import_AttributeDataDecoder.decodeUnknownAttributeValue)(entries) : (0, import_AttributeDataDecoder.decodeAttributeValueWithSchema)(schema, entries, void 0, DATA_REPORT_DECODE_OPTIONS);
145
206
  return {
146
207
  kind: "attr-value",
147
208
  path: { nodeId, endpointId, clusterId, attributeId },
@@ -201,17 +262,19 @@ function decodeEventValue(eventData) {
201
262
  throw new import_general.UnexpectedDataError(`Invalid event path ${endpointId}/${clusterId}/${eventId}`);
202
263
  }
203
264
  try {
204
- const clusterModel = import_model.Matter.clusters(clusterId);
205
- const eventModel = clusterModel?.events(eventId);
206
- let value;
207
- if (eventModel === void 0) {
265
+ const schema = eventSchemaOf(clusterId, eventId);
266
+ if (schema === void 0) {
208
267
  logger.debug(
209
268
  `Decode unknown event ${import_general.Diagnostic.hex(clusterId)}/${import_general.Diagnostic.hex(eventId)} via the AnySchema.`
210
269
  );
211
- value = data === void 0 ? void 0 : (0, import_EventDataDecoder.decodeUnknownEventValue)(data);
270
+ }
271
+ let value;
272
+ if (data === void 0) {
273
+ value = void 0;
274
+ } else if (schema === void 0) {
275
+ value = (0, import_EventDataDecoder.decodeUnknownEventValue)(data);
212
276
  } else {
213
- const schema = (0, import_types.TlvOfModel)(eventModel);
214
- value = data === void 0 ? void 0 : schema.decodeTlv(data, DATA_REPORT_DECODE_OPTIONS);
277
+ value = schema.decodeTlv(data, DATA_REPORT_DECODE_OPTIONS);
215
278
  }
216
279
  const timestamp = Number(epochTimestamp ?? systemTimestamp ?? deltaEpochTimestamp ?? deltaSystemTimestamp ?? 0);
217
280
  return {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/action/client/InputChunk.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": []
6
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"InputChunk.d.ts","sourceRoot":"","sources":["../../../../src/action/client/InputChunk.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAK5D,OAAO,EAGH,UAAU,EAMV,kBAAkB,EAOlB,cAAc,EACjB,MAAM,eAAe,CAAC;AAyBvB;;;;;;;GAOG;AACH,wBAAuB,UAAU,CAC7B,KAAK,EAAE,UAAU,EACjB,wBAAwB,CAAC,EAAE,cAAc,CAAC,OAAO,kBAAkB,CAAC,EAAE,GACvE,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,CAGnC"}
1
+ {"version":3,"file":"InputChunk.d.ts","sourceRoot":"","sources":["../../../../src/action/client/InputChunk.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAc5D,OAAO,EAGH,UAAU,EAMV,kBAAkB,EAQlB,cAAc,EACjB,MAAM,eAAe,CAAC;AAuHvB;;;;;;;GAOG;AACH,wBAAuB,UAAU,CAC7B,KAAK,EAAE,UAAU,EACjB,wBAAwB,CAAC,EAAE,cAAc,CAAC,OAAO,kBAAkB,CAAC,EAAE,GACvE,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,CAGnC"}
@@ -6,7 +6,15 @@
6
6
  import { decodeAttributeValueWithSchema, decodeUnknownAttributeValue } from "#interaction/AttributeDataDecoder.js";
7
7
  import { decodeUnknownEventValue } from "#interaction/EventDataDecoder.js";
8
8
  import { Diagnostic, Logger, UnexpectedDataError } from "@matter/general";
9
- import { Matter } from "@matter/model";
9
+ import {
10
+ AcceptedCommandList,
11
+ AttributeList,
12
+ ClusterRevision,
13
+ EventList,
14
+ FeatureMap,
15
+ GeneratedCommandList,
16
+ Matter
17
+ } from "@matter/model";
10
18
  import {
11
19
  Status,
12
20
  TlvAny,
@@ -15,6 +23,79 @@ import {
15
23
  } from "@matter/types";
16
24
  const logger = Logger.get("InputChunk");
17
25
  const DATA_REPORT_DECODE_OPTIONS = { relaxNumberTypeChecks: true };
26
+ function schemaOfModel(model) {
27
+ try {
28
+ return TlvOfModel(model);
29
+ } catch {
30
+ return void 0;
31
+ }
32
+ }
33
+ const globalAttributeSchemas = /* @__PURE__ */ new Map();
34
+ for (const id of [
35
+ ClusterRevision.id,
36
+ FeatureMap.id,
37
+ AttributeList.id,
38
+ EventList.id,
39
+ AcceptedCommandList.id,
40
+ GeneratedCommandList.id
41
+ ]) {
42
+ const model = Matter.attributes(id);
43
+ const schema = model === void 0 ? void 0 : schemaOfModel(model);
44
+ if (schema !== void 0) {
45
+ globalAttributeSchemas.set(id, schema);
46
+ }
47
+ }
48
+ const seededGlobalAttributeSchemas = new Map(globalAttributeSchemas);
49
+ seededGlobalAttributeSchemas.delete(FeatureMap.id);
50
+ const clusterCache = /* @__PURE__ */ new Map();
51
+ function clusterCacheOf(clusterId) {
52
+ let cache = clusterCache.get(clusterId);
53
+ if (cache === void 0) {
54
+ const model = Matter.clusters(clusterId);
55
+ if (model === void 0) {
56
+ return void 0;
57
+ }
58
+ cache = { model, attributes: new Map(seededGlobalAttributeSchemas), events: /* @__PURE__ */ new Map() };
59
+ clusterCache.set(clusterId, cache);
60
+ }
61
+ return cache;
62
+ }
63
+ function attributeSchemaOf(clusterId, attributeId) {
64
+ const cache = clusterCacheOf(clusterId);
65
+ if (cache === void 0) {
66
+ return globalAttributeSchemas.get(attributeId);
67
+ }
68
+ const cached = cache.attributes.get(attributeId);
69
+ if (cached !== void 0) {
70
+ return cached;
71
+ }
72
+ const attributeModel = cache.model.attributes(attributeId);
73
+ if (attributeModel === void 0) {
74
+ return void 0;
75
+ }
76
+ const schema = schemaOfModel(attributeModel);
77
+ if (schema !== void 0) {
78
+ cache.attributes.set(attributeId, schema);
79
+ }
80
+ return schema;
81
+ }
82
+ function eventSchemaOf(clusterId, eventId) {
83
+ const cache = clusterCacheOf(clusterId);
84
+ if (cache === void 0) {
85
+ return void 0;
86
+ }
87
+ const cached = cache.events.get(eventId);
88
+ if (cached !== void 0) {
89
+ return cached;
90
+ }
91
+ const eventModel = cache.model.events(eventId);
92
+ if (eventModel === void 0) {
93
+ return void 0;
94
+ }
95
+ const schema = TlvOfModel(eventModel);
96
+ cache.events.set(eventId, schema);
97
+ return schema;
98
+ }
18
99
  async function* InputChunk(input, leftoverAttributeReports) {
19
100
  yield* emitAttributes(input, leftoverAttributeReports);
20
101
  yield* emitEvents(input);
@@ -110,20 +191,8 @@ function mayContinueInNextReport(data) {
110
191
  function decodeAttributeGroup(path, dataVersion, entries) {
111
192
  const { nodeId, endpointId, clusterId, attributeId } = path;
112
193
  try {
113
- const clusterModel = Matter.clusters(clusterId);
114
- const attributeModel = clusterModel?.attributes(attributeId) ?? Matter.attributes(attributeId);
115
- let value;
116
- if (attributeModel === void 0) {
117
- value = decodeUnknownAttributeValue(entries);
118
- } else {
119
- let schema;
120
- try {
121
- schema = TlvOfModel(attributeModel);
122
- } catch {
123
- schema = void 0;
124
- }
125
- value = schema === void 0 ? decodeUnknownAttributeValue(entries) : decodeAttributeValueWithSchema(schema, entries, void 0, DATA_REPORT_DECODE_OPTIONS);
126
- }
194
+ const schema = attributeSchemaOf(clusterId, attributeId);
195
+ const value = schema === void 0 ? decodeUnknownAttributeValue(entries) : decodeAttributeValueWithSchema(schema, entries, void 0, DATA_REPORT_DECODE_OPTIONS);
127
196
  return {
128
197
  kind: "attr-value",
129
198
  path: { nodeId, endpointId, clusterId, attributeId },
@@ -183,17 +252,19 @@ function decodeEventValue(eventData) {
183
252
  throw new UnexpectedDataError(`Invalid event path ${endpointId}/${clusterId}/${eventId}`);
184
253
  }
185
254
  try {
186
- const clusterModel = Matter.clusters(clusterId);
187
- const eventModel = clusterModel?.events(eventId);
188
- let value;
189
- if (eventModel === void 0) {
255
+ const schema = eventSchemaOf(clusterId, eventId);
256
+ if (schema === void 0) {
190
257
  logger.debug(
191
258
  `Decode unknown event ${Diagnostic.hex(clusterId)}/${Diagnostic.hex(eventId)} via the AnySchema.`
192
259
  );
193
- value = data === void 0 ? void 0 : decodeUnknownEventValue(data);
260
+ }
261
+ let value;
262
+ if (data === void 0) {
263
+ value = void 0;
264
+ } else if (schema === void 0) {
265
+ value = decodeUnknownEventValue(data);
194
266
  } else {
195
- const schema = TlvOfModel(eventModel);
196
- value = data === void 0 ? void 0 : schema.decodeTlv(data, DATA_REPORT_DECODE_OPTIONS);
267
+ value = schema.decodeTlv(data, DATA_REPORT_DECODE_OPTIONS);
197
268
  }
198
269
  const timestamp = Number(epochTimestamp ?? systemTimestamp ?? deltaEpochTimestamp ?? deltaSystemTimestamp ?? 0);
199
270
  return {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/action/client/InputChunk.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": []
6
6
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@matter/protocol",
3
- "version": "0.17.4-alpha.0-20260629-e2d2715b7",
3
+ "version": "0.17.4",
4
4
  "description": "Low-level APIs for Matter interaction",
5
5
  "keywords": [
6
6
  "iot",
@@ -35,12 +35,12 @@
35
35
  "#*": "./src/*"
36
36
  },
37
37
  "dependencies": {
38
- "@matter/general": "0.17.4-alpha.0-20260629-e2d2715b7",
39
- "@matter/model": "0.17.4-alpha.0-20260629-e2d2715b7",
40
- "@matter/types": "0.17.4-alpha.0-20260629-e2d2715b7"
38
+ "@matter/general": "0.17.4",
39
+ "@matter/model": "0.17.4",
40
+ "@matter/types": "0.17.4"
41
41
  },
42
42
  "devDependencies": {
43
- "@matter/testing": "0.17.4-alpha.0-20260629-e2d2715b7"
43
+ "@matter/testing": "0.17.4"
44
44
  },
45
45
  "files": [
46
46
  "dist/**/*",
@@ -8,7 +8,16 @@ import { ReadResult } from "#action/response/ReadResult.js";
8
8
  import { decodeAttributeValueWithSchema, decodeUnknownAttributeValue } from "#interaction/AttributeDataDecoder.js";
9
9
  import { decodeUnknownEventValue } from "#interaction/EventDataDecoder.js";
10
10
  import { Diagnostic, Logger, UnexpectedDataError } from "@matter/general";
11
- import { Matter } from "@matter/model";
11
+ import {
12
+ AcceptedCommandList,
13
+ AttributeList,
14
+ ClusterModel,
15
+ ClusterRevision,
16
+ EventList,
17
+ FeatureMap,
18
+ GeneratedCommandList,
19
+ Matter,
20
+ } from "@matter/model";
12
21
  import {
13
22
  AttributeId,
14
23
  ClusterId,
@@ -24,6 +33,7 @@ import {
24
33
  TlvEventData,
25
34
  TlvEventStatus,
26
35
  TlvOfModel,
36
+ TlvSchema,
27
37
  TlvType,
28
38
  TypeFromSchema,
29
39
  } from "@matter/types";
@@ -37,6 +47,100 @@ const logger = Logger.get("InputChunk");
37
47
  */
38
48
  const DATA_REPORT_DECODE_OPTIONS: TlvDecodingOptions = { relaxNumberTypeChecks: true };
39
49
 
50
+ function schemaOfModel(model: Parameters<typeof TlvOfModel>[0]): TlvSchema<unknown> | undefined {
51
+ try {
52
+ return TlvOfModel(model);
53
+ } catch {
54
+ return undefined; // modeled but has no schema (e.g. deprecated global) — decode as unknown
55
+ }
56
+ }
57
+
58
+ // Global attributes resolved generically (cluster-independent). Used to decode globals on an unknown cluster — including
59
+ // FeatureMap, which decodes to a bitmap object via its generic schema there (no cluster to name its bits).
60
+ const globalAttributeSchemas = new Map<number, TlvSchema<unknown>>();
61
+ for (const id of [
62
+ ClusterRevision.id,
63
+ FeatureMap.id,
64
+ AttributeList.id,
65
+ EventList.id,
66
+ AcceptedCommandList.id,
67
+ GeneratedCommandList.id,
68
+ ]) {
69
+ const model = Matter.attributes(id);
70
+ const schema = model === undefined ? undefined : schemaOfModel(model);
71
+ if (schema !== undefined) {
72
+ globalAttributeSchemas.set(id, schema);
73
+ }
74
+ }
75
+
76
+ // Seeded into each known cluster's attribute cache. FeatureMap is excluded — its schema is cluster-specialized (bits
77
+ // named per cluster), so a known cluster resolves it per-cluster on demand rather than from the generic schema.
78
+ const seededGlobalAttributeSchemas = new Map(globalAttributeSchemas);
79
+ seededGlobalAttributeSchemas.delete(FeatureMap.id);
80
+
81
+ interface ClusterSchemaCache {
82
+ model: ClusterModel;
83
+ attributes: Map<number, TlvSchema<unknown>>;
84
+ events: Map<number, TlvSchema<unknown>>;
85
+ }
86
+
87
+ // Resolved schemas cached across reports, per known cluster. Report paths come from untrusted peers, so unknown
88
+ // clusters and unresolved elements are never cached — keeping these maps bounded by the (immutable) standard model.
89
+ const clusterCache = new Map<number, ClusterSchemaCache>();
90
+
91
+ function clusterCacheOf(clusterId: number): ClusterSchemaCache | undefined {
92
+ let cache = clusterCache.get(clusterId);
93
+ if (cache === undefined) {
94
+ const model = Matter.clusters(clusterId);
95
+ if (model === undefined) {
96
+ return undefined;
97
+ }
98
+ // New cluster: pre-fill its attributes with the shared global schemas, then resolve the rest on demand.
99
+ cache = { model, attributes: new Map(seededGlobalAttributeSchemas), events: new Map() };
100
+ clusterCache.set(clusterId, cache);
101
+ }
102
+ return cache;
103
+ }
104
+
105
+ function attributeSchemaOf(clusterId: number, attributeId: number): TlvSchema<unknown> | undefined {
106
+ const cache = clusterCacheOf(clusterId);
107
+ if (cache === undefined) {
108
+ // Unknown cluster (e.g. vendor): still decode standard global attributes with their cluster-independent schema.
109
+ return globalAttributeSchemas.get(attributeId);
110
+ }
111
+ const cached = cache.attributes.get(attributeId);
112
+ if (cached !== undefined) {
113
+ return cached;
114
+ }
115
+ const attributeModel = cache.model.attributes(attributeId);
116
+ if (attributeModel === undefined) {
117
+ return undefined;
118
+ }
119
+ const schema = schemaOfModel(attributeModel);
120
+ if (schema !== undefined) {
121
+ cache.attributes.set(attributeId, schema);
122
+ }
123
+ return schema;
124
+ }
125
+
126
+ function eventSchemaOf(clusterId: number, eventId: number): TlvSchema<unknown> | undefined {
127
+ const cache = clusterCacheOf(clusterId);
128
+ if (cache === undefined) {
129
+ return undefined;
130
+ }
131
+ const cached = cache.events.get(eventId);
132
+ if (cached !== undefined) {
133
+ return cached;
134
+ }
135
+ const eventModel = cache.model.events(eventId);
136
+ if (eventModel === undefined) {
137
+ return undefined;
138
+ }
139
+ const schema = TlvOfModel(eventModel);
140
+ cache.events.set(eventId, schema);
141
+ return schema;
142
+ }
143
+
40
144
  interface ResolvedAttributePath {
41
145
  nodeId?: NodeId;
42
146
  endpointId: EndpointNumber;
@@ -192,25 +296,11 @@ function decodeAttributeGroup(
192
296
  const { nodeId, endpointId, clusterId, attributeId } = path;
193
297
 
194
298
  try {
195
- const clusterModel = Matter.clusters(clusterId);
196
- const attributeModel = clusterModel?.attributes(attributeId) ?? Matter.attributes(attributeId);
197
-
198
- let value: unknown;
199
- if (attributeModel === undefined) {
200
- value = decodeUnknownAttributeValue(entries);
201
- } else {
202
- let schema;
203
- try {
204
- schema = TlvOfModel(attributeModel);
205
- } catch {
206
- // Attribute is known but has no schema (e.g. deprecated global attributes) — decode as unknown
207
- schema = undefined;
208
- }
209
- value =
210
- schema === undefined
211
- ? decodeUnknownAttributeValue(entries)
212
- : decodeAttributeValueWithSchema(schema, entries, undefined, DATA_REPORT_DECODE_OPTIONS);
213
- }
299
+ const schema = attributeSchemaOf(clusterId, attributeId);
300
+ const value =
301
+ schema === undefined
302
+ ? decodeUnknownAttributeValue(entries)
303
+ : decodeAttributeValueWithSchema(schema, entries, undefined, DATA_REPORT_DECODE_OPTIONS);
214
304
  return {
215
305
  kind: "attr-value",
216
306
  path: { nodeId, endpointId, clusterId, attributeId },
@@ -280,18 +370,19 @@ function decodeEventValue(eventData: TypeFromSchema<typeof TlvEventData>): ReadR
280
370
  }
281
371
 
282
372
  try {
283
- const clusterModel = Matter.clusters(clusterId);
284
- const eventModel = clusterModel?.events(eventId);
285
-
286
- let value: unknown;
287
- if (eventModel === undefined) {
373
+ const schema = eventSchemaOf(clusterId, eventId);
374
+ if (schema === undefined) {
288
375
  logger.debug(
289
376
  `Decode unknown event ${Diagnostic.hex(clusterId)}/${Diagnostic.hex(eventId)} via the AnySchema.`,
290
377
  );
291
- value = data === undefined ? undefined : decodeUnknownEventValue(data);
378
+ }
379
+ let value: unknown;
380
+ if (data === undefined) {
381
+ value = undefined;
382
+ } else if (schema === undefined) {
383
+ value = decodeUnknownEventValue(data);
292
384
  } else {
293
- const schema = TlvOfModel(eventModel);
294
- value = data === undefined ? undefined : schema.decodeTlv(data, DATA_REPORT_DECODE_OPTIONS);
385
+ value = schema.decodeTlv(data, DATA_REPORT_DECODE_OPTIONS);
295
386
  }
296
387
 
297
388
  // `timestamp` is a lossy convenience: callers needing the specific wire variant read the explicit field below.