@matter/protocol 0.16.0-alpha.0-20250810-5c91a95d2 → 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/ble/BleConsts.d.ts +2 -1
- package/dist/cjs/ble/BleConsts.d.ts.map +1 -1
- package/dist/cjs/ble/BleConsts.js +3 -1
- package/dist/cjs/ble/BleConsts.js.map +1 -1
- package/dist/cjs/mdns/MdnsServer.d.ts.map +1 -1
- package/dist/cjs/mdns/MdnsServer.js +10 -22
- package/dist/cjs/mdns/MdnsServer.js.map +1 -1
- package/dist/cjs/protocol/ProtocolHandler.d.ts +4 -0
- package/dist/cjs/protocol/ProtocolHandler.d.ts.map +1 -1
- package/dist/cjs/protocol/ProtocolStatusMessage.d.ts +8 -4
- package/dist/cjs/protocol/ProtocolStatusMessage.d.ts.map +1 -1
- package/dist/cjs/protocol/ProtocolStatusMessage.js +23 -8
- package/dist/cjs/protocol/ProtocolStatusMessage.js.map +1 -1
- package/dist/cjs/securechannel/SecureChannelMessenger.js +2 -2
- package/dist/cjs/securechannel/SecureChannelMessenger.js.map +1 -1
- package/dist/cjs/securechannel/SecureChannelProtocol.js +1 -1
- package/dist/cjs/securechannel/SecureChannelProtocol.js.map +1 -1
- package/dist/cjs/securechannel/SecureChannelStatusMessageSchema.d.ts +3 -3
- package/dist/cjs/securechannel/SecureChannelStatusMessageSchema.d.ts.map +1 -1
- package/dist/cjs/securechannel/SecureChannelStatusMessageSchema.js +3 -3
- package/dist/cjs/securechannel/SecureChannelStatusMessageSchema.js.map +1 -1
- package/dist/esm/ble/BleConsts.d.ts +2 -1
- package/dist/esm/ble/BleConsts.d.ts.map +1 -1
- package/dist/esm/ble/BleConsts.js +3 -1
- package/dist/esm/ble/BleConsts.js.map +1 -1
- package/dist/esm/mdns/MdnsServer.d.ts.map +1 -1
- package/dist/esm/mdns/MdnsServer.js +10 -22
- package/dist/esm/mdns/MdnsServer.js.map +1 -1
- package/dist/esm/protocol/ProtocolHandler.d.ts +4 -0
- package/dist/esm/protocol/ProtocolHandler.d.ts.map +1 -1
- package/dist/esm/protocol/ProtocolStatusMessage.d.ts +8 -4
- package/dist/esm/protocol/ProtocolStatusMessage.d.ts.map +1 -1
- package/dist/esm/protocol/ProtocolStatusMessage.js +24 -9
- package/dist/esm/protocol/ProtocolStatusMessage.js.map +1 -1
- package/dist/esm/securechannel/SecureChannelMessenger.js +3 -3
- package/dist/esm/securechannel/SecureChannelMessenger.js.map +1 -1
- package/dist/esm/securechannel/SecureChannelProtocol.js +2 -2
- package/dist/esm/securechannel/SecureChannelProtocol.js.map +1 -1
- package/dist/esm/securechannel/SecureChannelStatusMessageSchema.d.ts +3 -3
- package/dist/esm/securechannel/SecureChannelStatusMessageSchema.d.ts.map +1 -1
- package/dist/esm/securechannel/SecureChannelStatusMessageSchema.js +3 -3
- package/dist/esm/securechannel/SecureChannelStatusMessageSchema.js.map +1 -1
- package/package.json +6 -6
- package/src/ble/BleConsts.ts +2 -1
- package/src/mdns/MdnsServer.ts +9 -26
- package/src/mdns/MdnsSocket.ts +1 -1
- package/src/protocol/ProtocolHandler.ts +7 -0
- package/src/protocol/ProtocolStatusMessage.ts +26 -10
- package/src/securechannel/SecureChannelMessenger.ts +3 -3
- package/src/securechannel/SecureChannelProtocol.ts +2 -2
- package/src/securechannel/SecureChannelStatusMessageSchema.ts +3 -3
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
/** @see {@link MatterSpecification.v11.Core} § 4.17.3.2 */
|
|
7
|
-
export declare const
|
|
7
|
+
export declare const BLE_MATTER_SERVICE_UUID_SHORT = "fff6";
|
|
8
|
+
export declare const BLE_MATTER_SERVICE_UUID = "0000FFF6-0000-1000-8000-00805F9B34FB";
|
|
8
9
|
export declare const BLE_MATTER_C1_CHARACTERISTIC_UUID = "18EE2EF5-263D-4559-959F-4F9C429F9D11";
|
|
9
10
|
export declare const BLE_MATTER_C2_CHARACTERISTIC_UUID = "18EE2EF5-263D-4559-959F-4F9C429F9D12";
|
|
10
11
|
export declare const BLE_MATTER_C3_CHARACTERISTIC_UUID = "64630238-8772-45F2-B87D-748A83218F04";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BleConsts.d.ts","sourceRoot":"","sources":["../../../src/ble/BleConsts.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,2DAA2D;AAC3D,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"BleConsts.d.ts","sourceRoot":"","sources":["../../../src/ble/BleConsts.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,2DAA2D;AAC3D,eAAO,MAAM,6BAA6B,SAAS,CAAC;AACpD,eAAO,MAAM,uBAAuB,yCAAyC,CAAC;AAC9E,eAAO,MAAM,iCAAiC,yCAAyC,CAAC;AACxF,eAAO,MAAM,iCAAiC,yCAAyC,CAAC;AACxF,eAAO,MAAM,iCAAiC,yCAAyC,CAAC;AAExF,eAAO,MAAM,mBAAmB,KAAK,CAAC;AACtC,eAAO,MAAM,mBAAmB,MAAM,CAAC;AAEvC,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAE3C;;;GAGG;AACH,eAAO,MAAM,uBAAuB,OAAQ,CAAC;AAE7C,mGAAmG;AACnG,eAAO,MAAM,kBAAkB,QAAS,CAAC;AAEzC,eAAO,MAAM,uBAAuB,QAAyB,CAAC;AAE9D;;;GAGG;AACH,eAAO,MAAM,qBAAqB,QAAS,CAAC;AAE5C;;;GAGG;AACH,eAAO,MAAM,2BAA2B,QAAuB,CAAC"}
|
|
@@ -22,6 +22,7 @@ __export(BleConsts_exports, {
|
|
|
22
22
|
BLE_MATTER_C2_CHARACTERISTIC_UUID: () => BLE_MATTER_C2_CHARACTERISTIC_UUID,
|
|
23
23
|
BLE_MATTER_C3_CHARACTERISTIC_UUID: () => BLE_MATTER_C3_CHARACTERISTIC_UUID,
|
|
24
24
|
BLE_MATTER_SERVICE_UUID: () => BLE_MATTER_SERVICE_UUID,
|
|
25
|
+
BLE_MATTER_SERVICE_UUID_SHORT: () => BLE_MATTER_SERVICE_UUID_SHORT,
|
|
25
26
|
BLE_MAXIMUM_BTP_MTU: () => BLE_MAXIMUM_BTP_MTU,
|
|
26
27
|
BLE_MAX_MATTER_PAYLOAD_SIZE: () => BLE_MAX_MATTER_PAYLOAD_SIZE,
|
|
27
28
|
BLE_MINIMUM_ATT_MTU: () => BLE_MINIMUM_ATT_MTU,
|
|
@@ -38,7 +39,8 @@ var import_general = require("#general");
|
|
|
38
39
|
* Copyright 2022-2025 Matter.js Authors
|
|
39
40
|
* SPDX-License-Identifier: Apache-2.0
|
|
40
41
|
*/
|
|
41
|
-
const
|
|
42
|
+
const BLE_MATTER_SERVICE_UUID_SHORT = "fff6";
|
|
43
|
+
const BLE_MATTER_SERVICE_UUID = "0000FFF6-0000-1000-8000-00805F9B34FB";
|
|
42
44
|
const BLE_MATTER_C1_CHARACTERISTIC_UUID = "18EE2EF5-263D-4559-959F-4F9C429F9D11";
|
|
43
45
|
const BLE_MATTER_C2_CHARACTERISTIC_UUID = "18EE2EF5-263D-4559-959F-4F9C429F9D12";
|
|
44
46
|
const BLE_MATTER_C3_CHARACTERISTIC_UUID = "64630238-8772-45F2-B87D-748A83218F04";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/ble/BleConsts.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,qBAAqC;AANrC;AAAA;AAAA;AAAA;AAAA;AASO,MAAM,0BAA0B;AAChC,MAAM,oCAAoC;AAC1C,MAAM,oCAAoC;AAC1C,MAAM,oCAAoC;AAE1C,MAAM,sBAAsB;AAC5B,MAAM,sBAAsB;AAE5B,MAAM,0BAA0B;AAMhC,MAAM,0BAA0B;AAGhC,MAAM,qBAAqB;AAE3B,MAAM,0BAA0B,qBAAqB;AAMrD,MAAM,wBAAwB;AAM9B,MAAM,8BAA8B;",
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,qBAAqC;AANrC;AAAA;AAAA;AAAA;AAAA;AASO,MAAM,gCAAgC;AACtC,MAAM,0BAA0B;AAChC,MAAM,oCAAoC;AAC1C,MAAM,oCAAoC;AAC1C,MAAM,oCAAoC;AAE1C,MAAM,sBAAsB;AAC5B,MAAM,sBAAsB;AAE5B,MAAM,0BAA0B;AAMhC,MAAM,0BAA0B;AAGhC,MAAM,qBAAqB;AAE3B,MAAM,0BAA0B,qBAAqB;AAMrD,MAAM,wBAAwB;AAM9B,MAAM,8BAA8B;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MdnsServer.d.ts","sourceRoot":"","sources":["../../../src/mdns/MdnsServer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAGH,SAAS,EAKT,uBAAuB,EAG1B,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAI7C,qBAAa,UAAU;;
|
|
1
|
+
{"version":3,"file":"MdnsServer.d.ts","sourceRoot":"","sources":["../../../src/mdns/MdnsServer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAGH,SAAS,EAKT,uBAAuB,EAG1B,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAI7C,qBAAa,UAAU;;gBAwBP,MAAM,EAAE,UAAU;IAK9B,IAAI,OAAO,+BAEV;IAED,IAAI,YAAY,YAEf;IAED,iBAAiB,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM;IAgGjF,SAAS,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE;IAgB/B,mBAAmB,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE;IAyBzC,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC,eAAe;IAW1E,KAAK;CAkBd;AAED,yBAAiB,UAAU,CAAC;IACxB,UAAiB,eAAe;QAC5B,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,uBAAuB,GAAG,SAAS,EAAE,CAAC;KAC/D;CACJ"}
|
|
@@ -47,7 +47,6 @@ class MdnsServer {
|
|
|
47
47
|
15 * 60 * 1e3
|
|
48
48
|
);
|
|
49
49
|
#recordLastSentAsMulticastAnswer = /* @__PURE__ */ new Map();
|
|
50
|
-
#recordLastSentAsUnicastAnswer = /* @__PURE__ */ new Map();
|
|
51
50
|
#socket;
|
|
52
51
|
constructor(socket) {
|
|
53
52
|
this.#socket = socket;
|
|
@@ -92,25 +91,19 @@ class MdnsServer {
|
|
|
92
91
|
let uniCastResponse = queries.filter((query) => !query.uniCastResponse).length === 0;
|
|
93
92
|
const answersTimeSinceLastSent = answers.map((answer) => ({
|
|
94
93
|
timeSinceLastMultiCast: now - (this.#recordLastSentAsMulticastAnswer.get(this.buildDnsRecordKey(answer, sourceIntf)) ?? 0),
|
|
95
|
-
|
|
96
|
-
ttl: answer.ttl
|
|
94
|
+
ttl: answer.ttl * 1e3
|
|
97
95
|
}));
|
|
98
|
-
if (uniCastResponse && answersTimeSinceLastSent.some(
|
|
99
|
-
({ timeSinceLastMultiCast, ttl }) => timeSinceLastMultiCast > ttl / 4 * 1e3
|
|
100
|
-
)) {
|
|
96
|
+
if (uniCastResponse && answersTimeSinceLastSent.some(({ timeSinceLastMultiCast, ttl }) => timeSinceLastMultiCast > ttl / 4)) {
|
|
101
97
|
uniCastResponse = false;
|
|
102
98
|
}
|
|
103
99
|
if (!uniCastResponse) {
|
|
104
|
-
answers = answers.filter(
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
(answer) => this.#recordLastSentAsMulticastAnswer.set(this.buildDnsRecordKey(answer, sourceIntf), now)
|
|
100
|
+
answers = answers.filter(
|
|
101
|
+
(_, index) => answersTimeSinceLastSent[index].timeSinceLastMultiCast >= 900
|
|
102
|
+
// The last time sent as multicast was more than 900 ms ago
|
|
108
103
|
);
|
|
109
|
-
} else {
|
|
110
|
-
answers = answers.filter((_, index) => answersTimeSinceLastSent[index].timeSinceLastUniCast > 1e3);
|
|
111
104
|
if (answers.length === 0) continue;
|
|
112
105
|
answers.forEach(
|
|
113
|
-
(answer) => this.#
|
|
106
|
+
(answer) => this.#recordLastSentAsMulticastAnswer.set(this.buildDnsRecordKey(answer, sourceIntf), now)
|
|
114
107
|
);
|
|
115
108
|
}
|
|
116
109
|
this.#socket.send(
|
|
@@ -173,26 +166,21 @@ class MdnsServer {
|
|
|
173
166
|
}),
|
|
174
167
|
"Error happened when expiring MDNS announcements"
|
|
175
168
|
).catch((error) => logger.error(error));
|
|
176
|
-
await this.#resetServices(
|
|
169
|
+
await this.#resetServices();
|
|
177
170
|
}
|
|
178
171
|
async setRecordsGenerator(service, generator) {
|
|
179
172
|
await this.#records.clear();
|
|
180
173
|
this.#recordLastSentAsMulticastAnswer.clear();
|
|
181
|
-
this.#recordLastSentAsUnicastAnswer.clear();
|
|
182
174
|
this.#recordsGenerator.set(service, generator);
|
|
183
175
|
}
|
|
184
|
-
async #resetServices(
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
this.#recordLastSentAsMulticastAnswer.delete(service);
|
|
188
|
-
this.#recordLastSentAsUnicastAnswer.delete(service);
|
|
189
|
-
}
|
|
176
|
+
async #resetServices() {
|
|
177
|
+
await this.#records.clear();
|
|
178
|
+
this.#recordLastSentAsMulticastAnswer.clear();
|
|
190
179
|
}
|
|
191
180
|
async close() {
|
|
192
181
|
this.#observers.close();
|
|
193
182
|
await this.#records.close();
|
|
194
183
|
this.#recordLastSentAsMulticastAnswer.clear();
|
|
195
|
-
this.#recordLastSentAsUnicastAnswer.clear();
|
|
196
184
|
}
|
|
197
185
|
#getMulticastInterfacesForAnnounce() {
|
|
198
186
|
const { netInterface } = this.#socket;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/mdns/MdnsServer.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,qBAWO;AAjBP;AAAA;AAAA;AAAA;AAAA;AAoBA,MAAM,SAAS,sBAAO,IAAI,YAAY;AAE/B,MAAM,WAAW;AAAA,EACpB,aAAa,IAAI,6BAAc;AAAA,EAC/B,oBAAoB,oBAAI,IAAwC;AAAA,EACvD,WAAW,IAAI;AAAA,IACpB;AAAA,IACA,OAAO,uBAA+B;AAClC,YAAM,iBAAiB,oBAAI,IAA8B;AACzD,YAAM,QAAQ,MAAM,KAAK,QAAQ,SAAS,kBAAkB;AAC5D,UAAI,UAAU,QAAW;AACrB,eAAO;AAAA,MACX;AAEA,iBAAW,CAAC,SAAS,SAAS,KAAK,KAAK,mBAAmB;AACvD,uBAAe,IAAI,SAAS,UAAU,oBAAoB,KAAK,CAAC;AAAA,MACpE;AAEA,aAAO;AAAA,IACX;AAAA,IACA,KAAK,KAAK;AAAA,EACd;AAAA,EACS,mCAAmC,oBAAI,IAAoB;AAAA,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -6,9 +6,13 @@
|
|
|
6
6
|
import { Message } from "../codec/MessageCodec.js";
|
|
7
7
|
import { MessageExchange } from "./MessageExchange.js";
|
|
8
8
|
export interface ProtocolHandler {
|
|
9
|
+
/** Protocol ID that this handler implements */
|
|
9
10
|
readonly id: number;
|
|
11
|
+
/** Indicates whether this protocol requires a secure session to be established before it can be used */
|
|
10
12
|
readonly requiresSecureSession: boolean;
|
|
13
|
+
/** Called on a new exchange that uses this protocol. The message is the first message of the exchange. */
|
|
11
14
|
onNewExchange(exchange: MessageExchange, message: Message): Promise<void>;
|
|
15
|
+
/** Called when the protocol handler is no longer needed and can clean up resources. */
|
|
12
16
|
close(): Promise<void>;
|
|
13
17
|
}
|
|
14
18
|
//# sourceMappingURL=ProtocolHandler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProtocolHandler.d.ts","sourceRoot":"","sources":["../../../src/protocol/ProtocolHandler.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,MAAM,WAAW,eAAe;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"ProtocolHandler.d.ts","sourceRoot":"","sources":["../../../src/protocol/ProtocolHandler.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,MAAM,WAAW,eAAe;IAC5B,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAEpB,wGAAwG;IACxG,QAAQ,CAAC,qBAAqB,EAAE,OAAO,CAAC;IAExC,0GAA0G;IAC1G,aAAa,CAAC,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1E,uFAAuF;IACvF,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B"}
|
|
@@ -3,18 +3,22 @@
|
|
|
3
3
|
* Copyright 2022-2025 Matter.js Authors
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
import { GeneralStatusCode, Schema } from "#types";
|
|
6
|
+
import { GeneralStatusCode, Schema, VendorId } from "#types";
|
|
7
7
|
export type ProtocolStatusMessage<T> = {
|
|
8
8
|
generalStatus: GeneralStatusCode;
|
|
9
9
|
protocolId: number;
|
|
10
|
+
vendorId: VendorId;
|
|
10
11
|
protocolStatus: T;
|
|
11
12
|
protocolData?: Uint8Array;
|
|
12
13
|
};
|
|
13
14
|
export declare abstract class ProtocolStatusMessageSchema<T extends ProtocolStatusMessage<any>> extends Schema<T, Uint8Array> {
|
|
14
15
|
#private;
|
|
15
|
-
constructor(
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
constructor(protocol: number | {
|
|
17
|
+
protocolId: number;
|
|
18
|
+
vendorId: number;
|
|
19
|
+
}, protocolSpecificDataAllowed?: boolean);
|
|
20
|
+
encode(message: Omit<T, "protocolId" | "vendorId">): Uint8Array;
|
|
21
|
+
encodeInternal({ generalStatus, protocolStatus, protocolId, protocolData, vendorId }: T): Uint8Array<ArrayBuffer>;
|
|
18
22
|
decodeInternal(bytes: Uint8Array): T;
|
|
19
23
|
}
|
|
20
24
|
//# sourceMappingURL=ProtocolStatusMessage.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProtocolStatusMessage.d.ts","sourceRoot":"","sources":["../../../src/protocol/ProtocolStatusMessage.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"ProtocolStatusMessage.d.ts","sourceRoot":"","sources":["../../../src/protocol/ProtocolStatusMessage.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAE7D,MAAM,MAAM,qBAAqB,CAAC,CAAC,IAAI;IACnC,aAAa,EAAE,iBAAiB,CAAC;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,QAAQ,CAAC;IACnB,cAAc,EAAE,CAAC,CAAC;IAClB,YAAY,CAAC,EAAE,UAAU,CAAC;CAC7B,CAAC;AAEF,8BAAsB,2BAA2B,CAAC,CAAC,SAAS,qBAAqB,CAAC,GAAG,CAAC,CAAE,SAAQ,MAAM,CAAC,CAAC,EAAE,UAAU,CAAC;;gBAKrG,QAAQ,EAAE,MAAM,GAAG;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,EAAE,2BAA2B,UAAO;IAYlG,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC,GAAG,UAAU;IAIxE,cAAc,CAAC,EAAE,aAAa,EAAE,cAAc,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,CAAC;IAWvF,cAAc,CAAC,KAAK,EAAE,UAAU,GAeZ,CAAC;CAExB"}
|
|
@@ -30,19 +30,26 @@ var import_types = require("#types");
|
|
|
30
30
|
*/
|
|
31
31
|
class ProtocolStatusMessageSchema extends import_types.Schema {
|
|
32
32
|
#protocolId;
|
|
33
|
+
#vendorId;
|
|
33
34
|
#protocolSpecificDataAllowed;
|
|
34
|
-
constructor(
|
|
35
|
+
constructor(protocol, protocolSpecificDataAllowed = true) {
|
|
35
36
|
super();
|
|
36
|
-
|
|
37
|
+
if (typeof protocol === "number") {
|
|
38
|
+
this.#protocolId = protocol;
|
|
39
|
+
this.#vendorId = 0;
|
|
40
|
+
} else {
|
|
41
|
+
this.#protocolId = protocol.protocolId;
|
|
42
|
+
this.#vendorId = protocol.vendorId;
|
|
43
|
+
}
|
|
37
44
|
this.#protocolSpecificDataAllowed = protocolSpecificDataAllowed;
|
|
38
45
|
}
|
|
39
46
|
encode(message) {
|
|
40
|
-
return super.encode({ ...message, protocolId: this.#protocolId });
|
|
47
|
+
return super.encode({ ...message, protocolId: this.#protocolId, vendorId: this.#vendorId });
|
|
41
48
|
}
|
|
42
|
-
encodeInternal({ generalStatus, protocolStatus, protocolId, protocolData }) {
|
|
49
|
+
encodeInternal({ generalStatus, protocolStatus, protocolId, protocolData, vendorId }) {
|
|
43
50
|
const writer = new import_general.DataWriter(import_general.Endian.Little);
|
|
44
51
|
writer.writeUInt16(generalStatus);
|
|
45
|
-
writer.writeUInt32(protocolId);
|
|
52
|
+
writer.writeUInt32(vendorId << 16 | protocolId);
|
|
46
53
|
writer.writeUInt16(protocolStatus);
|
|
47
54
|
if (this.#protocolSpecificDataAllowed && protocolData !== void 0 && protocolData.length > 0) {
|
|
48
55
|
writer.writeByteArray(protocolData);
|
|
@@ -52,10 +59,18 @@ class ProtocolStatusMessageSchema extends import_types.Schema {
|
|
|
52
59
|
decodeInternal(bytes) {
|
|
53
60
|
const reader = new import_general.DataReader(bytes, import_general.Endian.Little);
|
|
54
61
|
const generalStatus = reader.readUInt16();
|
|
55
|
-
const
|
|
62
|
+
const vendorProtocolId = reader.readUInt32();
|
|
56
63
|
const protocolStatus = reader.readUInt16();
|
|
57
|
-
const
|
|
58
|
-
|
|
64
|
+
const protocolData = reader.remainingBytesCount > 0 ? reader.remainingBytes : void 0;
|
|
65
|
+
const protocolId = vendorProtocolId & 65535;
|
|
66
|
+
const vendorId = (0, import_types.VendorId)(vendorProtocolId >>> 16);
|
|
67
|
+
return {
|
|
68
|
+
generalStatus,
|
|
69
|
+
protocolId,
|
|
70
|
+
protocolStatus,
|
|
71
|
+
protocolData,
|
|
72
|
+
vendorId
|
|
73
|
+
};
|
|
59
74
|
}
|
|
60
75
|
}
|
|
61
76
|
//# sourceMappingURL=ProtocolStatusMessage.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/protocol/ProtocolStatusMessage.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,qBAA+C;AAC/C,
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,qBAA+C;AAC/C,mBAAoD;AAPpD;AAAA;AAAA;AAAA;AAAA;AAiBO,MAAe,oCAA0E,oBAAsB;AAAA,EAClH;AAAA,EACA;AAAA,EACA;AAAA,EAEA,YAAY,UAA6D,8BAA8B,MAAM;AACzG,UAAM;AACN,QAAI,OAAO,aAAa,UAAU;AAC9B,WAAK,cAAc;AACnB,WAAK,YAAY;AAAA,IACrB,OAAO;AACH,WAAK,cAAc,SAAS;AAC5B,WAAK,YAAY,SAAS;AAAA,IAC9B;AACA,SAAK,+BAA+B;AAAA,EACxC;AAAA,EAES,OAAO,SAAyD;AACrE,WAAO,MAAM,OAAO,EAAE,GAAG,SAAS,YAAY,KAAK,aAAa,UAAU,KAAK,UAAU,CAAM;AAAA,EACnG;AAAA,EAEA,eAAe,EAAE,eAAe,gBAAgB,YAAY,cAAc,SAAS,GAAM;AACrF,UAAM,SAAS,IAAI,0BAAW,sBAAO,MAAM;AAC3C,WAAO,YAAY,aAAa;AAChC,WAAO,YAAa,YAAY,KAAM,UAAU;AAChD,WAAO,YAAY,cAAc;AACjC,QAAI,KAAK,gCAAgC,iBAAiB,UAAa,aAAa,SAAS,GAAG;AAC5F,aAAO,eAAe,YAAY;AAAA,IACtC;AACA,WAAO,OAAO,YAAY;AAAA,EAC9B;AAAA,EAEA,eAAe,OAAmB;AAC9B,UAAM,SAAS,IAAI,0BAAW,OAAO,sBAAO,MAAM;AAClD,UAAM,gBAAgB,OAAO,WAAW;AACxC,UAAM,mBAAmB,OAAO,WAAW;AAC3C,UAAM,iBAAiB,OAAO,WAAW;AACzC,UAAM,eAAe,OAAO,sBAAsB,IAAI,OAAO,iBAAiB;AAE9E,UAAM,aAAa,mBAAmB;AACtC,UAAM,eAAW,uBAAS,qBAAqB,EAAE;AACjD,WAAO;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AACJ;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -125,7 +125,7 @@ class SecureChannelMessenger {
|
|
|
125
125
|
async #sendStatusReport(generalStatus, protocolStatus, requiresAck) {
|
|
126
126
|
await this.exchange.send(
|
|
127
127
|
import_types.SecureMessageType.StatusReport,
|
|
128
|
-
import_SecureChannelStatusMessageSchema.
|
|
128
|
+
import_SecureChannelStatusMessageSchema.SecureChannelStatusMessage.encode({
|
|
129
129
|
generalStatus,
|
|
130
130
|
protocolStatus
|
|
131
131
|
}),
|
|
@@ -144,7 +144,7 @@ class SecureChannelMessenger {
|
|
|
144
144
|
payload
|
|
145
145
|
} = message;
|
|
146
146
|
if (messageType !== import_types.SecureMessageType.StatusReport) return;
|
|
147
|
-
const { generalStatus, protocolId, protocolStatus } = import_SecureChannelStatusMessageSchema.
|
|
147
|
+
const { generalStatus, protocolId, protocolStatus } = import_SecureChannelStatusMessageSchema.SecureChannelStatusMessage.decode(payload);
|
|
148
148
|
if (generalStatus !== import_types.GeneralStatusCode.Success) {
|
|
149
149
|
throw new ChannelStatusResponseError(
|
|
150
150
|
`Received general error status for protocol ${protocolId}${logHint ? ` (${logHint})` : ""}`,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/securechannel/SecureChannelMessenger.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,qBAA6D;AAC7D,mBAAyF;AAGzF,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -68,7 +68,7 @@ class StatusReportOnlySecureChannelProtocol {
|
|
|
68
68
|
)}`
|
|
69
69
|
);
|
|
70
70
|
}
|
|
71
|
-
const { generalStatus, protocolId, protocolStatus } = import_SecureChannelStatusMessageSchema.
|
|
71
|
+
const { generalStatus, protocolId, protocolStatus } = import_SecureChannelStatusMessageSchema.SecureChannelStatusMessage.decode(payload);
|
|
72
72
|
if (generalStatus !== import_types.GeneralStatusCode.Success) {
|
|
73
73
|
throw new import_SecureChannelMessenger.ChannelStatusResponseError(
|
|
74
74
|
`Received general error status (${protocolId})`,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/securechannel/SecureChannelProtocol.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,2BAA8B;AAC9B,qBAAqF;AACrF,6BAAgC;AAChC,4BAA+B;AAC/B,mBAOO;AAIP,2BAA8B;AAC9B,wBAA2B;AAC3B,wBAAiE;AACjE,oCAAmE;AACnE,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { ProtocolStatusMessage, ProtocolStatusMessageSchema } from "#protocol/ProtocolStatusMessage.js";
|
|
7
7
|
import { SecureChannelStatusCode } from "#types";
|
|
8
|
-
export type
|
|
9
|
-
export declare class SecureChannelStatusMessageSchema extends ProtocolStatusMessageSchema<
|
|
8
|
+
export type SecureChannelStatus = ProtocolStatusMessage<SecureChannelStatusCode>;
|
|
9
|
+
export declare class SecureChannelStatusMessageSchema extends ProtocolStatusMessageSchema<SecureChannelStatus> {
|
|
10
10
|
}
|
|
11
|
-
export declare const
|
|
11
|
+
export declare const SecureChannelStatusMessage: SecureChannelStatusMessageSchema;
|
|
12
12
|
//# sourceMappingURL=SecureChannelStatusMessageSchema.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SecureChannelStatusMessageSchema.d.ts","sourceRoot":"","sources":["../../../src/securechannel/SecureChannelStatusMessageSchema.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,MAAM,oCAAoC,CAAC;AACxG,OAAO,EAA8B,uBAAuB,EAAE,MAAM,QAAQ,CAAC;AAE7E,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"SecureChannelStatusMessageSchema.d.ts","sourceRoot":"","sources":["../../../src/securechannel/SecureChannelStatusMessageSchema.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,MAAM,oCAAoC,CAAC;AACxG,OAAO,EAA8B,uBAAuB,EAAE,MAAM,QAAQ,CAAC;AAE7E,MAAM,MAAM,mBAAmB,GAAG,qBAAqB,CAAC,uBAAuB,CAAC,CAAC;AAEjF,qBAAa,gCAAiC,SAAQ,2BAA2B,CAAC,mBAAmB,CAAC;CAAG;AAEzG,eAAO,MAAM,0BAA0B,kCAAmE,CAAC"}
|
|
@@ -18,8 +18,8 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
19
|
var SecureChannelStatusMessageSchema_exports = {};
|
|
20
20
|
__export(SecureChannelStatusMessageSchema_exports, {
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
SecureChannelStatusMessage: () => SecureChannelStatusMessage,
|
|
22
|
+
SecureChannelStatusMessageSchema: () => SecureChannelStatusMessageSchema
|
|
23
23
|
});
|
|
24
24
|
module.exports = __toCommonJS(SecureChannelStatusMessageSchema_exports);
|
|
25
25
|
var import_ProtocolStatusMessage = require("#protocol/ProtocolStatusMessage.js");
|
|
@@ -31,5 +31,5 @@ var import_types = require("#types");
|
|
|
31
31
|
*/
|
|
32
32
|
class SecureChannelStatusMessageSchema extends import_ProtocolStatusMessage.ProtocolStatusMessageSchema {
|
|
33
33
|
}
|
|
34
|
-
const
|
|
34
|
+
const SecureChannelStatusMessage = new SecureChannelStatusMessageSchema(import_types.SECURE_CHANNEL_PROTOCOL_ID);
|
|
35
35
|
//# sourceMappingURL=SecureChannelStatusMessageSchema.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/securechannel/SecureChannelStatusMessageSchema.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,mCAAmE;AACnE,mBAAoE;AAPpE;AAAA;AAAA;AAAA;AAAA;AAWO,MAAM,yCAAyC,
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,mCAAmE;AACnE,mBAAoE;AAPpE;AAAA;AAAA;AAAA;AAAA;AAWO,MAAM,yCAAyC,yDAAiD;AAAC;AAEjG,MAAM,6BAA6B,IAAI,iCAAiC,uCAA0B;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
/** @see {@link MatterSpecification.v11.Core} § 4.17.3.2 */
|
|
7
|
-
export declare const
|
|
7
|
+
export declare const BLE_MATTER_SERVICE_UUID_SHORT = "fff6";
|
|
8
|
+
export declare const BLE_MATTER_SERVICE_UUID = "0000FFF6-0000-1000-8000-00805F9B34FB";
|
|
8
9
|
export declare const BLE_MATTER_C1_CHARACTERISTIC_UUID = "18EE2EF5-263D-4559-959F-4F9C429F9D11";
|
|
9
10
|
export declare const BLE_MATTER_C2_CHARACTERISTIC_UUID = "18EE2EF5-263D-4559-959F-4F9C429F9D12";
|
|
10
11
|
export declare const BLE_MATTER_C3_CHARACTERISTIC_UUID = "64630238-8772-45F2-B87D-748A83218F04";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BleConsts.d.ts","sourceRoot":"","sources":["../../../src/ble/BleConsts.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,2DAA2D;AAC3D,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"BleConsts.d.ts","sourceRoot":"","sources":["../../../src/ble/BleConsts.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,2DAA2D;AAC3D,eAAO,MAAM,6BAA6B,SAAS,CAAC;AACpD,eAAO,MAAM,uBAAuB,yCAAyC,CAAC;AAC9E,eAAO,MAAM,iCAAiC,yCAAyC,CAAC;AACxF,eAAO,MAAM,iCAAiC,yCAAyC,CAAC;AACxF,eAAO,MAAM,iCAAiC,yCAAyC,CAAC;AAExF,eAAO,MAAM,mBAAmB,KAAK,CAAC;AACtC,eAAO,MAAM,mBAAmB,MAAM,CAAC;AAEvC,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAE3C;;;GAGG;AACH,eAAO,MAAM,uBAAuB,OAAQ,CAAC;AAE7C,mGAAmG;AACnG,eAAO,MAAM,kBAAkB,QAAS,CAAC;AAEzC,eAAO,MAAM,uBAAuB,QAAyB,CAAC;AAE9D;;;GAGG;AACH,eAAO,MAAM,qBAAqB,QAAS,CAAC;AAE5C;;;GAGG;AACH,eAAO,MAAM,2BAA2B,QAAuB,CAAC"}
|
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import { MAX_UDP_MESSAGE_SIZE } from "#general";
|
|
7
|
-
const
|
|
7
|
+
const BLE_MATTER_SERVICE_UUID_SHORT = "fff6";
|
|
8
|
+
const BLE_MATTER_SERVICE_UUID = "0000FFF6-0000-1000-8000-00805F9B34FB";
|
|
8
9
|
const BLE_MATTER_C1_CHARACTERISTIC_UUID = "18EE2EF5-263D-4559-959F-4F9C429F9D11";
|
|
9
10
|
const BLE_MATTER_C2_CHARACTERISTIC_UUID = "18EE2EF5-263D-4559-959F-4F9C429F9D12";
|
|
10
11
|
const BLE_MATTER_C3_CHARACTERISTIC_UUID = "64630238-8772-45F2-B87D-748A83218F04";
|
|
@@ -21,6 +22,7 @@ export {
|
|
|
21
22
|
BLE_MATTER_C2_CHARACTERISTIC_UUID,
|
|
22
23
|
BLE_MATTER_C3_CHARACTERISTIC_UUID,
|
|
23
24
|
BLE_MATTER_SERVICE_UUID,
|
|
25
|
+
BLE_MATTER_SERVICE_UUID_SHORT,
|
|
24
26
|
BLE_MAXIMUM_BTP_MTU,
|
|
25
27
|
BLE_MAX_MATTER_PAYLOAD_SIZE,
|
|
26
28
|
BLE_MINIMUM_ATT_MTU,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/ble/BleConsts.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,4BAA4B;AAG9B,MAAM,0BAA0B;AAChC,MAAM,oCAAoC;AAC1C,MAAM,oCAAoC;AAC1C,MAAM,oCAAoC;AAE1C,MAAM,sBAAsB;AAC5B,MAAM,sBAAsB;AAE5B,MAAM,0BAA0B;AAMhC,MAAM,0BAA0B;AAGhC,MAAM,qBAAqB;AAE3B,MAAM,0BAA0B,qBAAqB;AAMrD,MAAM,wBAAwB;AAM9B,MAAM,8BAA8B;",
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,4BAA4B;AAG9B,MAAM,gCAAgC;AACtC,MAAM,0BAA0B;AAChC,MAAM,oCAAoC;AAC1C,MAAM,oCAAoC;AAC1C,MAAM,oCAAoC;AAE1C,MAAM,sBAAsB;AAC5B,MAAM,sBAAsB;AAE5B,MAAM,0BAA0B;AAMhC,MAAM,0BAA0B;AAGhC,MAAM,qBAAqB;AAE3B,MAAM,0BAA0B,qBAAqB;AAMrD,MAAM,wBAAwB;AAM9B,MAAM,8BAA8B;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MdnsServer.d.ts","sourceRoot":"","sources":["../../../src/mdns/MdnsServer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAGH,SAAS,EAKT,uBAAuB,EAG1B,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAI7C,qBAAa,UAAU;;
|
|
1
|
+
{"version":3,"file":"MdnsServer.d.ts","sourceRoot":"","sources":["../../../src/mdns/MdnsServer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAGH,SAAS,EAKT,uBAAuB,EAG1B,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAI7C,qBAAa,UAAU;;gBAwBP,MAAM,EAAE,UAAU;IAK9B,IAAI,OAAO,+BAEV;IAED,IAAI,YAAY,YAEf;IAED,iBAAiB,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM;IAgGjF,SAAS,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE;IAgB/B,mBAAmB,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE;IAyBzC,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC,eAAe;IAW1E,KAAK;CAkBd;AAED,yBAAiB,UAAU,CAAC;IACxB,UAAiB,eAAe;QAC5B,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,uBAAuB,GAAG,SAAS,EAAE,CAAC;KAC/D;CACJ"}
|
|
@@ -33,7 +33,6 @@ class MdnsServer {
|
|
|
33
33
|
15 * 60 * 1e3
|
|
34
34
|
);
|
|
35
35
|
#recordLastSentAsMulticastAnswer = /* @__PURE__ */ new Map();
|
|
36
|
-
#recordLastSentAsUnicastAnswer = /* @__PURE__ */ new Map();
|
|
37
36
|
#socket;
|
|
38
37
|
constructor(socket) {
|
|
39
38
|
this.#socket = socket;
|
|
@@ -78,25 +77,19 @@ class MdnsServer {
|
|
|
78
77
|
let uniCastResponse = queries.filter((query) => !query.uniCastResponse).length === 0;
|
|
79
78
|
const answersTimeSinceLastSent = answers.map((answer) => ({
|
|
80
79
|
timeSinceLastMultiCast: now - (this.#recordLastSentAsMulticastAnswer.get(this.buildDnsRecordKey(answer, sourceIntf)) ?? 0),
|
|
81
|
-
|
|
82
|
-
ttl: answer.ttl
|
|
80
|
+
ttl: answer.ttl * 1e3
|
|
83
81
|
}));
|
|
84
|
-
if (uniCastResponse && answersTimeSinceLastSent.some(
|
|
85
|
-
({ timeSinceLastMultiCast, ttl }) => timeSinceLastMultiCast > ttl / 4 * 1e3
|
|
86
|
-
)) {
|
|
82
|
+
if (uniCastResponse && answersTimeSinceLastSent.some(({ timeSinceLastMultiCast, ttl }) => timeSinceLastMultiCast > ttl / 4)) {
|
|
87
83
|
uniCastResponse = false;
|
|
88
84
|
}
|
|
89
85
|
if (!uniCastResponse) {
|
|
90
|
-
answers = answers.filter(
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
(answer) => this.#recordLastSentAsMulticastAnswer.set(this.buildDnsRecordKey(answer, sourceIntf), now)
|
|
86
|
+
answers = answers.filter(
|
|
87
|
+
(_, index) => answersTimeSinceLastSent[index].timeSinceLastMultiCast >= 900
|
|
88
|
+
// The last time sent as multicast was more than 900 ms ago
|
|
94
89
|
);
|
|
95
|
-
} else {
|
|
96
|
-
answers = answers.filter((_, index) => answersTimeSinceLastSent[index].timeSinceLastUniCast > 1e3);
|
|
97
90
|
if (answers.length === 0) continue;
|
|
98
91
|
answers.forEach(
|
|
99
|
-
(answer) => this.#
|
|
92
|
+
(answer) => this.#recordLastSentAsMulticastAnswer.set(this.buildDnsRecordKey(answer, sourceIntf), now)
|
|
100
93
|
);
|
|
101
94
|
}
|
|
102
95
|
this.#socket.send(
|
|
@@ -159,26 +152,21 @@ class MdnsServer {
|
|
|
159
152
|
}),
|
|
160
153
|
"Error happened when expiring MDNS announcements"
|
|
161
154
|
).catch((error) => logger.error(error));
|
|
162
|
-
await this.#resetServices(
|
|
155
|
+
await this.#resetServices();
|
|
163
156
|
}
|
|
164
157
|
async setRecordsGenerator(service, generator) {
|
|
165
158
|
await this.#records.clear();
|
|
166
159
|
this.#recordLastSentAsMulticastAnswer.clear();
|
|
167
|
-
this.#recordLastSentAsUnicastAnswer.clear();
|
|
168
160
|
this.#recordsGenerator.set(service, generator);
|
|
169
161
|
}
|
|
170
|
-
async #resetServices(
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
this.#recordLastSentAsMulticastAnswer.delete(service);
|
|
174
|
-
this.#recordLastSentAsUnicastAnswer.delete(service);
|
|
175
|
-
}
|
|
162
|
+
async #resetServices() {
|
|
163
|
+
await this.#records.clear();
|
|
164
|
+
this.#recordLastSentAsMulticastAnswer.clear();
|
|
176
165
|
}
|
|
177
166
|
async close() {
|
|
178
167
|
this.#observers.close();
|
|
179
168
|
await this.#records.close();
|
|
180
169
|
this.#recordLastSentAsMulticastAnswer.clear();
|
|
181
|
-
this.#recordLastSentAsUnicastAnswer.clear();
|
|
182
170
|
}
|
|
183
171
|
#getMulticastInterfacesForAnnounce() {
|
|
184
172
|
const { netInterface } = this.#socket;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/mdns/MdnsServer.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA;AAAA,EACI;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,OACG;AAGP,MAAM,SAAS,OAAO,IAAI,YAAY;AAE/B,MAAM,WAAW;AAAA,EACpB,aAAa,IAAI,cAAc;AAAA,EAC/B,oBAAoB,oBAAI,IAAwC;AAAA,EACvD,WAAW,IAAI;AAAA,IACpB;AAAA,IACA,OAAO,uBAA+B;AAClC,YAAM,iBAAiB,oBAAI,IAA8B;AACzD,YAAM,QAAQ,MAAM,KAAK,QAAQ,SAAS,kBAAkB;AAC5D,UAAI,UAAU,QAAW;AACrB,eAAO;AAAA,MACX;AAEA,iBAAW,CAAC,SAAS,SAAS,KAAK,KAAK,mBAAmB;AACvD,uBAAe,IAAI,SAAS,UAAU,oBAAoB,KAAK,CAAC;AAAA,MACpE;AAEA,aAAO;AAAA,IACX;AAAA,IACA,KAAK,KAAK;AAAA,EACd;AAAA,EACS,mCAAmC,oBAAI,IAAoB;AAAA,
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA;AAAA,EACI;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,OACG;AAGP,MAAM,SAAS,OAAO,IAAI,YAAY;AAE/B,MAAM,WAAW;AAAA,EACpB,aAAa,IAAI,cAAc;AAAA,EAC/B,oBAAoB,oBAAI,IAAwC;AAAA,EACvD,WAAW,IAAI;AAAA,IACpB;AAAA,IACA,OAAO,uBAA+B;AAClC,YAAM,iBAAiB,oBAAI,IAA8B;AACzD,YAAM,QAAQ,MAAM,KAAK,QAAQ,SAAS,kBAAkB;AAC5D,UAAI,UAAU,QAAW;AACrB,eAAO;AAAA,MACX;AAEA,iBAAW,CAAC,SAAS,SAAS,KAAK,KAAK,mBAAmB;AACvD,uBAAe,IAAI,SAAS,UAAU,oBAAoB,KAAK,CAAC;AAAA,MACpE;AAEA,aAAO;AAAA,IACX;AAAA,IACA,KAAK,KAAK;AAAA,EACd;AAAA,EACS,mCAAmC,oBAAI,IAAoB;AAAA,EAE3D;AAAA,EAET,YAAY,QAAoB;AAC5B,SAAK,UAAU;AACf,SAAK,WAAW,GAAG,KAAK,QAAQ,SAAS,KAAK,eAAe,KAAK,IAAI,CAAC;AAAA,EAC3E;AAAA,EAEA,IAAI,UAAU;AACV,WAAO,KAAK,QAAQ;AAAA,EACxB;AAAA,EAEA,IAAI,eAAe;AACf,WAAO,KAAK,QAAQ;AAAA,EACxB;AAAA,EAEA,kBAAkB,QAAwB,cAAuB,eAAwB;AACrF,WAAO,GAAG,OAAO,IAAI,IAAI,OAAO,WAAW,IAAI,OAAO,UAAU,IAAI,YAAY,IAAI,aAAa;AAAA,EACrG;AAAA,EAEA,MAAM,eAAe,SAA6B;AAC9C,UAAM,UAAU,MAAM,KAAK,SAAS,IAAI,QAAQ,UAAU;AAG1D,QAAI,QAAQ,SAAS,EAAG;AAExB,UAAM,EAAE,YAAY,UAAU,eAAe,aAAa,SAAS,SAAS,aAAa,IAAI;AAC7F,QAAI,gBAAgB,eAAe,SAAS,gBAAgB,eAAe,eAAgB;AAC3F,QAAI,QAAQ,WAAW,EAAG;AAC1B,eAAW,eAAe,QAAQ,OAAO,GAAG;AACxC,UAAI,UAAU,QAAQ,QAAQ,WAAS,KAAK,cAAc,OAAO,WAAW,CAAC;AAC7E,UAAI,QAAQ,WAAW,EAAG;AAG1B,UAAI,oBACA,QAAQ;AAAA,QACJ,WAAS,MAAM,eAAe,cAAc,KAAK,MAAM,eAAe,cAAc;AAAA,MACxF,MAAM,SACA,YAAY,OAAO,YAAU,CAAC,QAAQ,SAAS,MAAM,KAAK,OAAO,eAAe,cAAc,GAAG,IACjG,CAAC;AACX,UAAI,aAAa,SAAS,GAAG;AACzB,mBAAW,sBAAsB,cAAc;AAC3C,oBAAU,QAAQ,OAAO,YAAU,CAAC,YAAY,QAAQ,oBAAoB,IAAI,CAAC;AACjF,cAAI,QAAQ,WAAW,EAAG;AAAA,QAC9B;AACA,YAAI,QAAQ,WAAW,EAAG;AAC1B,YAAI,kBAAkB,SAAS,GAAG;AAC9B,qBAAW,sBAAsB,cAAc;AAC3C,gCAAoB,kBAAkB;AAAA,cAClC,YAAU,CAAC,YAAY,QAAQ,oBAAoB,IAAI;AAAA,YAC3D;AAAA,UACJ;AAAA,QACJ;AAAA,MACJ;AAEA,YAAM,MAAM,KAAK,MAAM;AACvB,UAAI,kBAAkB,QAAQ,OAAO,WAAS,CAAC,MAAM,eAAe,EAAE,WAAW;AACjF,YAAM,2BAA2B,QAAQ,IAAI,aAAW;AAAA,QACpD,wBACI,OAAO,KAAK,iCAAiC,IAAI,KAAK,kBAAkB,QAAQ,UAAU,CAAC,KAAK;AAAA,QACpG,KAAK,OAAO,MAAM;AAAA,MACtB,EAAE;AACF,UACI,mBACA,yBAAyB,KAAK,CAAC,EAAE,wBAAwB,IAAI,MAAM,yBAAyB,MAAM,CAAC,GACrG;AAEE,0BAAkB;AAAA,MACtB;AACA,UAAI,CAAC,iBAAiB;AAClB,kBAAU,QAAQ;AAAA,UACd,CAAC,GAAG,UAAU,yBAAyB,KAAK,EAAE,0BAA0B;AAAA;AAAA,QAC5E;AACA,YAAI,QAAQ,WAAW,EAAG;AAE1B,gBAAQ;AAAA,UAAQ,YACZ,KAAK,iCAAiC,IAAI,KAAK,kBAAkB,QAAQ,UAAU,GAAG,GAAG;AAAA,QAC7F;AAAA,MACJ;AAEA,WAAK,QACA;AAAA,QACG;AAAA,UACI,aAAa,eAAe;AAAA,UAC5B;AAAA,UACA;AAAA,UACA;AAAA,QACJ;AAAA,QACA;AAAA,QACA,kBAAkB,WAAW;AAAA,MACjC,EACC,MAAM,WAAS;AACZ,eAAO,KAAK,mCAAmC,QAAQ,IAAI,KAAK;AAAA,MACpE,CAAC;AACL,YAAM,KAAK,MAAM,cAAc,KAAK,KAAK,MAAM,KAAK,OAAO,IAAI,GAAG,CAAC;AAAA,IACvE;AAAA,EACJ;AAAA,EAEA,MAAM,6BAA6B,cAAsB,SAA2B;AAChF,UAAM,UAAU,QAAQ,OAAO,CAAC,EAAE,WAAW,MAAM,eAAe,cAAc,GAAG;AACnF,UAAM,oBAAoB,QAAQ,OAAO,CAAC,EAAE,WAAW,MAAM,eAAe,cAAc,GAAG;AAE7F,UAAM,KAAK,QAAQ;AAAA,MACf;AAAA,QACI,aAAa,eAAe;AAAA,QAC5B;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,MAAM,aAAa,UAAoB;AACnC,UAAM,qBAAqB;AAAA,OACtB,MAAM,KAAK,mCAAmC,GAAG,IAAI,OAAO,EAAE,MAAM,aAAa,MAAM;AACpF,cAAM,UAAU,MAAM,KAAK,SAAS,IAAI,YAAY;AACpD,mBAAW,CAAC,SAAS,cAAc,KAAK,SAAS;AAC7C,cAAI,SAAS,UAAU,CAAC,SAAS,SAAS,OAAO,EAAG;AAGpD,gBAAM,KAAK,6BAA6B,cAAc,cAAc;AACpE,gBAAM,KAAK,MAAM,cAAc,KAAK,KAAK,MAAM,KAAK,OAAO,IAAI,GAAG,CAAC;AAAA,QACvE;AAAA,MACJ,CAAC;AAAA,MACD;AAAA,IACJ,EAAE,MAAM,WAAS,OAAO,MAAM,KAAK,CAAC;AAAA,EACxC;AAAA,EAEA,MAAM,uBAAuB,UAAoB;AAC7C,UAAM,qBAAqB;AAAA,MACvB,KAAK,SAAS,KAAK,EAAE,IAAI,OAAM,iBAAgB;AAC3C,cAAM,UAAU,MAAM,KAAK,SAAS,IAAI,YAAY;AACpD,mBAAW,CAAC,SAAS,cAAc,KAAK,SAAS;AAC7C,cAAI,SAAS,UAAU,CAAC,SAAS,SAAS,OAAO,EAAG;AACpD,gBAAM,cAAc,oBAAI,IAAY;AACpC,yBAAe,QAAQ,YAAU;AAC7B,mBAAO,MAAM;AACb,gBAAI,OAAO,eAAe,cAAc,KAAK;AACzC,0BAAY,IAAI,OAAO,IAAI;AAAA,YAC/B;AAAA,UACJ,CAAC;AAGD,gBAAM,KAAK,6BAA6B,cAAc,cAAc;AACpE,eAAK,kBAAkB,OAAO,OAAO;AACrC,gBAAM,KAAK,MAAM,cAAc,KAAK,KAAK,MAAM,KAAK,OAAO,IAAI,GAAG,CAAC;AAAA,QACvE;AAAA,MACJ,CAAC;AAAA,MACD;AAAA,IACJ,EAAE,MAAM,WAAS,OAAO,MAAM,KAAK,CAAC;AACpC,UAAM,KAAK,eAAe;AAAA,EAC9B;AAAA,EAEA,MAAM,oBAAoB,SAAiB,WAAuC;AAC9E,UAAM,KAAK,SAAS,MAAM;AAC1B,SAAK,iCAAiC,MAAM;AAC5C,SAAK,kBAAkB,IAAI,SAAS,SAAS;AAAA,EACjD;AAAA,EAEA,MAAM,iBAAiB;AACnB,UAAM,KAAK,SAAS,MAAM;AAC1B,SAAK,iCAAiC,MAAM;AAAA,EAChD;AAAA,EAEA,MAAM,QAAQ;AACV,SAAK,WAAW,MAAM;AACtB,UAAM,KAAK,SAAS,MAAM;AAC1B,SAAK,iCAAiC,MAAM;AAAA,EAChD;AAAA,EAEA,qCAAqC;AACjC,UAAM,EAAE,aAAa,IAAI,KAAK;AAC9B,WAAO,iBAAiB,SAAY,KAAK,QAAQ,iBAAiB,IAAI,CAAC,EAAE,MAAM,aAAa,CAAC;AAAA,EACjG;AAAA,EAEA,cAAc,EAAE,MAAM,WAAW,GAAgD,SAA2B;AACxG,QAAI,eAAe,cAAc,KAAK;AAClC,aAAO,QAAQ,OAAO,YAAU,OAAO,SAAS,IAAI;AAAA,IACxD,OAAO;AACH,aAAO,QAAQ,OAAO,YAAU,OAAO,SAAS,QAAQ,OAAO,eAAe,UAAU;AAAA,IAC5F;AAAA,EACJ;AACJ;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -6,9 +6,13 @@
|
|
|
6
6
|
import { Message } from "../codec/MessageCodec.js";
|
|
7
7
|
import { MessageExchange } from "./MessageExchange.js";
|
|
8
8
|
export interface ProtocolHandler {
|
|
9
|
+
/** Protocol ID that this handler implements */
|
|
9
10
|
readonly id: number;
|
|
11
|
+
/** Indicates whether this protocol requires a secure session to be established before it can be used */
|
|
10
12
|
readonly requiresSecureSession: boolean;
|
|
13
|
+
/** Called on a new exchange that uses this protocol. The message is the first message of the exchange. */
|
|
11
14
|
onNewExchange(exchange: MessageExchange, message: Message): Promise<void>;
|
|
15
|
+
/** Called when the protocol handler is no longer needed and can clean up resources. */
|
|
12
16
|
close(): Promise<void>;
|
|
13
17
|
}
|
|
14
18
|
//# sourceMappingURL=ProtocolHandler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProtocolHandler.d.ts","sourceRoot":"","sources":["../../../src/protocol/ProtocolHandler.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,MAAM,WAAW,eAAe;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"ProtocolHandler.d.ts","sourceRoot":"","sources":["../../../src/protocol/ProtocolHandler.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,MAAM,WAAW,eAAe;IAC5B,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAEpB,wGAAwG;IACxG,QAAQ,CAAC,qBAAqB,EAAE,OAAO,CAAC;IAExC,0GAA0G;IAC1G,aAAa,CAAC,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1E,uFAAuF;IACvF,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B"}
|
|
@@ -3,18 +3,22 @@
|
|
|
3
3
|
* Copyright 2022-2025 Matter.js Authors
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
import { GeneralStatusCode, Schema } from "#types";
|
|
6
|
+
import { GeneralStatusCode, Schema, VendorId } from "#types";
|
|
7
7
|
export type ProtocolStatusMessage<T> = {
|
|
8
8
|
generalStatus: GeneralStatusCode;
|
|
9
9
|
protocolId: number;
|
|
10
|
+
vendorId: VendorId;
|
|
10
11
|
protocolStatus: T;
|
|
11
12
|
protocolData?: Uint8Array;
|
|
12
13
|
};
|
|
13
14
|
export declare abstract class ProtocolStatusMessageSchema<T extends ProtocolStatusMessage<any>> extends Schema<T, Uint8Array> {
|
|
14
15
|
#private;
|
|
15
|
-
constructor(
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
constructor(protocol: number | {
|
|
17
|
+
protocolId: number;
|
|
18
|
+
vendorId: number;
|
|
19
|
+
}, protocolSpecificDataAllowed?: boolean);
|
|
20
|
+
encode(message: Omit<T, "protocolId" | "vendorId">): Uint8Array;
|
|
21
|
+
encodeInternal({ generalStatus, protocolStatus, protocolId, protocolData, vendorId }: T): Uint8Array<ArrayBuffer>;
|
|
18
22
|
decodeInternal(bytes: Uint8Array): T;
|
|
19
23
|
}
|
|
20
24
|
//# sourceMappingURL=ProtocolStatusMessage.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProtocolStatusMessage.d.ts","sourceRoot":"","sources":["../../../src/protocol/ProtocolStatusMessage.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"ProtocolStatusMessage.d.ts","sourceRoot":"","sources":["../../../src/protocol/ProtocolStatusMessage.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAE7D,MAAM,MAAM,qBAAqB,CAAC,CAAC,IAAI;IACnC,aAAa,EAAE,iBAAiB,CAAC;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,QAAQ,CAAC;IACnB,cAAc,EAAE,CAAC,CAAC;IAClB,YAAY,CAAC,EAAE,UAAU,CAAC;CAC7B,CAAC;AAEF,8BAAsB,2BAA2B,CAAC,CAAC,SAAS,qBAAqB,CAAC,GAAG,CAAC,CAAE,SAAQ,MAAM,CAAC,CAAC,EAAE,UAAU,CAAC;;gBAKrG,QAAQ,EAAE,MAAM,GAAG;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,EAAE,2BAA2B,UAAO;IAYlG,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC,GAAG,UAAU;IAIxE,cAAc,CAAC,EAAE,aAAa,EAAE,cAAc,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,CAAC;IAWvF,cAAc,CAAC,KAAK,EAAE,UAAU,GAeZ,CAAC;CAExB"}
|
|
@@ -4,22 +4,29 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import { DataReader, DataWriter, Endian } from "#general";
|
|
7
|
-
import { Schema } from "#types";
|
|
7
|
+
import { Schema, VendorId } from "#types";
|
|
8
8
|
class ProtocolStatusMessageSchema extends Schema {
|
|
9
9
|
#protocolId;
|
|
10
|
+
#vendorId;
|
|
10
11
|
#protocolSpecificDataAllowed;
|
|
11
|
-
constructor(
|
|
12
|
+
constructor(protocol, protocolSpecificDataAllowed = true) {
|
|
12
13
|
super();
|
|
13
|
-
|
|
14
|
+
if (typeof protocol === "number") {
|
|
15
|
+
this.#protocolId = protocol;
|
|
16
|
+
this.#vendorId = 0;
|
|
17
|
+
} else {
|
|
18
|
+
this.#protocolId = protocol.protocolId;
|
|
19
|
+
this.#vendorId = protocol.vendorId;
|
|
20
|
+
}
|
|
14
21
|
this.#protocolSpecificDataAllowed = protocolSpecificDataAllowed;
|
|
15
22
|
}
|
|
16
23
|
encode(message) {
|
|
17
|
-
return super.encode({ ...message, protocolId: this.#protocolId });
|
|
24
|
+
return super.encode({ ...message, protocolId: this.#protocolId, vendorId: this.#vendorId });
|
|
18
25
|
}
|
|
19
|
-
encodeInternal({ generalStatus, protocolStatus, protocolId, protocolData }) {
|
|
26
|
+
encodeInternal({ generalStatus, protocolStatus, protocolId, protocolData, vendorId }) {
|
|
20
27
|
const writer = new DataWriter(Endian.Little);
|
|
21
28
|
writer.writeUInt16(generalStatus);
|
|
22
|
-
writer.writeUInt32(protocolId);
|
|
29
|
+
writer.writeUInt32(vendorId << 16 | protocolId);
|
|
23
30
|
writer.writeUInt16(protocolStatus);
|
|
24
31
|
if (this.#protocolSpecificDataAllowed && protocolData !== void 0 && protocolData.length > 0) {
|
|
25
32
|
writer.writeByteArray(protocolData);
|
|
@@ -29,10 +36,18 @@ class ProtocolStatusMessageSchema extends Schema {
|
|
|
29
36
|
decodeInternal(bytes) {
|
|
30
37
|
const reader = new DataReader(bytes, Endian.Little);
|
|
31
38
|
const generalStatus = reader.readUInt16();
|
|
32
|
-
const
|
|
39
|
+
const vendorProtocolId = reader.readUInt32();
|
|
33
40
|
const protocolStatus = reader.readUInt16();
|
|
34
|
-
const
|
|
35
|
-
|
|
41
|
+
const protocolData = reader.remainingBytesCount > 0 ? reader.remainingBytes : void 0;
|
|
42
|
+
const protocolId = vendorProtocolId & 65535;
|
|
43
|
+
const vendorId = VendorId(vendorProtocolId >>> 16);
|
|
44
|
+
return {
|
|
45
|
+
generalStatus,
|
|
46
|
+
protocolId,
|
|
47
|
+
protocolStatus,
|
|
48
|
+
protocolData,
|
|
49
|
+
vendorId
|
|
50
|
+
};
|
|
36
51
|
}
|
|
37
52
|
}
|
|
38
53
|
export {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/protocol/ProtocolStatusMessage.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,YAAY,YAAY,cAAc;AAC/C,SAA4B,
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,YAAY,YAAY,cAAc;AAC/C,SAA4B,QAAQ,gBAAgB;AAU7C,MAAe,oCAA0E,OAAsB;AAAA,EAClH;AAAA,EACA;AAAA,EACA;AAAA,EAEA,YAAY,UAA6D,8BAA8B,MAAM;AACzG,UAAM;AACN,QAAI,OAAO,aAAa,UAAU;AAC9B,WAAK,cAAc;AACnB,WAAK,YAAY;AAAA,IACrB,OAAO;AACH,WAAK,cAAc,SAAS;AAC5B,WAAK,YAAY,SAAS;AAAA,IAC9B;AACA,SAAK,+BAA+B;AAAA,EACxC;AAAA,EAES,OAAO,SAAyD;AACrE,WAAO,MAAM,OAAO,EAAE,GAAG,SAAS,YAAY,KAAK,aAAa,UAAU,KAAK,UAAU,CAAM;AAAA,EACnG;AAAA,EAEA,eAAe,EAAE,eAAe,gBAAgB,YAAY,cAAc,SAAS,GAAM;AACrF,UAAM,SAAS,IAAI,WAAW,OAAO,MAAM;AAC3C,WAAO,YAAY,aAAa;AAChC,WAAO,YAAa,YAAY,KAAM,UAAU;AAChD,WAAO,YAAY,cAAc;AACjC,QAAI,KAAK,gCAAgC,iBAAiB,UAAa,aAAa,SAAS,GAAG;AAC5F,aAAO,eAAe,YAAY;AAAA,IACtC;AACA,WAAO,OAAO,YAAY;AAAA,EAC9B;AAAA,EAEA,eAAe,OAAmB;AAC9B,UAAM,SAAS,IAAI,WAAW,OAAO,OAAO,MAAM;AAClD,UAAM,gBAAgB,OAAO,WAAW;AACxC,UAAM,mBAAmB,OAAO,WAAW;AAC3C,UAAM,iBAAiB,OAAO,WAAW;AACzC,UAAM,eAAe,OAAO,sBAAsB,IAAI,OAAO,iBAAiB;AAE9E,UAAM,aAAa,mBAAmB;AACtC,UAAM,WAAW,SAAS,qBAAqB,EAAE;AACjD,WAAO;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AACJ;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { Diagnostic, MatterError, UnexpectedDataError } from "#general";
|
|
7
7
|
import { GeneralStatusCode, SecureChannelStatusCode, SecureMessageType } from "#types";
|
|
8
|
-
import {
|
|
8
|
+
import { SecureChannelStatusMessage } from "./SecureChannelStatusMessageSchema.js";
|
|
9
9
|
class ChannelStatusResponseError extends MatterError {
|
|
10
10
|
constructor(message, generalStatusCode, protocolStatusCode) {
|
|
11
11
|
super(
|
|
@@ -99,7 +99,7 @@ class SecureChannelMessenger {
|
|
|
99
99
|
async #sendStatusReport(generalStatus, protocolStatus, requiresAck) {
|
|
100
100
|
await this.exchange.send(
|
|
101
101
|
SecureMessageType.StatusReport,
|
|
102
|
-
|
|
102
|
+
SecureChannelStatusMessage.encode({
|
|
103
103
|
generalStatus,
|
|
104
104
|
protocolStatus
|
|
105
105
|
}),
|
|
@@ -118,7 +118,7 @@ class SecureChannelMessenger {
|
|
|
118
118
|
payload
|
|
119
119
|
} = message;
|
|
120
120
|
if (messageType !== SecureMessageType.StatusReport) return;
|
|
121
|
-
const { generalStatus, protocolId, protocolStatus } =
|
|
121
|
+
const { generalStatus, protocolId, protocolStatus } = SecureChannelStatusMessage.decode(payload);
|
|
122
122
|
if (generalStatus !== GeneralStatusCode.Success) {
|
|
123
123
|
throw new ChannelStatusResponseError(
|
|
124
124
|
`Received general error status for protocol ${protocolId}${logHint ? ` (${logHint})` : ""}`,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/securechannel/SecureChannelMessenger.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,YAAY,aAAa,2BAA2B;AAC7D,SAAS,mBAAmB,yBAAyB,yBAAoC;AAGzF,SAAS,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -19,7 +19,7 @@ import { SecureSession } from "../session/SecureSession.js";
|
|
|
19
19
|
import { CaseServer } from "../session/case/CaseServer.js";
|
|
20
20
|
import { MaximumPasePairingErrorsReachedError } from "../session/pase/PaseServer.js";
|
|
21
21
|
import { ChannelStatusResponseError, SecureChannelMessenger } from "./SecureChannelMessenger.js";
|
|
22
|
-
import {
|
|
22
|
+
import { SecureChannelStatusMessage } from "./SecureChannelStatusMessageSchema.js";
|
|
23
23
|
const logger = Logger.get("SecureChannelProtocol");
|
|
24
24
|
class StatusReportOnlySecureChannelProtocol {
|
|
25
25
|
id = SECURE_CHANNEL_PROTOCOL_ID;
|
|
@@ -51,7 +51,7 @@ class StatusReportOnlySecureChannelProtocol {
|
|
|
51
51
|
)}`
|
|
52
52
|
);
|
|
53
53
|
}
|
|
54
|
-
const { generalStatus, protocolId, protocolStatus } =
|
|
54
|
+
const { generalStatus, protocolId, protocolStatus } = SecureChannelStatusMessage.decode(payload);
|
|
55
55
|
if (generalStatus !== GeneralStatusCode.Success) {
|
|
56
56
|
throw new ChannelStatusResponseError(
|
|
57
57
|
`Received general error status (${protocolId})`,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/securechannel/SecureChannelProtocol.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,qBAAqB;AAC9B,SAAS,iBAA8B,eAAe,QAAQ,uBAAuB;AACrF,SAAS,uBAAuB;AAChC,SAAS,sBAAsB;AAC/B;AAAA,EACI;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACG;AAIP,SAAS,qBAAqB;AAC9B,SAAS,kBAAkB;AAC3B,SAAS,4CAAwD;AACjE,SAAS,4BAA4B,8BAA8B;AACnE,SAAS,
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,qBAAqB;AAC9B,SAAS,iBAA8B,eAAe,QAAQ,uBAAuB;AACrF,SAAS,uBAAuB;AAChC,SAAS,sBAAsB;AAC/B;AAAA,EACI;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACG;AAIP,SAAS,qBAAqB;AAC9B,SAAS,kBAAkB;AAC3B,SAAS,4CAAwD;AACjE,SAAS,4BAA4B,8BAA8B;AACnE,SAAS,kCAAkC;AAE3C,MAAM,SAAS,OAAO,IAAI,uBAAuB;AAE1C,MAAM,sCAAiE;AAAA,EACjE,KAAK;AAAA,EACL,wBAAwB;AAAA,EAEjC,MAAM,cAAc,UAA2B,SAAkB;AAC7D,UAAM,cAAc,QAAQ,cAAc;AAE1C,YAAQ,aAAa;AAAA,MACjB,KAAK,kBAAkB;AACnB,cAAM,KAAK,0BAA0B,UAAU,OAAO;AACtD;AAAA,MACJ;AAEI,YAAI,gBAAgB,kBAAkB,eAAe;AACjD,gBAAM,IAAI;AAAA,YACN,0DAA0D,YAAY,SAAS,EAAE,CAAC;AAAA,YAClF,WAAW;AAAA,UACf;AAAA,QACJ;AAAA,IACR;AAAA,EACJ;AAAA,EAEA,MAAM,0BAA0B,UAA2B,SAAkB;AACzE,UAAM;AAAA,MACF,eAAe,EAAE,YAAY;AAAA,MAC7B;AAAA,IACJ,IAAI;AACJ,QAAI,gBAAgB,kBAAkB,cAAc;AAChD,YAAM,IAAI;AAAA,QACN,8EAA8E,YAAY;AAAA,UACtF;AAAA,QACJ,CAAC;AAAA,MACL;AAAA,IACJ;AAEA,UAAM,EAAE,eAAe,YAAY,eAAe,IAAI,2BAA2B,OAAO,OAAO;AAC/F,QAAI,kBAAkB,kBAAkB,SAAS;AAC7C,YAAM,IAAI;AAAA,QACN,kCAAkC,UAAU;AAAA,QAC5C;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AACA,QAAI,mBAAmB,wBAAwB,cAAc;AACzD,YAAM,IAAI;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,EAAE,QAAQ,IAAI;AACpB,kBAAc,OAAO,OAAO;AAC5B,WAAO,MAAM,mCAAmC,QAAQ,IAAI,uBAAuB;AAEnF,UAAM,QAAQ,QAAQ,OAAO,KAAK;AAAA,EACtC;AAAA,EAEA,MAAM,QAAQ;AAAA,EAEd;AACJ;AAEO,MAAM,8BAA8B,sCAAsC;AAAA,EAC7E;AAAA,EACS;AAAA,EACA,qBAAqB,gBAAoB;AAAA,EAElD,YAAY,UAA0B,SAAwB;AAC1D,UAAM;AACN,SAAK,oBAAoB,IAAI,WAAW,UAAU,OAAO;AAAA,EAC7D;AAAA,EAEA,QAAQ,cAAc,MAAM,EAAE,KAAkB;AAC5C,UAAM,WAAW,IAAI,sBAAsB,IAAI,IAAI,cAAc,GAAG,IAAI,IAAI,aAAa,CAAC;AAC1F,QAAI,IAAI,eAAe,EAAE,mBAAmB,QAAQ;AACpD,QAAI,IAAI,uBAAuB,QAAQ;AACvC,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,oBAAoB;AACpB,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,oBAAoB,YAAwB;AACxC,SAAK,oBAAoB;AAAA,EAC7B;AAAA,EAEA,yBAAyB;AACrB,SAAK,oBAAoB;AAAA,EAC7B;AAAA,EAEA,MAAe,cAAc,UAA2B,SAAkB;AACtE,UAAM,cAAc,QAAQ,cAAc;AAE1C,YAAQ,aAAa;AAAA,MACjB,KAAK,kBAAkB;AACnB,YAAI,KAAK,sBAAsB,QAAW;AAGtC,gBAAM,YAAY,IAAI,uBAAuB,QAAQ;AACrD,gBAAM,UAAU,UAAU,wBAAwB,YAAY;AAC9D,gBAAM,UAAU,MAAM;AACtB;AAAA,QACJ;AACA,YAAI;AACA,gBAAM,KAAK,kBAAkB,cAAc,QAAQ;AAAA,QACvD,SAAS,OAAO;AACZ,+CAAqC,OAAO,KAAK;AAEjD,gBAAM,KAAK,mBAAmB,KAAK;AAAA,QACvC;AACA;AAAA,MACJ,KAAK,kBAAkB;AACnB,cAAM,KAAK,kBAAkB,cAAc,QAAQ;AACnD;AAAA,MACJ;AACI,cAAM,MAAM,cAAc,UAAU,OAAO;AAAA,IACnD;AAAA,EACJ;AACJ;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { ProtocolStatusMessage, ProtocolStatusMessageSchema } from "#protocol/ProtocolStatusMessage.js";
|
|
7
7
|
import { SecureChannelStatusCode } from "#types";
|
|
8
|
-
export type
|
|
9
|
-
export declare class SecureChannelStatusMessageSchema extends ProtocolStatusMessageSchema<
|
|
8
|
+
export type SecureChannelStatus = ProtocolStatusMessage<SecureChannelStatusCode>;
|
|
9
|
+
export declare class SecureChannelStatusMessageSchema extends ProtocolStatusMessageSchema<SecureChannelStatus> {
|
|
10
10
|
}
|
|
11
|
-
export declare const
|
|
11
|
+
export declare const SecureChannelStatusMessage: SecureChannelStatusMessageSchema;
|
|
12
12
|
//# sourceMappingURL=SecureChannelStatusMessageSchema.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SecureChannelStatusMessageSchema.d.ts","sourceRoot":"","sources":["../../../src/securechannel/SecureChannelStatusMessageSchema.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,MAAM,oCAAoC,CAAC;AACxG,OAAO,EAA8B,uBAAuB,EAAE,MAAM,QAAQ,CAAC;AAE7E,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"SecureChannelStatusMessageSchema.d.ts","sourceRoot":"","sources":["../../../src/securechannel/SecureChannelStatusMessageSchema.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,MAAM,oCAAoC,CAAC;AACxG,OAAO,EAA8B,uBAAuB,EAAE,MAAM,QAAQ,CAAC;AAE7E,MAAM,MAAM,mBAAmB,GAAG,qBAAqB,CAAC,uBAAuB,CAAC,CAAC;AAEjF,qBAAa,gCAAiC,SAAQ,2BAA2B,CAAC,mBAAmB,CAAC;CAAG;AAEzG,eAAO,MAAM,0BAA0B,kCAAmE,CAAC"}
|
|
@@ -7,9 +7,9 @@ import { ProtocolStatusMessageSchema } from "#protocol/ProtocolStatusMessage.js"
|
|
|
7
7
|
import { SECURE_CHANNEL_PROTOCOL_ID } from "#types";
|
|
8
8
|
class SecureChannelStatusMessageSchema extends ProtocolStatusMessageSchema {
|
|
9
9
|
}
|
|
10
|
-
const
|
|
10
|
+
const SecureChannelStatusMessage = new SecureChannelStatusMessageSchema(SECURE_CHANNEL_PROTOCOL_ID);
|
|
11
11
|
export {
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
SecureChannelStatusMessage,
|
|
13
|
+
SecureChannelStatusMessageSchema
|
|
14
14
|
};
|
|
15
15
|
//# sourceMappingURL=SecureChannelStatusMessageSchema.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/securechannel/SecureChannelStatusMessageSchema.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAgC,mCAAmC;AACnE,SAAS,kCAA2D;AAI7D,MAAM,yCAAyC,
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAgC,mCAAmC;AACnE,SAAS,kCAA2D;AAI7D,MAAM,yCAAyC,4BAAiD;AAAC;AAEjG,MAAM,6BAA6B,IAAI,iCAAiC,0BAA0B;",
|
|
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-20250812-285b75d83",
|
|
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-20250812-285b75d83",
|
|
44
|
+
"@matter/model": "0.16.0-alpha.0-20250812-285b75d83",
|
|
45
|
+
"@matter/types": "0.16.0-alpha.0-20250812-285b75d83"
|
|
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-20250812-285b75d83",
|
|
49
|
+
"@matter/testing": "0.16.0-alpha.0-20250812-285b75d83"
|
|
50
50
|
},
|
|
51
51
|
"files": [
|
|
52
52
|
"dist/**/*",
|
package/src/ble/BleConsts.ts
CHANGED
|
@@ -7,7 +7,8 @@
|
|
|
7
7
|
import { MAX_UDP_MESSAGE_SIZE } from "#general";
|
|
8
8
|
|
|
9
9
|
/** @see {@link MatterSpecification.v11.Core} § 4.17.3.2 */
|
|
10
|
-
export const
|
|
10
|
+
export const BLE_MATTER_SERVICE_UUID_SHORT = "fff6";
|
|
11
|
+
export const BLE_MATTER_SERVICE_UUID = "0000FFF6-0000-1000-8000-00805F9B34FB";
|
|
11
12
|
export const BLE_MATTER_C1_CHARACTERISTIC_UUID = "18EE2EF5-263D-4559-959F-4F9C429F9D11";
|
|
12
13
|
export const BLE_MATTER_C2_CHARACTERISTIC_UUID = "18EE2EF5-263D-4559-959F-4F9C429F9D12";
|
|
13
14
|
export const BLE_MATTER_C3_CHARACTERISTIC_UUID = "64630238-8772-45F2-B87D-748A83218F04";
|
package/src/mdns/MdnsServer.ts
CHANGED
|
@@ -41,7 +41,6 @@ export class MdnsServer {
|
|
|
41
41
|
15 * 60 * 1000 /* 15mn - also matches maximum commissioning window time. */,
|
|
42
42
|
);
|
|
43
43
|
readonly #recordLastSentAsMulticastAnswer = new Map<string, number>();
|
|
44
|
-
readonly #recordLastSentAsUnicastAnswer = new Map<string, number>();
|
|
45
44
|
|
|
46
45
|
readonly #socket: MdnsSocket;
|
|
47
46
|
|
|
@@ -102,34 +101,23 @@ export class MdnsServer {
|
|
|
102
101
|
const answersTimeSinceLastSent = answers.map(answer => ({
|
|
103
102
|
timeSinceLastMultiCast:
|
|
104
103
|
now - (this.#recordLastSentAsMulticastAnswer.get(this.buildDnsRecordKey(answer, sourceIntf)) ?? 0),
|
|
105
|
-
|
|
106
|
-
now -
|
|
107
|
-
(this.#recordLastSentAsUnicastAnswer.get(this.buildDnsRecordKey(answer, sourceIntf, sourceIp)) ??
|
|
108
|
-
0),
|
|
109
|
-
ttl: answer.ttl,
|
|
104
|
+
ttl: answer.ttl * 1000,
|
|
110
105
|
}));
|
|
111
106
|
if (
|
|
112
107
|
uniCastResponse &&
|
|
113
|
-
answersTimeSinceLastSent.some(
|
|
114
|
-
({ timeSinceLastMultiCast, ttl }) => timeSinceLastMultiCast > (ttl / 4) * 1000,
|
|
115
|
-
)
|
|
108
|
+
answersTimeSinceLastSent.some(({ timeSinceLastMultiCast, ttl }) => timeSinceLastMultiCast > ttl / 4)
|
|
116
109
|
) {
|
|
117
110
|
// If the query is for unicast response, still send as multicast if they were last sent as multicast longer then 1/4 of their ttl
|
|
118
111
|
uniCastResponse = false;
|
|
119
112
|
}
|
|
120
113
|
if (!uniCastResponse) {
|
|
121
|
-
answers = answers.filter(
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
answers.forEach(answer =>
|
|
125
|
-
this.#recordLastSentAsMulticastAnswer.set(this.buildDnsRecordKey(answer, sourceIntf), now),
|
|
114
|
+
answers = answers.filter(
|
|
115
|
+
(_, index) => answersTimeSinceLastSent[index].timeSinceLastMultiCast >= 900, // The last time sent as multicast was more than 900 ms ago
|
|
126
116
|
);
|
|
127
|
-
} else {
|
|
128
|
-
answers = answers.filter((_, index) => answersTimeSinceLastSent[index].timeSinceLastUniCast > 1000);
|
|
129
117
|
if (answers.length === 0) continue; // Nothing to send
|
|
130
118
|
|
|
131
119
|
answers.forEach(answer =>
|
|
132
|
-
this.#
|
|
120
|
+
this.#recordLastSentAsMulticastAnswer.set(this.buildDnsRecordKey(answer, sourceIntf), now),
|
|
133
121
|
);
|
|
134
122
|
}
|
|
135
123
|
|
|
@@ -203,29 +191,24 @@ export class MdnsServer {
|
|
|
203
191
|
}),
|
|
204
192
|
"Error happened when expiring MDNS announcements",
|
|
205
193
|
).catch(error => logger.error(error));
|
|
206
|
-
await this.#resetServices(
|
|
194
|
+
await this.#resetServices();
|
|
207
195
|
}
|
|
208
196
|
|
|
209
197
|
async setRecordsGenerator(service: string, generator: MdnsServer.RecordGenerator) {
|
|
210
198
|
await this.#records.clear();
|
|
211
199
|
this.#recordLastSentAsMulticastAnswer.clear();
|
|
212
|
-
this.#recordLastSentAsUnicastAnswer.clear();
|
|
213
200
|
this.#recordsGenerator.set(service, generator);
|
|
214
201
|
}
|
|
215
202
|
|
|
216
|
-
async #resetServices(
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
this.#recordLastSentAsMulticastAnswer.delete(service);
|
|
220
|
-
this.#recordLastSentAsUnicastAnswer.delete(service);
|
|
221
|
-
}
|
|
203
|
+
async #resetServices() {
|
|
204
|
+
await this.#records.clear();
|
|
205
|
+
this.#recordLastSentAsMulticastAnswer.clear();
|
|
222
206
|
}
|
|
223
207
|
|
|
224
208
|
async close() {
|
|
225
209
|
this.#observers.close();
|
|
226
210
|
await this.#records.close();
|
|
227
211
|
this.#recordLastSentAsMulticastAnswer.clear();
|
|
228
|
-
this.#recordLastSentAsUnicastAnswer.clear();
|
|
229
212
|
}
|
|
230
213
|
|
|
231
214
|
#getMulticastInterfacesForAnnounce() {
|
package/src/mdns/MdnsSocket.ts
CHANGED
|
@@ -99,7 +99,7 @@ export class MdnsSocket {
|
|
|
99
99
|
);
|
|
100
100
|
}
|
|
101
101
|
|
|
102
|
-
// New answer
|
|
102
|
+
// New answer does not fit anymore, send out the message
|
|
103
103
|
await this.#send(chunk, intf, unicastDest);
|
|
104
104
|
|
|
105
105
|
// Reset the message, length counter and included answers to count for next message
|
|
@@ -8,8 +8,15 @@ import { Message } from "../codec/MessageCodec.js";
|
|
|
8
8
|
import { MessageExchange } from "./MessageExchange.js";
|
|
9
9
|
|
|
10
10
|
export interface ProtocolHandler {
|
|
11
|
+
/** Protocol ID that this handler implements */
|
|
11
12
|
readonly id: number;
|
|
13
|
+
|
|
14
|
+
/** Indicates whether this protocol requires a secure session to be established before it can be used */
|
|
12
15
|
readonly requiresSecureSession: boolean;
|
|
16
|
+
|
|
17
|
+
/** Called on a new exchange that uses this protocol. The message is the first message of the exchange. */
|
|
13
18
|
onNewExchange(exchange: MessageExchange, message: Message): Promise<void>;
|
|
19
|
+
|
|
20
|
+
/** Called when the protocol handler is no longer needed and can clean up resources. */
|
|
14
21
|
close(): Promise<void>;
|
|
15
22
|
}
|
|
@@ -5,33 +5,41 @@
|
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
import { DataReader, DataWriter, Endian } from "#general";
|
|
8
|
-
import { GeneralStatusCode, Schema } from "#types";
|
|
8
|
+
import { GeneralStatusCode, Schema, VendorId } from "#types";
|
|
9
9
|
|
|
10
10
|
export type ProtocolStatusMessage<T> = {
|
|
11
11
|
generalStatus: GeneralStatusCode;
|
|
12
12
|
protocolId: number;
|
|
13
|
+
vendorId: VendorId;
|
|
13
14
|
protocolStatus: T;
|
|
14
15
|
protocolData?: Uint8Array;
|
|
15
16
|
};
|
|
16
17
|
|
|
17
18
|
export abstract class ProtocolStatusMessageSchema<T extends ProtocolStatusMessage<any>> extends Schema<T, Uint8Array> {
|
|
18
19
|
#protocolId: number;
|
|
20
|
+
#vendorId: number;
|
|
19
21
|
#protocolSpecificDataAllowed: boolean;
|
|
20
22
|
|
|
21
|
-
constructor(protocolId: number, protocolSpecificDataAllowed = true) {
|
|
23
|
+
constructor(protocol: number | { protocolId: number; vendorId: number }, protocolSpecificDataAllowed = true) {
|
|
22
24
|
super();
|
|
23
|
-
|
|
25
|
+
if (typeof protocol === "number") {
|
|
26
|
+
this.#protocolId = protocol;
|
|
27
|
+
this.#vendorId = 0;
|
|
28
|
+
} else {
|
|
29
|
+
this.#protocolId = protocol.protocolId;
|
|
30
|
+
this.#vendorId = protocol.vendorId;
|
|
31
|
+
}
|
|
24
32
|
this.#protocolSpecificDataAllowed = protocolSpecificDataAllowed;
|
|
25
33
|
}
|
|
26
34
|
|
|
27
|
-
override encode(message: Omit<T, "protocolId">): Uint8Array {
|
|
28
|
-
return super.encode({ ...message, protocolId: this.#protocolId } as T);
|
|
35
|
+
override encode(message: Omit<T, "protocolId" | "vendorId">): Uint8Array {
|
|
36
|
+
return super.encode({ ...message, protocolId: this.#protocolId, vendorId: this.#vendorId } as T);
|
|
29
37
|
}
|
|
30
38
|
|
|
31
|
-
encodeInternal({ generalStatus, protocolStatus, protocolId, protocolData }: T) {
|
|
39
|
+
encodeInternal({ generalStatus, protocolStatus, protocolId, protocolData, vendorId }: T) {
|
|
32
40
|
const writer = new DataWriter(Endian.Little);
|
|
33
41
|
writer.writeUInt16(generalStatus);
|
|
34
|
-
writer.writeUInt32(protocolId);
|
|
42
|
+
writer.writeUInt32((vendorId << 16) | protocolId);
|
|
35
43
|
writer.writeUInt16(protocolStatus);
|
|
36
44
|
if (this.#protocolSpecificDataAllowed && protocolData !== undefined && protocolData.length > 0) {
|
|
37
45
|
writer.writeByteArray(protocolData);
|
|
@@ -42,10 +50,18 @@ export abstract class ProtocolStatusMessageSchema<T extends ProtocolStatusMessag
|
|
|
42
50
|
decodeInternal(bytes: Uint8Array) {
|
|
43
51
|
const reader = new DataReader(bytes, Endian.Little);
|
|
44
52
|
const generalStatus = reader.readUInt16();
|
|
45
|
-
const
|
|
53
|
+
const vendorProtocolId = reader.readUInt32();
|
|
46
54
|
const protocolStatus = reader.readUInt16();
|
|
47
|
-
const
|
|
55
|
+
const protocolData = reader.remainingBytesCount > 0 ? reader.remainingBytes : undefined;
|
|
48
56
|
|
|
49
|
-
|
|
57
|
+
const protocolId = vendorProtocolId & 0xffff;
|
|
58
|
+
const vendorId = VendorId(vendorProtocolId >>> 16);
|
|
59
|
+
return {
|
|
60
|
+
generalStatus,
|
|
61
|
+
protocolId,
|
|
62
|
+
protocolStatus,
|
|
63
|
+
protocolData,
|
|
64
|
+
vendorId,
|
|
65
|
+
} as unknown as T;
|
|
50
66
|
}
|
|
51
67
|
}
|
|
@@ -8,7 +8,7 @@ import { Diagnostic, MatterError, UnexpectedDataError } from "#general";
|
|
|
8
8
|
import { GeneralStatusCode, SecureChannelStatusCode, SecureMessageType, TlvSchema } from "#types";
|
|
9
9
|
import { Message } from "../codec/MessageCodec.js";
|
|
10
10
|
import { ExchangeSendOptions, MessageExchange } from "../protocol/MessageExchange.js";
|
|
11
|
-
import {
|
|
11
|
+
import { SecureChannelStatusMessage } from "./SecureChannelStatusMessageSchema.js";
|
|
12
12
|
|
|
13
13
|
/** Error base Class for all errors related to the status response messages. */
|
|
14
14
|
export class ChannelStatusResponseError extends MatterError {
|
|
@@ -150,7 +150,7 @@ export class SecureChannelMessenger {
|
|
|
150
150
|
) {
|
|
151
151
|
await this.exchange.send(
|
|
152
152
|
SecureMessageType.StatusReport,
|
|
153
|
-
|
|
153
|
+
SecureChannelStatusMessage.encode({
|
|
154
154
|
generalStatus,
|
|
155
155
|
protocolStatus,
|
|
156
156
|
}),
|
|
@@ -171,7 +171,7 @@ export class SecureChannelMessenger {
|
|
|
171
171
|
} = message;
|
|
172
172
|
if (messageType !== SecureMessageType.StatusReport) return;
|
|
173
173
|
|
|
174
|
-
const { generalStatus, protocolId, protocolStatus } =
|
|
174
|
+
const { generalStatus, protocolId, protocolStatus } = SecureChannelStatusMessage.decode(payload);
|
|
175
175
|
if (generalStatus !== GeneralStatusCode.Success) {
|
|
176
176
|
throw new ChannelStatusResponseError(
|
|
177
177
|
`Received general error status for protocol ${protocolId}${logHint ? ` (${logHint})` : ""}`,
|
|
@@ -23,7 +23,7 @@ import { SecureSession } from "../session/SecureSession.js";
|
|
|
23
23
|
import { CaseServer } from "../session/case/CaseServer.js";
|
|
24
24
|
import { MaximumPasePairingErrorsReachedError, PaseServer } from "../session/pase/PaseServer.js";
|
|
25
25
|
import { ChannelStatusResponseError, SecureChannelMessenger } from "./SecureChannelMessenger.js";
|
|
26
|
-
import {
|
|
26
|
+
import { SecureChannelStatusMessage } from "./SecureChannelStatusMessageSchema.js";
|
|
27
27
|
|
|
28
28
|
const logger = Logger.get("SecureChannelProtocol");
|
|
29
29
|
|
|
@@ -62,7 +62,7 @@ export class StatusReportOnlySecureChannelProtocol implements ProtocolHandler {
|
|
|
62
62
|
);
|
|
63
63
|
}
|
|
64
64
|
|
|
65
|
-
const { generalStatus, protocolId, protocolStatus } =
|
|
65
|
+
const { generalStatus, protocolId, protocolStatus } = SecureChannelStatusMessage.decode(payload);
|
|
66
66
|
if (generalStatus !== GeneralStatusCode.Success) {
|
|
67
67
|
throw new ChannelStatusResponseError(
|
|
68
68
|
`Received general error status (${protocolId})`,
|
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
import { ProtocolStatusMessage, ProtocolStatusMessageSchema } from "#protocol/ProtocolStatusMessage.js";
|
|
8
8
|
import { SECURE_CHANNEL_PROTOCOL_ID, SecureChannelStatusCode } from "#types";
|
|
9
9
|
|
|
10
|
-
export type
|
|
10
|
+
export type SecureChannelStatus = ProtocolStatusMessage<SecureChannelStatusCode>;
|
|
11
11
|
|
|
12
|
-
export class SecureChannelStatusMessageSchema extends ProtocolStatusMessageSchema<
|
|
12
|
+
export class SecureChannelStatusMessageSchema extends ProtocolStatusMessageSchema<SecureChannelStatus> {}
|
|
13
13
|
|
|
14
|
-
export const
|
|
14
|
+
export const SecureChannelStatusMessage = new SecureChannelStatusMessageSchema(SECURE_CHANNEL_PROTOCOL_ID);
|