@project-chip/matter.js 0.15.4 → 0.15.6
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.
- package/dist/cjs/CommissioningController.d.ts +2 -1
- package/dist/cjs/CommissioningController.d.ts.map +1 -1
- package/dist/cjs/CommissioningController.js +26 -35
- package/dist/cjs/CommissioningController.js.map +1 -1
- package/dist/cjs/MatterController.d.ts.map +1 -1
- package/dist/cjs/MatterController.js +2 -2
- package/dist/cjs/MatterController.js.map +1 -1
- package/dist/cjs/device/CachedClientNodeStore.d.ts +4 -3
- package/dist/cjs/device/CachedClientNodeStore.d.ts.map +1 -1
- package/dist/cjs/device/CachedClientNodeStore.js +19 -2
- package/dist/cjs/device/CachedClientNodeStore.js.map +1 -1
- package/dist/cjs/device/Endpoint.d.ts +1 -1
- package/dist/cjs/device/Endpoint.d.ts.map +1 -1
- package/dist/cjs/device/Endpoint.js.map +1 -1
- package/dist/cjs/device/PairedNode.d.ts +56 -28
- package/dist/cjs/device/PairedNode.d.ts.map +1 -1
- package/dist/cjs/device/PairedNode.js +217 -78
- package/dist/cjs/device/PairedNode.js.map +1 -1
- package/dist/esm/CommissioningController.d.ts +2 -1
- package/dist/esm/CommissioningController.d.ts.map +1 -1
- package/dist/esm/CommissioningController.js +26 -35
- package/dist/esm/CommissioningController.js.map +1 -1
- package/dist/esm/MatterController.d.ts.map +1 -1
- package/dist/esm/MatterController.js +2 -3
- package/dist/esm/MatterController.js.map +1 -1
- package/dist/esm/device/CachedClientNodeStore.d.ts +4 -3
- package/dist/esm/device/CachedClientNodeStore.d.ts.map +1 -1
- package/dist/esm/device/CachedClientNodeStore.js +19 -2
- package/dist/esm/device/CachedClientNodeStore.js.map +1 -1
- package/dist/esm/device/Endpoint.d.ts +1 -1
- package/dist/esm/device/Endpoint.d.ts.map +1 -1
- package/dist/esm/device/Endpoint.js.map +1 -1
- package/dist/esm/device/PairedNode.d.ts +56 -28
- package/dist/esm/device/PairedNode.d.ts.map +1 -1
- package/dist/esm/device/PairedNode.js +218 -79
- package/dist/esm/device/PairedNode.js.map +1 -1
- package/package.json +8 -8
- package/src/CommissioningController.ts +31 -38
- package/src/MatterController.ts +3 -4
- package/src/device/CachedClientNodeStore.ts +24 -4
- package/src/device/Endpoint.ts +1 -1
- package/src/device/PairedNode.ts +322 -94
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Endpoint.d.ts","sourceRoot":"","sources":["../../../src/device/Endpoint.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Endpoint.d.ts","sourceRoot":"","sources":["../../../src/device/Endpoint.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/device/Endpoint.ts"],
|
|
4
|
-
"mappings": "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
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -3,8 +3,9 @@
|
|
|
3
3
|
* Copyright 2022-2025 Matter.js Authors
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
+
import { Descriptor } from "#clusters";
|
|
6
7
|
import { AsyncObservable, BasicSet, Construction, Crypto, Diagnostic, MatterError, Observable } from "#general";
|
|
7
|
-
import { ClusterClientObj, DecodedAttributeReportValue, DecodedEventReportValue, InteractionClient, NodeDiscoveryType, NodeSession } from "#protocol";
|
|
8
|
+
import { AttributeClientValues, ClusterClientObj, DecodedAttributeReportValue, DecodedEventReportValue, InteractionClient, NodeDiscoveryType, NodeSession, StructuredReadAttributeData } from "#protocol";
|
|
8
9
|
import { ClusterType, EndpointNumber, NodeId } from "#types";
|
|
9
10
|
import { ClusterServerObj } from "../cluster/server/ClusterServerTypes.js";
|
|
10
11
|
import { CommissioningController } from "../CommissioningController.js";
|
|
@@ -110,6 +111,7 @@ export type CommissioningControllerNodeOptions = {
|
|
|
110
111
|
};
|
|
111
112
|
export declare class NodeNotConnectedError extends MatterError {
|
|
112
113
|
}
|
|
114
|
+
type DescriptorData = AttributeClientValues<typeof Descriptor.Complete.attributes>;
|
|
113
115
|
/**
|
|
114
116
|
* Class to represents one node that is paired/commissioned with the matter.js Controller. Instances are returned by
|
|
115
117
|
* the CommissioningController on commissioning or when connecting.
|
|
@@ -117,33 +119,7 @@ export declare class NodeNotConnectedError extends MatterError {
|
|
|
117
119
|
export declare class PairedNode {
|
|
118
120
|
#private;
|
|
119
121
|
readonly nodeId: NodeId;
|
|
120
|
-
readonly events:
|
|
121
|
-
/**
|
|
122
|
-
* Emitted when the node is initialized from local data. These data usually are stale, but you can still already
|
|
123
|
-
* use the node to interact with the device. If no local data are available this event will be emitted together
|
|
124
|
-
* with the initializedFromRemote event.
|
|
125
|
-
*/
|
|
126
|
-
initialized: AsyncObservable<[details: DeviceInformationData], void>;
|
|
127
|
-
/**
|
|
128
|
-
* Emitted when the node is fully initialized from remote and all attributes and events are subscribed.
|
|
129
|
-
* This event can also be awaited if code needs to be blocked until the node is fully initialized.
|
|
130
|
-
*/
|
|
131
|
-
initializedFromRemote: AsyncObservable<[details: DeviceInformationData], void>;
|
|
132
|
-
/** Emitted when the state of the node changes. */
|
|
133
|
-
stateChanged: Observable<[nodeState: NodeStates], void>;
|
|
134
|
-
/**
|
|
135
|
-
* Emitted when an attribute value changes. If the oldValue is undefined then no former value was known.
|
|
136
|
-
*/
|
|
137
|
-
attributeChanged: Observable<[data: DecodedAttributeReportValue<any>, oldValue: any], void>;
|
|
138
|
-
/** Emitted when an event is triggered. */
|
|
139
|
-
eventTriggered: Observable<[DecodedEventReportValue<any>], void>;
|
|
140
|
-
/** Emitted when the structure of the node changes (Endpoints got added or also removed). */
|
|
141
|
-
structureChanged: Observable<[void], void>;
|
|
142
|
-
/** Emitted when the node is decommissioned. */
|
|
143
|
-
decommissioned: Observable<[void], void>;
|
|
144
|
-
/** Emitted when a subscription alive trigger is received (max interval trigger or any data update) */
|
|
145
|
-
connectionAlive: Observable<[void], void>;
|
|
146
|
-
};
|
|
122
|
+
readonly events: PairedNode.Events;
|
|
147
123
|
static create(nodeId: NodeId, commissioningController: CommissioningController, options: CommissioningControllerNodeOptions | undefined, knownNodeDetails: DeviceInformationData, interactionClient: InteractionClient, reconnectFunc: (discoveryType?: NodeDiscoveryType, noForcedConnection?: boolean) => Promise<void>, assignDisconnectedHandler: (handler: () => Promise<void>) => void, sessions: BasicSet<NodeSession>, crypto: Crypto, storedAttributeData?: DecodedAttributeReportValue<any>[]): Promise<PairedNode>;
|
|
148
124
|
constructor(nodeId: NodeId, commissioningController: CommissioningController, options: CommissioningControllerNodeOptions | undefined, knownNodeDetails: DeviceInformationData, interactionClient: InteractionClient, reconnectFunc: (discoveryType?: NodeDiscoveryType, noForcedConnection?: boolean) => Promise<void>, assignDisconnectedHandler: (handler: () => Promise<void>) => void, sessions: BasicSet<NodeSession, NodeSession>, crypto: Crypto, storedAttributeData?: DecodedAttributeReportValue<any>[]);
|
|
149
125
|
get construction(): Construction<PairedNode>;
|
|
@@ -206,6 +182,12 @@ export declare class PairedNode {
|
|
|
206
182
|
}>;
|
|
207
183
|
/** Read all attributes of the devices and return them. If a stored state exists this is used to minimize needed traffic. */
|
|
208
184
|
readAllAttributes(): Promise<DecodedAttributeReportValue<any>[]>;
|
|
185
|
+
/**
|
|
186
|
+
* Traverse the structure data and collect all data for the given endpointId.
|
|
187
|
+
* Return true if data for the endpoint was found, otherwise false.
|
|
188
|
+
* If data was found it is added to the collectedData map.
|
|
189
|
+
*/
|
|
190
|
+
collectDescriptorData(structure: StructuredReadAttributeData, endpointId: EndpointNumber, collectedData: Map<EndpointNumber, DescriptorData>): void;
|
|
209
191
|
/** Returns the functional devices/endpoints (the "childs" of the Root Endpoint) known for this node. */
|
|
210
192
|
getDevices(): Endpoint[];
|
|
211
193
|
/** Returns the device/endpoint with the given endpoint ID. */
|
|
@@ -257,4 +239,50 @@ export declare class PairedNode {
|
|
|
257
239
|
getClusterClientForDevice<const T extends ClusterType>(endpointId: EndpointNumber, cluster: T): ClusterClientObj<T> | undefined;
|
|
258
240
|
get [Diagnostic.value](): unknown;
|
|
259
241
|
}
|
|
242
|
+
export declare namespace PairedNode {
|
|
243
|
+
interface NodeStructureEvents {
|
|
244
|
+
/** Emitted when endpoints are added. */
|
|
245
|
+
nodeEndpointAdded: Observable<[EndpointNumber]>;
|
|
246
|
+
/** Emitted when endpoints are removed. */
|
|
247
|
+
nodeEndpointRemoved: Observable<[EndpointNumber]>;
|
|
248
|
+
/** Emitted when endpoints are updated (e.g. device type changed, structure changed). */
|
|
249
|
+
nodeEndpointChanged: Observable<[EndpointNumber]>;
|
|
250
|
+
}
|
|
251
|
+
interface Events extends NodeStructureEvents {
|
|
252
|
+
/**
|
|
253
|
+
* Emitted when the node is initialized from local data. These data usually are stale, but you can still already
|
|
254
|
+
* use the node to interact with the device. If no local data are available this event will be emitted together
|
|
255
|
+
* with the initializedFromRemote event.
|
|
256
|
+
*/
|
|
257
|
+
initialized: AsyncObservable<[details: DeviceInformationData]>;
|
|
258
|
+
/**
|
|
259
|
+
* Emitted when the node is fully initialized from remote and all attributes and events are subscribed.
|
|
260
|
+
* This event can also be awaited if code needs to be blocked until the node is fully initialized.
|
|
261
|
+
*/
|
|
262
|
+
initializedFromRemote: AsyncObservable<[details: DeviceInformationData]>;
|
|
263
|
+
/**
|
|
264
|
+
* Emitted when the device information changes.
|
|
265
|
+
*/
|
|
266
|
+
deviceInformationChanged: AsyncObservable<[details: DeviceInformationData]>;
|
|
267
|
+
/** Emitted when the state of the node changes. */
|
|
268
|
+
stateChanged: Observable<[nodeState: NodeStates]>;
|
|
269
|
+
/**
|
|
270
|
+
* Emitted when an attribute value changes. If the oldValue is undefined then no former value was known.
|
|
271
|
+
*/
|
|
272
|
+
attributeChanged: Observable<[data: DecodedAttributeReportValue<any>, oldValue: any]>;
|
|
273
|
+
/** Emitted when an event is triggered. */
|
|
274
|
+
eventTriggered: Observable<[DecodedEventReportValue<any>]>;
|
|
275
|
+
/**
|
|
276
|
+
* Emitted when all node structure changes were applied (Endpoints got added or also removed).
|
|
277
|
+
* You can alternatively use the nodeEndpointAdded, nodeEndpointRemoved and nodeEndpointChanged events to react on specific changes.
|
|
278
|
+
* This event is emitted after all nodeEndpointAdded, nodeEndpointRemoved and nodeEndpointChanged events are emitted.
|
|
279
|
+
*/
|
|
280
|
+
structureChanged: Observable<[void]>;
|
|
281
|
+
/** Emitted when the node is decommissioned. */
|
|
282
|
+
decommissioned: Observable<[void]>;
|
|
283
|
+
/** Emitted when a subscription alive trigger is received (max interval trigger or any data update) */
|
|
284
|
+
connectionAlive: Observable<[void]>;
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
export {};
|
|
260
288
|
//# sourceMappingURL=PairedNode.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PairedNode.d.ts","sourceRoot":"","sources":["../../../src/device/PairedNode.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"PairedNode.d.ts","sourceRoot":"","sources":["../../../src/device/PairedNode.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAgD,UAAU,EAA0B,MAAM,WAAW,CAAC;AAC7G,OAAO,EACH,eAAe,EAEf,QAAQ,EACR,YAAY,EACZ,MAAM,EACN,UAAU,EAIV,WAAW,EACX,UAAU,EAGb,MAAM,UAAU,CAAC;AAClB,OAAO,EACH,qBAAqB,EAGrB,gBAAgB,EAChB,2BAA2B,EAC3B,uBAAuB,EACvB,iBAAiB,EACjB,iBAAiB,EACjB,WAAW,EAEX,2BAA2B,EAG9B,MAAM,WAAW,CAAC;AACnB,OAAO,EAIH,WAAW,EAGX,cAAc,EAGd,MAAM,EAKT,MAAM,QAAQ,CAAC;AAGhB,OAAO,EAA0B,gBAAgB,EAAmB,MAAM,yCAAyC,CAAC;AACpH,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAIxE,OAAO,EAAqB,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAOlF,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAuBzC,oBAAY,UAAU;IAClB;;;OAGG;IACH,SAAS,IAAI;IAEb;;;;OAIG;IACH,YAAY,IAAI;IAEhB;;+FAE2F;IAC3F,YAAY,IAAI;IAEhB;;;OAGG;IACH,yBAAyB,IAAI;CAChC;AAED,kBAAkB;AAClB,oBAAY,oBAAoB;IAC5B;;;OAGG;IACH,SAAS,IAAI;IAEb;;;;OAIG;IACH,YAAY,IAAI;IAEhB;;+FAE2F;IAC3F,YAAY,IAAI;IAEhB;;;OAGG;IACH,yBAAyB,IAAI;IAE7B;;;OAGG;IACH,gBAAgB,IAAI;IAEpB;;OAEG;IACH,cAAc,IAAI;CACrB;AAED,MAAM,MAAM,kCAAkC,GAAG;IAC7C;;;OAGG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAE/B;;;;;OAKG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IAEjC;;;OAGG;IACH,QAAQ,CAAC,gCAAgC,CAAC,EAAE,MAAM,CAAC;IAEnD;;;;OAIG;IACH,QAAQ,CAAC,kCAAkC,CAAC,EAAE,MAAM,CAAC;IAErD;;;;OAIG;IACH,QAAQ,CAAC,wBAAwB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,2BAA2B,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC;IAErG;;;;OAIG;IACH,QAAQ,CAAC,sBAAsB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,uBAAuB,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC;IAE/F;;;;;OAKG;IACH,QAAQ,CAAC,wBAAwB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,oBAAoB,KAAK,IAAI,CAAC;CAC7F,CAAC;AAEF,qBAAa,qBAAsB,SAAQ,WAAW;CAAG;AASzD,KAAK,cAAc,GAAG,qBAAqB,CAAC,OAAO,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;AAgBnF;;;GAGG;AACH,qBAAa,UAAU;;IAiGf,QAAQ,CAAC,MAAM,EAAE,MAAM;IA5C3B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,CAahC;WAEW,MAAM,CACf,MAAM,EAAE,MAAM,EACd,uBAAuB,EAAE,uBAAuB,EAChD,OAAO,EAAE,kCAAkC,YAAK,EAChD,gBAAgB,EAAE,qBAAqB,EACvC,iBAAiB,EAAE,iBAAiB,EACpC,aAAa,EAAE,CAAC,aAAa,CAAC,EAAE,iBAAiB,EAAE,kBAAkB,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,EACjG,yBAAyB,EAAE,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,EACjE,QAAQ,EAAE,QAAQ,CAAC,WAAW,CAAC,EAC/B,MAAM,EAAE,MAAM,EACd,mBAAmB,CAAC,EAAE,2BAA2B,CAAC,GAAG,CAAC,EAAE,GACzD,OAAO,CAAC,UAAU,CAAC;gBAkBT,MAAM,EAAE,MAAM,EACvB,uBAAuB,EAAE,uBAAuB,EAChD,OAAO,EAAE,kCAAkC,YAAK,EAChD,gBAAgB,EAAE,qBAAqB,EACvC,iBAAiB,EAAE,iBAAiB,EACpC,aAAa,EAAE,CAAC,aAAa,CAAC,EAAE,iBAAiB,EAAE,kBAAkB,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,EACjG,yBAAyB,EAAE,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,EACjE,QAAQ,EAAE,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,EAC5C,MAAM,EAAE,MAAM,EACd,mBAAmB,CAAC,EAAE,2BAA2B,CAAC,GAAG,CAAC,EAAE;IAwE5D,IAAI,YAAY,6BAEf;IAED,IAAI,WAAW,YAEd;IAED,yCAAyC;IACzC,IAAI,KAAK,eAER;IAED,+EAA+E;IAC/E,IAAI,gBAAgB,wEAEnB;IAED,yEAAyE;IACzE,IAAI,iBAAiB,uEAEpB;IAED,4HAA4H;IAC5H,IAAI,uBAAuB,YAE1B;IAED,2EAA2E;IAC3E,IAAI,wBAAwB,YAE3B;IAED,qDAAqD;IACrD,IAAI,WAAW,YAEd;IAED,iGAAiG;IACjG,IAAI,kCAAkC,uBAErC;IA4CD;;;;;OAKG;IACH,OAAO,CAAC,cAAc,CAAC,EAAE,kCAAkC;IAO3D;;;;OAIG;IACH,gBAAgB;IAUhB;;;;;;OAMG;IACG,SAAS,CAAC,cAAc,CAAC,EAAE,kCAAkC;IA6LnE;;;;OAIG;IACH,oBAAoB;IAIpB,+EAA+E;IAC/E,YAAY;IASZ;;;OAGG;IACG,+BAA+B,CAAC,OAAO,CAAC,EAAE;QAC5C,qBAAqB,CAAC,EAAE,OAAO,CAAC;QAChC,wBAAwB,CAAC,EAAE,CAAC,IAAI,EAAE,2BAA2B,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,IAAI,CAAC;QAC3F,sBAAsB,CAAC,EAAE,CAAC,IAAI,EAAE,uBAAuB,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC;KACzE;;;;;IAqKD,4HAA4H;IACtH,iBAAiB;IAgFvB;;;;OAIG;IACH,qBAAqB,CACjB,SAAS,EAAE,2BAA2B,EACtC,UAAU,EAAE,cAAc,EAC1B,aAAa,EAAE,GAAG,CAAC,cAAc,EAAE,cAAc,CAAC;IAgWtD,wGAAwG;IACxG,UAAU,IAAI,QAAQ,EAAE;IAIxB,8DAA8D;IAC9D,aAAa,CAAC,UAAU,EAAE,MAAM;IAIhC,+CAA+C;IAC/C,eAAe;IAIf,qGAAqG;IAC/F,YAAY;IAgClB;;;;OAIG;IACG,4BAA4B,CAAC,oBAAoB,SAAM;IA0B7D,iGAAiG;IAC3F,+BAA+B,CAAC,oBAAoB,SAAM;;;;IAkEhE,oFAAoF;IAC9E,UAAU;IAKhB,mHAAmH;IACnH,KAAK,CAAC,wBAAwB,UAAQ;IAYtC;;;;OAIG;IACH,oBAAoB,CAAC,KAAK,CAAC,CAAC,SAAS,WAAW,EAAE,OAAO,EAAE,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,GAAG,SAAS;IAI9F;;;;OAIG;IACH,oBAAoB,CAAC,KAAK,CAAC,CAAC,SAAS,WAAW,EAAE,OAAO,EAAE,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,GAAG,SAAS;IAI9F;;;;;OAKG;IACH,yBAAyB,CAAC,KAAK,CAAC,CAAC,SAAS,WAAW,EACjD,UAAU,EAAE,cAAc,EAC1B,OAAO,EAAE,CAAC,GACX,gBAAgB,CAAC,CAAC,CAAC,GAAG,SAAS;IAIlC;;;;;OAKG;IACH,yBAAyB,CAAC,KAAK,CAAC,CAAC,SAAS,WAAW,EACjD,UAAU,EAAE,cAAc,EAC1B,OAAO,EAAE,CAAC,GACX,gBAAgB,CAAC,CAAC,CAAC,GAAG,SAAS;IAIlC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,OAAO,CAwBhC;CACJ;AAED,yBAAiB,UAAU,CAAC;IACxB,UAAiB,mBAAmB;QAChC,wCAAwC;QACxC,iBAAiB,EAAE,UAAU,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;QAEhD,0CAA0C;QAC1C,mBAAmB,EAAE,UAAU,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;QAElD,wFAAwF;QACxF,mBAAmB,EAAE,UAAU,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;KACrD;IAED,UAAiB,MAAO,SAAQ,mBAAmB;QAC/C;;;;WAIG;QACH,WAAW,EAAE,eAAe,CAAC,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAC,CAAC;QAE/D;;;WAGG;QACH,qBAAqB,EAAE,eAAe,CAAC,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAC,CAAC;QAEzE;;WAEG;QACH,wBAAwB,EAAE,eAAe,CAAC,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAC,CAAC;QAE5E,kDAAkD;QAClD,YAAY,EAAE,UAAU,CAAC,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;QAElD;;WAEG;QACH,gBAAgB,EAAE,UAAU,CAAC,CAAC,IAAI,EAAE,2BAA2B,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;QAEtF,0CAA0C;QAC1C,cAAc,EAAE,UAAU,CAAC,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAE3D;;;;WAIG;QACH,gBAAgB,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAErC,+CAA+C;QAC/C,cAAc,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAEnC,sGAAsG;QACtG,eAAe,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;KACvC;CACJ"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Copyright 2022-2025 Matter.js Authors
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
import { AdministratorCommissioning, BasicInformation,
|
|
6
|
+
import { AdministratorCommissioning, BasicInformation, Descriptor, OperationalCredentials } from "#clusters";
|
|
7
7
|
import {
|
|
8
8
|
AsyncObservable,
|
|
9
9
|
Construction,
|
|
@@ -70,6 +70,15 @@ var NodeStateInformation = /* @__PURE__ */ ((NodeStateInformation2) => {
|
|
|
70
70
|
})(NodeStateInformation || {});
|
|
71
71
|
class NodeNotConnectedError extends MatterError {
|
|
72
72
|
}
|
|
73
|
+
function areNumberListsSame(list1, list2) {
|
|
74
|
+
const set1 = new Set(list1);
|
|
75
|
+
const set2 = new Set(list2);
|
|
76
|
+
if (set1.size !== set2.size) return false;
|
|
77
|
+
for (const entry of set1.values()) {
|
|
78
|
+
if (!set2.has(entry)) return false;
|
|
79
|
+
}
|
|
80
|
+
return true;
|
|
81
|
+
}
|
|
73
82
|
class PairedNode {
|
|
74
83
|
constructor(nodeId, commissioningController, options = {}, knownNodeDetails, interactionClient, reconnectFunc, assignDisconnectedHandler, sessions, crypto, storedAttributeData) {
|
|
75
84
|
this.nodeId = nodeId;
|
|
@@ -163,31 +172,25 @@ class PairedNode {
|
|
|
163
172
|
#reconnectFunc;
|
|
164
173
|
#currentSubscriptionIntervalS;
|
|
165
174
|
#crypto;
|
|
175
|
+
#deviceInformationUpdateNeeded = false;
|
|
176
|
+
/**
|
|
177
|
+
* Endpoint structure change information that are checked when updating structure
|
|
178
|
+
* - null means that the endpoint itself changed, so will be regenerated completely any case
|
|
179
|
+
* - array of ClusterIds means that only these clusters changed and will be updated
|
|
180
|
+
*/
|
|
181
|
+
#registeredEndpointStructureChanges = /* @__PURE__ */ new Map();
|
|
166
182
|
events = {
|
|
167
|
-
/**
|
|
168
|
-
* Emitted when the node is initialized from local data. These data usually are stale, but you can still already
|
|
169
|
-
* use the node to interact with the device. If no local data are available this event will be emitted together
|
|
170
|
-
* with the initializedFromRemote event.
|
|
171
|
-
*/
|
|
172
183
|
initialized: AsyncObservable(),
|
|
173
|
-
/**
|
|
174
|
-
* Emitted when the node is fully initialized from remote and all attributes and events are subscribed.
|
|
175
|
-
* This event can also be awaited if code needs to be blocked until the node is fully initialized.
|
|
176
|
-
*/
|
|
177
184
|
initializedFromRemote: AsyncObservable(),
|
|
178
|
-
|
|
185
|
+
deviceInformationChanged: AsyncObservable(),
|
|
179
186
|
stateChanged: Observable(),
|
|
180
|
-
/**
|
|
181
|
-
* Emitted when an attribute value changes. If the oldValue is undefined then no former value was known.
|
|
182
|
-
*/
|
|
183
187
|
attributeChanged: Observable(),
|
|
184
|
-
/** Emitted when an event is triggered. */
|
|
185
188
|
eventTriggered: Observable(),
|
|
186
|
-
/** Emitted when the structure of the node changes (Endpoints got added or also removed). */
|
|
187
189
|
structureChanged: Observable(),
|
|
188
|
-
|
|
190
|
+
nodeEndpointAdded: Observable(),
|
|
191
|
+
nodeEndpointRemoved: Observable(),
|
|
192
|
+
nodeEndpointChanged: Observable(),
|
|
189
193
|
decommissioned: Observable(),
|
|
190
|
-
/** Emitted when a subscription alive trigger is received (max interval trigger or any data update) */
|
|
191
194
|
connectionAlive: Observable()
|
|
192
195
|
};
|
|
193
196
|
static async create(nodeId, commissioningController, options = {}, knownNodeDetails, interactionClient, reconnectFunc, assignDisconnectedHandler, sessions, crypto, storedAttributeData) {
|
|
@@ -402,7 +405,7 @@ class PairedNode {
|
|
|
402
405
|
})) {
|
|
403
406
|
return;
|
|
404
407
|
}
|
|
405
|
-
await this.#initializeEndpointStructure(storedAttributeData);
|
|
408
|
+
await this.#initializeEndpointStructure(storedAttributeData, false);
|
|
406
409
|
await this.events.initialized.emit(this.#nodeDetails.toStorageData());
|
|
407
410
|
this.#localInitializationDone = true;
|
|
408
411
|
}
|
|
@@ -440,7 +443,7 @@ class PairedNode {
|
|
|
440
443
|
if (attributeReports === void 0) {
|
|
441
444
|
throw new InternalError("No attribute reports received when subscribing to all values!");
|
|
442
445
|
}
|
|
443
|
-
await this.#initializeEndpointStructure(attributeReports
|
|
446
|
+
await this.#initializeEndpointStructure(attributeReports);
|
|
444
447
|
this.#remoteInitializationInProgress = false;
|
|
445
448
|
if (!deviceDetailsUpdated) {
|
|
446
449
|
const rootEndpoint = this.getRootEndpoint();
|
|
@@ -451,7 +454,7 @@ class PairedNode {
|
|
|
451
454
|
this.#currentSubscriptionIntervalS = maxInterval;
|
|
452
455
|
} else {
|
|
453
456
|
const allClusterAttributes = await this.readAllAttributes();
|
|
454
|
-
await this.#initializeEndpointStructure(allClusterAttributes
|
|
457
|
+
await this.#initializeEndpointStructure(allClusterAttributes);
|
|
455
458
|
this.#remoteInitializationInProgress = false;
|
|
456
459
|
}
|
|
457
460
|
if (!this.#remoteInitializationDone) {
|
|
@@ -533,7 +536,7 @@ class PairedNode {
|
|
|
533
536
|
);
|
|
534
537
|
asClusterClientInternal(cluster)._triggerAttributeUpdate(attributeId, value);
|
|
535
538
|
attributeChangedCallback?.(data, oldValue);
|
|
536
|
-
this.#
|
|
539
|
+
this.#checkAttributesForNeededUpdates(endpointId, clusterId, attributeId);
|
|
537
540
|
},
|
|
538
541
|
eventListener: (data) => {
|
|
539
542
|
if (ignoreInitialTriggers) return;
|
|
@@ -590,18 +593,32 @@ class PairedNode {
|
|
|
590
593
|
this.#reconnectDelayTimer = void 0;
|
|
591
594
|
this.#setConnectionState(0 /* Connected */);
|
|
592
595
|
}
|
|
596
|
+
if (this.#remoteInitializationDone && this.#registeredEndpointStructureChanges.size > 0 && !this.#updateEndpointStructureTimer.isRunning) {
|
|
597
|
+
logger.info(`Node ${this.nodeId}: Endpoint structure needs to be updated ...`);
|
|
598
|
+
this.#updateEndpointStructureTimer.stop().start();
|
|
599
|
+
} else if (this.#deviceInformationUpdateNeeded) {
|
|
600
|
+
const rootEndpoint = this.getRootEndpoint();
|
|
601
|
+
if (rootEndpoint !== void 0) {
|
|
602
|
+
this.#nodeDetails.enhanceDeviceDetailsFromCache(rootEndpoint).then(() => this.events.deviceInformationChanged.emit(this.#nodeDetails.toStorageData())).catch(
|
|
603
|
+
(error) => logger.warn(
|
|
604
|
+
`Node ${this.nodeId}: Error updating device information from root endpoint`,
|
|
605
|
+
error
|
|
606
|
+
)
|
|
607
|
+
);
|
|
608
|
+
}
|
|
609
|
+
}
|
|
610
|
+
this.#deviceInformationUpdateNeeded = false;
|
|
593
611
|
this.events.connectionAlive.emit();
|
|
594
612
|
}
|
|
595
613
|
};
|
|
596
614
|
this.#currentSubscriptionHandler = subscriptionHandler;
|
|
597
615
|
const maxKnownEventNumber = this.#interactionClient.maxKnownEventNumber;
|
|
598
|
-
|
|
616
|
+
await this.#interactionClient.getAllAttributes({
|
|
599
617
|
dataVersionFilters: this.#interactionClient.getCachedClusterDataVersions(),
|
|
600
|
-
executeQueued: !!threadConnected
|
|
618
|
+
executeQueued: !!threadConnected,
|
|
601
619
|
// We queue subscriptions for thread devices
|
|
620
|
+
attributeChangeListener: subscriptionHandler.attributeListener
|
|
602
621
|
});
|
|
603
|
-
await this.#interactionClient.processAttributeUpdates(attributeData, subscriptionHandler.attributeListener);
|
|
604
|
-
attributeData.length = 0;
|
|
605
622
|
const initialSubscriptionData = await this.#interactionClient.subscribeAllAttributesAndEvents({
|
|
606
623
|
isUrgent: true,
|
|
607
624
|
minIntervalFloorSeconds,
|
|
@@ -627,30 +644,33 @@ class PairedNode {
|
|
|
627
644
|
enrichCachedAttributeData: true
|
|
628
645
|
});
|
|
629
646
|
}
|
|
630
|
-
#
|
|
631
|
-
|
|
632
|
-
if (clusterId === DescriptorCluster.id) {
|
|
647
|
+
#checkAttributesForNeededUpdates(endpointId, clusterId, attributeId) {
|
|
648
|
+
if (clusterId === Descriptor.Complete.id) {
|
|
633
649
|
switch (attributeId) {
|
|
634
|
-
case
|
|
635
|
-
case
|
|
636
|
-
case
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
}
|
|
641
|
-
if (!structureUpdateNeeded) {
|
|
642
|
-
switch (attributeId) {
|
|
643
|
-
case FeatureMap.id:
|
|
644
|
-
case AttributeList.id:
|
|
645
|
-
case AcceptedCommandList.id:
|
|
646
|
-
case ClusterRevision.id:
|
|
647
|
-
structureUpdateNeeded = true;
|
|
648
|
-
break;
|
|
650
|
+
case Descriptor.Complete.attributes.partsList.id:
|
|
651
|
+
case Descriptor.Complete.attributes.serverList.id:
|
|
652
|
+
case Descriptor.Complete.attributes.clientList.id:
|
|
653
|
+
case Descriptor.Complete.attributes.deviceTypeList.id:
|
|
654
|
+
this.#registeredEndpointStructureChanges.set(endpointId, null);
|
|
655
|
+
return;
|
|
649
656
|
}
|
|
657
|
+
} else if (clusterId === BasicInformation.Cluster.id) {
|
|
658
|
+
this.#deviceInformationUpdateNeeded = true;
|
|
650
659
|
}
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
660
|
+
switch (attributeId) {
|
|
661
|
+
case FeatureMap.id:
|
|
662
|
+
case AttributeList.id:
|
|
663
|
+
case AcceptedCommandList.id:
|
|
664
|
+
case ClusterRevision.id:
|
|
665
|
+
let knownForUpdate = this.#registeredEndpointStructureChanges.get(endpointId);
|
|
666
|
+
if (knownForUpdate !== null) {
|
|
667
|
+
knownForUpdate = knownForUpdate ?? [];
|
|
668
|
+
if (!knownForUpdate.includes(clusterId)) {
|
|
669
|
+
knownForUpdate.push(clusterId);
|
|
670
|
+
this.#registeredEndpointStructureChanges.set(endpointId, knownForUpdate);
|
|
671
|
+
}
|
|
672
|
+
}
|
|
673
|
+
break;
|
|
654
674
|
}
|
|
655
675
|
}
|
|
656
676
|
#checkEventsForNeededStructureUpdate(_endpointId, clusterId, eventId) {
|
|
@@ -678,55 +698,170 @@ class PairedNode {
|
|
|
678
698
|
this.#reconnectDelayTimer.start();
|
|
679
699
|
}
|
|
680
700
|
async #updateEndpointStructure() {
|
|
681
|
-
const allClusterAttributes =
|
|
701
|
+
const allClusterAttributes = this.#interactionClient.getAllCachedClusterData();
|
|
682
702
|
await this.#initializeEndpointStructure(allClusterAttributes, true);
|
|
683
|
-
this
|
|
684
|
-
|
|
703
|
+
const rootEndpoint = this.getRootEndpoint();
|
|
704
|
+
if (rootEndpoint !== void 0) {
|
|
705
|
+
await this.#nodeDetails.enhanceDeviceDetailsFromCache(rootEndpoint);
|
|
706
|
+
await this.events.deviceInformationChanged.emit(this.#nodeDetails.toStorageData());
|
|
707
|
+
}
|
|
708
|
+
}
|
|
709
|
+
/**
|
|
710
|
+
* Traverse the structure data and collect all data for the given endpointId.
|
|
711
|
+
* Return true if data for the endpoint was found, otherwise false.
|
|
712
|
+
* If data was found it is added to the collectedData map.
|
|
713
|
+
*/
|
|
714
|
+
collectDescriptorData(structure, endpointId, collectedData) {
|
|
715
|
+
if (collectedData.has(endpointId)) {
|
|
716
|
+
return;
|
|
717
|
+
}
|
|
718
|
+
const endpointData = structure[endpointId];
|
|
719
|
+
const descriptorData = endpointData?.[Descriptor.Complete.id];
|
|
720
|
+
if (endpointData === void 0 || descriptorData === void 0) {
|
|
721
|
+
logger.info(`Descriptor data for endpoint ${endpointId} not found in structure! Ignoring endpoint ...`);
|
|
722
|
+
return;
|
|
723
|
+
}
|
|
724
|
+
collectedData.set(endpointId, descriptorData);
|
|
725
|
+
if (descriptorData.partsList.length) {
|
|
726
|
+
for (const partEndpointId of descriptorData.partsList) {
|
|
727
|
+
this.collectDescriptorData(structure, partEndpointId, collectedData);
|
|
728
|
+
}
|
|
729
|
+
}
|
|
730
|
+
}
|
|
731
|
+
#hasEndpointChanged(device, descriptorData) {
|
|
732
|
+
return !(areNumberListsSame(
|
|
733
|
+
device.getDeviceTypes().map(({ code }) => code),
|
|
734
|
+
descriptorData.deviceTypeList.map(({ deviceType }) => deviceType)
|
|
735
|
+
) && // Check if the cluster clients are the same - they map to the serverList attribute
|
|
736
|
+
areNumberListsSame(
|
|
737
|
+
device.getAllClusterClients().map(({ id }) => id),
|
|
738
|
+
descriptorData.serverList
|
|
739
|
+
) && // Check if the cluster servers are the same - they map to the clientList attribute
|
|
740
|
+
areNumberListsSame(
|
|
741
|
+
device.getAllClusterServers().map(({ id }) => id),
|
|
742
|
+
descriptorData.clientList
|
|
743
|
+
));
|
|
685
744
|
}
|
|
686
745
|
/** Reads all data from the device and create a device object structure out of it. */
|
|
687
|
-
async #initializeEndpointStructure(allClusterAttributes, updateStructure =
|
|
746
|
+
async #initializeEndpointStructure(allClusterAttributes, updateStructure = this.#localInitializationDone || this.#remoteInitializationDone) {
|
|
747
|
+
if (this.#updateEndpointStructureTimer.isRunning) {
|
|
748
|
+
this.#updateEndpointStructureTimer.stop();
|
|
749
|
+
}
|
|
750
|
+
const eventsToEmit = /* @__PURE__ */ new Map();
|
|
751
|
+
const structureUpdateDetails = this.#registeredEndpointStructureChanges;
|
|
752
|
+
this.#registeredEndpointStructureChanges = /* @__PURE__ */ new Map();
|
|
688
753
|
const allData = structureReadAttributeDataToClusterObject(allClusterAttributes);
|
|
754
|
+
const descriptors = /* @__PURE__ */ new Map();
|
|
755
|
+
this.collectDescriptorData(allData, EndpointNumber(0), descriptors);
|
|
689
756
|
if (updateStructure) {
|
|
690
757
|
const endpointsToRemove = new Set(this.#endpoints.keys());
|
|
691
|
-
for (const
|
|
692
|
-
const
|
|
693
|
-
if (
|
|
694
|
-
|
|
695
|
-
|
|
758
|
+
for (const endpointId of descriptors.keys()) {
|
|
759
|
+
const device = this.#endpoints.get(endpointId);
|
|
760
|
+
if (device !== void 0) {
|
|
761
|
+
const hasChanged = structureUpdateDetails.has(endpointId);
|
|
762
|
+
if (!hasChanged || !this.#hasEndpointChanged(device, descriptors.get(endpointId))) {
|
|
763
|
+
logger.debug(
|
|
764
|
+
`Node ${this.nodeId}: Retaining endpoint`,
|
|
765
|
+
endpointId,
|
|
766
|
+
hasChanged ? "(with only structure changes)" : "(unchanged)"
|
|
767
|
+
);
|
|
768
|
+
endpointsToRemove.delete(endpointId);
|
|
769
|
+
if (hasChanged) {
|
|
770
|
+
eventsToEmit.set(endpointId, "nodeEndpointChanged");
|
|
771
|
+
}
|
|
772
|
+
} else {
|
|
773
|
+
logger.debug(`Node ${this.nodeId}: Recreating endpoint`, endpointId);
|
|
774
|
+
eventsToEmit.set(endpointId, "nodeEndpointChanged");
|
|
775
|
+
}
|
|
696
776
|
}
|
|
697
777
|
}
|
|
698
|
-
for (const
|
|
699
|
-
|
|
700
|
-
this.#endpoints.get(endpointId)
|
|
701
|
-
|
|
778
|
+
for (const endpoint of endpointsToRemove.values()) {
|
|
779
|
+
const endpointId = EndpointNumber(endpoint);
|
|
780
|
+
const device = this.#endpoints.get(endpointId);
|
|
781
|
+
if (device !== void 0) {
|
|
782
|
+
if (eventsToEmit.get(endpointId) !== "nodeEndpointChanged") {
|
|
783
|
+
logger.debug(`Node ${this.nodeId}: Removing endpoint`, endpointId);
|
|
784
|
+
eventsToEmit.set(endpointId, "nodeEndpointRemoved");
|
|
785
|
+
}
|
|
786
|
+
device.removeFromStructure();
|
|
787
|
+
this.#endpoints.delete(endpointId);
|
|
788
|
+
}
|
|
702
789
|
}
|
|
703
790
|
} else {
|
|
704
791
|
this.#endpoints.clear();
|
|
705
792
|
}
|
|
706
|
-
const
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
const descriptorData = clusters[DescriptorCluster.id];
|
|
710
|
-
partLists.set(endpointIdNumber, descriptorData.partsList);
|
|
711
|
-
if (this.#endpoints.has(endpointIdNumber)) {
|
|
793
|
+
for (const endpointId of descriptors.keys()) {
|
|
794
|
+
const clusters = allData[endpointId];
|
|
795
|
+
if (this.#endpoints.has(endpointId)) {
|
|
712
796
|
continue;
|
|
713
797
|
}
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
798
|
+
const isRecreation = eventsToEmit.get(endpointId) === "nodeEndpointChanged";
|
|
799
|
+
logger.debug(
|
|
800
|
+
`Node ${this.nodeId}: ${isRecreation ? "Recreating" : "Creating"} endpoint`,
|
|
801
|
+
endpointId,
|
|
802
|
+
Diagnostic.json(clusters)
|
|
718
803
|
);
|
|
804
|
+
this.#endpoints.set(endpointId, this.#createDevice(endpointId, clusters, this.#interactionClient));
|
|
805
|
+
if (!isRecreation) {
|
|
806
|
+
eventsToEmit.set(endpointId, "nodeEndpointAdded");
|
|
807
|
+
}
|
|
808
|
+
}
|
|
809
|
+
for (const [endpointId, { partsList }] of descriptors.entries()) {
|
|
810
|
+
const endpoint = this.#endpoints.get(endpointId);
|
|
811
|
+
if (endpoint === void 0) {
|
|
812
|
+
continue;
|
|
813
|
+
}
|
|
814
|
+
endpoint.getChildEndpoints().forEach((child) => {
|
|
815
|
+
if (child.number !== void 0 && !partsList.includes(child.number)) {
|
|
816
|
+
endpoint.removeChildEndpoint(child);
|
|
817
|
+
if (!eventsToEmit.has(endpointId)) {
|
|
818
|
+
eventsToEmit.set(endpointId, "nodeEndpointChanged");
|
|
819
|
+
}
|
|
820
|
+
}
|
|
821
|
+
});
|
|
822
|
+
}
|
|
823
|
+
this.#structureEndpoints(descriptors);
|
|
824
|
+
if (updateStructure && eventsToEmit.size) {
|
|
825
|
+
for (const [endpointId, eventName] of eventsToEmit.entries()) {
|
|
826
|
+
if (eventName !== "nodeEndpointAdded") {
|
|
827
|
+
const clusterServers = descriptors.get(endpointId)?.serverList;
|
|
828
|
+
await this.#interactionClient.cleanupAttributeData(
|
|
829
|
+
endpointId,
|
|
830
|
+
eventName === "nodeEndpointRemoved" ? void 0 : clusterServers
|
|
831
|
+
);
|
|
832
|
+
}
|
|
833
|
+
}
|
|
834
|
+
const emitChangeEvents = () => {
|
|
835
|
+
for (const [endpointId, eventName] of eventsToEmit.entries()) {
|
|
836
|
+
logger.debug(`Node ${this.nodeId}: Emitting event ${eventName} for endpoint ${endpointId}`);
|
|
837
|
+
this.events[eventName].emit(endpointId);
|
|
838
|
+
}
|
|
839
|
+
this.#options.stateInformationCallback?.(this.nodeId, 4 /* StructureChanged */);
|
|
840
|
+
this.events.structureChanged.emit();
|
|
841
|
+
};
|
|
842
|
+
if (this.#connectionState === 0 /* Connected */) {
|
|
843
|
+
emitChangeEvents();
|
|
844
|
+
} else {
|
|
845
|
+
this.events.stateChanged.once((State) => {
|
|
846
|
+
if (State === 0 /* Connected */) {
|
|
847
|
+
emitChangeEvents();
|
|
848
|
+
}
|
|
849
|
+
});
|
|
850
|
+
}
|
|
719
851
|
}
|
|
720
|
-
this.#structureEndpoints(partLists);
|
|
721
852
|
}
|
|
722
|
-
/**
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
853
|
+
/**
|
|
854
|
+
* Bring the endpoints in a structure based on their partsList attribute. This method only adds endpoints into the
|
|
855
|
+
* right place as children, Cleanup is not happening here
|
|
856
|
+
*/
|
|
857
|
+
#structureEndpoints(descriptors) {
|
|
858
|
+
const partLists = Array.from(descriptors.entries()).map(
|
|
859
|
+
([ep, { partsList }]) => [ep, partsList]
|
|
860
|
+
// else Typescript gets confused
|
|
727
861
|
);
|
|
862
|
+
logger.debug(`Node ${this.nodeId}: Endpoints from PartsLists`, Diagnostic.json(partLists));
|
|
728
863
|
const endpointUsages = {};
|
|
729
|
-
|
|
864
|
+
partLists.forEach(
|
|
730
865
|
([parent, partsList]) => partsList.forEach((endPoint) => {
|
|
731
866
|
if (endPoint === parent) {
|
|
732
867
|
logger.warn(`Node ${this.nodeId}: Endpoint ${endPoint} is referencing itself!`);
|
|
@@ -750,14 +885,18 @@ class PairedNode {
|
|
|
750
885
|
const childEndpointId = EndpointNumber(parseInt(childId));
|
|
751
886
|
const childEndpoint = this.#endpoints.get(childEndpointId);
|
|
752
887
|
const parentEndpoint = this.#endpoints.get(usages[0]);
|
|
888
|
+
const existingChildEndpoint = parentEndpoint?.getChildEndpoint(childEndpointId);
|
|
753
889
|
if (childEndpoint === void 0 || parentEndpoint === void 0) {
|
|
754
890
|
logger.warn(
|
|
755
891
|
`Node ${this.nodeId}: Endpoint ${usages[0]} not found in the data received from the device!`
|
|
756
892
|
);
|
|
757
|
-
} else if (
|
|
893
|
+
} else if (existingChildEndpoint !== childEndpoint) {
|
|
758
894
|
logger.debug(
|
|
759
895
|
`Node ${this.nodeId}: Endpoint structure: Child: ${childEndpointId} -> Parent: ${parentEndpoint.number}`
|
|
760
896
|
);
|
|
897
|
+
if (existingChildEndpoint !== void 0) {
|
|
898
|
+
parentEndpoint.removeChildEndpoint(existingChildEndpoint);
|
|
899
|
+
}
|
|
761
900
|
parentEndpoint.addChildEndpoint(childEndpoint);
|
|
762
901
|
}
|
|
763
902
|
delete endpointUsages[EndpointNumber(parseInt(childId))];
|
|
@@ -779,7 +918,7 @@ class PairedNode {
|
|
|
779
918
|
}
|
|
780
919
|
/** Create a device object from the data read from the device. */
|
|
781
920
|
#createDevice(endpointId, data, interactionClient) {
|
|
782
|
-
const descriptorData = data[
|
|
921
|
+
const descriptorData = data[Descriptor.Complete.id];
|
|
783
922
|
const deviceTypes = descriptorData.deviceTypeList.flatMap(({ deviceType, revision }) => {
|
|
784
923
|
const deviceTypeDefinition = getDeviceTypeDefinitionFromModelByCode(deviceType);
|
|
785
924
|
if (deviceTypeDefinition === void 0) {
|