@project-chip/matter.js 0.9.2 → 0.9.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.
- package/dist/cjs/CommissioningServer.d.ts.map +1 -1
- package/dist/cjs/CommissioningServer.js +0 -1
- package/dist/cjs/CommissioningServer.js.map +2 -2
- package/dist/cjs/MatterDevice.d.ts +3 -0
- package/dist/cjs/MatterDevice.d.ts.map +1 -1
- package/dist/cjs/MatterDevice.js +21 -7
- package/dist/cjs/MatterDevice.js.map +2 -2
- package/dist/cjs/behavior/AccessControl.js +2 -2
- package/dist/cjs/behavior/AccessControl.js.map +2 -2
- package/dist/cjs/behavior/definitions/general-commissioning/ServerNodeFailsafeContext.d.ts +1 -0
- package/dist/cjs/behavior/definitions/general-commissioning/ServerNodeFailsafeContext.d.ts.map +1 -1
- package/dist/cjs/behavior/definitions/general-commissioning/ServerNodeFailsafeContext.js +14 -0
- package/dist/cjs/behavior/definitions/general-commissioning/ServerNodeFailsafeContext.js.map +2 -2
- package/dist/cjs/behavior/definitions/operational-credentials/OperationalCredentialsServer.d.ts.map +1 -1
- package/dist/cjs/behavior/definitions/operational-credentials/OperationalCredentialsServer.js +11 -2
- package/dist/cjs/behavior/definitions/operational-credentials/OperationalCredentialsServer.js.map +2 -2
- package/dist/cjs/behavior/state/transaction/Transaction.d.ts +18 -18
- package/dist/cjs/certificate/CertificateManager.d.ts.map +1 -1
- package/dist/cjs/certificate/CertificateManager.js +1 -0
- package/dist/cjs/certificate/CertificateManager.js.map +2 -2
- package/dist/cjs/certificate/CertificationDeclarationManager.d.ts +1 -1
- package/dist/cjs/certificate/CertificationDeclarationManager.d.ts.map +1 -1
- package/dist/cjs/certificate/CertificationDeclarationManager.js +3 -2
- package/dist/cjs/certificate/CertificationDeclarationManager.js.map +2 -2
- package/dist/cjs/cluster/server/AccessControlServer.js.map +1 -1
- package/dist/cjs/cluster/server/AttributeServer.d.ts +9 -0
- package/dist/cjs/cluster/server/AttributeServer.d.ts.map +1 -1
- package/dist/cjs/cluster/server/AttributeServer.js +62 -0
- package/dist/cjs/cluster/server/AttributeServer.js.map +3 -3
- package/dist/cjs/cluster/server/ClusterServer.d.ts.map +1 -1
- package/dist/cjs/cluster/server/ClusterServer.js +8 -1
- package/dist/cjs/cluster/server/ClusterServer.js.map +2 -2
- package/dist/cjs/cluster/server/ClusterServerTypes.d.ts +3 -3
- package/dist/cjs/cluster/server/ClusterServerTypes.d.ts.map +1 -1
- package/dist/cjs/cluster/server/ClusterServerTypes.js.map +1 -1
- package/dist/cjs/cluster/server/EventServer.d.ts +8 -2
- package/dist/cjs/cluster/server/EventServer.d.ts.map +1 -1
- package/dist/cjs/cluster/server/EventServer.js +33 -7
- package/dist/cjs/cluster/server/EventServer.js.map +2 -2
- package/dist/cjs/cluster/server/OperationalCredentialsServer.d.ts.map +1 -1
- package/dist/cjs/cluster/server/OperationalCredentialsServer.js +31 -8
- package/dist/cjs/cluster/server/OperationalCredentialsServer.js.map +2 -2
- package/dist/cjs/common/FailsafeContext.d.ts +1 -0
- package/dist/cjs/common/FailsafeContext.d.ts.map +1 -1
- package/dist/cjs/common/FailsafeContext.js +16 -2
- package/dist/cjs/common/FailsafeContext.js.map +2 -2
- package/dist/cjs/crypto/Crypto.d.ts +1 -1
- package/dist/cjs/crypto/Crypto.d.ts.map +1 -1
- package/dist/cjs/crypto/Crypto.js +2 -2
- package/dist/cjs/crypto/Crypto.js.map +2 -2
- package/dist/cjs/device/LegacyInteractionServer.d.ts +2 -2
- package/dist/cjs/device/LegacyInteractionServer.d.ts.map +1 -1
- package/dist/cjs/device/LegacyInteractionServer.js +13 -1
- package/dist/cjs/device/LegacyInteractionServer.js.map +2 -2
- package/dist/cjs/fabric/Fabric.d.ts +1 -0
- package/dist/cjs/fabric/Fabric.d.ts.map +1 -1
- package/dist/cjs/fabric/Fabric.js +5 -0
- package/dist/cjs/fabric/Fabric.js.map +2 -2
- package/dist/cjs/fabric/FabricManager.d.ts +1 -0
- package/dist/cjs/fabric/FabricManager.d.ts.map +1 -1
- package/dist/cjs/fabric/FabricManager.js +2 -1
- package/dist/cjs/fabric/FabricManager.js.map +2 -2
- package/dist/cjs/model/models/EventModel.d.ts +1 -0
- package/dist/cjs/model/models/EventModel.d.ts.map +1 -1
- package/dist/cjs/model/models/EventModel.js +3 -0
- package/dist/cjs/model/models/EventModel.js.map +2 -2
- package/dist/cjs/model/models/FieldModel.d.ts +1 -0
- package/dist/cjs/model/models/FieldModel.d.ts.map +1 -1
- package/dist/cjs/model/models/FieldModel.js +3 -0
- package/dist/cjs/model/models/FieldModel.js.map +2 -2
- package/dist/cjs/node/server/TransactionalInteractionServer.d.ts +2 -2
- package/dist/cjs/node/server/TransactionalInteractionServer.d.ts.map +1 -1
- package/dist/cjs/node/server/TransactionalInteractionServer.js +0 -2
- package/dist/cjs/node/server/TransactionalInteractionServer.js.map +2 -2
- package/dist/cjs/protocol/interaction/AttributeDataEncoder.d.ts +6 -3
- package/dist/cjs/protocol/interaction/AttributeDataEncoder.d.ts.map +1 -1
- package/dist/cjs/protocol/interaction/AttributeDataEncoder.js +14 -8
- package/dist/cjs/protocol/interaction/AttributeDataEncoder.js.map +2 -2
- package/dist/cjs/protocol/interaction/EventHandler.d.ts.map +1 -1
- package/dist/cjs/protocol/interaction/EventHandler.js +1 -3
- package/dist/cjs/protocol/interaction/EventHandler.js.map +2 -2
- package/dist/cjs/protocol/interaction/InteractionClient.js +1 -1
- package/dist/cjs/protocol/interaction/InteractionClient.js.map +2 -2
- package/dist/cjs/protocol/interaction/InteractionEndpointStructure.d.ts +3 -3
- package/dist/cjs/protocol/interaction/InteractionEndpointStructure.d.ts.map +1 -1
- package/dist/cjs/protocol/interaction/InteractionEndpointStructure.js +1 -0
- package/dist/cjs/protocol/interaction/InteractionEndpointStructure.js.map +2 -2
- package/dist/cjs/protocol/interaction/InteractionMessenger.d.ts +1 -1
- package/dist/cjs/protocol/interaction/InteractionMessenger.d.ts.map +1 -1
- package/dist/cjs/protocol/interaction/InteractionMessenger.js +11 -4
- package/dist/cjs/protocol/interaction/InteractionMessenger.js.map +2 -2
- package/dist/cjs/protocol/interaction/InteractionServer.d.ts +5 -6
- package/dist/cjs/protocol/interaction/InteractionServer.d.ts.map +1 -1
- package/dist/cjs/protocol/interaction/InteractionServer.js +44 -37
- package/dist/cjs/protocol/interaction/InteractionServer.js.map +2 -2
- package/dist/cjs/protocol/interaction/SubscriptionHandler.d.ts +31 -12
- package/dist/cjs/protocol/interaction/SubscriptionHandler.d.ts.map +1 -1
- package/dist/cjs/protocol/interaction/SubscriptionHandler.js +161 -69
- package/dist/cjs/protocol/interaction/SubscriptionHandler.js.map +3 -3
- package/dist/cjs/session/SecureSession.d.ts.map +1 -1
- package/dist/cjs/session/SecureSession.js +2 -1
- package/dist/cjs/session/SecureSession.js.map +2 -2
- package/dist/cjs/session/SessionManager.d.ts +2 -0
- package/dist/cjs/session/SessionManager.d.ts.map +1 -1
- package/dist/cjs/session/SessionManager.js +7 -0
- package/dist/cjs/session/SessionManager.js.map +2 -2
- package/dist/cjs/tlv/TlvArray.d.ts +2 -2
- package/dist/cjs/tlv/TlvArray.d.ts.map +1 -1
- package/dist/cjs/tlv/TlvArray.js +2 -2
- package/dist/cjs/tlv/TlvArray.js.map +2 -2
- package/dist/cjs/tlv/TlvNullable.d.ts +2 -2
- package/dist/cjs/tlv/TlvNullable.d.ts.map +1 -1
- package/dist/cjs/tlv/TlvNullable.js +2 -2
- package/dist/cjs/tlv/TlvNullable.js.map +2 -2
- package/dist/cjs/tlv/TlvObject.d.ts +2 -2
- package/dist/cjs/tlv/TlvObject.d.ts.map +1 -1
- package/dist/cjs/tlv/TlvObject.js +18 -12
- package/dist/cjs/tlv/TlvObject.js.map +2 -2
- package/dist/cjs/tlv/TlvSchema.d.ts +14 -2
- package/dist/cjs/tlv/TlvSchema.d.ts.map +1 -1
- package/dist/cjs/tlv/TlvSchema.js +2 -2
- package/dist/cjs/tlv/TlvSchema.js.map +2 -2
- package/dist/cjs/tlv/TlvWrapper.d.ts +2 -2
- package/dist/cjs/tlv/TlvWrapper.d.ts.map +1 -1
- package/dist/cjs/tlv/TlvWrapper.js +2 -2
- package/dist/cjs/tlv/TlvWrapper.js.map +2 -2
- package/dist/esm/CommissioningServer.d.ts.map +1 -1
- package/dist/esm/CommissioningServer.js +0 -1
- package/dist/esm/CommissioningServer.js.map +2 -2
- package/dist/esm/MatterDevice.d.ts +3 -0
- package/dist/esm/MatterDevice.d.ts.map +1 -1
- package/dist/esm/MatterDevice.js +21 -7
- package/dist/esm/MatterDevice.js.map +2 -2
- package/dist/esm/behavior/AccessControl.js +2 -2
- package/dist/esm/behavior/AccessControl.js.map +2 -2
- package/dist/esm/behavior/definitions/general-commissioning/ServerNodeFailsafeContext.d.ts +1 -0
- package/dist/esm/behavior/definitions/general-commissioning/ServerNodeFailsafeContext.d.ts.map +1 -1
- package/dist/esm/behavior/definitions/general-commissioning/ServerNodeFailsafeContext.js +15 -1
- package/dist/esm/behavior/definitions/general-commissioning/ServerNodeFailsafeContext.js.map +2 -2
- package/dist/esm/behavior/definitions/operational-credentials/OperationalCredentialsServer.d.ts.map +1 -1
- package/dist/esm/behavior/definitions/operational-credentials/OperationalCredentialsServer.js +11 -2
- package/dist/esm/behavior/definitions/operational-credentials/OperationalCredentialsServer.js.map +2 -2
- package/dist/esm/behavior/state/transaction/Transaction.d.ts +18 -18
- package/dist/esm/certificate/CertificateManager.d.ts.map +1 -1
- package/dist/esm/certificate/CertificateManager.js +1 -0
- package/dist/esm/certificate/CertificateManager.js.map +2 -2
- package/dist/esm/certificate/CertificationDeclarationManager.d.ts +1 -1
- package/dist/esm/certificate/CertificationDeclarationManager.d.ts.map +1 -1
- package/dist/esm/certificate/CertificationDeclarationManager.js +3 -2
- package/dist/esm/certificate/CertificationDeclarationManager.js.map +2 -2
- package/dist/esm/cluster/server/AccessControlServer.js.map +1 -1
- package/dist/esm/cluster/server/AttributeServer.d.ts +9 -0
- package/dist/esm/cluster/server/AttributeServer.d.ts.map +1 -1
- package/dist/esm/cluster/server/AttributeServer.js +69 -1
- package/dist/esm/cluster/server/AttributeServer.js.map +2 -2
- package/dist/esm/cluster/server/ClusterServer.d.ts.map +1 -1
- package/dist/esm/cluster/server/ClusterServer.js +9 -2
- package/dist/esm/cluster/server/ClusterServer.js.map +2 -2
- package/dist/esm/cluster/server/ClusterServerTypes.d.ts +3 -3
- package/dist/esm/cluster/server/ClusterServerTypes.d.ts.map +1 -1
- package/dist/esm/cluster/server/ClusterServerTypes.js.map +1 -1
- package/dist/esm/cluster/server/EventServer.d.ts +8 -2
- package/dist/esm/cluster/server/EventServer.d.ts.map +1 -1
- package/dist/esm/cluster/server/EventServer.js +33 -7
- package/dist/esm/cluster/server/EventServer.js.map +2 -2
- package/dist/esm/cluster/server/OperationalCredentialsServer.d.ts.map +1 -1
- package/dist/esm/cluster/server/OperationalCredentialsServer.js +31 -8
- package/dist/esm/cluster/server/OperationalCredentialsServer.js.map +2 -2
- package/dist/esm/common/FailsafeContext.d.ts +1 -0
- package/dist/esm/common/FailsafeContext.d.ts.map +1 -1
- package/dist/esm/common/FailsafeContext.js +17 -3
- package/dist/esm/common/FailsafeContext.js.map +2 -2
- package/dist/esm/crypto/Crypto.d.ts +1 -1
- package/dist/esm/crypto/Crypto.d.ts.map +1 -1
- package/dist/esm/crypto/Crypto.js +2 -2
- package/dist/esm/crypto/Crypto.js.map +2 -2
- package/dist/esm/device/LegacyInteractionServer.d.ts +2 -2
- package/dist/esm/device/LegacyInteractionServer.d.ts.map +1 -1
- package/dist/esm/device/LegacyInteractionServer.js +13 -1
- package/dist/esm/device/LegacyInteractionServer.js.map +2 -2
- package/dist/esm/fabric/Fabric.d.ts +1 -0
- package/dist/esm/fabric/Fabric.d.ts.map +1 -1
- package/dist/esm/fabric/Fabric.js +5 -0
- package/dist/esm/fabric/Fabric.js.map +2 -2
- package/dist/esm/fabric/FabricManager.d.ts +1 -0
- package/dist/esm/fabric/FabricManager.d.ts.map +1 -1
- package/dist/esm/fabric/FabricManager.js +2 -1
- package/dist/esm/fabric/FabricManager.js.map +2 -2
- package/dist/esm/model/models/EventModel.d.ts +1 -0
- package/dist/esm/model/models/EventModel.d.ts.map +1 -1
- package/dist/esm/model/models/EventModel.js +3 -0
- package/dist/esm/model/models/EventModel.js.map +2 -2
- package/dist/esm/model/models/FieldModel.d.ts +1 -0
- package/dist/esm/model/models/FieldModel.d.ts.map +1 -1
- package/dist/esm/model/models/FieldModel.js +3 -0
- package/dist/esm/model/models/FieldModel.js.map +2 -2
- package/dist/esm/node/server/TransactionalInteractionServer.d.ts +2 -2
- package/dist/esm/node/server/TransactionalInteractionServer.d.ts.map +1 -1
- package/dist/esm/node/server/TransactionalInteractionServer.js +0 -2
- package/dist/esm/node/server/TransactionalInteractionServer.js.map +2 -2
- package/dist/esm/protocol/interaction/AttributeDataEncoder.d.ts +6 -3
- package/dist/esm/protocol/interaction/AttributeDataEncoder.d.ts.map +1 -1
- package/dist/esm/protocol/interaction/AttributeDataEncoder.js +14 -8
- package/dist/esm/protocol/interaction/AttributeDataEncoder.js.map +2 -2
- package/dist/esm/protocol/interaction/EventHandler.d.ts.map +1 -1
- package/dist/esm/protocol/interaction/EventHandler.js +1 -3
- package/dist/esm/protocol/interaction/EventHandler.js.map +2 -2
- package/dist/esm/protocol/interaction/InteractionClient.js +1 -1
- package/dist/esm/protocol/interaction/InteractionClient.js.map +2 -2
- package/dist/esm/protocol/interaction/InteractionEndpointStructure.d.ts +3 -3
- package/dist/esm/protocol/interaction/InteractionEndpointStructure.d.ts.map +1 -1
- package/dist/esm/protocol/interaction/InteractionEndpointStructure.js +1 -0
- package/dist/esm/protocol/interaction/InteractionEndpointStructure.js.map +2 -2
- package/dist/esm/protocol/interaction/InteractionMessenger.d.ts +1 -1
- package/dist/esm/protocol/interaction/InteractionMessenger.d.ts.map +1 -1
- package/dist/esm/protocol/interaction/InteractionMessenger.js +11 -4
- package/dist/esm/protocol/interaction/InteractionMessenger.js.map +2 -2
- package/dist/esm/protocol/interaction/InteractionServer.d.ts +5 -6
- package/dist/esm/protocol/interaction/InteractionServer.d.ts.map +1 -1
- package/dist/esm/protocol/interaction/InteractionServer.js +44 -37
- package/dist/esm/protocol/interaction/InteractionServer.js.map +2 -2
- package/dist/esm/protocol/interaction/SubscriptionHandler.d.ts +31 -12
- package/dist/esm/protocol/interaction/SubscriptionHandler.d.ts.map +1 -1
- package/dist/esm/protocol/interaction/SubscriptionHandler.js +161 -69
- package/dist/esm/protocol/interaction/SubscriptionHandler.js.map +3 -3
- package/dist/esm/session/SecureSession.d.ts.map +1 -1
- package/dist/esm/session/SecureSession.js +2 -1
- package/dist/esm/session/SecureSession.js.map +2 -2
- package/dist/esm/session/SessionManager.d.ts +2 -0
- package/dist/esm/session/SessionManager.d.ts.map +1 -1
- package/dist/esm/session/SessionManager.js +7 -0
- package/dist/esm/session/SessionManager.js.map +2 -2
- package/dist/esm/tlv/TlvArray.d.ts +2 -2
- package/dist/esm/tlv/TlvArray.d.ts.map +1 -1
- package/dist/esm/tlv/TlvArray.js +2 -2
- package/dist/esm/tlv/TlvArray.js.map +2 -2
- package/dist/esm/tlv/TlvNullable.d.ts +2 -2
- package/dist/esm/tlv/TlvNullable.d.ts.map +1 -1
- package/dist/esm/tlv/TlvNullable.js +2 -2
- package/dist/esm/tlv/TlvNullable.js.map +2 -2
- package/dist/esm/tlv/TlvObject.d.ts +2 -2
- package/dist/esm/tlv/TlvObject.d.ts.map +1 -1
- package/dist/esm/tlv/TlvObject.js +19 -13
- package/dist/esm/tlv/TlvObject.js.map +2 -2
- package/dist/esm/tlv/TlvSchema.d.ts +14 -2
- package/dist/esm/tlv/TlvSchema.d.ts.map +1 -1
- package/dist/esm/tlv/TlvSchema.js +2 -2
- package/dist/esm/tlv/TlvSchema.js.map +2 -2
- package/dist/esm/tlv/TlvWrapper.d.ts +2 -2
- package/dist/esm/tlv/TlvWrapper.d.ts.map +1 -1
- package/dist/esm/tlv/TlvWrapper.js +2 -2
- package/dist/esm/tlv/TlvWrapper.js.map +2 -2
- package/package.json +3 -3
- package/src/CommissioningServer.ts +0 -1
- package/src/MatterDevice.ts +34 -7
- package/src/behavior/AccessControl.ts +2 -2
- package/src/behavior/definitions/general-commissioning/ServerNodeFailsafeContext.ts +21 -1
- package/src/behavior/definitions/operational-credentials/OperationalCredentialsServer.ts +13 -0
- package/src/certificate/CertificateManager.ts +1 -2
- package/src/certificate/CertificationDeclarationManager.ts +2 -2
- package/src/cluster/server/AccessControlServer.ts +3 -3
- package/src/cluster/server/AttributeServer.ts +79 -1
- package/src/cluster/server/ClusterServer.ts +9 -2
- package/src/cluster/server/ClusterServerTypes.ts +3 -3
- package/src/cluster/server/EventServer.ts +57 -10
- package/src/cluster/server/OperationalCredentialsServer.ts +35 -5
- package/src/common/FailsafeContext.ts +19 -7
- package/src/crypto/Crypto.ts +1 -1
- package/src/device/LegacyInteractionServer.ts +15 -4
- package/src/fabric/Fabric.ts +6 -0
- package/src/fabric/FabricManager.ts +1 -0
- package/src/model/models/EventModel.ts +4 -0
- package/src/model/models/FieldModel.ts +4 -0
- package/src/node/server/TransactionalInteractionServer.ts +2 -4
- package/src/protocol/interaction/AttributeDataEncoder.ts +20 -9
- package/src/protocol/interaction/EventHandler.ts +1 -3
- package/src/protocol/interaction/InteractionClient.ts +1 -1
- package/src/protocol/interaction/InteractionEndpointStructure.ts +4 -4
- package/src/protocol/interaction/InteractionMessenger.ts +12 -3
- package/src/protocol/interaction/InteractionServer.ts +53 -52
- package/src/protocol/interaction/SubscriptionHandler.ts +215 -92
- package/src/session/SecureSession.ts +2 -1
- package/src/session/SessionManager.ts +9 -0
- package/src/tlv/TlvArray.ts +3 -3
- package/src/tlv/TlvNullable.ts +3 -3
- package/src/tlv/TlvObject.ts +20 -14
- package/src/tlv/TlvSchema.ts +17 -3
- package/src/tlv/TlvWrapper.ts +3 -3
|
@@ -460,7 +460,7 @@ export class InteractionClient {
|
|
|
460
460
|
const writeRequests = attributes.map(
|
|
461
461
|
({ endpointId, clusterId, attribute: { id, schema }, value, dataVersion }) => ({
|
|
462
462
|
path: { endpointId, clusterId, attributeId: id },
|
|
463
|
-
data: schema.encodeTlv(value, true),
|
|
463
|
+
data: schema.encodeTlv(value, { forWriteInteraction: true }),
|
|
464
464
|
dataVersion,
|
|
465
465
|
}),
|
|
466
466
|
);
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
import { AnyAttributeServer } from "../../cluster/server/AttributeServer.js";
|
|
8
8
|
import { ClusterServerObj, asClusterServerInternal } from "../../cluster/server/ClusterServerTypes.js";
|
|
9
9
|
import { CommandServer } from "../../cluster/server/CommandServer.js";
|
|
10
|
-
import {
|
|
10
|
+
import { AnyEventServer } from "../../cluster/server/EventServer.js";
|
|
11
11
|
import { ImplementationError, InternalError } from "../../common/MatterError.js";
|
|
12
12
|
import { AttributeId } from "../../datatype/AttributeId.js";
|
|
13
13
|
import { ClusterId } from "../../datatype/ClusterId.js";
|
|
@@ -37,11 +37,11 @@ export class InteractionEndpointStructure {
|
|
|
37
37
|
endpoints = new Map<EndpointNumber, EndpointInterface>();
|
|
38
38
|
attributes = new Map<string, AnyAttributeServer<any>>();
|
|
39
39
|
attributePaths = new Array<AttributePath>();
|
|
40
|
-
events = new Map<string,
|
|
40
|
+
events = new Map<string, AnyEventServer<any, any>>();
|
|
41
41
|
eventPaths = new Array<EventPath>();
|
|
42
42
|
commands = new Map<string, CommandServer<any, any>>();
|
|
43
43
|
commandPaths = new Array<CommandPath>();
|
|
44
|
-
change = new Observable();
|
|
44
|
+
change = new Observable(); // TODO adjust to AsyncObservable when we remove legacy API
|
|
45
45
|
|
|
46
46
|
public clear() {
|
|
47
47
|
this.endpoints.clear();
|
|
@@ -220,7 +220,7 @@ export class InteractionEndpointStructure {
|
|
|
220
220
|
throw new StatusResponseError(`Attribute ${attributeId} does not exist`, StatusCode.UnsupportedAttribute);
|
|
221
221
|
}
|
|
222
222
|
|
|
223
|
-
getEvent(endpointId: EndpointNumber, clusterId: ClusterId, eventId: EventId):
|
|
223
|
+
getEvent(endpointId: EndpointNumber, clusterId: ClusterId, eventId: EventId): AnyEventServer<any, any> | undefined {
|
|
224
224
|
return this.events.get(eventPathToId({ endpointId, clusterId, eventId }));
|
|
225
225
|
}
|
|
226
226
|
|
|
@@ -166,6 +166,7 @@ export class InteractionServerMessenger extends InteractionMessenger<MatterDevic
|
|
|
166
166
|
const readRequest = TlvReadRequest.decode(message.payload);
|
|
167
167
|
await this.sendDataReport(
|
|
168
168
|
await recipient.handleReadRequest(this.exchange, readRequest, message),
|
|
169
|
+
readRequest.isFabricFiltered,
|
|
169
170
|
);
|
|
170
171
|
break;
|
|
171
172
|
}
|
|
@@ -229,7 +230,7 @@ export class InteractionServerMessenger extends InteractionMessenger<MatterDevic
|
|
|
229
230
|
* Handle DataReportPayload with the content of a DataReport to send, split them into multiple DataReport
|
|
230
231
|
* messages and send them out based on the size.
|
|
231
232
|
*/
|
|
232
|
-
async sendDataReport(dataReportPayload: DataReportPayload) {
|
|
233
|
+
async sendDataReport(dataReportPayload: DataReportPayload, forFabricFilteredRead: boolean) {
|
|
233
234
|
const {
|
|
234
235
|
subscriptionId,
|
|
235
236
|
attributeReportsPayload,
|
|
@@ -272,7 +273,11 @@ export class InteractionServerMessenger extends InteractionMessenger<MatterDevic
|
|
|
272
273
|
firstAttributeAddedToReportMessage = true;
|
|
273
274
|
messageSize += 3; // Array element is added now which needs 3 bytes
|
|
274
275
|
}
|
|
275
|
-
const
|
|
276
|
+
const allowMissingFieldsForNonFabricFilteredRead =
|
|
277
|
+
!forFabricFilteredRead && attributeReport.hasFabricSensitiveData;
|
|
278
|
+
const encodedAttribute = encodeAttributePayload(attributeReport, {
|
|
279
|
+
allowMissingFieldsForNonFabricFilteredRead,
|
|
280
|
+
});
|
|
276
281
|
const attributeReportBytes = TlvAny.getEncodedByteLength(encodedAttribute);
|
|
277
282
|
if (messageSize + attributeReportBytes > MAX_SPDU_LENGTH) {
|
|
278
283
|
if (canAttributePayloadBeChunked(attributeReport)) {
|
|
@@ -297,7 +302,11 @@ export class InteractionServerMessenger extends InteractionMessenger<MatterDevic
|
|
|
297
302
|
firstEventAddedToReportMessage = true;
|
|
298
303
|
messageSize += 3; // Array element is added now which needs 3 bytes
|
|
299
304
|
}
|
|
300
|
-
const
|
|
305
|
+
const allowMissingFieldsForNonFabricFilteredRead =
|
|
306
|
+
!forFabricFilteredRead && eventReport.hasFabricSensitiveData;
|
|
307
|
+
const encodedEvent = encodeEventPayload(eventReport, {
|
|
308
|
+
allowMissingFieldsForNonFabricFilteredRead,
|
|
309
|
+
});
|
|
301
310
|
const eventReportBytes = TlvAny.getEncodedByteLength(encodedEvent);
|
|
302
311
|
if (messageSize + eventReportBytes > MAX_SPDU_LENGTH) {
|
|
303
312
|
await sendAndResetReport();
|
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
FabricScopedAttributeServer,
|
|
13
13
|
} from "../../cluster/server/AttributeServer.js";
|
|
14
14
|
import { CommandServer } from "../../cluster/server/CommandServer.js";
|
|
15
|
-
import {
|
|
15
|
+
import { AnyEventServer } from "../../cluster/server/EventServer.js";
|
|
16
16
|
import { Message, SessionType } from "../../codec/MessageCodec.js";
|
|
17
17
|
import { InternalError, MatterFlowError } from "../../common/MatterError.js";
|
|
18
18
|
import { tryCatch, tryCatchAsync } from "../../common/TryCatchHandler.js";
|
|
@@ -31,7 +31,6 @@ import { Logger } from "../../log/Logger.js";
|
|
|
31
31
|
import { GLOBAL_IDS } from "../../model/index.js";
|
|
32
32
|
import { MessageExchange } from "../../protocol/MessageExchange.js";
|
|
33
33
|
import { ProtocolHandler } from "../../protocol/ProtocolHandler.js";
|
|
34
|
-
import { EventHandler } from "../../protocol/interaction/EventHandler.js";
|
|
35
34
|
import { NoAssociatedFabricError, SecureSession, assertSecureSession } from "../../session/SecureSession.js";
|
|
36
35
|
import { ArraySchema } from "../../tlv/TlvArray.js";
|
|
37
36
|
import { TlvNoArguments } from "../../tlv/TlvNoArguments.js";
|
|
@@ -41,12 +40,7 @@ import {
|
|
|
41
40
|
decodeListAttributeValueWithSchema,
|
|
42
41
|
expandPathsInAttributeData,
|
|
43
42
|
} from "./AttributeDataDecoder.js";
|
|
44
|
-
import {
|
|
45
|
-
AttributeReportPayload,
|
|
46
|
-
DataReportPayload,
|
|
47
|
-
EventDataPayload,
|
|
48
|
-
EventReportPayload,
|
|
49
|
-
} from "./AttributeDataEncoder.js";
|
|
43
|
+
import { AttributeReportPayload, DataReportPayload, EventReportPayload } from "./AttributeDataEncoder.js";
|
|
50
44
|
import { InteractionEndpointStructure } from "./InteractionEndpointStructure.js";
|
|
51
45
|
import {
|
|
52
46
|
InteractionRecipient,
|
|
@@ -103,6 +97,7 @@ export interface EventPath {
|
|
|
103
97
|
endpointId: EndpointNumber;
|
|
104
98
|
clusterId: ClusterId;
|
|
105
99
|
eventId: EventId;
|
|
100
|
+
isUrgent?: boolean;
|
|
106
101
|
}
|
|
107
102
|
|
|
108
103
|
export interface AttributeWithPath {
|
|
@@ -112,7 +107,7 @@ export interface AttributeWithPath {
|
|
|
112
107
|
|
|
113
108
|
export interface EventWithPath {
|
|
114
109
|
path: EventPath;
|
|
115
|
-
event:
|
|
110
|
+
event: AnyEventServer<any, any>;
|
|
116
111
|
}
|
|
117
112
|
|
|
118
113
|
export interface CommandWithPath {
|
|
@@ -224,17 +219,15 @@ export class InteractionServer implements ProtocolHandler<MatterDevice>, Interac
|
|
|
224
219
|
#nextSubscriptionId = Crypto.getRandomUInt32();
|
|
225
220
|
readonly #subscriptionMap = new Map<number, SubscriptionHandler>();
|
|
226
221
|
#isClosing = false;
|
|
227
|
-
#subscriptionConfig: SubscriptionOptions.Configuration;
|
|
228
|
-
#eventHandler: EventHandler;
|
|
222
|
+
readonly #subscriptionConfig: SubscriptionOptions.Configuration;
|
|
229
223
|
|
|
230
|
-
constructor({ subscriptionOptions,
|
|
224
|
+
constructor({ subscriptionOptions, endpointStructure }: InteractionServer.Configuration) {
|
|
231
225
|
this.#subscriptionConfig = SubscriptionOptions.configurationFor(subscriptionOptions);
|
|
232
|
-
this.#eventHandler = eventHandler;
|
|
233
226
|
this.#endpointStructure = endpointStructure;
|
|
234
227
|
|
|
235
|
-
this.#endpointStructure.change.on(() => {
|
|
228
|
+
this.#endpointStructure.change.on(async () => {
|
|
236
229
|
for (const subscription of this.#subscriptionMap.values()) {
|
|
237
|
-
subscription.updateSubscription();
|
|
230
|
+
await subscription.updateSubscription();
|
|
238
231
|
}
|
|
239
232
|
});
|
|
240
233
|
}
|
|
@@ -340,6 +333,7 @@ export class InteractionServer implements ProtocolHandler<MatterDevice>, Interac
|
|
|
340
333
|
}`,
|
|
341
334
|
);
|
|
342
335
|
attributeReportsPayload.push({
|
|
336
|
+
hasFabricSensitiveData: false,
|
|
343
337
|
attributeStatus: { path: requestPath, status: { status: error.code } },
|
|
344
338
|
});
|
|
345
339
|
},
|
|
@@ -405,6 +399,7 @@ export class InteractionServer implements ProtocolHandler<MatterDevice>, Interac
|
|
|
405
399
|
|
|
406
400
|
const { schema } = attribute;
|
|
407
401
|
attributeReportsPayload.push({
|
|
402
|
+
hasFabricSensitiveData: attribute.hasFabricSensitiveData,
|
|
408
403
|
attributeData: { path, dataVersion: version, payload: value, schema },
|
|
409
404
|
});
|
|
410
405
|
} catch (error) {
|
|
@@ -417,7 +412,10 @@ export class InteractionServer implements ProtocolHandler<MatterDevice>, Interac
|
|
|
417
412
|
if (error instanceof StatusResponseError) {
|
|
418
413
|
// Add StatusResponseErrors, but only when the initial path was concrete, else error are ignored
|
|
419
414
|
if (isConcreteAttributePath(requestPath)) {
|
|
420
|
-
attributeReportsPayload.push({
|
|
415
|
+
attributeReportsPayload.push({
|
|
416
|
+
hasFabricSensitiveData: false,
|
|
417
|
+
attributeStatus: { path, status: { status: error.code } },
|
|
418
|
+
});
|
|
421
419
|
}
|
|
422
420
|
} else {
|
|
423
421
|
throw error;
|
|
@@ -463,6 +461,7 @@ export class InteractionServer implements ProtocolHandler<MatterDevice>, Interac
|
|
|
463
461
|
}`,
|
|
464
462
|
);
|
|
465
463
|
eventReportsPayload?.push({
|
|
464
|
+
hasFabricSensitiveData: false,
|
|
466
465
|
eventStatus: { path: requestPath, status: { status: error.code } },
|
|
467
466
|
});
|
|
468
467
|
},
|
|
@@ -471,7 +470,7 @@ export class InteractionServer implements ProtocolHandler<MatterDevice>, Interac
|
|
|
471
470
|
continue;
|
|
472
471
|
}
|
|
473
472
|
|
|
474
|
-
const reportsForPath = new Array<
|
|
473
|
+
const reportsForPath = new Array<EventReportPayload>();
|
|
475
474
|
for (const { path, event } of events) {
|
|
476
475
|
try {
|
|
477
476
|
const { endpointId } = path;
|
|
@@ -492,6 +491,7 @@ export class InteractionServer implements ProtocolHandler<MatterDevice>, Interac
|
|
|
492
491
|
const { schema } = event;
|
|
493
492
|
reportsForPath.push(
|
|
494
493
|
...matchingEvents.map(({ eventNumber, priority, epochTimestamp, data }) => ({
|
|
494
|
+
hasFabricSensitiveData: event.hasFabricSensitiveData,
|
|
495
495
|
eventData: {
|
|
496
496
|
path,
|
|
497
497
|
eventNumber,
|
|
@@ -512,7 +512,10 @@ export class InteractionServer implements ProtocolHandler<MatterDevice>, Interac
|
|
|
512
512
|
if (error instanceof StatusResponseError) {
|
|
513
513
|
// Add StatusResponseErrors, but only when the initial path was concrete, else error are ignored
|
|
514
514
|
if (isConcreteEventPath(requestPath)) {
|
|
515
|
-
eventReportsPayload?.push({
|
|
515
|
+
eventReportsPayload?.push({
|
|
516
|
+
hasFabricSensitiveData: false,
|
|
517
|
+
eventStatus: { path, status: { status: error.code } },
|
|
518
|
+
});
|
|
516
519
|
}
|
|
517
520
|
} else {
|
|
518
521
|
throw error;
|
|
@@ -558,7 +561,7 @@ export class InteractionServer implements ProtocolHandler<MatterDevice>, Interac
|
|
|
558
561
|
protected async readEvent(
|
|
559
562
|
_path: EventPath,
|
|
560
563
|
eventFilters: TypeFromSchema<typeof TlvEventFilter>[] | undefined,
|
|
561
|
-
event:
|
|
564
|
+
event: AnyEventServer<any, any>,
|
|
562
565
|
exchange: MessageExchange<MatterDevice>,
|
|
563
566
|
isFabricFiltered: boolean,
|
|
564
567
|
message: Message,
|
|
@@ -1006,46 +1009,43 @@ export class InteractionServer implements ProtocolHandler<MatterDevice>, Interac
|
|
|
1006
1009
|
|
|
1007
1010
|
if (this.#nextSubscriptionId === 0xffffffff) this.#nextSubscriptionId = 0;
|
|
1008
1011
|
const subscriptionId = this.#nextSubscriptionId++;
|
|
1009
|
-
const subscriptionHandler = new SubscriptionHandler(
|
|
1012
|
+
const subscriptionHandler = new SubscriptionHandler({
|
|
1010
1013
|
subscriptionId,
|
|
1011
1014
|
session,
|
|
1012
|
-
this.#endpointStructure,
|
|
1015
|
+
endpointStructure: this.#endpointStructure,
|
|
1013
1016
|
attributeRequests,
|
|
1014
1017
|
dataVersionFilters,
|
|
1015
1018
|
eventRequests,
|
|
1016
1019
|
eventFilters,
|
|
1017
|
-
this.#eventHandler,
|
|
1018
1020
|
isFabricFiltered,
|
|
1019
|
-
minIntervalFloorSeconds,
|
|
1020
|
-
maxIntervalCeilingSeconds,
|
|
1021
|
-
() => this.#subscriptionMap.delete(subscriptionId),
|
|
1022
|
-
this.#subscriptionConfig,
|
|
1023
|
-
|
|
1021
|
+
minIntervalFloor: minIntervalFloorSeconds,
|
|
1022
|
+
maxIntervalCeiling: maxIntervalCeilingSeconds,
|
|
1023
|
+
cancelCallback: () => this.#subscriptionMap.delete(subscriptionId),
|
|
1024
|
+
subscriptionOptions: this.#subscriptionConfig,
|
|
1025
|
+
readAttribute: (path, attribute) =>
|
|
1026
|
+
this.readAttribute(
|
|
1027
|
+
path,
|
|
1028
|
+
attribute,
|
|
1029
|
+
exchange,
|
|
1030
|
+
isFabricFiltered,
|
|
1031
|
+
message,
|
|
1032
|
+
this.#endpointStructure.getEndpoint(path.endpointId)!,
|
|
1033
|
+
),
|
|
1034
|
+
readEvent: (path, event, eventFilters) =>
|
|
1035
|
+
this.readEvent(
|
|
1036
|
+
path,
|
|
1037
|
+
eventFilters,
|
|
1038
|
+
event,
|
|
1039
|
+
exchange,
|
|
1040
|
+
isFabricFiltered,
|
|
1041
|
+
message,
|
|
1042
|
+
this.#endpointStructure.getEndpoint(path.endpointId)!,
|
|
1043
|
+
),
|
|
1044
|
+
});
|
|
1024
1045
|
|
|
1025
1046
|
try {
|
|
1026
1047
|
// Send initial data report to prime the subscription with initial data
|
|
1027
|
-
await subscriptionHandler.sendInitialReport(
|
|
1028
|
-
messenger,
|
|
1029
|
-
(path, attribute) =>
|
|
1030
|
-
this.readAttribute(
|
|
1031
|
-
path,
|
|
1032
|
-
attribute,
|
|
1033
|
-
exchange,
|
|
1034
|
-
isFabricFiltered,
|
|
1035
|
-
message,
|
|
1036
|
-
this.#endpointStructure.getEndpoint(path.endpointId)!,
|
|
1037
|
-
),
|
|
1038
|
-
(path, event, eventFilters) =>
|
|
1039
|
-
this.readEvent(
|
|
1040
|
-
path,
|
|
1041
|
-
eventFilters,
|
|
1042
|
-
event,
|
|
1043
|
-
exchange,
|
|
1044
|
-
isFabricFiltered,
|
|
1045
|
-
message,
|
|
1046
|
-
this.#endpointStructure.getEndpoint(path.endpointId)!,
|
|
1047
|
-
),
|
|
1048
|
-
);
|
|
1048
|
+
await subscriptionHandler.sendInitialReport(messenger);
|
|
1049
1049
|
} catch (error: any) {
|
|
1050
1050
|
logger.error(
|
|
1051
1051
|
`Subscription ${subscriptionId} for Session ${session.id}: Error while sending initial data reports`,
|
|
@@ -1061,8 +1061,10 @@ export class InteractionServer implements ProtocolHandler<MatterDevice>, Interac
|
|
|
1061
1061
|
}
|
|
1062
1062
|
|
|
1063
1063
|
if (!keepSubscriptions) {
|
|
1064
|
-
logger.debug(
|
|
1065
|
-
|
|
1064
|
+
logger.debug(
|
|
1065
|
+
`Clear subscriptions for Subscriber node ${session.peerNodeId} because keepSubscriptions=false`,
|
|
1066
|
+
);
|
|
1067
|
+
await session.context.clearSubscriptionsForNode(fabric.fabricIndex, session.peerNodeId, true);
|
|
1066
1068
|
}
|
|
1067
1069
|
|
|
1068
1070
|
const maxInterval = subscriptionHandler.getMaxInterval();
|
|
@@ -1309,7 +1311,6 @@ export class InteractionServer implements ProtocolHandler<MatterDevice>, Interac
|
|
|
1309
1311
|
export namespace InteractionServer {
|
|
1310
1312
|
export interface Configuration {
|
|
1311
1313
|
readonly subscriptionOptions?: SubscriptionOptions;
|
|
1312
|
-
readonly eventHandler: EventHandler;
|
|
1313
1314
|
readonly endpointStructure: InteractionEndpointStructure;
|
|
1314
1315
|
}
|
|
1315
1316
|
}
|