@matter/node 0.16.0-alpha.0-20250809-ee8375bcb → 0.16.0-alpha.0-20250812-285b75d83
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/behavior/system/commissioning/CommissioningServer.d.ts +4 -7
- package/dist/cjs/behavior/system/commissioning/CommissioningServer.d.ts.map +1 -1
- package/dist/cjs/behavior/system/commissioning/CommissioningServer.js +11 -16
- package/dist/cjs/behavior/system/commissioning/CommissioningServer.js.map +1 -1
- package/dist/cjs/behavior/system/controller/ControllerBehavior.js +4 -4
- package/dist/cjs/behavior/system/controller/ControllerBehavior.js.map +1 -1
- package/dist/cjs/behavior/system/controller/discovery/ActiveDiscoveries.js +2 -2
- package/dist/cjs/behavior/system/controller/discovery/ActiveDiscoveries.js.map +1 -1
- package/dist/cjs/behavior/system/network/ServerNetworkRuntime.d.ts +6 -6
- package/dist/cjs/behavior/system/network/ServerNetworkRuntime.d.ts.map +1 -1
- package/dist/cjs/behavior/system/network/ServerNetworkRuntime.js +46 -39
- package/dist/cjs/behavior/system/network/ServerNetworkRuntime.js.map +1 -1
- package/dist/cjs/behaviors/administrator-commissioning/AdministratorCommissioningServer.d.ts +2 -1
- package/dist/cjs/behaviors/administrator-commissioning/AdministratorCommissioningServer.d.ts.map +1 -1
- package/dist/cjs/behaviors/administrator-commissioning/AdministratorCommissioningServer.js +6 -5
- package/dist/cjs/behaviors/administrator-commissioning/AdministratorCommissioningServer.js.map +1 -1
- package/dist/cjs/behaviors/general-commissioning/GeneralCommissioningServer.d.ts.map +1 -1
- package/dist/cjs/behaviors/general-commissioning/GeneralCommissioningServer.js +7 -1
- package/dist/cjs/behaviors/general-commissioning/GeneralCommissioningServer.js.map +1 -1
- package/dist/esm/behavior/system/commissioning/CommissioningServer.d.ts +4 -7
- package/dist/esm/behavior/system/commissioning/CommissioningServer.d.ts.map +1 -1
- package/dist/esm/behavior/system/commissioning/CommissioningServer.js +11 -16
- package/dist/esm/behavior/system/commissioning/CommissioningServer.js.map +1 -1
- package/dist/esm/behavior/system/controller/ControllerBehavior.js +5 -5
- package/dist/esm/behavior/system/controller/ControllerBehavior.js.map +1 -1
- package/dist/esm/behavior/system/controller/discovery/ActiveDiscoveries.js +3 -3
- package/dist/esm/behavior/system/controller/discovery/ActiveDiscoveries.js.map +1 -1
- package/dist/esm/behavior/system/network/ServerNetworkRuntime.d.ts +6 -6
- package/dist/esm/behavior/system/network/ServerNetworkRuntime.d.ts.map +1 -1
- package/dist/esm/behavior/system/network/ServerNetworkRuntime.js +49 -39
- package/dist/esm/behavior/system/network/ServerNetworkRuntime.js.map +1 -1
- package/dist/esm/behaviors/administrator-commissioning/AdministratorCommissioningServer.d.ts +2 -1
- package/dist/esm/behaviors/administrator-commissioning/AdministratorCommissioningServer.d.ts.map +1 -1
- package/dist/esm/behaviors/administrator-commissioning/AdministratorCommissioningServer.js +8 -7
- package/dist/esm/behaviors/administrator-commissioning/AdministratorCommissioningServer.js.map +1 -1
- package/dist/esm/behaviors/general-commissioning/GeneralCommissioningServer.d.ts.map +1 -1
- package/dist/esm/behaviors/general-commissioning/GeneralCommissioningServer.js +8 -2
- package/dist/esm/behaviors/general-commissioning/GeneralCommissioningServer.js.map +1 -1
- package/package.json +7 -7
- package/src/behavior/system/commissioning/CommissioningServer.ts +15 -26
- package/src/behavior/system/controller/ControllerBehavior.ts +5 -5
- package/src/behavior/system/controller/discovery/ActiveDiscoveries.ts +3 -3
- package/src/behavior/system/network/ServerNetworkRuntime.ts +53 -44
- package/src/behaviors/administrator-commissioning/AdministratorCommissioningServer.ts +8 -7
- package/src/behaviors/general-commissioning/GeneralCommissioningServer.ts +8 -2
|
@@ -9,10 +9,10 @@ import { AccessLevel } from "#model";
|
|
|
9
9
|
import { DeviceCommissioner, FailsafeContext, PaseServer, SessionManager } from "#protocol";
|
|
10
10
|
import {
|
|
11
11
|
Command,
|
|
12
|
-
MAXIMUM_COMMISSIONING_TIMEOUT_S,
|
|
13
12
|
MINIMUM_COMMISSIONING_TIMEOUT_S,
|
|
14
13
|
PAKE_PASSCODE_VERIFIER_LENGTH,
|
|
15
|
-
|
|
14
|
+
STANDARD_COMMISSIONING_TIMEOUT_S,
|
|
15
|
+
Status,
|
|
16
16
|
StatusResponseError,
|
|
17
17
|
TlvByteString,
|
|
18
18
|
TlvField,
|
|
@@ -142,13 +142,13 @@ class AdministratorCommissioningServer extends AdministratorCommissioningBehavio
|
|
|
142
142
|
if (commissioningTimeout > this.internal.maximumCommissioningTimeoutS) {
|
|
143
143
|
throw new StatusResponseError(
|
|
144
144
|
`Commissioning timeout must not exceed ${this.internal.maximumCommissioningTimeoutS} seconds.`,
|
|
145
|
-
|
|
145
|
+
Status.InvalidCommand
|
|
146
146
|
);
|
|
147
147
|
}
|
|
148
148
|
if (commissioningTimeout < this.internal.minimumCommissioningTimeoutS) {
|
|
149
149
|
throw new StatusResponseError(
|
|
150
150
|
`Commissioning timeout must not be lower then ${this.internal.minimumCommissioningTimeoutS} seconds.`,
|
|
151
|
-
|
|
151
|
+
Status.InvalidCommand
|
|
152
152
|
);
|
|
153
153
|
}
|
|
154
154
|
if (commissioner.isFailsafeArmed) {
|
|
@@ -159,7 +159,7 @@ class AdministratorCommissioningServer extends AdministratorCommissioningBehavio
|
|
|
159
159
|
* This method is used internally when the commissioning window timer expires or the commissioning was completed.
|
|
160
160
|
*/
|
|
161
161
|
#endCommissioning() {
|
|
162
|
-
logger.debug("
|
|
162
|
+
logger.debug("Ending commissioning");
|
|
163
163
|
if (this.internal.commissioningWindowTimeout !== void 0) {
|
|
164
164
|
this.internal.commissioningWindowTimeout.stop();
|
|
165
165
|
this.internal.commissioningWindowTimeout = void 0;
|
|
@@ -208,9 +208,10 @@ class AdministratorCommissioningServer extends AdministratorCommissioningBehavio
|
|
|
208
208
|
*/
|
|
209
209
|
minimumCommissioningTimeoutS = MINIMUM_COMMISSIONING_TIMEOUT_S;
|
|
210
210
|
/**
|
|
211
|
-
*
|
|
211
|
+
* Commissioning beyond the standard 15-minute window is "extended commissioning" and has limitations on
|
|
212
|
+
* advertisement. We default to the standard window.
|
|
212
213
|
*/
|
|
213
|
-
maximumCommissioningTimeoutS =
|
|
214
|
+
maximumCommissioningTimeoutS = STANDARD_COMMISSIONING_TIMEOUT_S;
|
|
214
215
|
}
|
|
215
216
|
AdministratorCommissioningServer2.Internal = Internal;
|
|
216
217
|
class State extends AdministratorCommissioningBehavior.State {
|
package/dist/esm/behaviors/administrator-commissioning/AdministratorCommissioningServer.js.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/behaviors/administrator-commissioning/AdministratorCommissioningServer.ts"],
|
|
4
|
-
"mappings": "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
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["AdministratorCommissioningServer"]
|
|
6
6
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GeneralCommissioningServer.d.ts","sourceRoot":"","sources":["../../../../src/behaviors/general-commissioning/GeneralCommissioningServer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,
|
|
1
|
+
{"version":3,"file":"GeneralCommissioningServer.d.ts","sourceRoot":"","sources":["../../../../src/behaviors/general-commissioning/GeneralCommissioningServer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,EAA8C,YAAY,EAAE,MAAM,UAAU,CAAC;AAGpF,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AAMjF;;GAEG;AACH,qBAAa,0BAA2B,SAAQ,4BAA4B;;IAChE,KAAK,EAAE,0BAA0B,CAAC,KAAK,CAAC;IAEhD,OAAgB,YAAY,UAAS;IAE5B,UAAU,IAAI,YAAY;IA+F1B,WAAW,CAAC,OAAO,EAAE,oBAAoB,CAAC,kBAAkB;;;;IAItD,mBAAmB,CAAC,EAC/B,UAAU,EACV,mBAAmB,EACnB,WAAW,GACd,EAAE,oBAAoB,CAAC,0BAA0B;;;;IAyEnC,qBAAqB;;;;CAkDvC;AAED,yBAAiB,0BAA0B,CAAC;IAGxC,MAAa,KAAM,SAAQ,4BAA4B,CAAC,KAAK;QACzD;;WAEG;QACH,sBAAsB,UAAQ;QAE9B;;WAEG;QACH,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAa;KAC/C;CACJ"}
|
|
@@ -7,7 +7,7 @@ import { AdministratorCommissioningServer } from "#behaviors/administrator-commi
|
|
|
7
7
|
import { BasicInformationServer } from "#behaviors/basic-information";
|
|
8
8
|
import { AdministratorCommissioning } from "#clusters/administrator-commissioning";
|
|
9
9
|
import { GeneralCommissioning } from "#clusters/general-commissioning";
|
|
10
|
-
import { Logger, MatterFlowError } from "#general";
|
|
10
|
+
import { Bytes, Diagnostic, Logger, MatterFlowError } from "#general";
|
|
11
11
|
import { DeviceCommissioner, FabricManager, GroupSession, NodeSession, SecureSession, SessionManager } from "#protocol";
|
|
12
12
|
import { GeneralCommissioningBehavior } from "./GeneralCommissioningBehavior.js";
|
|
13
13
|
import { ServerNodeFailsafeContext } from "./ServerNodeFailsafeContext.js";
|
|
@@ -155,7 +155,13 @@ class GeneralCommissioningServer extends GeneralCommissioningBehavior {
|
|
|
155
155
|
}
|
|
156
156
|
await failsafeContext.completeCommission();
|
|
157
157
|
this.state.breadcrumb = BigInt(0);
|
|
158
|
-
logger.info(
|
|
158
|
+
logger.info(
|
|
159
|
+
"Commissioned",
|
|
160
|
+
Diagnostic.dict({
|
|
161
|
+
fabric: `${Bytes.toHex(fabric.operationalId)} (#${fabric.fabricIndex})`,
|
|
162
|
+
node: fabric.nodeId.toString(16).padStart(16, "0")
|
|
163
|
+
})
|
|
164
|
+
);
|
|
159
165
|
return SuccessResponse;
|
|
160
166
|
}
|
|
161
167
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/behaviors/general-commissioning/GeneralCommissioningServer.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,wCAAwC;AACjD,SAAS,8BAA8B;AACvC,SAAS,kCAAkC;AAC3C,SAAS,4BAA4B;AACrC,SAAS,QAAQ,uBAAqC;
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["GeneralCommissioningServer"]
|
|
6
6
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@matter/node",
|
|
3
|
-
"version": "0.16.0-alpha.0-
|
|
3
|
+
"version": "0.16.0-alpha.0-20250812-285b75d83",
|
|
4
4
|
"description": "API for building Matter nodes",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"iot",
|
|
@@ -42,14 +42,14 @@
|
|
|
42
42
|
"#*": "./src/*"
|
|
43
43
|
},
|
|
44
44
|
"dependencies": {
|
|
45
|
-
"@matter/general": "0.16.0-alpha.0-
|
|
46
|
-
"@matter/model": "0.16.0-alpha.0-
|
|
47
|
-
"@matter/types": "0.16.0-alpha.0-
|
|
48
|
-
"@matter/protocol": "0.16.0-alpha.0-
|
|
45
|
+
"@matter/general": "0.16.0-alpha.0-20250812-285b75d83",
|
|
46
|
+
"@matter/model": "0.16.0-alpha.0-20250812-285b75d83",
|
|
47
|
+
"@matter/types": "0.16.0-alpha.0-20250812-285b75d83",
|
|
48
|
+
"@matter/protocol": "0.16.0-alpha.0-20250812-285b75d83"
|
|
49
49
|
},
|
|
50
50
|
"devDependencies": {
|
|
51
|
-
"@matter/tools": "0.16.0-alpha.0-
|
|
52
|
-
"@matter/testing": "0.16.0-alpha.0-
|
|
51
|
+
"@matter/tools": "0.16.0-alpha.0-20250812-285b75d83",
|
|
52
|
+
"@matter/testing": "0.16.0-alpha.0-20250812-285b75d83"
|
|
53
53
|
},
|
|
54
54
|
"files": [
|
|
55
55
|
"dist/**/*",
|
|
@@ -22,6 +22,7 @@ import type { Node } from "#node/Node.js";
|
|
|
22
22
|
import { NodeLifecycle } from "#node/NodeLifecycle.js";
|
|
23
23
|
import type { ServerNode } from "#node/ServerNode.js";
|
|
24
24
|
import {
|
|
25
|
+
BleAdvertiser,
|
|
25
26
|
CommissioningConfigProvider,
|
|
26
27
|
DeviceAdvertiser,
|
|
27
28
|
DeviceCommissioner,
|
|
@@ -29,6 +30,7 @@ import {
|
|
|
29
30
|
FabricAction,
|
|
30
31
|
FabricManager,
|
|
31
32
|
FailsafeContext,
|
|
33
|
+
MdnsAdvertiser,
|
|
32
34
|
PaseClient,
|
|
33
35
|
Val,
|
|
34
36
|
} from "#protocol";
|
|
@@ -93,6 +95,8 @@ export class CommissioningServer extends Behavior {
|
|
|
93
95
|
this.reactTo((this.endpoint as Node).lifecycle.online, this.#enterOnlineMode);
|
|
94
96
|
|
|
95
97
|
this.reactTo((this.endpoint as Node).lifecycle.goingOffline, this.#enterOfflineMode);
|
|
98
|
+
|
|
99
|
+
this.reactTo(this.env.get(FabricManager).events.added, this.enterOperationalMode);
|
|
96
100
|
}
|
|
97
101
|
|
|
98
102
|
override async [Symbol.asyncDispose]() {
|
|
@@ -196,7 +200,7 @@ export class CommissioningServer extends Behavior {
|
|
|
196
200
|
failsafe.construction.change.on(listener);
|
|
197
201
|
}
|
|
198
202
|
|
|
199
|
-
#enterOnlineMode() {
|
|
203
|
+
async #enterOnlineMode() {
|
|
200
204
|
// If already commissioned, trigger operational announcement
|
|
201
205
|
if ((this.endpoint.lifecycle as NodeLifecycle).isCommissioned) {
|
|
202
206
|
this.enterOperationalMode();
|
|
@@ -219,7 +223,7 @@ export class CommissioningServer extends Behavior {
|
|
|
219
223
|
}
|
|
220
224
|
|
|
221
225
|
// Advertise as commissionable
|
|
222
|
-
this.enterCommissionableMode();
|
|
226
|
+
await this.enterCommissionableMode();
|
|
223
227
|
}
|
|
224
228
|
|
|
225
229
|
#enterOfflineMode() {
|
|
@@ -237,20 +241,14 @@ export class CommissioningServer extends Behavior {
|
|
|
237
241
|
* The server normally invokes this method when the node starts and is not yet commissioned. You can disable by
|
|
238
242
|
* setting {@link CommissioningServer.State#enabled} to false. Then you must invoke yourself.
|
|
239
243
|
*/
|
|
240
|
-
enterCommissionableMode() {
|
|
244
|
+
async enterCommissionableMode() {
|
|
241
245
|
if (!this.#hasAdvertisableDeviceType) {
|
|
242
246
|
throw new ImplementationError(
|
|
243
247
|
`Node ${this.endpoint} has no endpoints with advertisable device types; you must add an endpoint or set the device type`,
|
|
244
248
|
);
|
|
245
249
|
}
|
|
246
250
|
|
|
247
|
-
|
|
248
|
-
//
|
|
249
|
-
// TODO - DeviceCommissioner/DeviceAdvertiser API is convoluted; refactor to allow directly moving to the
|
|
250
|
-
// desired mode
|
|
251
|
-
this.env.get(DeviceCommissioner);
|
|
252
|
-
|
|
253
|
-
this.beginAdvertising();
|
|
251
|
+
await this.env.get(DeviceCommissioner).allowBasicCommissioning();
|
|
254
252
|
|
|
255
253
|
this.initiateCommissioning();
|
|
256
254
|
}
|
|
@@ -260,7 +258,11 @@ export class CommissioningServer extends Behavior {
|
|
|
260
258
|
* commissioning.
|
|
261
259
|
*/
|
|
262
260
|
protected enterOperationalMode() {
|
|
263
|
-
this.
|
|
261
|
+
if (!(this.endpoint.lifecycle as NodeLifecycle).isOnline) {
|
|
262
|
+
throw new ImplementationError("Cannot advertise offline server");
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
this.env.get(DeviceAdvertiser).enterOperationalMode();
|
|
264
266
|
}
|
|
265
267
|
|
|
266
268
|
/**
|
|
@@ -330,21 +332,6 @@ export class CommissioningServer extends Behavior {
|
|
|
330
332
|
],
|
|
331
333
|
});
|
|
332
334
|
|
|
333
|
-
/**
|
|
334
|
-
* Advertise and continue advertising at regular intervals until timeout per Matter specification. If already
|
|
335
|
-
* advertising, the advertisement timeout resets.
|
|
336
|
-
*/
|
|
337
|
-
beginAdvertising() {
|
|
338
|
-
if (!(this.endpoint.lifecycle as NodeLifecycle).isOnline) {
|
|
339
|
-
throw new ImplementationError("Cannot advertise offline server");
|
|
340
|
-
}
|
|
341
|
-
|
|
342
|
-
this.env
|
|
343
|
-
.get(DeviceAdvertiser)
|
|
344
|
-
.startAdvertising()
|
|
345
|
-
.catch(error => logger.error("Failed to open advertisement window", error));
|
|
346
|
-
}
|
|
347
|
-
|
|
348
335
|
#initializeNode() {
|
|
349
336
|
this.state.commissioned = !!this.agent.get(OperationalCredentialsBehavior).state.commissionedFabrics;
|
|
350
337
|
(this.endpoint.lifecycle as NodeLifecycle).initialized.emit(this.state.commissioned);
|
|
@@ -389,6 +376,8 @@ export namespace CommissioningServer {
|
|
|
389
376
|
flowType = CommissioningFlowType.Standard;
|
|
390
377
|
additionalBleAdvertisementData?: Uint8Array = undefined;
|
|
391
378
|
pairingCodes = {} as PairingCodes;
|
|
379
|
+
mdns?: MdnsAdvertiser.Options;
|
|
380
|
+
ble?: BleAdvertiser.Options;
|
|
392
381
|
|
|
393
382
|
[Val.properties](endpoint: Endpoint) {
|
|
394
383
|
return {
|
|
@@ -17,7 +17,7 @@ import {
|
|
|
17
17
|
FabricAuthority,
|
|
18
18
|
FabricAuthorityConfigurationProvider,
|
|
19
19
|
FabricManager,
|
|
20
|
-
|
|
20
|
+
MdnsClient,
|
|
21
21
|
MdnsScannerTargetCriteria,
|
|
22
22
|
MdnsService,
|
|
23
23
|
Scanner,
|
|
@@ -54,14 +54,14 @@ export class ControllerBehavior extends Behavior {
|
|
|
54
54
|
this.state.ip = true;
|
|
55
55
|
}
|
|
56
56
|
if (this.state.ip !== false) {
|
|
57
|
-
this.env.get(ScannerSet).add((await this.env.load(MdnsService)).
|
|
57
|
+
this.env.get(ScannerSet).add((await this.env.load(MdnsService)).client);
|
|
58
58
|
}
|
|
59
59
|
|
|
60
60
|
if (this.state.ble === undefined) {
|
|
61
61
|
this.state.ble = (await this.agent.load(NetworkServer)).state.ble;
|
|
62
62
|
}
|
|
63
63
|
if (this.state.ble !== false) {
|
|
64
|
-
this.env.get(ScannerSet).add(Ble.get().
|
|
64
|
+
this.env.get(ScannerSet).add(Ble.get().scanner);
|
|
65
65
|
}
|
|
66
66
|
|
|
67
67
|
// Configure management of controlled fabrics
|
|
@@ -118,7 +118,7 @@ export class ControllerBehavior extends Behavior {
|
|
|
118
118
|
}
|
|
119
119
|
}
|
|
120
120
|
if (this.state.ble) {
|
|
121
|
-
netInterfaces.add(Ble.get().
|
|
121
|
+
netInterfaces.add(Ble.get().centralInterface);
|
|
122
122
|
}
|
|
123
123
|
|
|
124
124
|
// Install handler to receive data reports for subscriptions
|
|
@@ -166,7 +166,7 @@ export class ControllerBehavior extends Behavior {
|
|
|
166
166
|
}
|
|
167
167
|
|
|
168
168
|
#enableScanningForScanner(scanner: Scanner) {
|
|
169
|
-
if (!(scanner instanceof
|
|
169
|
+
if (!(scanner instanceof MdnsClient)) {
|
|
170
170
|
return;
|
|
171
171
|
}
|
|
172
172
|
scanner.targetCriteriaProviders.add(this.internal.mdnsTargetCriteria);
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
import { Environment, Environmental } from "#general";
|
|
8
|
-
import {
|
|
8
|
+
import { MdnsClient, MdnsScannerTargetCriteria, Scanner, ScannerSet } from "#protocol";
|
|
9
9
|
import type { Discovery } from "./Discovery.js";
|
|
10
10
|
|
|
11
11
|
/**
|
|
@@ -44,7 +44,7 @@ export class ActiveDiscoveries extends Set<Discovery<any>> {
|
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
#activateCommissionableScanningFor(scanner: Scanner) {
|
|
47
|
-
if (!(scanner instanceof
|
|
47
|
+
if (!(scanner instanceof MdnsClient)) {
|
|
48
48
|
return;
|
|
49
49
|
}
|
|
50
50
|
|
|
@@ -60,7 +60,7 @@ export class ActiveDiscoveries extends Set<Discovery<any>> {
|
|
|
60
60
|
}
|
|
61
61
|
const scanners = this.#env.get(ScannerSet);
|
|
62
62
|
for (const scanner of scanners) {
|
|
63
|
-
if (scanner instanceof
|
|
63
|
+
if (scanner instanceof MdnsClient) {
|
|
64
64
|
scanner.targetCriteriaProviders.delete(this.#mdnsTargetCriteria);
|
|
65
65
|
}
|
|
66
66
|
}
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
import { SubscriptionBehavior } from "#behavior/system/subscription/SubscriptionBehavior.js";
|
|
8
8
|
import {
|
|
9
9
|
Construction,
|
|
10
|
+
Crypto,
|
|
10
11
|
InterfaceType,
|
|
11
12
|
Logger,
|
|
12
13
|
NetInterfaceSet,
|
|
@@ -23,13 +24,14 @@ import type { ServerNode } from "#node/ServerNode.js";
|
|
|
23
24
|
import { NodePeerAddressStore } from "#node/client/NodePeerAddressStore.js";
|
|
24
25
|
import { InteractionServer } from "#node/server/InteractionServer.js";
|
|
25
26
|
import {
|
|
27
|
+
Advertiser,
|
|
26
28
|
Ble,
|
|
29
|
+
BleAdvertiser,
|
|
27
30
|
ChannelManager,
|
|
28
31
|
DeviceAdvertiser,
|
|
29
32
|
DeviceCommissioner,
|
|
30
33
|
ExchangeManager,
|
|
31
|
-
|
|
32
|
-
MdnsInstanceBroadcaster,
|
|
34
|
+
MdnsAdvertiser,
|
|
33
35
|
MdnsService,
|
|
34
36
|
PeerAddressStore,
|
|
35
37
|
PeerSet,
|
|
@@ -58,8 +60,8 @@ function convertNetworkEnvironmentType(type: string | number) {
|
|
|
58
60
|
* Handles network functionality for {@link NodeServer}.
|
|
59
61
|
*/
|
|
60
62
|
export class ServerNetworkRuntime extends NetworkRuntime {
|
|
61
|
-
#
|
|
62
|
-
#
|
|
63
|
+
#mdnsAdvertiser?: MdnsAdvertiser;
|
|
64
|
+
#bleAdvertiser?: BleAdvertiser;
|
|
63
65
|
#bleTransport?: TransportInterface;
|
|
64
66
|
#ipv6UdpInterface?: UdpInterface;
|
|
65
67
|
#observers = new ObserverGroup(this);
|
|
@@ -71,15 +73,17 @@ export class ServerNetworkRuntime extends NetworkRuntime {
|
|
|
71
73
|
}
|
|
72
74
|
|
|
73
75
|
/**
|
|
74
|
-
* Access the MDNS
|
|
76
|
+
* Access the MDNS advertiser for the node.
|
|
75
77
|
*/
|
|
76
|
-
get
|
|
77
|
-
if (!this.#
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
78
|
+
get mdnsAdvertiser() {
|
|
79
|
+
if (!this.#mdnsAdvertiser) {
|
|
80
|
+
const port = this.owner.state.network.operationalPort;
|
|
81
|
+
const options = this.owner.state.commissioning.mdns;
|
|
82
|
+
const crypto = this.owner.env.get(Crypto);
|
|
83
|
+
const { server } = this.owner.env.get(MdnsService);
|
|
84
|
+
this.#mdnsAdvertiser = new MdnsAdvertiser(crypto, server, { ...options, port });
|
|
81
85
|
}
|
|
82
|
-
return this.#
|
|
86
|
+
return this.#mdnsAdvertiser;
|
|
83
87
|
}
|
|
84
88
|
|
|
85
89
|
get networkInterfaceConfiguration(): NetworkInterface[] {
|
|
@@ -109,14 +113,15 @@ export class ServerNetworkRuntime extends NetworkRuntime {
|
|
|
109
113
|
}
|
|
110
114
|
|
|
111
115
|
/**
|
|
112
|
-
* A BLE
|
|
116
|
+
* A BLE advertiser.
|
|
113
117
|
*/
|
|
114
|
-
protected get
|
|
115
|
-
if (this.#
|
|
116
|
-
const
|
|
117
|
-
|
|
118
|
+
protected get bleAdvertiser() {
|
|
119
|
+
if (this.#bleAdvertiser === undefined) {
|
|
120
|
+
const { peripheralInterface } = Ble.get();
|
|
121
|
+
const options = this.owner.state.commissioning.ble;
|
|
122
|
+
this.#bleAdvertiser = new BleAdvertiser(peripheralInterface, options);
|
|
118
123
|
}
|
|
119
|
-
return this.#
|
|
124
|
+
return this.#bleAdvertiser;
|
|
120
125
|
}
|
|
121
126
|
|
|
122
127
|
/**
|
|
@@ -124,7 +129,7 @@ export class ServerNetworkRuntime extends NetworkRuntime {
|
|
|
124
129
|
*/
|
|
125
130
|
protected get bleTransport() {
|
|
126
131
|
if (this.#bleTransport === undefined) {
|
|
127
|
-
this.#bleTransport = Ble.get().
|
|
132
|
+
this.#bleTransport = Ble.get().peripheralInterface;
|
|
128
133
|
}
|
|
129
134
|
return this.#bleTransport;
|
|
130
135
|
}
|
|
@@ -177,7 +182,7 @@ export class ServerNetworkRuntime extends NetworkRuntime {
|
|
|
177
182
|
* Add broadcasters to the {@link DeviceAdvertiser}.
|
|
178
183
|
*/
|
|
179
184
|
protected async addBroadcasters(advertiser: DeviceAdvertiser) {
|
|
180
|
-
await advertiser.
|
|
185
|
+
await advertiser.clearAdvertisers();
|
|
181
186
|
|
|
182
187
|
const isCommissioned = !!this.#commissionedFabrics;
|
|
183
188
|
|
|
@@ -189,23 +194,23 @@ export class ServerNetworkRuntime extends NetworkRuntime {
|
|
|
189
194
|
}
|
|
190
195
|
|
|
191
196
|
if (discoveryCapabilities.onIpNetwork) {
|
|
192
|
-
advertiser.
|
|
197
|
+
advertiser.addAdvertiser(this.mdnsAdvertiser);
|
|
193
198
|
}
|
|
194
199
|
|
|
195
200
|
if (discoveryCapabilities.ble) {
|
|
196
|
-
advertiser.
|
|
201
|
+
advertiser.addAdvertiser(this.bleAdvertiser);
|
|
197
202
|
}
|
|
198
203
|
}
|
|
199
204
|
|
|
200
205
|
/**
|
|
201
206
|
* When the first Fabric gets added we need to enable MDNS broadcasting.
|
|
202
207
|
*/
|
|
203
|
-
|
|
204
|
-
const
|
|
205
|
-
const
|
|
206
|
-
if (!
|
|
207
|
-
logger.debug("Enabling MDNS
|
|
208
|
-
|
|
208
|
+
enableMdnsAdvertising() {
|
|
209
|
+
const device = this.owner.env.get(DeviceAdvertiser);
|
|
210
|
+
const mdnsAdvertiser = this.mdnsAdvertiser;
|
|
211
|
+
if (!device.hasAdvertiser(mdnsAdvertiser)) {
|
|
212
|
+
logger.debug("Enabling MDNS advertising");
|
|
213
|
+
device.addAdvertiser(mdnsAdvertiser);
|
|
209
214
|
}
|
|
210
215
|
}
|
|
211
216
|
|
|
@@ -217,29 +222,28 @@ export class ServerNetworkRuntime extends NetworkRuntime {
|
|
|
217
222
|
endUncommissionedMode() {
|
|
218
223
|
// Ensure MDNS broadcasting are active when the first fabric is added. It might not be active initially if the
|
|
219
224
|
// node was not on an IP network prior to commissioning
|
|
220
|
-
this.
|
|
225
|
+
this.enableMdnsAdvertising();
|
|
221
226
|
|
|
222
|
-
if (this.#
|
|
223
|
-
this.owner.env.runtime.add(this.#
|
|
224
|
-
this.#
|
|
227
|
+
if (this.#bleAdvertiser) {
|
|
228
|
+
this.owner.env.runtime.add(this.#deleteAdvertiser(this.#bleAdvertiser));
|
|
229
|
+
this.#bleAdvertiser = undefined;
|
|
225
230
|
}
|
|
226
231
|
|
|
227
232
|
if (this.#bleTransport) {
|
|
228
|
-
this.owner.env.runtime.add(this.#
|
|
233
|
+
this.owner.env.runtime.add(this.#deleteTransport(this.#bleTransport));
|
|
229
234
|
this.#bleTransport = undefined;
|
|
230
235
|
}
|
|
231
236
|
}
|
|
232
237
|
|
|
233
|
-
async #
|
|
234
|
-
const
|
|
235
|
-
await
|
|
236
|
-
await bleBroadcaster.close();
|
|
238
|
+
async #deleteAdvertiser(advertiser: Advertiser) {
|
|
239
|
+
const device = this.owner.env.get(DeviceAdvertiser);
|
|
240
|
+
await device.deleteAdvertiser(advertiser);
|
|
237
241
|
}
|
|
238
242
|
|
|
239
|
-
async #
|
|
243
|
+
async #deleteTransport(transport: TransportInterface) {
|
|
240
244
|
const transportInterfaces = this.owner.env.get(TransportInterfaceSet);
|
|
241
|
-
transportInterfaces.delete(
|
|
242
|
-
await
|
|
245
|
+
transportInterfaces.delete(transport);
|
|
246
|
+
await transport.close();
|
|
243
247
|
}
|
|
244
248
|
|
|
245
249
|
get #commissionedFabrics() {
|
|
@@ -285,15 +289,20 @@ export class ServerNetworkRuntime extends NetworkRuntime {
|
|
|
285
289
|
// Monitor CommissioningServer to end "uncommissioned" mode when we are commissioned
|
|
286
290
|
this.#observers.on(this.owner.eventsOf(CommissioningServer).commissioned, this.endUncommissionedMode);
|
|
287
291
|
|
|
288
|
-
//
|
|
289
|
-
this
|
|
292
|
+
// Enable MDNS broadcasting if there are fabrics present
|
|
293
|
+
if (this.owner.stateOf(CommissioningServer).commissioned) {
|
|
294
|
+
this.enableMdnsAdvertising();
|
|
295
|
+
}
|
|
290
296
|
}
|
|
291
297
|
|
|
292
298
|
override async [Construction.construct]() {
|
|
293
299
|
await super[Construction.construct]();
|
|
294
300
|
|
|
301
|
+
// Initialize MDNS
|
|
302
|
+
const mdns = await this.owner.env.load(MdnsService);
|
|
303
|
+
|
|
295
304
|
// Initialize ScannerSet
|
|
296
|
-
this.owner.env.get(ScannerSet).add(
|
|
305
|
+
this.owner.env.get(ScannerSet).add(mdns.client);
|
|
297
306
|
this.owner.env.set(PeerAddressStore, new NodePeerAddressStore(this.owner));
|
|
298
307
|
await this.owner.env.load(PeerSet);
|
|
299
308
|
|
|
@@ -317,8 +326,8 @@ export class ServerNetworkRuntime extends NetworkRuntime {
|
|
|
317
326
|
// We kick-off the Advertiser shutdown to prevent re-announces when removing sessions and wait a bit later
|
|
318
327
|
const advertisementShutdown = this.owner.env.has(DeviceAdvertiser)
|
|
319
328
|
? this.owner.env.close(DeviceAdvertiser)
|
|
320
|
-
: this.#
|
|
321
|
-
this.#
|
|
329
|
+
: this.#mdnsAdvertiser?.close();
|
|
330
|
+
this.#mdnsAdvertiser = undefined;
|
|
322
331
|
|
|
323
332
|
await this.owner.prepareRuntimeShutdown();
|
|
324
333
|
|
|
@@ -10,10 +10,10 @@ import { AccessLevel } from "#model";
|
|
|
10
10
|
import { DeviceCommissioner, FailsafeContext, PaseServer, SessionManager } from "#protocol";
|
|
11
11
|
import {
|
|
12
12
|
Command,
|
|
13
|
-
MAXIMUM_COMMISSIONING_TIMEOUT_S,
|
|
14
13
|
MINIMUM_COMMISSIONING_TIMEOUT_S,
|
|
15
14
|
PAKE_PASSCODE_VERIFIER_LENGTH,
|
|
16
|
-
|
|
15
|
+
STANDARD_COMMISSIONING_TIMEOUT_S,
|
|
16
|
+
Status,
|
|
17
17
|
StatusResponseError,
|
|
18
18
|
TlvByteString,
|
|
19
19
|
TlvField,
|
|
@@ -186,14 +186,14 @@ export class AdministratorCommissioningServer extends AdministratorCommissioning
|
|
|
186
186
|
if (commissioningTimeout > this.internal.maximumCommissioningTimeoutS) {
|
|
187
187
|
throw new StatusResponseError(
|
|
188
188
|
`Commissioning timeout must not exceed ${this.internal.maximumCommissioningTimeoutS} seconds.`,
|
|
189
|
-
|
|
189
|
+
Status.InvalidCommand,
|
|
190
190
|
);
|
|
191
191
|
}
|
|
192
192
|
|
|
193
193
|
if (commissioningTimeout < this.internal.minimumCommissioningTimeoutS) {
|
|
194
194
|
throw new StatusResponseError(
|
|
195
195
|
`Commissioning timeout must not be lower then ${this.internal.minimumCommissioningTimeoutS} seconds.`,
|
|
196
|
-
|
|
196
|
+
Status.InvalidCommand,
|
|
197
197
|
);
|
|
198
198
|
}
|
|
199
199
|
|
|
@@ -206,7 +206,7 @@ export class AdministratorCommissioningServer extends AdministratorCommissioning
|
|
|
206
206
|
* This method is used internally when the commissioning window timer expires or the commissioning was completed.
|
|
207
207
|
*/
|
|
208
208
|
#endCommissioning() {
|
|
209
|
-
logger.debug("
|
|
209
|
+
logger.debug("Ending commissioning");
|
|
210
210
|
if (this.internal.commissioningWindowTimeout !== undefined) {
|
|
211
211
|
this.internal.commissioningWindowTimeout.stop();
|
|
212
212
|
this.internal.commissioningWindowTimeout = undefined;
|
|
@@ -264,9 +264,10 @@ export namespace AdministratorCommissioningServer {
|
|
|
264
264
|
minimumCommissioningTimeoutS = MINIMUM_COMMISSIONING_TIMEOUT_S;
|
|
265
265
|
|
|
266
266
|
/**
|
|
267
|
-
*
|
|
267
|
+
* Commissioning beyond the standard 15-minute window is "extended commissioning" and has limitations on
|
|
268
|
+
* advertisement. We default to the standard window.
|
|
268
269
|
*/
|
|
269
|
-
maximumCommissioningTimeoutS =
|
|
270
|
+
maximumCommissioningTimeoutS = STANDARD_COMMISSIONING_TIMEOUT_S;
|
|
270
271
|
}
|
|
271
272
|
|
|
272
273
|
export class State extends AdministratorCommissioningBehavior.State {
|
|
@@ -8,7 +8,7 @@ import { AdministratorCommissioningServer } from "#behaviors/administrator-commi
|
|
|
8
8
|
import { BasicInformationServer } from "#behaviors/basic-information";
|
|
9
9
|
import { AdministratorCommissioning } from "#clusters/administrator-commissioning";
|
|
10
10
|
import { GeneralCommissioning } from "#clusters/general-commissioning";
|
|
11
|
-
import { Logger, MatterFlowError, MaybePromise } from "#general";
|
|
11
|
+
import { Bytes, Diagnostic, Logger, MatterFlowError, MaybePromise } from "#general";
|
|
12
12
|
import type { ServerNode } from "#node/ServerNode.js";
|
|
13
13
|
import { DeviceCommissioner, FabricManager, GroupSession, NodeSession, SecureSession, SessionManager } from "#protocol";
|
|
14
14
|
import { GeneralCommissioningBehavior } from "./GeneralCommissioningBehavior.js";
|
|
@@ -241,7 +241,13 @@ export class GeneralCommissioningServer extends GeneralCommissioningBehavior {
|
|
|
241
241
|
// 5. The Breadcrumb attribute SHALL be reset to zero.
|
|
242
242
|
this.state.breadcrumb = BigInt(0);
|
|
243
243
|
|
|
244
|
-
logger.info(
|
|
244
|
+
logger.info(
|
|
245
|
+
"Commissioned",
|
|
246
|
+
Diagnostic.dict({
|
|
247
|
+
fabric: `${Bytes.toHex(fabric.operationalId)} (#${fabric.fabricIndex})`,
|
|
248
|
+
node: fabric.nodeId.toString(16).padStart(16, "0"),
|
|
249
|
+
}),
|
|
250
|
+
);
|
|
245
251
|
|
|
246
252
|
return SuccessResponse;
|
|
247
253
|
}
|