@project-chip/matter.js 0.9.2 → 0.9.3
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/MatterDevice.d.ts +1 -0
- package/dist/cjs/MatterDevice.d.ts.map +1 -1
- package/dist/cjs/MatterDevice.js +3 -0
- package/dist/cjs/MatterDevice.js.map +2 -2
- package/dist/cjs/protocol/interaction/InteractionServer.d.ts.map +1 -1
- package/dist/cjs/protocol/interaction/InteractionServer.js +4 -2
- package/dist/cjs/protocol/interaction/InteractionServer.js.map +2 -2
- 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 +1 -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/esm/MatterDevice.d.ts +1 -0
- package/dist/esm/MatterDevice.d.ts.map +1 -1
- package/dist/esm/MatterDevice.js +3 -0
- package/dist/esm/MatterDevice.js.map +2 -2
- package/dist/esm/protocol/interaction/InteractionServer.d.ts.map +1 -1
- package/dist/esm/protocol/interaction/InteractionServer.js +4 -2
- package/dist/esm/protocol/interaction/InteractionServer.js.map +2 -2
- 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 +1 -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/package.json +3 -3
- package/src/MatterDevice.ts +4 -0
- package/src/protocol/interaction/InteractionServer.ts +4 -2
- package/src/session/SecureSession.ts +2 -1
- package/src/session/SessionManager.ts +8 -0
|
@@ -80,6 +80,7 @@ export declare class MatterDevice {
|
|
|
80
80
|
session: Session<MatterDevice>;
|
|
81
81
|
channel: Channel<ByteArray>;
|
|
82
82
|
}>;
|
|
83
|
+
clearSubscriptionsForNode(peerNodeId: NodeId, flushSubscriptions?: boolean): Promise<void>;
|
|
83
84
|
close(): Promise<void>;
|
|
84
85
|
getActiveSessionInformation(): {
|
|
85
86
|
name: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MatterDevice.d.ts","sourceRoot":"","sources":["../../src/MatterDevice.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MatterDevice.d.ts","sourceRoot":"","sources":["../../src/MatterDevice.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/MatterDevice.js
CHANGED
|
@@ -398,6 +398,9 @@ class MatterDevice {
|
|
|
398
398
|
}
|
|
399
399
|
return { session, channel: await networkInterface.openChannel(device.addresses[0]) };
|
|
400
400
|
}
|
|
401
|
+
async clearSubscriptionsForNode(peerNodeId, flushSubscriptions) {
|
|
402
|
+
await this.#sessionManager.clearSubscriptionsForNode(peerNodeId, flushSubscriptions);
|
|
403
|
+
}
|
|
401
404
|
async close() {
|
|
402
405
|
this.#isClosing = true;
|
|
403
406
|
await this.endCommissioning();
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/MatterDevice.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * @license\n * Copyright 2022-2024 Matter.js Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * Important note: This file is part of the legacy matter-node (internal) API and should not be used anymore directly!\n * Please use the new API classes!\n * @deprecated\n */\n\nimport {\n DEVICE_ANNOUNCEMENT_DURATION_MS,\n DEVICE_ANNOUNCEMENT_INTERVAL_MS,\n} from \"./behavior/definitions/administrator-commissioning/AdministratorCommissioningConstants.js\";\nimport { CommissioningOptions } from \"./behavior/system/commissioning/CommissioningOptions.js\";\nimport { AdministratorCommissioning } from \"./cluster/definitions/AdministratorCommissioningCluster.js\";\n\nimport { Channel } from \"./common/Channel.js\";\nimport { FailsafeContext } from \"./common/FailsafeContext.js\";\nimport { InstanceBroadcaster } from \"./common/InstanceBroadcaster.js\";\nimport { Lifecycle } from \"./common/Lifecycle.js\";\nimport { InternalError, MatterFlowError } from \"./common/MatterError.js\";\nimport { Scanner } from \"./common/Scanner.js\";\nimport { TransportInterface } from \"./common/TransportInterface.js\";\nimport { Crypto } from \"./crypto/Crypto.js\";\nimport { FabricIndex } from \"./datatype/FabricIndex.js\";\nimport { NodeId } from \"./datatype/NodeId.js\";\nimport { Fabric } from \"./fabric/Fabric.js\";\nimport { FabricAction, FabricManager } from \"./fabric/FabricManager.js\";\nimport { Diagnostic } from \"./log/Diagnostic.js\";\nimport { Logger } from \"./log/Logger.js\";\nimport { NetInterface, isNetworkInterface } from \"./net/NetInterface.js\";\nimport { NetworkError } from \"./net/Network.js\";\nimport { ChannelManager } from \"./protocol/ChannelManager.js\";\nimport { ExchangeManager } from \"./protocol/ExchangeManager.js\";\nimport { ProtocolHandler } from \"./protocol/ProtocolHandler.js\";\nimport { StatusCode, StatusResponseError } from \"./protocol/interaction/StatusCode.js\";\nimport { SecureChannelProtocol } from \"./protocol/securechannel/SecureChannelProtocol.js\";\nimport { Session } from \"./session/Session.js\";\nimport { ResumptionRecord, SessionManager } from \"./session/SessionManager.js\";\nimport { PaseServer } from \"./session/pase/PaseServer.js\";\nimport { StorageContext } from \"./storage/StorageContext.js\";\nimport { Time, Timer } from \"./time/Time.js\";\nimport { AsyncConstruction, asyncNew } from \"./util/AsyncConstruction.js\";\nimport { ByteArray } from \"./util/ByteArray.js\";\nimport { Mutex } from \"./util/Mutex.js\";\n\nconst logger = Logger.get(\"MatterDevice\");\n\nexport class MatterDevice {\n private readonly scanners = new Array<Scanner>();\n private readonly broadcasters = new Array<InstanceBroadcaster>();\n private readonly transportInterfaces = new Array<TransportInterface | NetInterface>();\n private readonly channelManager: ChannelManager;\n private readonly secureChannelProtocol = new SecureChannelProtocol(() => this.endCommissioning());\n private activeCommissioningMode = AdministratorCommissioning.CommissioningWindowStatus.WindowNotOpen;\n private activeCommissioningEndCallback?: () => void;\n private announceInterval: Timer;\n private announcementStartedTime: number | null = null;\n #isClosing = false;\n readonly #exchangeManager;\n readonly #fabricManager: FabricManager;\n readonly #sessionManager: SessionManager<MatterDevice>;\n #failsafeContext?: FailsafeContext;\n\n // Currently we do not put much effort into synchronizing announcements as it probably isn't really necessary. But\n // this mutex prevents automated announcements from piling up and allows us to ensure announcements are complete\n // on close\n #announcementMutex = new Mutex(this);\n #construction: AsyncConstruction<MatterDevice>;\n\n get construction() {\n return this.#construction;\n }\n\n static async create(\n sessionStorage: StorageContext,\n fabricStorage: StorageContext,\n getCommissioningConfig: () => CommissioningOptions.Configuration,\n minimumCaseSessionsPerFabricAndNode = 3,\n commissioningChangedCallback: (fabricIndex: FabricIndex, fabricAction: FabricAction) => void,\n sessionChangedCallback: (fabricIndex: FabricIndex) => void,\n ) {\n return asyncNew(\n MatterDevice,\n sessionStorage,\n fabricStorage,\n getCommissioningConfig,\n minimumCaseSessionsPerFabricAndNode,\n commissioningChangedCallback,\n sessionChangedCallback,\n );\n }\n\n constructor(\n readonly sessionStorage: StorageContext,\n readonly fabricStorage: StorageContext,\n private readonly getCommissioningConfig: () => CommissioningOptions.Configuration,\n minimumCaseSessionsPerFabricAndNode: number,\n private readonly commissioningChangedCallback: (fabricIndex: FabricIndex, fabricAction: FabricAction) => void,\n private readonly sessionChangedCallback: (fabricIndex: FabricIndex) => void,\n ) {\n this.channelManager = new ChannelManager(minimumCaseSessionsPerFabricAndNode);\n\n this.#fabricManager = new FabricManager(fabricStorage);\n\n this.#fabricManager.events.deleted.on(async fabric => {\n const { fabricIndex, rootNodeId } = fabric;\n // When fabric is removed, also remove the resumption record\n await this.#sessionManager.removeResumptionRecord(rootNodeId);\n this.commissioningChangedCallback(fabricIndex, FabricAction.Removed);\n if (this.#fabricManager.getFabrics().length === 0) {\n // Last fabric got removed, so expire all announcements\n await this.expireAllFabricAnnouncements();\n }\n });\n this.#fabricManager.events.updated.on(({ fabricIndex }) =>\n this.commissioningChangedCallback(fabricIndex, FabricAction.Updated),\n );\n\n this.#sessionManager = new SessionManager(this, sessionStorage);\n\n this.#exchangeManager = new ExchangeManager<MatterDevice>(this.#sessionManager, this.channelManager);\n\n this.addProtocolHandler(this.secureChannelProtocol);\n\n this.announceInterval = Time.getPeriodicTimer(\"Server node announcement\", DEVICE_ANNOUNCEMENT_INTERVAL_MS, () =>\n // Announcement needs to await a previous announcement because otherwise in testing at least announcement\n // may crash if started simultaneously\n this.#announcementMutex.run(() => this.announce()),\n );\n\n this.#sessionManager.sessionOpened.on(session => {\n if (session.fabric) {\n this.sessionChangedCallback(session.fabric.fabricIndex);\n }\n });\n\n this.#sessionManager.sessionClosed.on(async session => {\n if (!session.closingAfterExchangeFinished) {\n // Delayed closing is executed when exchange is closed\n await this.exchangeManager.closeSession(session);\n }\n const currentFabric = session.fabric;\n if (currentFabric !== undefined) {\n this.sessionChangedCallback(currentFabric.fabricIndex);\n }\n if (this.isClosing) {\n return;\n }\n // When a session closes, announce existing fabrics again so that controller can detect the device again.\n // When session was closed and no fabric exist anymore then this is triggering a factory reset in upper layer\n // and it would be not good to announce a commissionable device and then reset that again with the factory reset\n if (this.#fabricManager.getFabrics().length > 0 || !currentFabric) {\n await this.startAnnouncement();\n }\n });\n\n this.#sessionManager.subscriptionsChanged.on(session => {\n const currentFabric = session.fabric;\n if (currentFabric !== undefined) {\n this.sessionChangedCallback(currentFabric.fabricIndex);\n }\n });\n\n this.#construction = AsyncConstruction(this, async () => {\n await this.#fabricManager.initFromStorage();\n\n // Attach added events delayed because initialization from storage would else trigger it\n this.#fabricManager.events.added.on(({ fabricIndex }) =>\n this.commissioningChangedCallback(fabricIndex, FabricAction.Added),\n );\n\n await this.#sessionManager.initFromStorage(this.#fabricManager.getFabrics());\n });\n }\n\n get fabricManager() {\n return this.#fabricManager;\n }\n\n get sessionManager() {\n return this.#sessionManager;\n }\n\n get exchangeManager() {\n return this.#exchangeManager;\n }\n\n get failsafeContext() {\n this.assertFailSafeArmed();\n return this.#failsafeContext as FailsafeContext;\n }\n\n get isClosing() {\n return this.#isClosing;\n }\n\n async beginTimed(failsafeContext: FailsafeContext) {\n await failsafeContext.construction;\n\n this.#failsafeContext = failsafeContext;\n\n this.#fabricManager.events.added.on(fabric => {\n const fabrics = this.#fabricManager.getFabrics();\n this.sendFabricAnnouncements(fabrics, true).catch(error =>\n logger.warn(`Error sending Fabric announcement for Index ${fabric.fabricIndex}`, error),\n );\n logger.info(\"Announce done\", Diagnostic.dict({ fabric: fabric.fabricId, fabricIndex: fabric.fabricIndex }));\n });\n\n failsafeContext.commissioned.on(async () => await this.endCommissioning());\n\n failsafeContext.construction.change.on(status => {\n if (status === Lifecycle.Status.Destroyed) {\n this.#failsafeContext = undefined;\n }\n });\n }\n\n assertFailSafeArmed(message?: string) {\n if (this.isFailsafeArmed()) return;\n throw new StatusResponseError(\n message ?? \"Failsafe timer needs to be armed to execute this action.\",\n StatusCode.FailsafeRequired,\n );\n }\n\n isFailsafeArmed() {\n return this.#failsafeContext !== undefined;\n }\n\n addScanner(scanner: Scanner) {\n this.scanners.push(scanner);\n return this;\n }\n\n hasBroadcaster(broadcaster: InstanceBroadcaster) {\n return this.broadcasters.includes(broadcaster);\n }\n\n addBroadcaster(broadcaster: InstanceBroadcaster) {\n this.broadcasters.push(broadcaster);\n return this;\n }\n\n async deleteBroadcaster(broadcaster: InstanceBroadcaster) {\n const pos = this.broadcasters.findIndex(b => b === broadcaster);\n if (pos !== -1) {\n this.broadcasters.splice(pos, 1);\n await broadcaster.expireAllAnnouncements();\n }\n }\n\n addTransportInterface(transport: TransportInterface) {\n this.exchangeManager.addTransportInterface(transport);\n this.transportInterfaces.push(transport);\n return this;\n }\n\n async deleteTransportInterface(transport: TransportInterface) {\n const pos = this.transportInterfaces.findIndex(t => t === transport);\n if (pos !== -1) {\n this.transportInterfaces.splice(pos, 1);\n await transport.close();\n }\n }\n\n hasProtocolHandler(protocolId: number) {\n return this.exchangeManager.hasProtocolHandler(protocolId);\n }\n\n addProtocolHandler(protocol: ProtocolHandler<MatterDevice>) {\n this.exchangeManager.addProtocolHandler(protocol);\n return this;\n }\n\n async start() {\n await this.startAnnouncement();\n }\n\n async startAnnouncement() {\n if (this.isClosing) return;\n if (this.announceInterval.isRunning) {\n this.announceInterval.stop();\n }\n this.announcementStartedTime = Time.nowMs();\n this.announceInterval.start();\n await this.announce();\n }\n\n async expireAllFabricAnnouncements() {\n for (const broadcaster of this.broadcasters) {\n await broadcaster.expireAllAnnouncements();\n }\n }\n\n async announce(announceOnce = false) {\n if (!announceOnce) {\n // Stop announcement if duration is reached\n if (\n this.announcementStartedTime !== null &&\n Time.nowMs() - this.announcementStartedTime > DEVICE_ANNOUNCEMENT_DURATION_MS\n ) {\n await this.endCommissioning();\n logger.debug(\"Announcement duration reached, stop announcing\");\n return;\n }\n if (this.activeCommissioningMode !== AdministratorCommissioning.CommissioningWindowStatus.WindowNotOpen) {\n // Re-Announce but do not re-set Fabrics\n for (const broadcaster of this.broadcasters) {\n await broadcaster.announce();\n }\n return;\n }\n }\n const fabrics = this.#fabricManager.getFabrics();\n if (fabrics.length) {\n let fabricsWithoutSessions = 0;\n for (const fabric of fabrics) {\n const session = this.#sessionManager.getSessionForNode(fabric, fabric.rootNodeId);\n if (session === undefined || !session.isSecure || session.numberOfActiveSubscriptions === 0) {\n fabricsWithoutSessions++;\n logger.debug(\"Announcing\", Diagnostic.dict({ fabric: fabric.fabricId }));\n }\n }\n for (const broadcaster of this.broadcasters) {\n await broadcaster.setFabrics(fabrics);\n if (fabricsWithoutSessions > 0) {\n await broadcaster.announce();\n }\n }\n } else {\n // No fabric paired yet, so announce as \"ready for commissioning\"\n // And expire operational Fabric announcements (if fabric got just deleted)\n await this.expireAllFabricAnnouncements();\n await this.allowBasicCommissioning();\n }\n }\n\n private async announceAsCommissionable(\n mode: AdministratorCommissioning.CommissioningWindowStatus,\n activeCommissioningEndCallback?: () => void,\n discriminator?: number,\n ) {\n if (this.activeCommissioningMode !== AdministratorCommissioning.CommissioningWindowStatus.WindowNotOpen) {\n throw new InternalError(\n `Commissioning window already open with different mode (${this.activeCommissioningMode})!`,\n );\n }\n if (this.activeCommissioningEndCallback !== undefined) {\n throw new InternalError(\"Commissioning window already open with different callback!\");\n }\n this.activeCommissioningMode = mode;\n if (activeCommissioningEndCallback !== undefined) {\n this.activeCommissioningEndCallback = activeCommissioningEndCallback;\n }\n // MDNS is sent in parallel\n // TODO - untracked promise\n this.sendCommissionableAnnouncement(mode, discriminator).catch(error =>\n logger.warn(\"Error sending announcement\", error),\n );\n }\n\n async sendCommissionableAnnouncement(\n mode: AdministratorCommissioning.CommissioningWindowStatus,\n discriminator?: number,\n ) {\n const commissioningConfig = this.getCommissioningConfig();\n for (const broadcaster of this.broadcasters) {\n await broadcaster.setCommissionMode(\n mode === AdministratorCommissioning.CommissioningWindowStatus.EnhancedWindowOpen ? 2 : 1,\n {\n ...commissioningConfig.productDescription,\n discriminator: discriminator ?? commissioningConfig.discriminator,\n },\n );\n }\n await this.startAnnouncement();\n }\n\n async getNextAvailableSessionId() {\n return this.#sessionManager.getNextAvailableSessionId();\n }\n\n findFabricFromDestinationId(destinationId: ByteArray, peerRandom: ByteArray) {\n return this.#fabricManager.findFabricFromDestinationId(destinationId, peerRandom);\n }\n\n async sendFabricAnnouncements(fabrics: Fabric[], expireCommissioningAnnouncement = false) {\n for (const broadcaster of this.broadcasters) {\n await broadcaster.setFabrics(fabrics, expireCommissioningAnnouncement);\n await broadcaster.announce();\n }\n }\n\n getFabricByIndex(fabricIndex: FabricIndex) {\n return this.#fabricManager.getFabrics().find(fabric => fabric.fabricIndex === fabricIndex);\n }\n\n initiateExchange(fabric: Fabric, nodeId: NodeId, protocolId: number) {\n return this.exchangeManager.initiateExchange(fabric, nodeId, protocolId);\n }\n\n findResumptionRecordById(resumptionId: ByteArray) {\n return this.#sessionManager.findResumptionRecordById(resumptionId);\n }\n\n async saveResumptionRecord(resumptionRecord: ResumptionRecord) {\n return this.#sessionManager.saveResumptionRecord(resumptionRecord);\n }\n\n getFabrics() {\n return this.#fabricManager.getFabrics();\n }\n\n isCommissioned() {\n return !!this.#fabricManager.getFabrics().length;\n }\n\n async allowEnhancedCommissioning(\n discriminator: number,\n paseServer: PaseServer,\n commissioningEndCallback: () => void,\n ) {\n if (this.activeCommissioningMode === AdministratorCommissioning.CommissioningWindowStatus.BasicWindowOpen) {\n throw new MatterFlowError(\n \"Basic commissioning window is already open! Can not set Enhanced commissioning mode.\",\n );\n }\n\n this.secureChannelProtocol.setPaseCommissioner(paseServer);\n await this.announceAsCommissionable(\n AdministratorCommissioning.CommissioningWindowStatus.EnhancedWindowOpen,\n commissioningEndCallback,\n discriminator,\n );\n }\n\n async allowBasicCommissioning(commissioningEndCallback?: () => void) {\n if (this.activeCommissioningMode === AdministratorCommissioning.CommissioningWindowStatus.EnhancedWindowOpen) {\n throw new MatterFlowError(\n \"Enhanced commissioning window is already open! Can not set Basic commissioning mode.\",\n );\n }\n\n this.secureChannelProtocol.setPaseCommissioner(\n await PaseServer.fromPin(this.getCommissioningConfig().passcode, {\n iterations: 1000,\n salt: Crypto.get().getRandomData(32),\n }),\n );\n\n await this.announceAsCommissionable(\n AdministratorCommissioning.CommissioningWindowStatus.BasicWindowOpen,\n commissioningEndCallback,\n );\n }\n\n async endCommissioning() {\n logger.debug(\"Commissioning mode ended, stop announcements.\");\n // Remove PASE responder when we close enhanced commissioning window or node is commissioned\n if (\n this.activeCommissioningMode === AdministratorCommissioning.CommissioningWindowStatus.EnhancedWindowOpen ||\n this.isCommissioned()\n ) {\n this.secureChannelProtocol.removePaseCommissioner();\n }\n this.activeCommissioningMode = AdministratorCommissioning.CommissioningWindowStatus.WindowNotOpen;\n this.announceInterval.stop();\n this.announcementStartedTime = null;\n if (this.activeCommissioningEndCallback !== undefined) {\n const activeCommissioningEndCallback = this.activeCommissioningEndCallback;\n this.activeCommissioningEndCallback = undefined;\n activeCommissioningEndCallback();\n }\n for (const broadcaster of this.broadcasters) {\n await broadcaster.expireCommissioningAnnouncement();\n }\n logger.info(\"All announcements expired\");\n }\n\n existsOpenPaseSession() {\n return !!this.#sessionManager.getPaseSession();\n }\n\n async findDevice(\n fabric: Fabric,\n nodeId: NodeId,\n timeOutSeconds = 5,\n ): Promise<undefined | { session: Session<MatterDevice>; channel: Channel<ByteArray> }> {\n // TODO: return the first not undefined answer or undefined\n const device = await this.scanners[0].findOperationalDevice(fabric, nodeId, timeOutSeconds);\n if (device === undefined) return undefined;\n const session = this.#sessionManager.getSessionForNode(fabric, nodeId);\n if (session === undefined) return undefined;\n // TODO: have the interface and scanner linked\n const networkInterface = this.transportInterfaces.find(netInterface => isNetworkInterface(netInterface));\n if (networkInterface === undefined || !isNetworkInterface(networkInterface)) {\n throw new NetworkError(\"No network interface found\");\n } // TODO meeehhh\n return { session, channel: await networkInterface.openChannel(device.addresses[0]) };\n }\n\n async close() {\n this.#isClosing = true;\n await this.endCommissioning();\n await this.#announcementMutex;\n for (const broadcaster of this.broadcasters) {\n await broadcaster.close();\n }\n if (this.#failsafeContext) {\n await this.#failsafeContext.close();\n this.#failsafeContext = undefined;\n }\n await this.exchangeManager.close();\n await this.#sessionManager.close();\n await this.channelManager.close();\n for (const transportInterface of this.transportInterfaces) {\n await transportInterface.close();\n }\n }\n\n getActiveSessionInformation() {\n return this.#sessionManager.getActiveSessionInformation();\n }\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["/**\n * @license\n * Copyright 2022-2024 Matter.js Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * Important note: This file is part of the legacy matter-node (internal) API and should not be used anymore directly!\n * Please use the new API classes!\n * @deprecated\n */\n\nimport {\n DEVICE_ANNOUNCEMENT_DURATION_MS,\n DEVICE_ANNOUNCEMENT_INTERVAL_MS,\n} from \"./behavior/definitions/administrator-commissioning/AdministratorCommissioningConstants.js\";\nimport { CommissioningOptions } from \"./behavior/system/commissioning/CommissioningOptions.js\";\nimport { AdministratorCommissioning } from \"./cluster/definitions/AdministratorCommissioningCluster.js\";\n\nimport { Channel } from \"./common/Channel.js\";\nimport { FailsafeContext } from \"./common/FailsafeContext.js\";\nimport { InstanceBroadcaster } from \"./common/InstanceBroadcaster.js\";\nimport { Lifecycle } from \"./common/Lifecycle.js\";\nimport { InternalError, MatterFlowError } from \"./common/MatterError.js\";\nimport { Scanner } from \"./common/Scanner.js\";\nimport { TransportInterface } from \"./common/TransportInterface.js\";\nimport { Crypto } from \"./crypto/Crypto.js\";\nimport { FabricIndex } from \"./datatype/FabricIndex.js\";\nimport { NodeId } from \"./datatype/NodeId.js\";\nimport { Fabric } from \"./fabric/Fabric.js\";\nimport { FabricAction, FabricManager } from \"./fabric/FabricManager.js\";\nimport { Diagnostic } from \"./log/Diagnostic.js\";\nimport { Logger } from \"./log/Logger.js\";\nimport { NetInterface, isNetworkInterface } from \"./net/NetInterface.js\";\nimport { NetworkError } from \"./net/Network.js\";\nimport { ChannelManager } from \"./protocol/ChannelManager.js\";\nimport { ExchangeManager } from \"./protocol/ExchangeManager.js\";\nimport { ProtocolHandler } from \"./protocol/ProtocolHandler.js\";\nimport { StatusCode, StatusResponseError } from \"./protocol/interaction/StatusCode.js\";\nimport { SecureChannelProtocol } from \"./protocol/securechannel/SecureChannelProtocol.js\";\nimport { Session } from \"./session/Session.js\";\nimport { ResumptionRecord, SessionManager } from \"./session/SessionManager.js\";\nimport { PaseServer } from \"./session/pase/PaseServer.js\";\nimport { StorageContext } from \"./storage/StorageContext.js\";\nimport { Time, Timer } from \"./time/Time.js\";\nimport { AsyncConstruction, asyncNew } from \"./util/AsyncConstruction.js\";\nimport { ByteArray } from \"./util/ByteArray.js\";\nimport { Mutex } from \"./util/Mutex.js\";\n\nconst logger = Logger.get(\"MatterDevice\");\n\nexport class MatterDevice {\n private readonly scanners = new Array<Scanner>();\n private readonly broadcasters = new Array<InstanceBroadcaster>();\n private readonly transportInterfaces = new Array<TransportInterface | NetInterface>();\n private readonly channelManager: ChannelManager;\n private readonly secureChannelProtocol = new SecureChannelProtocol(() => this.endCommissioning());\n private activeCommissioningMode = AdministratorCommissioning.CommissioningWindowStatus.WindowNotOpen;\n private activeCommissioningEndCallback?: () => void;\n private announceInterval: Timer;\n private announcementStartedTime: number | null = null;\n #isClosing = false;\n readonly #exchangeManager;\n readonly #fabricManager: FabricManager;\n readonly #sessionManager: SessionManager<MatterDevice>;\n #failsafeContext?: FailsafeContext;\n\n // Currently we do not put much effort into synchronizing announcements as it probably isn't really necessary. But\n // this mutex prevents automated announcements from piling up and allows us to ensure announcements are complete\n // on close\n #announcementMutex = new Mutex(this);\n #construction: AsyncConstruction<MatterDevice>;\n\n get construction() {\n return this.#construction;\n }\n\n static async create(\n sessionStorage: StorageContext,\n fabricStorage: StorageContext,\n getCommissioningConfig: () => CommissioningOptions.Configuration,\n minimumCaseSessionsPerFabricAndNode = 3,\n commissioningChangedCallback: (fabricIndex: FabricIndex, fabricAction: FabricAction) => void,\n sessionChangedCallback: (fabricIndex: FabricIndex) => void,\n ) {\n return asyncNew(\n MatterDevice,\n sessionStorage,\n fabricStorage,\n getCommissioningConfig,\n minimumCaseSessionsPerFabricAndNode,\n commissioningChangedCallback,\n sessionChangedCallback,\n );\n }\n\n constructor(\n readonly sessionStorage: StorageContext,\n readonly fabricStorage: StorageContext,\n private readonly getCommissioningConfig: () => CommissioningOptions.Configuration,\n minimumCaseSessionsPerFabricAndNode: number,\n private readonly commissioningChangedCallback: (fabricIndex: FabricIndex, fabricAction: FabricAction) => void,\n private readonly sessionChangedCallback: (fabricIndex: FabricIndex) => void,\n ) {\n this.channelManager = new ChannelManager(minimumCaseSessionsPerFabricAndNode);\n\n this.#fabricManager = new FabricManager(fabricStorage);\n\n this.#fabricManager.events.deleted.on(async fabric => {\n const { fabricIndex, rootNodeId } = fabric;\n // When fabric is removed, also remove the resumption record\n await this.#sessionManager.removeResumptionRecord(rootNodeId);\n this.commissioningChangedCallback(fabricIndex, FabricAction.Removed);\n if (this.#fabricManager.getFabrics().length === 0) {\n // Last fabric got removed, so expire all announcements\n await this.expireAllFabricAnnouncements();\n }\n });\n this.#fabricManager.events.updated.on(({ fabricIndex }) =>\n this.commissioningChangedCallback(fabricIndex, FabricAction.Updated),\n );\n\n this.#sessionManager = new SessionManager(this, sessionStorage);\n\n this.#exchangeManager = new ExchangeManager<MatterDevice>(this.#sessionManager, this.channelManager);\n\n this.addProtocolHandler(this.secureChannelProtocol);\n\n this.announceInterval = Time.getPeriodicTimer(\"Server node announcement\", DEVICE_ANNOUNCEMENT_INTERVAL_MS, () =>\n // Announcement needs to await a previous announcement because otherwise in testing at least announcement\n // may crash if started simultaneously\n this.#announcementMutex.run(() => this.announce()),\n );\n\n this.#sessionManager.sessionOpened.on(session => {\n if (session.fabric) {\n this.sessionChangedCallback(session.fabric.fabricIndex);\n }\n });\n\n this.#sessionManager.sessionClosed.on(async session => {\n if (!session.closingAfterExchangeFinished) {\n // Delayed closing is executed when exchange is closed\n await this.exchangeManager.closeSession(session);\n }\n const currentFabric = session.fabric;\n if (currentFabric !== undefined) {\n this.sessionChangedCallback(currentFabric.fabricIndex);\n }\n if (this.isClosing) {\n return;\n }\n // When a session closes, announce existing fabrics again so that controller can detect the device again.\n // When session was closed and no fabric exist anymore then this is triggering a factory reset in upper layer\n // and it would be not good to announce a commissionable device and then reset that again with the factory reset\n if (this.#fabricManager.getFabrics().length > 0 || !currentFabric) {\n await this.startAnnouncement();\n }\n });\n\n this.#sessionManager.subscriptionsChanged.on(session => {\n const currentFabric = session.fabric;\n if (currentFabric !== undefined) {\n this.sessionChangedCallback(currentFabric.fabricIndex);\n }\n });\n\n this.#construction = AsyncConstruction(this, async () => {\n await this.#fabricManager.initFromStorage();\n\n // Attach added events delayed because initialization from storage would else trigger it\n this.#fabricManager.events.added.on(({ fabricIndex }) =>\n this.commissioningChangedCallback(fabricIndex, FabricAction.Added),\n );\n\n await this.#sessionManager.initFromStorage(this.#fabricManager.getFabrics());\n });\n }\n\n get fabricManager() {\n return this.#fabricManager;\n }\n\n get sessionManager() {\n return this.#sessionManager;\n }\n\n get exchangeManager() {\n return this.#exchangeManager;\n }\n\n get failsafeContext() {\n this.assertFailSafeArmed();\n return this.#failsafeContext as FailsafeContext;\n }\n\n get isClosing() {\n return this.#isClosing;\n }\n\n async beginTimed(failsafeContext: FailsafeContext) {\n await failsafeContext.construction;\n\n this.#failsafeContext = failsafeContext;\n\n this.#fabricManager.events.added.on(fabric => {\n const fabrics = this.#fabricManager.getFabrics();\n this.sendFabricAnnouncements(fabrics, true).catch(error =>\n logger.warn(`Error sending Fabric announcement for Index ${fabric.fabricIndex}`, error),\n );\n logger.info(\"Announce done\", Diagnostic.dict({ fabric: fabric.fabricId, fabricIndex: fabric.fabricIndex }));\n });\n\n failsafeContext.commissioned.on(async () => await this.endCommissioning());\n\n failsafeContext.construction.change.on(status => {\n if (status === Lifecycle.Status.Destroyed) {\n this.#failsafeContext = undefined;\n }\n });\n }\n\n assertFailSafeArmed(message?: string) {\n if (this.isFailsafeArmed()) return;\n throw new StatusResponseError(\n message ?? \"Failsafe timer needs to be armed to execute this action.\",\n StatusCode.FailsafeRequired,\n );\n }\n\n isFailsafeArmed() {\n return this.#failsafeContext !== undefined;\n }\n\n addScanner(scanner: Scanner) {\n this.scanners.push(scanner);\n return this;\n }\n\n hasBroadcaster(broadcaster: InstanceBroadcaster) {\n return this.broadcasters.includes(broadcaster);\n }\n\n addBroadcaster(broadcaster: InstanceBroadcaster) {\n this.broadcasters.push(broadcaster);\n return this;\n }\n\n async deleteBroadcaster(broadcaster: InstanceBroadcaster) {\n const pos = this.broadcasters.findIndex(b => b === broadcaster);\n if (pos !== -1) {\n this.broadcasters.splice(pos, 1);\n await broadcaster.expireAllAnnouncements();\n }\n }\n\n addTransportInterface(transport: TransportInterface) {\n this.exchangeManager.addTransportInterface(transport);\n this.transportInterfaces.push(transport);\n return this;\n }\n\n async deleteTransportInterface(transport: TransportInterface) {\n const pos = this.transportInterfaces.findIndex(t => t === transport);\n if (pos !== -1) {\n this.transportInterfaces.splice(pos, 1);\n await transport.close();\n }\n }\n\n hasProtocolHandler(protocolId: number) {\n return this.exchangeManager.hasProtocolHandler(protocolId);\n }\n\n addProtocolHandler(protocol: ProtocolHandler<MatterDevice>) {\n this.exchangeManager.addProtocolHandler(protocol);\n return this;\n }\n\n async start() {\n await this.startAnnouncement();\n }\n\n async startAnnouncement() {\n if (this.isClosing) return;\n if (this.announceInterval.isRunning) {\n this.announceInterval.stop();\n }\n this.announcementStartedTime = Time.nowMs();\n this.announceInterval.start();\n await this.announce();\n }\n\n async expireAllFabricAnnouncements() {\n for (const broadcaster of this.broadcasters) {\n await broadcaster.expireAllAnnouncements();\n }\n }\n\n async announce(announceOnce = false) {\n if (!announceOnce) {\n // Stop announcement if duration is reached\n if (\n this.announcementStartedTime !== null &&\n Time.nowMs() - this.announcementStartedTime > DEVICE_ANNOUNCEMENT_DURATION_MS\n ) {\n await this.endCommissioning();\n logger.debug(\"Announcement duration reached, stop announcing\");\n return;\n }\n if (this.activeCommissioningMode !== AdministratorCommissioning.CommissioningWindowStatus.WindowNotOpen) {\n // Re-Announce but do not re-set Fabrics\n for (const broadcaster of this.broadcasters) {\n await broadcaster.announce();\n }\n return;\n }\n }\n const fabrics = this.#fabricManager.getFabrics();\n if (fabrics.length) {\n let fabricsWithoutSessions = 0;\n for (const fabric of fabrics) {\n const session = this.#sessionManager.getSessionForNode(fabric, fabric.rootNodeId);\n if (session === undefined || !session.isSecure || session.numberOfActiveSubscriptions === 0) {\n fabricsWithoutSessions++;\n logger.debug(\"Announcing\", Diagnostic.dict({ fabric: fabric.fabricId }));\n }\n }\n for (const broadcaster of this.broadcasters) {\n await broadcaster.setFabrics(fabrics);\n if (fabricsWithoutSessions > 0) {\n await broadcaster.announce();\n }\n }\n } else {\n // No fabric paired yet, so announce as \"ready for commissioning\"\n // And expire operational Fabric announcements (if fabric got just deleted)\n await this.expireAllFabricAnnouncements();\n await this.allowBasicCommissioning();\n }\n }\n\n private async announceAsCommissionable(\n mode: AdministratorCommissioning.CommissioningWindowStatus,\n activeCommissioningEndCallback?: () => void,\n discriminator?: number,\n ) {\n if (this.activeCommissioningMode !== AdministratorCommissioning.CommissioningWindowStatus.WindowNotOpen) {\n throw new InternalError(\n `Commissioning window already open with different mode (${this.activeCommissioningMode})!`,\n );\n }\n if (this.activeCommissioningEndCallback !== undefined) {\n throw new InternalError(\"Commissioning window already open with different callback!\");\n }\n this.activeCommissioningMode = mode;\n if (activeCommissioningEndCallback !== undefined) {\n this.activeCommissioningEndCallback = activeCommissioningEndCallback;\n }\n // MDNS is sent in parallel\n // TODO - untracked promise\n this.sendCommissionableAnnouncement(mode, discriminator).catch(error =>\n logger.warn(\"Error sending announcement\", error),\n );\n }\n\n async sendCommissionableAnnouncement(\n mode: AdministratorCommissioning.CommissioningWindowStatus,\n discriminator?: number,\n ) {\n const commissioningConfig = this.getCommissioningConfig();\n for (const broadcaster of this.broadcasters) {\n await broadcaster.setCommissionMode(\n mode === AdministratorCommissioning.CommissioningWindowStatus.EnhancedWindowOpen ? 2 : 1,\n {\n ...commissioningConfig.productDescription,\n discriminator: discriminator ?? commissioningConfig.discriminator,\n },\n );\n }\n await this.startAnnouncement();\n }\n\n async getNextAvailableSessionId() {\n return this.#sessionManager.getNextAvailableSessionId();\n }\n\n findFabricFromDestinationId(destinationId: ByteArray, peerRandom: ByteArray) {\n return this.#fabricManager.findFabricFromDestinationId(destinationId, peerRandom);\n }\n\n async sendFabricAnnouncements(fabrics: Fabric[], expireCommissioningAnnouncement = false) {\n for (const broadcaster of this.broadcasters) {\n await broadcaster.setFabrics(fabrics, expireCommissioningAnnouncement);\n await broadcaster.announce();\n }\n }\n\n getFabricByIndex(fabricIndex: FabricIndex) {\n return this.#fabricManager.getFabrics().find(fabric => fabric.fabricIndex === fabricIndex);\n }\n\n initiateExchange(fabric: Fabric, nodeId: NodeId, protocolId: number) {\n return this.exchangeManager.initiateExchange(fabric, nodeId, protocolId);\n }\n\n findResumptionRecordById(resumptionId: ByteArray) {\n return this.#sessionManager.findResumptionRecordById(resumptionId);\n }\n\n async saveResumptionRecord(resumptionRecord: ResumptionRecord) {\n return this.#sessionManager.saveResumptionRecord(resumptionRecord);\n }\n\n getFabrics() {\n return this.#fabricManager.getFabrics();\n }\n\n isCommissioned() {\n return !!this.#fabricManager.getFabrics().length;\n }\n\n async allowEnhancedCommissioning(\n discriminator: number,\n paseServer: PaseServer,\n commissioningEndCallback: () => void,\n ) {\n if (this.activeCommissioningMode === AdministratorCommissioning.CommissioningWindowStatus.BasicWindowOpen) {\n throw new MatterFlowError(\n \"Basic commissioning window is already open! Can not set Enhanced commissioning mode.\",\n );\n }\n\n this.secureChannelProtocol.setPaseCommissioner(paseServer);\n await this.announceAsCommissionable(\n AdministratorCommissioning.CommissioningWindowStatus.EnhancedWindowOpen,\n commissioningEndCallback,\n discriminator,\n );\n }\n\n async allowBasicCommissioning(commissioningEndCallback?: () => void) {\n if (this.activeCommissioningMode === AdministratorCommissioning.CommissioningWindowStatus.EnhancedWindowOpen) {\n throw new MatterFlowError(\n \"Enhanced commissioning window is already open! Can not set Basic commissioning mode.\",\n );\n }\n\n this.secureChannelProtocol.setPaseCommissioner(\n await PaseServer.fromPin(this.getCommissioningConfig().passcode, {\n iterations: 1000,\n salt: Crypto.get().getRandomData(32),\n }),\n );\n\n await this.announceAsCommissionable(\n AdministratorCommissioning.CommissioningWindowStatus.BasicWindowOpen,\n commissioningEndCallback,\n );\n }\n\n async endCommissioning() {\n logger.debug(\"Commissioning mode ended, stop announcements.\");\n // Remove PASE responder when we close enhanced commissioning window or node is commissioned\n if (\n this.activeCommissioningMode === AdministratorCommissioning.CommissioningWindowStatus.EnhancedWindowOpen ||\n this.isCommissioned()\n ) {\n this.secureChannelProtocol.removePaseCommissioner();\n }\n this.activeCommissioningMode = AdministratorCommissioning.CommissioningWindowStatus.WindowNotOpen;\n this.announceInterval.stop();\n this.announcementStartedTime = null;\n if (this.activeCommissioningEndCallback !== undefined) {\n const activeCommissioningEndCallback = this.activeCommissioningEndCallback;\n this.activeCommissioningEndCallback = undefined;\n activeCommissioningEndCallback();\n }\n for (const broadcaster of this.broadcasters) {\n await broadcaster.expireCommissioningAnnouncement();\n }\n logger.info(\"All announcements expired\");\n }\n\n existsOpenPaseSession() {\n return !!this.#sessionManager.getPaseSession();\n }\n\n async findDevice(\n fabric: Fabric,\n nodeId: NodeId,\n timeOutSeconds = 5,\n ): Promise<undefined | { session: Session<MatterDevice>; channel: Channel<ByteArray> }> {\n // TODO: return the first not undefined answer or undefined\n const device = await this.scanners[0].findOperationalDevice(fabric, nodeId, timeOutSeconds);\n if (device === undefined) return undefined;\n const session = this.#sessionManager.getSessionForNode(fabric, nodeId);\n if (session === undefined) return undefined;\n // TODO: have the interface and scanner linked\n const networkInterface = this.transportInterfaces.find(netInterface => isNetworkInterface(netInterface));\n if (networkInterface === undefined || !isNetworkInterface(networkInterface)) {\n throw new NetworkError(\"No network interface found\");\n } // TODO meeehhh\n return { session, channel: await networkInterface.openChannel(device.addresses[0]) };\n }\n\n async clearSubscriptionsForNode(peerNodeId: NodeId, flushSubscriptions?: boolean) {\n await this.#sessionManager.clearSubscriptionsForNode(peerNodeId, flushSubscriptions);\n }\n\n async close() {\n this.#isClosing = true;\n await this.endCommissioning();\n await this.#announcementMutex;\n for (const broadcaster of this.broadcasters) {\n await broadcaster.close();\n }\n if (this.#failsafeContext) {\n await this.#failsafeContext.close();\n this.#failsafeContext = undefined;\n }\n await this.exchangeManager.close();\n await this.#sessionManager.close();\n await this.channelManager.close();\n for (const transportInterface of this.transportInterfaces) {\n await transportInterface.close();\n }\n }\n\n getActiveSessionInformation() {\n return this.#sessionManager.getActiveSessionInformation();\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InteractionServer.d.ts","sourceRoot":"","sources":["../../../../src/protocol/interaction/InteractionServer.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"InteractionServer.d.ts","sourceRoot":"","sources":["../../../../src/protocol/interaction/InteractionServer.ts"],"names":[],"mappings":"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"}
|
|
@@ -752,8 +752,10 @@ class InteractionServer {
|
|
|
752
752
|
return;
|
|
753
753
|
}
|
|
754
754
|
if (!keepSubscriptions) {
|
|
755
|
-
logger.debug(
|
|
756
|
-
|
|
755
|
+
logger.debug(
|
|
756
|
+
`Clear subscriptions for Subscriber node ${session.peerNodeId} because keepSubscriptions=false`
|
|
757
|
+
);
|
|
758
|
+
await session.context.clearSubscriptionsForNode(session.peerNodeId, true);
|
|
757
759
|
}
|
|
758
760
|
const maxInterval = subscriptionHandler.getMaxInterval();
|
|
759
761
|
logger.info(
|