@matter/protocol 0.12.0-alpha.0-20250101-22e7c1044 → 0.12.0-alpha.0-20250107-af5a068c3
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/cluster/client/ClusterClient.d.ts.map +1 -1
- package/dist/cjs/cluster/client/ClusterClient.js +6 -0
- package/dist/cjs/cluster/client/ClusterClient.js.map +1 -1
- package/dist/cjs/cluster/client/ClusterClientTypes.d.ts +4 -0
- package/dist/cjs/cluster/client/ClusterClientTypes.d.ts.map +1 -1
- package/dist/cjs/codec/MessageCodec.d.ts.map +1 -1
- package/dist/cjs/codec/MessageCodec.js +5 -1
- package/dist/cjs/codec/MessageCodec.js.map +1 -1
- package/dist/cjs/common/Scanner.d.ts +1 -1
- package/dist/cjs/common/Scanner.d.ts.map +1 -1
- package/dist/cjs/peer/ControllerCommissioner.d.ts.map +1 -1
- package/dist/cjs/peer/ControllerCommissioner.js +8 -2
- package/dist/cjs/peer/ControllerCommissioner.js.map +1 -1
- package/dist/cjs/peer/ControllerCommissioningFlow.d.ts +1 -1
- package/dist/cjs/peer/ControllerCommissioningFlow.d.ts.map +1 -1
- package/dist/cjs/peer/ControllerCommissioningFlow.js +5 -1
- package/dist/cjs/peer/ControllerCommissioningFlow.js.map +1 -1
- package/dist/cjs/peer/ControllerDiscovery.d.ts.map +1 -1
- package/dist/cjs/peer/ControllerDiscovery.js +6 -1
- package/dist/cjs/peer/ControllerDiscovery.js.map +1 -1
- package/dist/cjs/protocol/DeviceAdvertiser.d.ts +4 -0
- package/dist/cjs/protocol/DeviceAdvertiser.d.ts.map +1 -1
- package/dist/cjs/protocol/DeviceAdvertiser.js +10 -0
- package/dist/cjs/protocol/DeviceAdvertiser.js.map +1 -1
- package/dist/esm/cluster/client/ClusterClient.d.ts.map +1 -1
- package/dist/esm/cluster/client/ClusterClient.js +6 -0
- package/dist/esm/cluster/client/ClusterClient.js.map +1 -1
- package/dist/esm/cluster/client/ClusterClientTypes.d.ts +4 -0
- package/dist/esm/cluster/client/ClusterClientTypes.d.ts.map +1 -1
- package/dist/esm/codec/MessageCodec.d.ts.map +1 -1
- package/dist/esm/codec/MessageCodec.js +5 -1
- package/dist/esm/codec/MessageCodec.js.map +1 -1
- package/dist/esm/common/Scanner.d.ts +1 -1
- package/dist/esm/common/Scanner.d.ts.map +1 -1
- package/dist/esm/peer/ControllerCommissioner.d.ts.map +1 -1
- package/dist/esm/peer/ControllerCommissioner.js +8 -2
- package/dist/esm/peer/ControllerCommissioner.js.map +1 -1
- package/dist/esm/peer/ControllerCommissioningFlow.d.ts +1 -1
- package/dist/esm/peer/ControllerCommissioningFlow.d.ts.map +1 -1
- package/dist/esm/peer/ControllerCommissioningFlow.js +5 -1
- package/dist/esm/peer/ControllerCommissioningFlow.js.map +1 -1
- package/dist/esm/peer/ControllerDiscovery.d.ts.map +1 -1
- package/dist/esm/peer/ControllerDiscovery.js +6 -1
- package/dist/esm/peer/ControllerDiscovery.js.map +1 -1
- package/dist/esm/protocol/DeviceAdvertiser.d.ts +4 -0
- package/dist/esm/protocol/DeviceAdvertiser.d.ts.map +1 -1
- package/dist/esm/protocol/DeviceAdvertiser.js +10 -0
- package/dist/esm/protocol/DeviceAdvertiser.js.map +1 -1
- package/package.json +7 -7
- package/src/cluster/client/ClusterClient.ts +6 -0
- package/src/cluster/client/ClusterClientTypes.ts +8 -0
- package/src/codec/MessageCodec.ts +5 -1
- package/src/common/Scanner.ts +1 -1
- package/src/peer/ControllerCommissioner.ts +18 -11
- package/src/peer/ControllerCommissioningFlow.ts +13 -3
- package/src/peer/ControllerDiscovery.ts +5 -1
- package/src/protocol/DeviceAdvertiser.ts +14 -0
|
@@ -142,7 +142,10 @@ export class ControllerCommissioningFlow {
|
|
|
142
142
|
#interactionClient: InteractionClient;
|
|
143
143
|
readonly #ca: CertificateAuthority;
|
|
144
144
|
readonly #fabric: Fabric;
|
|
145
|
-
readonly #transitionToCase: (
|
|
145
|
+
readonly #transitionToCase: (
|
|
146
|
+
peerAddress: PeerAddress,
|
|
147
|
+
supportsConcurrentConnections: boolean,
|
|
148
|
+
) => Promise<InteractionClient | undefined>;
|
|
146
149
|
readonly #commissioningOptions: ControllerCommissioningFlowOptions;
|
|
147
150
|
readonly #commissioningSteps = new Array<CommissioningStep>();
|
|
148
151
|
readonly #commissioningStepResults = new Map<string, CommissioningStepResult>();
|
|
@@ -168,7 +171,10 @@ export class ControllerCommissioningFlow {
|
|
|
168
171
|
commissioningOptions: ControllerCommissioningFlowOptions,
|
|
169
172
|
|
|
170
173
|
/** Callback that establishes CASE connection or handles final commissioning */
|
|
171
|
-
transitionToCase: (
|
|
174
|
+
transitionToCase: (
|
|
175
|
+
peerAddress: PeerAddress,
|
|
176
|
+
supportsConcurrentConnections: boolean,
|
|
177
|
+
) => Promise<InteractionClient | undefined>,
|
|
172
178
|
) {
|
|
173
179
|
this.#interactionClient = interactionClient;
|
|
174
180
|
this.#ca = ca;
|
|
@@ -1144,7 +1150,11 @@ export class ControllerCommissioningFlow {
|
|
|
1144
1150
|
*/
|
|
1145
1151
|
async #reconnectWithDevice() {
|
|
1146
1152
|
logger.debug("Reconnecting with device ...");
|
|
1147
|
-
const transitionResult = await this.#transitionToCase(
|
|
1153
|
+
const transitionResult = await this.#transitionToCase(
|
|
1154
|
+
this.#interactionClient.address,
|
|
1155
|
+
// Assume concurrent connections are supported if not know (which should not be the case when we came here)
|
|
1156
|
+
this.#collectedCommissioningData.supportsConcurrentConnection ?? true,
|
|
1157
|
+
);
|
|
1148
1158
|
|
|
1149
1159
|
if (transitionResult === undefined) {
|
|
1150
1160
|
logger.debug("CASE commissioning handled externally, terminating commissioning flow");
|
|
@@ -43,7 +43,11 @@ export class ControllerDiscovery {
|
|
|
43
43
|
logger.info(`Start Discovering devices using identifier ${Logger.toJSON(identifier)} ...`);
|
|
44
44
|
|
|
45
45
|
const scanResults = scanners.map(async scanner => {
|
|
46
|
-
const foundDevices = await scanner.findCommissionableDevices(
|
|
46
|
+
const foundDevices = await scanner.findCommissionableDevices(
|
|
47
|
+
identifier,
|
|
48
|
+
timeoutSeconds,
|
|
49
|
+
scanner.type === "ble", // Force rediscovery for BLE
|
|
50
|
+
);
|
|
47
51
|
logger.info(`Found ${foundDevices.length} devices using identifier ${Logger.toJSON(identifier)}`);
|
|
48
52
|
if (foundDevices.length === 0) {
|
|
49
53
|
throw new CommissioningError(
|
|
@@ -39,6 +39,7 @@ export class DeviceAdvertiser {
|
|
|
39
39
|
readonly #context: DeviceAdvertiserContext;
|
|
40
40
|
readonly #broadcasters = new Set<InstanceBroadcaster>();
|
|
41
41
|
readonly #timedOut = AsyncObservable<[]>();
|
|
42
|
+
readonly #operationalModeEnabled = new AsyncObservable<[]>();
|
|
42
43
|
readonly #operationalModeEnded = new AsyncObservable<[]>();
|
|
43
44
|
readonly #observers = new ObserverGroup();
|
|
44
45
|
#interval: Timer;
|
|
@@ -103,6 +104,13 @@ export class DeviceAdvertiser {
|
|
|
103
104
|
return this.#operationalModeEnded;
|
|
104
105
|
}
|
|
105
106
|
|
|
107
|
+
/**
|
|
108
|
+
* Emitted when the device starts advertising in operational mode.
|
|
109
|
+
*/
|
|
110
|
+
get operationalModeEnabled() {
|
|
111
|
+
return this.#operationalModeEnabled;
|
|
112
|
+
}
|
|
113
|
+
|
|
106
114
|
async enterCommissioningMode(mode: CommissioningMode, deviceData: CommissioningModeInstanceData) {
|
|
107
115
|
this.#commissioningMode = mode;
|
|
108
116
|
for (const broadcaster of this.#broadcasters) {
|
|
@@ -173,6 +181,12 @@ export class DeviceAdvertiser {
|
|
|
173
181
|
}
|
|
174
182
|
|
|
175
183
|
async advertiseFabrics(fabrics: Fabric[], expireCommissioningAnnouncement = false) {
|
|
184
|
+
if (expireCommissioningAnnouncement) {
|
|
185
|
+
// TODO: For real "non-ethernet-only" cases like Wifi or Thread devices this might still be too early.
|
|
186
|
+
// In these cases we might need an option to (re-)create mdns broadcaster just when interface
|
|
187
|
+
// is connected
|
|
188
|
+
await this.#operationalModeEnabled.emit();
|
|
189
|
+
}
|
|
176
190
|
for (const broadcaster of this.#broadcasters) {
|
|
177
191
|
await broadcaster.setFabrics(fabrics, expireCommissioningAnnouncement);
|
|
178
192
|
await broadcaster.announce();
|