@matter/protocol 0.16.0-alpha.0-20251104-8c3166ea3 → 0.16.0-alpha.0-20251107-6bcb5baf4
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/action/client/ClientInteraction.d.ts +1 -0
- package/dist/cjs/action/client/ClientInteraction.d.ts.map +1 -1
- package/dist/cjs/action/client/ClientInteraction.js +3 -0
- package/dist/cjs/action/client/ClientInteraction.js.map +1 -1
- package/dist/cjs/action/client/subscription/ClientSubscriptionHandler.js +2 -4
- package/dist/cjs/action/client/subscription/ClientSubscriptionHandler.js.map +1 -1
- package/dist/cjs/advertisement/PairingHintBitmap.d.ts +2 -2
- package/dist/cjs/advertisement/PairingHintBitmap.js +1 -1
- package/dist/cjs/advertisement/PairingHintBitmap.js.map +1 -1
- package/dist/cjs/advertisement/mdns/CommissionableMdnsAdvertisement.d.ts.map +1 -1
- package/dist/cjs/advertisement/mdns/CommissionableMdnsAdvertisement.js +22 -4
- package/dist/cjs/advertisement/mdns/CommissionableMdnsAdvertisement.js.map +1 -1
- package/dist/cjs/certificate/index.d.ts +1 -0
- package/dist/cjs/certificate/index.d.ts.map +1 -1
- package/dist/cjs/certificate/index.js +1 -0
- package/dist/cjs/certificate/index.js.map +1 -1
- package/dist/cjs/certificate/kinds/Icac.d.ts +2 -0
- package/dist/cjs/certificate/kinds/Icac.d.ts.map +1 -1
- package/dist/cjs/certificate/kinds/Icac.js +9 -0
- package/dist/cjs/certificate/kinds/Icac.js.map +1 -1
- package/dist/cjs/certificate/kinds/Noc.d.ts +2 -0
- package/dist/cjs/certificate/kinds/Noc.d.ts.map +1 -1
- package/dist/cjs/certificate/kinds/Noc.js +9 -0
- package/dist/cjs/certificate/kinds/Noc.js.map +1 -1
- package/dist/cjs/certificate/kinds/OperationalBase.d.ts +6 -1
- package/dist/cjs/certificate/kinds/OperationalBase.d.ts.map +1 -1
- package/dist/cjs/certificate/kinds/OperationalBase.js +14 -0
- package/dist/cjs/certificate/kinds/OperationalBase.js.map +1 -1
- package/dist/cjs/certificate/kinds/Rcac.d.ts +2 -0
- package/dist/cjs/certificate/kinds/Rcac.d.ts.map +1 -1
- package/dist/cjs/certificate/kinds/Rcac.js +9 -0
- package/dist/cjs/certificate/kinds/Rcac.js.map +1 -1
- package/dist/cjs/certificate/kinds/Vvsc.d.ts +29 -0
- package/dist/cjs/certificate/kinds/Vvsc.d.ts.map +1 -0
- package/dist/cjs/certificate/kinds/Vvsc.js +79 -0
- package/dist/cjs/certificate/kinds/Vvsc.js.map +6 -0
- package/dist/cjs/certificate/kinds/X509Base.d.ts +10 -3
- package/dist/cjs/certificate/kinds/X509Base.d.ts.map +1 -1
- package/dist/cjs/certificate/kinds/X509Base.js +304 -13
- package/dist/cjs/certificate/kinds/X509Base.js.map +2 -2
- package/dist/cjs/certificate/kinds/definitions/asn.d.ts +15 -0
- package/dist/cjs/certificate/kinds/definitions/asn.d.ts.map +1 -1
- package/dist/cjs/certificate/kinds/definitions/asn.js +33 -21
- package/dist/cjs/certificate/kinds/definitions/asn.js.map +2 -2
- package/dist/cjs/certificate/kinds/definitions/operational.d.ts +121 -12
- package/dist/cjs/certificate/kinds/definitions/operational.d.ts.map +1 -1
- package/dist/cjs/certificate/kinds/definitions/operational.js +8 -2
- package/dist/cjs/certificate/kinds/definitions/operational.js.map +1 -1
- package/dist/cjs/certificate/kinds/index.d.ts +1 -0
- package/dist/cjs/certificate/kinds/index.d.ts.map +1 -1
- package/dist/cjs/certificate/kinds/index.js +1 -0
- package/dist/cjs/certificate/kinds/index.js.map +1 -1
- package/dist/cjs/fabric/Fabric.d.ts +6 -1
- package/dist/cjs/fabric/Fabric.d.ts.map +1 -1
- package/dist/cjs/fabric/Fabric.js +53 -2
- package/dist/cjs/fabric/Fabric.js.map +1 -1
- package/dist/cjs/fabric/FabricManager.d.ts.map +1 -1
- package/dist/cjs/fabric/FabricManager.js +24 -9
- package/dist/cjs/fabric/FabricManager.js.map +1 -1
- package/dist/cjs/mdns/MdnsConsts.d.ts +1 -1
- package/dist/cjs/mdns/MdnsConsts.d.ts.map +1 -1
- package/dist/cjs/mdns/MdnsConsts.js +1 -1
- package/dist/cjs/peer/PhysicalDeviceProperties.d.ts +11 -7
- package/dist/cjs/peer/PhysicalDeviceProperties.d.ts.map +1 -1
- package/dist/cjs/peer/PhysicalDeviceProperties.js +34 -25
- package/dist/cjs/peer/PhysicalDeviceProperties.js.map +1 -1
- package/dist/cjs/protocol/DeviceAdvertiser.d.ts.map +1 -1
- package/dist/cjs/protocol/DeviceAdvertiser.js +17 -0
- package/dist/cjs/protocol/DeviceAdvertiser.js.map +1 -1
- package/dist/esm/action/client/ClientInteraction.d.ts +1 -0
- package/dist/esm/action/client/ClientInteraction.d.ts.map +1 -1
- package/dist/esm/action/client/ClientInteraction.js +3 -0
- package/dist/esm/action/client/ClientInteraction.js.map +1 -1
- package/dist/esm/action/client/subscription/ClientSubscriptionHandler.js +2 -4
- package/dist/esm/action/client/subscription/ClientSubscriptionHandler.js.map +1 -1
- package/dist/esm/advertisement/PairingHintBitmap.d.ts +2 -2
- package/dist/esm/advertisement/PairingHintBitmap.js +1 -1
- package/dist/esm/advertisement/PairingHintBitmap.js.map +1 -1
- package/dist/esm/advertisement/mdns/CommissionableMdnsAdvertisement.d.ts.map +1 -1
- package/dist/esm/advertisement/mdns/CommissionableMdnsAdvertisement.js +22 -4
- package/dist/esm/advertisement/mdns/CommissionableMdnsAdvertisement.js.map +1 -1
- package/dist/esm/certificate/index.d.ts +1 -0
- package/dist/esm/certificate/index.d.ts.map +1 -1
- package/dist/esm/certificate/index.js +1 -0
- package/dist/esm/certificate/index.js.map +1 -1
- package/dist/esm/certificate/kinds/Icac.d.ts +2 -0
- package/dist/esm/certificate/kinds/Icac.d.ts.map +1 -1
- package/dist/esm/certificate/kinds/Icac.js +9 -0
- package/dist/esm/certificate/kinds/Icac.js.map +1 -1
- package/dist/esm/certificate/kinds/Noc.d.ts +2 -0
- package/dist/esm/certificate/kinds/Noc.d.ts.map +1 -1
- package/dist/esm/certificate/kinds/Noc.js +9 -0
- package/dist/esm/certificate/kinds/Noc.js.map +1 -1
- package/dist/esm/certificate/kinds/OperationalBase.d.ts +6 -1
- package/dist/esm/certificate/kinds/OperationalBase.d.ts.map +1 -1
- package/dist/esm/certificate/kinds/OperationalBase.js +16 -2
- package/dist/esm/certificate/kinds/OperationalBase.js.map +1 -1
- package/dist/esm/certificate/kinds/Rcac.d.ts +2 -0
- package/dist/esm/certificate/kinds/Rcac.d.ts.map +1 -1
- package/dist/esm/certificate/kinds/Rcac.js +9 -0
- package/dist/esm/certificate/kinds/Rcac.js.map +1 -1
- package/dist/esm/certificate/kinds/Vvsc.d.ts +29 -0
- package/dist/esm/certificate/kinds/Vvsc.d.ts.map +1 -0
- package/dist/esm/certificate/kinds/Vvsc.js +59 -0
- package/dist/esm/certificate/kinds/Vvsc.js.map +6 -0
- package/dist/esm/certificate/kinds/X509Base.d.ts +10 -3
- package/dist/esm/certificate/kinds/X509Base.d.ts.map +1 -1
- package/dist/esm/certificate/kinds/X509Base.js +308 -14
- package/dist/esm/certificate/kinds/X509Base.js.map +2 -2
- package/dist/esm/certificate/kinds/definitions/asn.d.ts +15 -0
- package/dist/esm/certificate/kinds/definitions/asn.d.ts.map +1 -1
- package/dist/esm/certificate/kinds/definitions/asn.js +33 -21
- package/dist/esm/certificate/kinds/definitions/asn.js.map +1 -1
- package/dist/esm/certificate/kinds/definitions/operational.d.ts +121 -12
- package/dist/esm/certificate/kinds/definitions/operational.d.ts.map +1 -1
- package/dist/esm/certificate/kinds/definitions/operational.js +8 -2
- package/dist/esm/certificate/kinds/definitions/operational.js.map +1 -1
- package/dist/esm/certificate/kinds/index.d.ts +1 -0
- package/dist/esm/certificate/kinds/index.d.ts.map +1 -1
- package/dist/esm/certificate/kinds/index.js +1 -0
- package/dist/esm/certificate/kinds/index.js.map +1 -1
- package/dist/esm/fabric/Fabric.d.ts +6 -1
- package/dist/esm/fabric/Fabric.d.ts.map +1 -1
- package/dist/esm/fabric/Fabric.js +54 -3
- package/dist/esm/fabric/Fabric.js.map +1 -1
- package/dist/esm/fabric/FabricManager.d.ts.map +1 -1
- package/dist/esm/fabric/FabricManager.js +25 -9
- package/dist/esm/fabric/FabricManager.js.map +1 -1
- package/dist/esm/mdns/MdnsConsts.d.ts +1 -1
- package/dist/esm/mdns/MdnsConsts.d.ts.map +1 -1
- package/dist/esm/mdns/MdnsConsts.js +1 -1
- package/dist/esm/peer/PhysicalDeviceProperties.d.ts +11 -7
- package/dist/esm/peer/PhysicalDeviceProperties.d.ts.map +1 -1
- package/dist/esm/peer/PhysicalDeviceProperties.js +35 -26
- package/dist/esm/peer/PhysicalDeviceProperties.js.map +1 -1
- package/dist/esm/protocol/DeviceAdvertiser.d.ts.map +1 -1
- package/dist/esm/protocol/DeviceAdvertiser.js +17 -0
- package/dist/esm/protocol/DeviceAdvertiser.js.map +1 -1
- package/package.json +6 -6
- package/src/action/client/ClientInteraction.ts +5 -1
- package/src/action/client/subscription/ClientSubscriptionHandler.ts +2 -4
- package/src/advertisement/PairingHintBitmap.ts +1 -1
- package/src/advertisement/mdns/CommissionableMdnsAdvertisement.ts +23 -6
- package/src/certificate/index.ts +1 -0
- package/src/certificate/kinds/Icac.ts +12 -0
- package/src/certificate/kinds/Noc.ts +12 -0
- package/src/certificate/kinds/OperationalBase.ts +18 -3
- package/src/certificate/kinds/Rcac.ts +12 -0
- package/src/certificate/kinds/Vvsc.ts +72 -0
- package/src/certificate/kinds/X509Base.ts +426 -7
- package/src/certificate/kinds/definitions/asn.ts +50 -24
- package/src/certificate/kinds/definitions/operational.ts +10 -2
- package/src/certificate/kinds/index.ts +1 -0
- package/src/fabric/Fabric.ts +66 -3
- package/src/fabric/FabricManager.ts +32 -9
- package/src/mdns/MdnsConsts.ts +1 -1
- package/src/peer/PhysicalDeviceProperties.ts +52 -35
- package/src/protocol/DeviceAdvertiser.ts +30 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/fabric/FabricManager.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA;AAAA,EACI;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,OACG;AAEP,SAAS,mBAAmB;AAC5B,SAAS,cAAc;
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["FabricAction"]
|
|
6
6
|
}
|
|
@@ -15,7 +15,7 @@ export declare const DEFAULT_PAIRING_HINT: {
|
|
|
15
15
|
powerCycle: boolean;
|
|
16
16
|
deviceManual: boolean;
|
|
17
17
|
};
|
|
18
|
-
export declare const PAIRING_HINTS_REQUIRING_INSTRUCTION: ("powerCycle" | "deviceManufacturerUrl" | "administrator" | "settingsMenuOnNode" | "customInstruction" | "deviceManual" | "pressResetButton" | "pressResetButtonWithApplicationOfPower" | "
|
|
18
|
+
export declare const PAIRING_HINTS_REQUIRING_INSTRUCTION: ("powerCycle" | "deviceManufacturerUrl" | "administrator" | "settingsMenuOnNode" | "customInstruction" | "deviceManual" | "pressResetButton" | "pressResetButtonWithApplicationOfPower" | "pressResetButtonForNumberOfSeconds" | "pressResetButtonUntilLightBlinks" | "pressResetButtonForNumberOfSecondsWithApplicationOfPower" | "pressResetButtonUntilLightBlinksWithApplicationOfPower" | "pressResetButtonNumberOfTimes" | "pressSetupButton" | "pressSetupButtonWithApplicationOfPower" | "pressSetupButtonForNumberOfSeconds" | "pressSetupButtonUntilLightBlinks" | "pressSetupButtonForNumberOfSecondsWithApplicationOfPower" | "pressSetupButtonUntilLightBlinksWithApplicationOfPower" | "pressSetupButtonNumberOfTimes")[];
|
|
19
19
|
export declare const getFabricQname: (operationalIdString: string) => string;
|
|
20
20
|
export declare const getOperationalDeviceQname: (operationalIdString: string, nodeIdString: string) => string;
|
|
21
21
|
export declare const getVendorQname: (vendorId: VendorId) => string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MdnsConsts.d.ts","sourceRoot":"","sources":["../../../src/mdns/MdnsConsts.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAElC,eAAO,MAAM,mBAAmB,gBAAgB,CAAC;AACjD,eAAO,MAAM,mBAAmB,aAAa,CAAC;AAC9C,eAAO,MAAM,mBAAmB,OAAO,CAAC;AAExC,eAAO,MAAM,uBAAuB,iCAAiC,CAAC;AACtE,eAAO,MAAM,+BAA+B,wBAAwB,CAAC;AACrE,eAAO,MAAM,iCAAiC,wBAAwB,CAAC;AACvE,eAAO,MAAM,oBAAoB,uBAAuB,CAAC;AAEzD,eAAO,MAAM,oBAAoB;;;CAGhC,CAAC;AAEF,eAAO,MAAM,mCAAmC,
|
|
1
|
+
{"version":3,"file":"MdnsConsts.d.ts","sourceRoot":"","sources":["../../../src/mdns/MdnsConsts.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAElC,eAAO,MAAM,mBAAmB,gBAAgB,CAAC;AACjD,eAAO,MAAM,mBAAmB,aAAa,CAAC;AAC9C,eAAO,MAAM,mBAAmB,OAAO,CAAC;AAExC,eAAO,MAAM,uBAAuB,iCAAiC,CAAC;AACtE,eAAO,MAAM,+BAA+B,wBAAwB,CAAC;AACrE,eAAO,MAAM,iCAAiC,wBAAwB,CAAC;AACvE,eAAO,MAAM,oBAAoB,uBAAuB,CAAC;AAEzD,eAAO,MAAM,oBAAoB;;;CAGhC,CAAC;AAEF,eAAO,MAAM,mCAAmC,wsBAY/C,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,qBAAqB,MAAM,WAA4D,CAAC;AACvH,eAAO,MAAM,yBAAyB,GAAI,qBAAqB,MAAM,EAAE,cAAc,MAAM,WACvB,CAAC;AACrE,eAAO,MAAM,cAAc,GAAI,UAAU,QAAQ,WAA4D,CAAC;AAC9G,eAAO,MAAM,kBAAkB,GAAI,YAAY,MAAM,WAA8D,CAAC;AACpH,eAAO,MAAM,0BAA0B,GAAI,oBAAoB,MAAM,WACA,CAAC;AACtE,eAAO,MAAM,yBAAyB,GAAI,mBAAmB,MAAM,WACC,CAAC;AACrE,eAAO,MAAM,yBAAyB,cAAsD,CAAC;AAC7F,eAAO,MAAM,4BAA4B,GAAI,YAAY,MAAM,WAAuD,CAAC;AACvH,eAAO,MAAM,0BAA0B,GAAI,YAAY,MAAM,WAAyD,CAAC"}
|
|
@@ -16,7 +16,7 @@ const DEFAULT_PAIRING_HINT = {
|
|
|
16
16
|
};
|
|
17
17
|
const PAIRING_HINTS_REQUIRING_INSTRUCTION = Array(
|
|
18
18
|
"customInstruction",
|
|
19
|
-
"
|
|
19
|
+
"pressResetButtonForNumberOfSeconds",
|
|
20
20
|
"pressResetButtonUntilLightBlinks",
|
|
21
21
|
"pressResetButtonForNumberOfSecondsWithApplicationOfPower",
|
|
22
22
|
"pressResetButtonUntilLightBlinksWithApplicationOfPower",
|
|
@@ -3,24 +3,28 @@
|
|
|
3
3
|
* Copyright 2022-2025 Matter.js Authors
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
+
import { Duration } from "#general";
|
|
6
7
|
export interface PhysicalDeviceProperties {
|
|
7
8
|
threadConnected: boolean;
|
|
8
9
|
wifiConnected: boolean;
|
|
9
10
|
ethernetConnected: boolean;
|
|
10
11
|
rootEndpointServerList: number[];
|
|
12
|
+
isMainsPowered: boolean;
|
|
11
13
|
isBatteryPowered: boolean;
|
|
12
14
|
isIntermittentlyConnected: boolean;
|
|
13
15
|
isThreadSleepyEndDevice: boolean;
|
|
14
16
|
}
|
|
15
17
|
export declare namespace PhysicalDeviceProperties {
|
|
16
|
-
function
|
|
18
|
+
function subscriptionIntervalBoundsFor(options?: {
|
|
17
19
|
properties?: PhysicalDeviceProperties;
|
|
18
20
|
description?: string;
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
21
|
+
request?: Partial<PhysicalDeviceProperties.IntervalBounds>;
|
|
22
|
+
}): PhysicalDeviceProperties.IntervalBounds;
|
|
23
|
+
}
|
|
24
|
+
export declare namespace PhysicalDeviceProperties {
|
|
25
|
+
interface IntervalBounds {
|
|
26
|
+
minIntervalFloor: Duration;
|
|
27
|
+
maxIntervalCeiling: Duration;
|
|
28
|
+
}
|
|
25
29
|
}
|
|
26
30
|
//# sourceMappingURL=PhysicalDeviceProperties.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PhysicalDeviceProperties.d.ts","sourceRoot":"","sources":["../../../src/peer/PhysicalDeviceProperties.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"PhysicalDeviceProperties.d.ts","sourceRoot":"","sources":["../../../src/peer/PhysicalDeviceProperties.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAqC,MAAM,UAAU,CAAC;AAWvE,MAAM,WAAW,wBAAwB;IACrC,eAAe,EAAE,OAAO,CAAC;IACzB,aAAa,EAAE,OAAO,CAAC;IACvB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,sBAAsB,EAAE,MAAM,EAAE,CAAC;IACjC,cAAc,EAAE,OAAO,CAAC;IACxB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,yBAAyB,EAAE,OAAO,CAAC;IACnC,uBAAuB,EAAE,OAAO,CAAC;CACpC;AAED,yBAAiB,wBAAwB,CAAC;IACtC,SAAgB,6BAA6B,CAAC,OAAO,CAAC,EAAE;QACpD,UAAU,CAAC,EAAE,wBAAwB,CAAC;QACtC,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,OAAO,CAAC,EAAE,OAAO,CAAC,wBAAwB,CAAC,cAAc,CAAC,CAAC;KAC9D,GAAG,wBAAwB,CAAC,cAAc,CAuD1C;CACJ;AAED,yBAAiB,wBAAwB,CAAC;IACtC,UAAiB,cAAc;QAC3B,gBAAgB,EAAE,QAAQ,CAAC;QAC3B,kBAAkB,EAAE,QAAQ,CAAC;KAChC;CACJ"}
|
|
@@ -3,50 +3,59 @@
|
|
|
3
3
|
* Copyright 2022-2025 Matter.js Authors
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
import { Logger } from "#general";
|
|
6
|
+
import { Duration, Instant, Logger, Minutes, Seconds } from "#general";
|
|
7
7
|
const logger = Logger.get("PhysicalDeviceProperties");
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
const
|
|
8
|
+
const DEFAULT_SUBSCRIPTION_FLOOR_DEFAULT = Seconds(1);
|
|
9
|
+
const DEFAULT_SUBSCRIPTION_FLOOR_ICD = Instant;
|
|
10
|
+
const DEFAULT_SUBSCRIPTION_CEILING_WIFI = Minutes(1);
|
|
11
|
+
const DEFAULT_SUBSCRIPTION_CEILING_THREAD = Minutes(1);
|
|
12
|
+
const DEFAULT_SUBSCRIPTION_CEILING_THREAD_SLEEPY = Minutes(3);
|
|
13
|
+
const DEFAULT_SUBSCRIPTION_CEILING_BATTERY_POWERED = Minutes(10);
|
|
14
14
|
var PhysicalDeviceProperties;
|
|
15
15
|
((PhysicalDeviceProperties2) => {
|
|
16
|
-
function
|
|
17
|
-
const { properties } = options ?? {};
|
|
18
|
-
let {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
}
|
|
16
|
+
function subscriptionIntervalBoundsFor(options) {
|
|
17
|
+
const { properties, request } = options ?? {};
|
|
18
|
+
let { description } = options ?? {};
|
|
19
|
+
let minIntervalFloor, maxIntervalCeiling;
|
|
20
|
+
if (request) {
|
|
21
|
+
({ minIntervalFloor, maxIntervalCeiling } = request);
|
|
22
|
+
}
|
|
23
23
|
if (description === void 0) {
|
|
24
24
|
description = "Node";
|
|
25
25
|
}
|
|
26
|
-
const {
|
|
26
|
+
const {
|
|
27
|
+
isMainsPowered,
|
|
28
|
+
isBatteryPowered,
|
|
29
|
+
isIntermittentlyConnected,
|
|
30
|
+
threadConnected,
|
|
31
|
+
isThreadSleepyEndDevice
|
|
32
|
+
} = properties ?? {};
|
|
27
33
|
if (isIntermittentlyConnected) {
|
|
28
|
-
if (
|
|
34
|
+
if (minIntervalFloor !== void 0 && minIntervalFloor !== DEFAULT_SUBSCRIPTION_FLOOR_ICD) {
|
|
29
35
|
logger.info(
|
|
30
|
-
`${description}: Overwriting minIntervalFloorSeconds for intermittently connected device to ${
|
|
36
|
+
`${description}: Overwriting minIntervalFloorSeconds for intermittently connected device to ${Duration.format(DEFAULT_SUBSCRIPTION_FLOOR_ICD)}`
|
|
31
37
|
);
|
|
32
|
-
|
|
38
|
+
minIntervalFloor = DEFAULT_SUBSCRIPTION_FLOOR_ICD;
|
|
33
39
|
}
|
|
34
40
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
41
|
+
if (minIntervalFloor === void 0) {
|
|
42
|
+
minIntervalFloor = DEFAULT_SUBSCRIPTION_FLOOR_DEFAULT;
|
|
43
|
+
}
|
|
44
|
+
const defaultCeiling = isBatteryPowered && !isMainsPowered ? DEFAULT_SUBSCRIPTION_CEILING_BATTERY_POWERED : isThreadSleepyEndDevice ? DEFAULT_SUBSCRIPTION_CEILING_THREAD_SLEEPY : threadConnected ? DEFAULT_SUBSCRIPTION_CEILING_THREAD : DEFAULT_SUBSCRIPTION_CEILING_WIFI;
|
|
45
|
+
if (maxIntervalCeiling === void 0) {
|
|
46
|
+
maxIntervalCeiling = defaultCeiling;
|
|
38
47
|
}
|
|
39
|
-
if (
|
|
48
|
+
if (maxIntervalCeiling < defaultCeiling) {
|
|
40
49
|
logger.debug(
|
|
41
|
-
`${description}: maxIntervalCeilingSeconds ideally is ${defaultCeiling}s instead of ${
|
|
50
|
+
`${description}: maxIntervalCeilingSeconds ideally is ${defaultCeiling}s instead of ${maxIntervalCeiling}s due to device type`
|
|
42
51
|
);
|
|
43
52
|
}
|
|
44
53
|
return {
|
|
45
|
-
|
|
46
|
-
|
|
54
|
+
minIntervalFloor,
|
|
55
|
+
maxIntervalCeiling
|
|
47
56
|
};
|
|
48
57
|
}
|
|
49
|
-
PhysicalDeviceProperties2.
|
|
58
|
+
PhysicalDeviceProperties2.subscriptionIntervalBoundsFor = subscriptionIntervalBoundsFor;
|
|
50
59
|
})(PhysicalDeviceProperties || (PhysicalDeviceProperties = {}));
|
|
51
60
|
export {
|
|
52
61
|
PhysicalDeviceProperties
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/peer/PhysicalDeviceProperties.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,UAAU,SAAS,QAAQ,SAAS,eAAe;AAE5D,MAAM,SAAS,OAAO,IAAI,0BAA0B;AAEpD,MAAM,qCAAqC,QAAQ,CAAC;AACpD,MAAM,iCAAiC;AACvC,MAAM,oCAAoC,QAAQ,CAAC;AACnD,MAAM,sCAAsC,QAAQ,CAAC;AACrD,MAAM,6CAA6C,QAAQ,CAAC;AAC5D,MAAM,+CAA+C,QAAQ,EAAE;AAaxD,IAAU;AAAA,CAAV,CAAUA,8BAAV;AACI,WAAS,8BAA8B,SAIF;AACxC,UAAM,EAAE,YAAY,QAAQ,IAAI,WAAW,CAAC;AAE5C,QAAI,EAAE,YAAY,IAAI,WAAW,CAAC;AAElC,QAAI,kBAAkB;AACtB,QAAI,SAAS;AACT,OAAC,EAAE,kBAAkB,mBAAmB,IAAI;AAAA,IAChD;AAEA,QAAI,gBAAgB,QAAW;AAC3B,oBAAc;AAAA,IAClB;AAEA,UAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ,IAAI,cAAc,CAAC;AAEnB,QAAI,2BAA2B;AAC3B,UAAI,qBAAqB,UAAa,qBAAqB,gCAAgC;AACvF,eAAO;AAAA,UACH,GAAG,WAAW,gFAAgF,SAAS,OAAO,8BAA8B,CAAC;AAAA,QACjJ;AACA,2BAAmB;AAAA,MACvB;AAAA,IACJ;AACA,QAAI,qBAAqB,QAAW;AAChC,yBAAmB;AAAA,IACvB;AAEA,UAAM,iBACF,oBAAoB,CAAC,iBACf,+CACA,0BACE,6CACA,kBACE,sCACA;AACd,QAAI,uBAAuB,QAAW;AAClC,2BAAqB;AAAA,IACzB;AACA,QAAI,qBAAqB,gBAAgB;AACrC,aAAO;AAAA,QACH,GAAG,WAAW,0CAA0C,cAAc,gBAAgB,kBAAkB;AAAA,MAC5G;AAAA,IACJ;AAEA,WAAO;AAAA,MACH;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AA3DO,EAAAA,0BAAS;AAAA,GADH;",
|
|
5
5
|
"names": ["PhysicalDeviceProperties"]
|
|
6
6
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeviceAdvertiser.d.ts","sourceRoot":"","sources":["../../../src/protocol/DeviceAdvertiser.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAE1E,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,aAAa,EAA+C,MAAM,UAAU,CAAC;AAEnG,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAI5D;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACpC,OAAO,EAAE,aAAa,CAAC;IACvB,QAAQ,EAAE,cAAc,CAAC;CAC5B;AAED;;GAEG;AACH,qBAAa,gBAAgB;;gBAQb,OAAO,EAAE,uBAAuB;
|
|
1
|
+
{"version":3,"file":"DeviceAdvertiser.d.ts","sourceRoot":"","sources":["../../../src/protocol/DeviceAdvertiser.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAE1E,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,aAAa,EAA+C,MAAM,UAAU,CAAC;AAEnG,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAI5D;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACpC,OAAO,EAAE,aAAa,CAAC;IACvB,QAAQ,EAAE,cAAc,CAAC;CAC5B;AAED;;GAEG;AACH,qBAAa,gBAAgB;;gBAQb,OAAO,EAAE,uBAAuB;IA4G5C,QAAQ;IAIR,MAAM,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,WAAW;IAS9C;;OAEG;IACH,sBAAsB,CAAC,WAAW,EAAE,kBAAkB,CAAC,cAAc;IAsBrE;;OAEG;IACH,qBAAqB;IASrB;;OAEG;IACH,oBAAoB;IA+BpB;;OAEG;IACH,mBAAmB;IAUnB;;;;OAIG;IACH,oBAAoB;IAKd,KAAK;IAMX,aAAa,CAAC,UAAU,EAAE,UAAU;IAIpC,aAAa,CAAC,UAAU,EAAE,UAAU;IAI9B,gBAAgB,CAAC,UAAU,EAAE,UAAU;IAKvC,gBAAgB;CA6BzB"}
|
|
@@ -25,6 +25,23 @@ class DeviceAdvertiser {
|
|
|
25
25
|
}
|
|
26
26
|
this.#advertiseFabric(fabric, "startup");
|
|
27
27
|
});
|
|
28
|
+
this.#observers.on(fabrics.events.updated, async (fabric) => {
|
|
29
|
+
if (!this.#isOperational) {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
const fabricIndexAdvertisements = this.#advertisements(
|
|
33
|
+
(ad) => ad.isOperational() && ad.description.fabric.fabricIndex === fabric.fabricIndex
|
|
34
|
+
);
|
|
35
|
+
if (fabricIndexAdvertisements.every(
|
|
36
|
+
(ad) => ad.isOperational() && ad.description.fabric.operationalId === fabric.operationalId && ad.description.fabric.nodeId === fabric.nodeId
|
|
37
|
+
)) {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
for (const ad of fabricIndexAdvertisements) {
|
|
41
|
+
await ad.close();
|
|
42
|
+
}
|
|
43
|
+
this.#advertiseFabric(fabric, "startup");
|
|
44
|
+
});
|
|
28
45
|
this.#observers.on(fabrics.events.deleted, (fabric) => {
|
|
29
46
|
Advertisement.cancelAll(this.#advertisements((ad) => ad.isOperational() && ad.description.fabric === fabric));
|
|
30
47
|
});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/protocol/DeviceAdvertiser.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,qBAAqB;AAE9B,SAAS,0BAA0B;AAEnC,SAAS,qBAAqB;AAC9B,SAAsB,eAAe,QAAQ,sBAAsB,qBAAqB;AAExF,SAAS,sBAAsB;AAE/B,MAAM,SAAS,OAAO,IAAI,kBAAkB;AAarC,MAAM,iBAAiB;AAAA,EAC1B;AAAA,EACA,eAAe,oBAAI,IAAgB;AAAA,EACnC,aAAa,IAAI,cAAc;AAAA,EAC/B,iBAAiB;AAAA,EACjB,aAAa;AAAA,EACb;AAAA,EAEA,YAAY,SAAkC;AAC1C,SAAK,WAAW;AAChB,UAAM,EAAE,SAAS,SAAS,IAAI,KAAK;AAGnC,SAAK,WAAW,GAAG,QAAQ,OAAO,OAAO,YAAU;AAC/C,UAAI,CAAC,KAAK,gBAAgB;AACtB;AAAA,MACJ;AAEA,WAAK,iBAAiB,QAAQ,SAAS;AAAA,IAC3C,CAAC;AAGD,SAAK,WAAW,GAAG,QAAQ,OAAO,SAAS,YAAU;AACjD,oBAAc,UAAU,KAAK,gBAAgB,QAAM,GAAG,cAAc,KAAK,GAAG,YAAY,WAAW,MAAM,CAAC;AAAA,IAC9G,CAAC;AAID,SAAK,WAAW,GAAG,SAAS,SAAS,OAAO,aAAW;AACnD,YAAM,cAAc,QAAQ,QAAQ;AACpC,YAAM,SAAS,cAAc,QAAQ,YAAY,WAAW,IAAI;AAChE,UAAI,CAAC,QAAQ;AACT;AAAA,MACJ;AAEA,iBAAW,cAAc,KAAK,cAAc;AACxC,cAAM,KAAK,WAAW,uBAAuB,MAAM;AACnD,YAAI,IAAI;AACJ,aAAG,iBAAiB;AAAA,QACxB;AAAA,MACJ;AAAA,IACJ,CAAC;AAGD,SAAK,WAAW,GAAG,SAAS,SAAS,SAAS,aAAW;AACrD,YAAM,cAAc,QAAQ,QAAQ;AACpC,YAAM,SAAS,cAAc,QAAQ,YAAY,WAAW,IAAI;AAGhE,UAAI,QAAQ;AACR,YAAI,OAAO,kBAAkB,QAAQ,UAAU,GAAG;AAC9C;AAAA,QACJ;AAEA,mBAAW,cAAc,KAAK,cAAc;AACxC,gBAAM,KAAK,WAAW,uBAAuB,MAAM;AACnD,cAAI,IAAI;AACJ,eAAG,oBAAoB;AAAA,UAC3B;AAAA,QACJ;AAEA;AAAA,MACJ;AAGA,WAAK,iCAAiC;AAAA,IAC1C,CAAC;AAGD,SAAK,WAAW,GAAG,SAAS,OAAO,aAAW;AAC1C,UAAI,CAAC,QAAQ,YAAY,CAAE,QAA0B,QAAQ;AACzD;AAAA,MACJ;AAGA,WAAK,iBAAiB,QAAQ,kBAAkB,YAAY;AAAA,IAChE,CAAC;AAED,SAAK,WAAW,GAAG,KAAK,SAAS,SAAS,sBAAsB,CAAC,SAAS,iBAAiB;AACvF,UAAI,KAAK,kBAAkB,aAAa,oBAAoB,QAAQ,WAAW,QAAW;AACtF,eAAO,MAAM,4CAA4C;AACzD,aAAK,iBAAiB,QAAQ,QAAQ,WAAW;AAAA,MACrD;AAAA,IACJ,CAAC;AAAA,EACL;AAAA,EAEA,WAAW;AACP,WAAO;AAAA,EACX;AAAA,EAEA,QAAQ,cAAc,MAAM,EAAE,KAAkB;AAC5C,UAAM,WAAW,IAAI,iBAAiB;AAAA,MAClC,SAAS,IAAI,IAAI,aAAa;AAAA,MAC9B,UAAU,IAAI,IAAI,cAAc;AAAA,IACpC,CAAC;AACD,QAAI,IAAI,kBAAkB,QAAQ;AAClC,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA,EAKA,uBAAuB,aAAgD;AACnE,SAAK,wBAAwB;AAC7B,SAAK,iCAAiC;AAAA,EAC1C;AAAA;AAAA;AAAA;AAAA,EAKA,mCAAmC;AAC/B,QAAI,KAAK,YAAY;AACjB;AAAA,IACJ;AAEA,QAAI,KAAK,0BAA0B,QAAW;AAC1C;AAAA,IACJ;AAEA,eAAW,cAAc,KAAK,cAAc;AACxC,iBAAW,UAAU,KAAK,uBAAuB,SAAS;AAAA,IAC9D;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA,EAKA,wBAAwB;AACpB,QAAI,CAAC,KAAK,uBAAuB;AAC7B;AAAA,IACJ;AAEA,SAAK,wBAAwB;AAC7B,WAAO,cAAc,SAAS,KAAK,gBAAgB,QAAM,GAAG,gBAAgB,CAAC,CAAC;AAAA,EAClF;AAAA;AAAA;AAAA;AAAA,EAKA,uBAAuB;AACnB,QAAI,KAAK,kBAAkB,KAAK,YAAY;AACxC;AAAA,IACJ;AAEA,SAAK,iBAAiB;AAEtB,SAAK,+BAA+B;AAAA,EACxC;AAAA;AAAA;AAAA;AAAA,EAKA,iCAAiC;AAC7B,QAAI,CAAC,KAAK,kBAAkB,KAAK,YAAY;AACzC;AAAA,IACJ;AAEA,UAAM,oBAAoB,IAAI;AAAA,MAC1B,KAAK,gBAAgB,QAAM,GAAG,cAAc,CAAC,EAAE;AAAA,QAC3C,QAAO,GAAqD,YAAY;AAAA,MAC5E;AAAA,IACJ;AAEA,eAAW,UAAU,KAAK,SAAS,SAAS;AACxC,UAAI,CAAC,kBAAkB,IAAI,MAAM,GAAG;AAChC,aAAK,iBAAiB,QAAQ,SAAS;AAAA,MAC3C;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA,EAKA,sBAAsB;AAClB,QAAI,CAAC,KAAK,gBAAgB;AACtB;AAAA,IACJ;AAEA,SAAK,iBAAiB;AAEtB,kBAAc,UAAU,KAAK,gBAAgB,QAAM,GAAG,cAAc,CAAC,CAAC;AAAA,EAC1E;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,uBAAuB;AACnB,SAAK,iCAAiC;AACtC,SAAK,+BAA+B;AAAA,EACxC;AAAA,EAEA,MAAM,QAAQ;AACV,SAAK,aAAa;AAClB,SAAK,WAAW,MAAM;AACtB,UAAM,KAAK,iBAAiB;AAAA,EAChC;AAAA,EAEA,cAAc,YAAwB;AAClC,WAAO,KAAK,aAAa,IAAI,UAAU;AAAA,EAC3C;AAAA,EAEA,cAAc,YAAwB;AAClC,SAAK,aAAa,IAAI,UAAU;AAAA,EACpC;AAAA,EAEA,MAAM,iBAAiB,YAAwB;AAC3C,SAAK,aAAa,OAAO,UAAU;AACnC,UAAM,WAAW,MAAM;AAAA,EAC3B;AAAA,EAEA,MAAM,mBAAmB;AACrB,UAAM,cAAc,CAAC,GAAG,KAAK,YAAY;AACzC,SAAK,aAAa,MAAM;AACxB,UAAM,qBAAqB,WAAW,YAAY,IAAI,gBAAc,WAAW,MAAM,CAAC,CAAC;AAAA,EAC3F;AAAA,EAEA,iBAAiB,QAAgB,OAAkC;AAC/D,QAAI,KAAK,YAAY;AACjB;AAAA,IACJ;AAEA,eAAW,cAAc,KAAK,cAAc;AACxC,UAAI,UAAU,WAAW;AAGrB,YAAI,KAAK,SAAS,SAAS,UAAU,MAAM,EAAE,KAAK,aAAW,QAAQ,cAAc,OAAO,CAAC,GAAG;AAC1F,kBAAQ;AAAA,QACZ;AAAA,MACJ;AAEA,iBAAW,UAAU,mBAAmB,YAAY,EAAE,OAAO,CAAC,GAAG,KAAK;AAAA,IAC1E;AAAA,EACJ;AAAA,EAEA,gBAAgB,WAA4C;AACxD,WAAO,CAAC,GAAG,KAAK,YAAY,EAAE;AAAA,MAAQ,gBAClC,YAAY,WAAW,OAAO,SAAS,IAAI,CAAC,GAAG,WAAW,cAAc;AAAA,IAC5E;AAAA,EACJ;AACJ;",
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@matter/protocol",
|
|
3
|
-
"version": "0.16.0-alpha.0-
|
|
3
|
+
"version": "0.16.0-alpha.0-20251107-6bcb5baf4",
|
|
4
4
|
"description": "Low-level APIs for Matter interaction",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"iot",
|
|
@@ -40,13 +40,13 @@
|
|
|
40
40
|
"#*": "./src/*"
|
|
41
41
|
},
|
|
42
42
|
"dependencies": {
|
|
43
|
-
"@matter/general": "0.16.0-alpha.0-
|
|
44
|
-
"@matter/model": "0.16.0-alpha.0-
|
|
45
|
-
"@matter/types": "0.16.0-alpha.0-
|
|
43
|
+
"@matter/general": "0.16.0-alpha.0-20251107-6bcb5baf4",
|
|
44
|
+
"@matter/model": "0.16.0-alpha.0-20251107-6bcb5baf4",
|
|
45
|
+
"@matter/types": "0.16.0-alpha.0-20251107-6bcb5baf4"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
48
|
-
"@matter/tools": "0.16.0-alpha.0-
|
|
49
|
-
"@matter/testing": "0.16.0-alpha.0-
|
|
48
|
+
"@matter/tools": "0.16.0-alpha.0-20251107-6bcb5baf4",
|
|
49
|
+
"@matter/testing": "0.16.0-alpha.0-20251107-6bcb5baf4"
|
|
50
50
|
},
|
|
51
51
|
"files": [
|
|
52
52
|
"dist/**/*",
|
|
@@ -59,7 +59,7 @@ export class ClientInteraction<SessionT extends InteractionSession = Interaction
|
|
|
59
59
|
readonly #exchanges: ExchangeProvider;
|
|
60
60
|
readonly #subscriptions: ClientSubscriptions;
|
|
61
61
|
readonly #interactions = new BasicSet<Read | Write | Invoke | Subscribe>();
|
|
62
|
-
readonly #abort;
|
|
62
|
+
readonly #abort: Abort;
|
|
63
63
|
readonly #sustainRetries: RetrySchedule;
|
|
64
64
|
|
|
65
65
|
constructor({ environment, abort, sustainRetries }: ClientInteractionContext) {
|
|
@@ -72,6 +72,10 @@ export class ClientInteraction<SessionT extends InteractionSession = Interaction
|
|
|
72
72
|
);
|
|
73
73
|
}
|
|
74
74
|
|
|
75
|
+
get session() {
|
|
76
|
+
return this.#exchanges.session;
|
|
77
|
+
}
|
|
78
|
+
|
|
75
79
|
async close() {
|
|
76
80
|
this.#abort();
|
|
77
81
|
|
|
@@ -119,11 +119,9 @@ async function* processReports(
|
|
|
119
119
|
const decoded = DecodedDataReport(report);
|
|
120
120
|
|
|
121
121
|
if (decoded.subscriptionId === undefined) {
|
|
122
|
-
logger.debug(
|
|
123
|
-
"Ignoring data report for incorrect subscription id",
|
|
124
|
-
Diagnostic.strong(decoded.subscriptionId),
|
|
125
|
-
);
|
|
122
|
+
logger.debug("Ignoring data report with missing subscription id");
|
|
126
123
|
await sendInvalid(messenger, decoded.subscriptionId);
|
|
124
|
+
continue;
|
|
127
125
|
}
|
|
128
126
|
|
|
129
127
|
if (decoded.subscriptionId !== subscriptionId) {
|
|
@@ -59,7 +59,7 @@ export const PairingHintBitmap = {
|
|
|
59
59
|
* The Device will enter Commissioning Mode when reset button is pressed for N seconds. The exact value of N SHALL
|
|
60
60
|
* be made available via PI key.
|
|
61
61
|
*/
|
|
62
|
-
|
|
62
|
+
pressResetButtonForNumberOfSeconds: BitFlag(8),
|
|
63
63
|
|
|
64
64
|
/**
|
|
65
65
|
* The Device will enter Commissioning Mode when reset button is pressed until associated light blinks.
|
|
@@ -106,13 +106,30 @@ export class CommissionableMdnsAdvertisement extends MdnsAdvertisement<ServiceDe
|
|
|
106
106
|
#validatePairingInstructions() {
|
|
107
107
|
const { pairingHint, pairingInstructions } = this.description;
|
|
108
108
|
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
109
|
+
if (pairingHint) {
|
|
110
|
+
if (Object.values(pairingHint).every(v => !v)) {
|
|
111
|
+
throw new ImplementationError("At least one pairing hint must be set if pairing hint is provided");
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
const needsInstructionsCount = PAIRING_HINTS_REQUIRING_INSTRUCTION.reduce(
|
|
115
|
+
(count, hint) => (pairingHint[hint] === true ? count + 1 : count),
|
|
116
|
+
0,
|
|
115
117
|
);
|
|
118
|
+
if (needsInstructionsCount > 1) {
|
|
119
|
+
throw new ImplementationError(
|
|
120
|
+
`Only one pairing hint requiring instructions can be set, but got ${needsInstructionsCount}`,
|
|
121
|
+
);
|
|
122
|
+
} else if (needsInstructionsCount === 1 && !pairingInstructions) {
|
|
123
|
+
throw new ImplementationError(
|
|
124
|
+
`Pairing instructions are required when a pairing hint requiring instructions is set`,
|
|
125
|
+
);
|
|
126
|
+
} else if (needsInstructionsCount === 0 && pairingInstructions) {
|
|
127
|
+
throw new ImplementationError(
|
|
128
|
+
`Pairing instructions provided but no pairing hint requiring instructions set`,
|
|
129
|
+
);
|
|
130
|
+
}
|
|
131
|
+
} else if (pairingInstructions) {
|
|
132
|
+
throw new ImplementationError("Pairing instructions provided but no pairing hint set");
|
|
116
133
|
}
|
|
117
134
|
}
|
|
118
135
|
}
|
package/src/certificate/index.ts
CHANGED
|
@@ -11,6 +11,7 @@ import { ExtensionKeyUsageSchema } from "./definitions/base.js";
|
|
|
11
11
|
import { OperationalCertificate } from "./definitions/operational.js";
|
|
12
12
|
import { OperationalBase } from "./OperationalBase.js";
|
|
13
13
|
import { Rcac } from "./Rcac.js";
|
|
14
|
+
import { X509Base } from "./X509Base.js";
|
|
14
15
|
|
|
15
16
|
/**
|
|
16
17
|
* Represents an Intermediate Certificate
|
|
@@ -21,6 +22,12 @@ export class Icac extends OperationalBase<OperationalCertificate.Icac> {
|
|
|
21
22
|
return new Icac(OperationalCertificate.TlvIcac.decode(tlv));
|
|
22
23
|
}
|
|
23
24
|
|
|
25
|
+
/** Construct the class from an ASN.1/DER encoded certificate */
|
|
26
|
+
static fromAsn1(asn1: Bytes): Icac {
|
|
27
|
+
const cert = X509Base.parseAsn1Certificate(asn1);
|
|
28
|
+
return new Icac(cert as OperationalCertificate.Icac);
|
|
29
|
+
}
|
|
30
|
+
|
|
24
31
|
/** Validates all basic certificate fields on construction. */
|
|
25
32
|
protected validateFields() {
|
|
26
33
|
const {
|
|
@@ -88,6 +95,11 @@ export class Icac extends OperationalBase<OperationalCertificate.Icac> {
|
|
|
88
95
|
throw new CertificateError(`Ica certificate must not contain a caseAuthenticatedTags.`);
|
|
89
96
|
}
|
|
90
97
|
|
|
98
|
+
// The subject DN SHALL NOT encode any matter-vvs-id attribute.
|
|
99
|
+
if ("vvsId" in subject) {
|
|
100
|
+
throw new CertificateError(`Ica certificate must not contain a vvsId.`);
|
|
101
|
+
}
|
|
102
|
+
|
|
91
103
|
// When any matter-fabric-id attributes are present in either the Matter Root CA Certificate or the Matter ICA
|
|
92
104
|
// Certificate, the value SHALL match the one present in the Matter Node Operational Certificate (NOC) within
|
|
93
105
|
// the same certificate chain.
|
|
@@ -11,6 +11,7 @@ import { OperationalCertificate } from "./definitions/operational.js";
|
|
|
11
11
|
import { Icac } from "./Icac.js";
|
|
12
12
|
import { OperationalBase } from "./OperationalBase.js";
|
|
13
13
|
import { Rcac } from "./Rcac.js";
|
|
14
|
+
import { X509Base } from "./X509Base.js";
|
|
14
15
|
|
|
15
16
|
export class Noc extends OperationalBase<OperationalCertificate.Noc> {
|
|
16
17
|
/** Construct the class from a Tlv version of the certificate */
|
|
@@ -18,6 +19,12 @@ export class Noc extends OperationalBase<OperationalCertificate.Noc> {
|
|
|
18
19
|
return new Noc(OperationalCertificate.TlvNoc.decode(tlv));
|
|
19
20
|
}
|
|
20
21
|
|
|
22
|
+
/** Construct the class from an ASN.1/DER encoded certificate */
|
|
23
|
+
static fromAsn1(asn1: Bytes) {
|
|
24
|
+
const cert = X509Base.parseAsn1Certificate(asn1);
|
|
25
|
+
return new Noc(cert as OperationalCertificate.Noc);
|
|
26
|
+
}
|
|
27
|
+
|
|
21
28
|
/** Validates all basic certificate fields on construction. */
|
|
22
29
|
protected validateFields() {
|
|
23
30
|
const {
|
|
@@ -89,6 +96,11 @@ export class Noc extends OperationalBase<OperationalCertificate.Noc> {
|
|
|
89
96
|
throw new CertificateError(`Noc certificate must not contain an rcacId.`);
|
|
90
97
|
}
|
|
91
98
|
|
|
99
|
+
// The subject DN SHALL NOT encode any matter-vvs-id attribute.
|
|
100
|
+
if ("vvsId" in subject) {
|
|
101
|
+
throw new CertificateError(`Noc certificate must not contain a vvsId.`);
|
|
102
|
+
}
|
|
103
|
+
|
|
92
104
|
// The subject DN MAY encode at most three matter-noc-cat attributes.
|
|
93
105
|
if (caseAuthenticatedTags !== undefined) {
|
|
94
106
|
CaseAuthenticatedTag.validateNocTagList(caseAuthenticatedTags); // throws ValidationError
|
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import { Bytes, Logger, Time } from "#general";
|
|
7
|
+
import { Bytes, DerBitString, DerCodec, Logger, Time, X962 } from "#general";
|
|
8
8
|
import { X509Base } from "./X509Base.js";
|
|
9
|
-
import { CertificateError, Unsigned } from "./common.js";
|
|
9
|
+
import { assertCertificateDerSize, CertificateError, Unsigned } from "./common.js";
|
|
10
10
|
import { X509Certificate } from "./definitions/base.js";
|
|
11
11
|
|
|
12
12
|
const logger = Logger.get("OperationalBaseCertificate");
|
|
@@ -24,7 +24,22 @@ export abstract class OperationalBase<CT extends X509Certificate> extends X509Ba
|
|
|
24
24
|
protected abstract validateFields(): void;
|
|
25
25
|
|
|
26
26
|
/** Encodes the signed certificate into the Matter TLV format. */
|
|
27
|
-
abstract asSignedTlv(
|
|
27
|
+
abstract asSignedTlv(): Bytes;
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Returns the signed certificate in ASN.1 DER format.
|
|
31
|
+
* If the certificate is not signed, it throws a CertificateError.
|
|
32
|
+
*/
|
|
33
|
+
asSignedAsn1() {
|
|
34
|
+
const certificate = this.genericBuildAsn1Structure(this.cert);
|
|
35
|
+
const certBytes = DerCodec.encode({
|
|
36
|
+
certificate,
|
|
37
|
+
signAlgorithm: X962.EcdsaWithSHA256,
|
|
38
|
+
signature: DerBitString(this.signature),
|
|
39
|
+
});
|
|
40
|
+
assertCertificateDerSize(certBytes);
|
|
41
|
+
return certBytes;
|
|
42
|
+
}
|
|
28
43
|
|
|
29
44
|
/**
|
|
30
45
|
* Verifies general requirements a Matter certificate fields must fulfill.
|
|
@@ -10,6 +10,7 @@ import { CertificateError } from "./common.js";
|
|
|
10
10
|
import { ExtensionKeyUsageSchema } from "./definitions/base.js";
|
|
11
11
|
import { OperationalCertificate } from "./definitions/operational.js";
|
|
12
12
|
import { OperationalBase } from "./OperationalBase.js";
|
|
13
|
+
import { X509Base } from "./X509Base.js";
|
|
13
14
|
|
|
14
15
|
export class Rcac extends OperationalBase<OperationalCertificate.Rcac> {
|
|
15
16
|
/** Construct the class from a Tlv version of the certificate */
|
|
@@ -17,6 +18,12 @@ export class Rcac extends OperationalBase<OperationalCertificate.Rcac> {
|
|
|
17
18
|
return new Rcac(OperationalCertificate.TlvRcac.decode(tlv));
|
|
18
19
|
}
|
|
19
20
|
|
|
21
|
+
/** Construct the class from an ASN.1/DER encoded certificate */
|
|
22
|
+
static fromAsn1(asn1: Bytes): Rcac {
|
|
23
|
+
const cert = X509Base.parseAsn1Certificate(asn1);
|
|
24
|
+
return new Rcac(cert as OperationalCertificate.Rcac);
|
|
25
|
+
}
|
|
26
|
+
|
|
20
27
|
/** Validates all basic certificate fields on construction. */
|
|
21
28
|
protected validateFields() {
|
|
22
29
|
const {
|
|
@@ -79,6 +86,11 @@ export class Rcac extends OperationalBase<OperationalCertificate.Rcac> {
|
|
|
79
86
|
throw new CertificateError(`Root certificate must not contain a caseAuthenticatedTags.`);
|
|
80
87
|
}
|
|
81
88
|
|
|
89
|
+
// The subject DN SHALL NOT encode any matter-vsc-id attribute.
|
|
90
|
+
if ("vvsId" in subject) {
|
|
91
|
+
throw new CertificateError(`Root certificate must not contain a vvsId.`);
|
|
92
|
+
}
|
|
93
|
+
|
|
82
94
|
// The basic constraints extension SHALL be encoded with is-ca set to true.
|
|
83
95
|
if (basicConstraints.isCa !== true) {
|
|
84
96
|
throw new CertificateError(`Root certificate must have isCa set to true.`);
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { Bytes, Crypto, Diagnostic } from "#general";
|
|
8
|
+
import { CertificateError } from "./common.js";
|
|
9
|
+
import { OperationalCertificate } from "./definitions/operational.js";
|
|
10
|
+
import { OperationalBase } from "./OperationalBase.js";
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Represents an Vendor Verification Signer Certificate
|
|
14
|
+
*/
|
|
15
|
+
export class Vvsc extends OperationalBase<OperationalCertificate.Vvsc> {
|
|
16
|
+
/** Construct the class from a Tlv version of the certificate */
|
|
17
|
+
static fromTlv(tlv: Bytes): Vvsc {
|
|
18
|
+
return new Vvsc(OperationalCertificate.TlvVvsc.decode(tlv));
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/** Validates all basic certificate fields on construction. */
|
|
22
|
+
protected validateFields() {
|
|
23
|
+
const {
|
|
24
|
+
extensions: {
|
|
25
|
+
basicConstraints: { isCa },
|
|
26
|
+
},
|
|
27
|
+
} = this.cert;
|
|
28
|
+
if (!isCa) {
|
|
29
|
+
throw new CertificateError("Intermediate certificate must be a CA.");
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Encodes the certificate with the signature as Matter Tlv.
|
|
35
|
+
* If the certificate is not signed, it throws a CertificateError.
|
|
36
|
+
*/
|
|
37
|
+
asSignedTlv() {
|
|
38
|
+
return OperationalCertificate.TlvVvsc.encode({ ...this.cert, signature: this.signature });
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Verify requirements a Matter Intermediate CA certificate must fulfill.
|
|
43
|
+
* Rules for this are listed in @see {@link MatterSpecification.v12.Core} §6.5.x
|
|
44
|
+
* // TODO ADD Verification once we know more about the chain
|
|
45
|
+
*/
|
|
46
|
+
async verify(_crypto: Crypto) {
|
|
47
|
+
this.generalVerify();
|
|
48
|
+
|
|
49
|
+
const { subject } = this.cert;
|
|
50
|
+
const { vvsId } = subject;
|
|
51
|
+
|
|
52
|
+
// The subject DN SHALL encode exactly one matter-vvs-id attribute.
|
|
53
|
+
if (vvsId === undefined || Array.isArray(vvsId)) {
|
|
54
|
+
throw new CertificateError(`Invalid vvsId in Vsc certificate: ${Diagnostic.json(vvsId)}`);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// The subject DN SHALL NOT encode any matter-node-id attribute.
|
|
58
|
+
if ("nodeId" in subject) {
|
|
59
|
+
throw new CertificateError(`Vsc certificate must not contain a nodeId.`);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// The subject DN SHALL NOT encode any matter-fabric-id attribute.
|
|
63
|
+
if ("fabricId" in subject) {
|
|
64
|
+
throw new CertificateError(`Vsc certificate must not contain a fabricId.`);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
// The subject DN SHALL NOT encode any matter-noc-cat attribute.
|
|
68
|
+
if ("caseAuthenticatedTags" in subject) {
|
|
69
|
+
throw new CertificateError(`Vvsc certificate must not contain a caseAuthenticatedTags.`);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|