@matter/react-native 0.16.0-alpha.0-20250912-0d12bf718 → 0.16.0-alpha.0-20250913-0bc2515df
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/{BleReactNative.d.ts → ReactNativeBle.d.ts} +2 -2
- package/dist/{esm/ble/BleReactNative.d.ts.map → cjs/ble/ReactNativeBle.d.ts.map} +1 -1
- package/dist/cjs/ble/{BleReactNative.js → ReactNativeBle.js} +7 -7
- package/dist/cjs/ble/{BleReactNative.js.map → ReactNativeBle.js.map} +2 -2
- package/dist/cjs/ble/ReactNativeBleChannel.d.ts +3 -3
- package/dist/cjs/ble/ReactNativeBleChannel.d.ts.map +1 -1
- package/dist/cjs/ble/ReactNativeBleChannel.js +13 -9
- package/dist/cjs/ble/ReactNativeBleChannel.js.map +1 -1
- package/dist/cjs/ble/index.d.ts +1 -1
- package/dist/cjs/ble/index.d.ts.map +1 -1
- package/dist/cjs/ble/index.js +1 -1
- package/dist/cjs/ble/index.js.map +1 -1
- package/dist/cjs/environment/ReactNativeEnvironment.d.ts.map +1 -1
- package/dist/cjs/environment/ReactNativeEnvironment.js +6 -0
- package/dist/cjs/environment/ReactNativeEnvironment.js.map +1 -1
- package/dist/esm/ble/{BleReactNative.d.ts → ReactNativeBle.d.ts} +2 -2
- package/dist/{cjs/ble/BleReactNative.d.ts.map → esm/ble/ReactNativeBle.d.ts.map} +1 -1
- package/dist/esm/ble/{BleReactNative.js → ReactNativeBle.js} +4 -4
- package/dist/esm/ble/ReactNativeBle.js.map +6 -0
- package/dist/esm/ble/ReactNativeBleChannel.d.ts +3 -3
- package/dist/esm/ble/ReactNativeBleChannel.d.ts.map +1 -1
- package/dist/esm/ble/ReactNativeBleChannel.js +13 -10
- package/dist/esm/ble/ReactNativeBleChannel.js.map +1 -1
- package/dist/esm/ble/index.d.ts +1 -1
- package/dist/esm/ble/index.d.ts.map +1 -1
- package/dist/esm/ble/index.js +1 -1
- package/dist/esm/environment/ReactNativeEnvironment.d.ts.map +1 -1
- package/dist/esm/environment/ReactNativeEnvironment.js +6 -0
- package/dist/esm/environment/ReactNativeEnvironment.js.map +1 -1
- package/package.json +5 -5
- package/src/ble/{BleReactNative.ts → ReactNativeBle.ts} +2 -2
- package/src/ble/ReactNativeBleChannel.ts +14 -9
- package/src/ble/index.ts +1 -1
- package/src/environment/ReactNativeEnvironment.ts +7 -0
- package/dist/esm/ble/BleReactNative.js.map +0 -6
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { ChannelType, NetInterface } from "#general";
|
|
7
7
|
import { Ble, BlePeripheralInterface, Scanner } from "#protocol";
|
|
8
|
-
export declare class
|
|
8
|
+
export declare class ReactNativeBle extends Ble {
|
|
9
9
|
private bleCentral;
|
|
10
10
|
constructor();
|
|
11
11
|
get centralInterface(): NetInterface;
|
|
@@ -13,4 +13,4 @@ export declare class BleReactNative extends Ble {
|
|
|
13
13
|
get peripheralInterface(): BlePeripheralInterface;
|
|
14
14
|
supports(type: ChannelType): type is ChannelType.BLE;
|
|
15
15
|
}
|
|
16
|
-
//# sourceMappingURL=
|
|
16
|
+
//# sourceMappingURL=ReactNativeBle.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"
|
|
1
|
+
{"version":3,"file":"ReactNativeBle.d.ts","sourceRoot":"","sources":["../../../src/ble/ReactNativeBle.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAuB,YAAY,EAAE,MAAM,UAAU,CAAC;AAC1E,OAAO,EAAE,GAAG,EAAE,sBAAsB,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKjE,qBAAa,cAAe,SAAQ,GAAG;IACnC,OAAO,CAAC,UAAU,CAAmC;;IAMrD,IAAI,gBAAgB,IAAI,YAAY,CAKnC;IAED,IAAI,OAAO,IAAI,OAAO,CAKrB;IAED,IAAI,mBAAmB,IAAI,sBAAsB,CAEhD;IAED,QAAQ,CAAC,IAAI,EAAE,WAAW;CAG7B"}
|
|
@@ -16,11 +16,11 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
16
16
|
return to;
|
|
17
17
|
};
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var
|
|
20
|
-
__export(
|
|
21
|
-
|
|
19
|
+
var ReactNativeBle_exports = {};
|
|
20
|
+
__export(ReactNativeBle_exports, {
|
|
21
|
+
ReactNativeBle: () => ReactNativeBle
|
|
22
22
|
});
|
|
23
|
-
module.exports = __toCommonJS(
|
|
23
|
+
module.exports = __toCommonJS(ReactNativeBle_exports);
|
|
24
24
|
var import_general = require("#general");
|
|
25
25
|
var import_protocol = require("#protocol");
|
|
26
26
|
var import_BleScanner = require("./BleScanner.js");
|
|
@@ -31,7 +31,7 @@ var import_ReactNativeBleClient = require("./ReactNativeBleClient.js");
|
|
|
31
31
|
* Copyright 2022-2025 Matter.js Authors
|
|
32
32
|
* SPDX-License-Identifier: Apache-2.0
|
|
33
33
|
*/
|
|
34
|
-
class
|
|
34
|
+
class ReactNativeBle extends import_protocol.Ble {
|
|
35
35
|
bleCentral;
|
|
36
36
|
constructor() {
|
|
37
37
|
super();
|
|
@@ -40,7 +40,7 @@ class BleReactNative extends import_protocol.Ble {
|
|
|
40
40
|
if (this.bleCentral === void 0) {
|
|
41
41
|
this.bleCentral = new import_ReactNativeBleClient.ReactNativeBleClient();
|
|
42
42
|
}
|
|
43
|
-
return new import_ReactNativeBleChannel.ReactNativeBleCentralInterface();
|
|
43
|
+
return new import_ReactNativeBleChannel.ReactNativeBleCentralInterface(this);
|
|
44
44
|
}
|
|
45
45
|
get scanner() {
|
|
46
46
|
if (this.bleCentral === void 0) {
|
|
@@ -55,4 +55,4 @@ class BleReactNative extends import_protocol.Ble {
|
|
|
55
55
|
return type === import_general.ChannelType.BLE;
|
|
56
56
|
}
|
|
57
57
|
}
|
|
58
|
-
//# sourceMappingURL=
|
|
58
|
+
//# sourceMappingURL=ReactNativeBle.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../../src/ble/
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,qBAA+D;AAC/D,sBAAqD;AACrD,wBAA2B;AAC3B,mCAA+C;AAC/C,kCAAqC;AAVrC;AAAA;AAAA;AAAA;AAAA;AAYO,MAAM,uBAAuB,oBAAI;AAAA,EAC5B;AAAA,EAER,cAAc;AACV,UAAM;AAAA,EACV;AAAA,EAEA,IAAI,mBAAiC;AACjC,QAAI,KAAK,eAAe,QAAW;AAC/B,WAAK,aAAa,IAAI,iDAAqB;AAAA,IAC/C;AACA,WAAO,IAAI,4DAA+B;AAAA,
|
|
3
|
+
"sources": ["../../../src/ble/ReactNativeBle.ts"],
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,qBAA+D;AAC/D,sBAAqD;AACrD,wBAA2B;AAC3B,mCAA+C;AAC/C,kCAAqC;AAVrC;AAAA;AAAA;AAAA;AAAA;AAYO,MAAM,uBAAuB,oBAAI;AAAA,EAC5B;AAAA,EAER,cAAc;AACV,UAAM;AAAA,EACV;AAAA,EAEA,IAAI,mBAAiC;AACjC,QAAI,KAAK,eAAe,QAAW;AAC/B,WAAK,aAAa,IAAI,iDAAqB;AAAA,IAC/C;AACA,WAAO,IAAI,4DAA+B,IAAI;AAAA,EAClD;AAAA,EAEA,IAAI,UAAmB;AACnB,QAAI,KAAK,eAAe,QAAW;AAC/B,WAAK,aAAa,IAAI,iDAAqB;AAAA,IAC/C;AACA,WAAO,IAAI,6BAAW,KAAK,UAAU;AAAA,EACzC;AAAA,EAEA,IAAI,sBAA8C;AAC9C,UAAM,IAAI,mCAAoB,kEAAkE;AAAA,EACpG;AAAA,EAEA,SAAS,MAAmB;AACxB,WAAO,SAAS,2BAAY;AAAA,EAChC;AACJ;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -4,11 +4,11 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import { Bytes, Channel, ChannelType, NetInterface, ServerAddress, TransportInterface } from "#general";
|
|
7
|
-
import { BleChannel, BtpSessionHandler } from "#protocol";
|
|
7
|
+
import { Ble, BleChannel, BtpSessionHandler } from "#protocol";
|
|
8
8
|
import { Characteristic, Device } from "react-native-ble-plx";
|
|
9
9
|
export declare class ReactNativeBleCentralInterface implements NetInterface {
|
|
10
|
-
private
|
|
11
|
-
|
|
10
|
+
#private;
|
|
11
|
+
constructor(ble: Ble);
|
|
12
12
|
openChannel(address: ServerAddress): Promise<Channel<Bytes>>;
|
|
13
13
|
onData(listener: (socket: Channel<Bytes>, data: Bytes) => void): TransportInterface.Listener;
|
|
14
14
|
close(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReactNativeBleChannel.d.ts","sourceRoot":"","sources":["../../../src/ble/ReactNativeBleChannel.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACH,KAAK,EACL,OAAO,EACP,WAAW,EAIX,YAAY,EACZ,aAAa,EAEb,kBAAkB,EAErB,MAAM,UAAU,CAAC;AAClB,OAAO,
|
|
1
|
+
{"version":3,"file":"ReactNativeBleChannel.d.ts","sourceRoot":"","sources":["../../../src/ble/ReactNativeBleChannel.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACH,KAAK,EACL,OAAO,EACP,WAAW,EAIX,YAAY,EACZ,aAAa,EAEb,kBAAkB,EAErB,MAAM,UAAU,CAAC;AAClB,OAAO,EASH,GAAG,EACH,UAAU,EAIV,iBAAiB,EACpB,MAAM,WAAW,CAAC;AACnB,OAAO,EAEH,cAAc,EACd,MAAM,EAGT,MAAM,sBAAsB,CAAC;AAK9B,qBAAa,8BAA+B,YAAW,YAAY;;gBAKnD,GAAG,EAAE,GAAG;IAId,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IA8FlE,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,KAAK,IAAI,GAAG,kBAAkB,CAAC,QAAQ;IAOtF,KAAK;IAMX,QAAQ,CAAC,IAAI,EAAE,WAAW;CAG7B;AAED,qBAAa,qBAAsB,SAAQ,UAAU,CAAC,KAAK,CAAC;IAsHpD,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,UAAU;WAtHlB,MAAM,CACf,UAAU,EAAE,MAAM,EAClB,wBAAwB,EAAE,cAAc,EACxC,4BAA4B,EAAE,cAAc,EAC5C,uBAAuB,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,KAAK,IAAI,EACtE,mCAAmC,CAAC,EAAE,KAAK,GAC5C,OAAO,CAAC,qBAAqB,CAAC;IA2GjC,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,sBAAsB,CAAe;gBAGxB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,iBAAiB;IAWlD;;;;OAIG;IACG,IAAI,CAAC,IAAI,EAAE,KAAK;IAYtB,IAAI,IAAI,WAEP;IAEK,KAAK;CAKd"}
|
|
@@ -32,19 +32,23 @@ var import_react_native_ble_plx = require("react-native-ble-plx");
|
|
|
32
32
|
*/
|
|
33
33
|
const logger = import_general.Logger.get("BleChannel");
|
|
34
34
|
class ReactNativeBleCentralInterface {
|
|
35
|
-
|
|
36
|
-
|
|
35
|
+
#ble;
|
|
36
|
+
#openChannels = /* @__PURE__ */ new Map();
|
|
37
|
+
#onMatterMessageListener;
|
|
38
|
+
constructor(ble) {
|
|
39
|
+
this.#ble = ble;
|
|
40
|
+
}
|
|
37
41
|
async openChannel(address) {
|
|
38
42
|
if (address.type !== "ble") {
|
|
39
43
|
throw new import_general.InternalError(`Unsupported address type ${address.type}.`);
|
|
40
44
|
}
|
|
41
|
-
if (this
|
|
45
|
+
if (this.#onMatterMessageListener === void 0) {
|
|
42
46
|
throw new import_general.InternalError(`Network Interface was not added to the system yet.`);
|
|
43
47
|
}
|
|
44
|
-
const { peripheral, hasAdditionalAdvertisementData } =
|
|
48
|
+
const { peripheral, hasAdditionalAdvertisementData } = this.#ble.scanner.getDiscoveredDevice(
|
|
45
49
|
address.peripheralAddress
|
|
46
50
|
);
|
|
47
|
-
if (this
|
|
51
|
+
if (this.#openChannels.has(address)) {
|
|
48
52
|
throw new import_protocol.BleError(
|
|
49
53
|
`Peripheral ${address.peripheralAddress} is already connected. Only one connection supported right now.`
|
|
50
54
|
);
|
|
@@ -99,25 +103,25 @@ class ReactNativeBleCentralInterface {
|
|
|
99
103
|
logger.debug("missing characteristics");
|
|
100
104
|
continue;
|
|
101
105
|
}
|
|
102
|
-
this
|
|
106
|
+
this.#openChannels.set(address, device);
|
|
103
107
|
return await ReactNativeBleChannel.create(
|
|
104
108
|
device,
|
|
105
109
|
characteristicC1ForWrite,
|
|
106
110
|
characteristicC2ForSubscribe,
|
|
107
|
-
this
|
|
111
|
+
this.#onMatterMessageListener,
|
|
108
112
|
additionalCommissioningRelatedData
|
|
109
113
|
);
|
|
110
114
|
}
|
|
111
115
|
throw new import_protocol.BleError(`No Matter service found on peripheral ${device.id}`);
|
|
112
116
|
}
|
|
113
117
|
onData(listener) {
|
|
114
|
-
this
|
|
118
|
+
this.#onMatterMessageListener = listener;
|
|
115
119
|
return {
|
|
116
120
|
close: async () => await this.close()
|
|
117
121
|
};
|
|
118
122
|
}
|
|
119
123
|
async close() {
|
|
120
|
-
for (const peripheral of this
|
|
124
|
+
for (const peripheral of this.#openChannels.values()) {
|
|
121
125
|
await peripheral.cancelConnection();
|
|
122
126
|
}
|
|
123
127
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/ble/ReactNativeBleChannel.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,qBAYO;AACP,sBAeO;AACP,kCAMO;AAzCP;AAAA;AAAA;AAAA;AAAA;AA4CA,MAAM,SAAS,sBAAO,IAAI,YAAY;AAE/B,MAAM,+BAAuD;AAAA,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["ReactNativeBleError"]
|
|
6
6
|
}
|
package/dist/cjs/ble/index.d.ts
CHANGED
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
* Copyright 2022-2025 Matter.js Authors
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
export * from "./BleReactNative.js";
|
|
7
6
|
export * from "./BleScanner.js";
|
|
7
|
+
export * from "./ReactNativeBle.js";
|
|
8
8
|
export * from "./ReactNativeBleChannel.js";
|
|
9
9
|
export * from "./ReactNativeBleClient.js";
|
|
10
10
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ble/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ble/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC"}
|
package/dist/cjs/ble/index.js
CHANGED
|
@@ -15,8 +15,8 @@ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "defau
|
|
|
15
15
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
16
16
|
var ble_exports = {};
|
|
17
17
|
module.exports = __toCommonJS(ble_exports);
|
|
18
|
-
__reExport(ble_exports, require("./BleReactNative.js"), module.exports);
|
|
19
18
|
__reExport(ble_exports, require("./BleScanner.js"), module.exports);
|
|
19
|
+
__reExport(ble_exports, require("./ReactNativeBle.js"), module.exports);
|
|
20
20
|
__reExport(ble_exports, require("./ReactNativeBleChannel.js"), module.exports);
|
|
21
21
|
__reExport(ble_exports, require("./ReactNativeBleClient.js"), module.exports);
|
|
22
22
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/ble/index.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;AAAA;AAAA;AAMA,wBAAc,
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;AAAA;AAAA;AAMA,wBAAc,4BANd;AAOA,wBAAc,gCAPd;AAQA,wBAAc,uCARd;AASA,wBAAc,sCATd;AAAA;AAAA;AAAA;AAAA;AAAA;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReactNativeEnvironment.d.ts","sourceRoot":"","sources":["../../../src/environment/ReactNativeEnvironment.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"ReactNativeEnvironment.d.ts","sourceRoot":"","sources":["../../../src/environment/ReactNativeEnvironment.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,WAAW,EAA2B,eAAe,EAAE,MAAM,UAAU,CAAC;AAKjF;;;;GAIG;AACH,wBAAgB,sBAAsB,gBASrC;AA2BD,wBAAgB,WAAW,CAAC,IAAI,EAAE,eAAe;;EAMhD"}
|
|
@@ -22,7 +22,9 @@ __export(ReactNativeEnvironment_exports, {
|
|
|
22
22
|
getDefaults: () => getDefaults
|
|
23
23
|
});
|
|
24
24
|
module.exports = __toCommonJS(ReactNativeEnvironment_exports);
|
|
25
|
+
var import_ReactNativeBle = require("#ble/ReactNativeBle.js");
|
|
25
26
|
var import_general = require("#general");
|
|
27
|
+
var import_protocol = require("#protocol");
|
|
26
28
|
var import_NetworkReactNative = require("../net/NetworkReactNative.js");
|
|
27
29
|
var import_StorageBackendAsyncStorage = require("../storage/StorageBackendAsyncStorage.js");
|
|
28
30
|
/**
|
|
@@ -35,6 +37,7 @@ function ReactNativeEnvironment() {
|
|
|
35
37
|
loadVariables(env);
|
|
36
38
|
configureStorage(env);
|
|
37
39
|
configureNetwork(env);
|
|
40
|
+
configureBle(env);
|
|
38
41
|
return env;
|
|
39
42
|
}
|
|
40
43
|
function loadVariables(env) {
|
|
@@ -51,6 +54,9 @@ function configureStorage(env) {
|
|
|
51
54
|
function configureNetwork(env) {
|
|
52
55
|
env.set(import_general.Network, new import_NetworkReactNative.NetworkReactNative());
|
|
53
56
|
}
|
|
57
|
+
function configureBle(env) {
|
|
58
|
+
env.set(import_protocol.Ble, new import_ReactNativeBle.ReactNativeBle());
|
|
59
|
+
}
|
|
54
60
|
function getDefaults(vars) {
|
|
55
61
|
const envName = vars.get("environment", "default");
|
|
56
62
|
return {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/environment/ReactNativeEnvironment.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,qBAAsE;AACtE,gCAAmC;AACnC,wCAA2C;
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,4BAA+B;AAC/B,qBAAsE;AACtE,sBAAoB;AACpB,gCAAmC;AACnC,wCAA2C;AAV3C;AAAA;AAAA;AAAA;AAAA;AAiBO,SAAS,yBAAyB;AACrC,QAAM,MAAM,IAAI,2BAAY,SAAS;AAErC,gBAAc,GAAG;AACjB,mBAAiB,GAAG;AACpB,mBAAiB,GAAG;AACpB,eAAa,GAAG;AAEhB,SAAO;AACX;AAEA,SAAS,cAAc,KAAkB;AACrC,QAAM,OAAO,IAAI;AAGjB,OAAK,eAAe,YAAY,IAAI,CAAC;AACzC;AAEA,SAAS,iBAAiB,KAAkB;AACxC,QAAM,UAAU,IAAI,IAAI,6BAAc;AAEtC,MAAI,KAAK,IAAI,MAAM;AACf,YAAQ,WAAW;AAAA,EACvB,CAAC;AAED,UAAQ,UAAU,eAAa,IAAI,6DAA2B,SAAS;AAC3E;AAEA,SAAS,iBAAiB,KAAkB;AACxC,MAAI,IAAI,wBAAS,IAAI,6CAAmB,CAAC;AAC7C;AAEA,SAAS,aAAa,KAAkB;AACpC,MAAI,IAAI,qBAAK,IAAI,qCAAe,CAAC;AACrC;AAEO,SAAS,YAAY,MAAuB;AAC/C,QAAM,UAAU,KAAK,IAAI,eAAe,SAAS;AAEjD,SAAO;AAAA,IACH,aAAa;AAAA,EACjB;AACJ;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { ChannelType, NetInterface } from "#general";
|
|
7
7
|
import { Ble, BlePeripheralInterface, Scanner } from "#protocol";
|
|
8
|
-
export declare class
|
|
8
|
+
export declare class ReactNativeBle extends Ble {
|
|
9
9
|
private bleCentral;
|
|
10
10
|
constructor();
|
|
11
11
|
get centralInterface(): NetInterface;
|
|
@@ -13,4 +13,4 @@ export declare class BleReactNative extends Ble {
|
|
|
13
13
|
get peripheralInterface(): BlePeripheralInterface;
|
|
14
14
|
supports(type: ChannelType): type is ChannelType.BLE;
|
|
15
15
|
}
|
|
16
|
-
//# sourceMappingURL=
|
|
16
|
+
//# sourceMappingURL=ReactNativeBle.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"
|
|
1
|
+
{"version":3,"file":"ReactNativeBle.d.ts","sourceRoot":"","sources":["../../../src/ble/ReactNativeBle.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAuB,YAAY,EAAE,MAAM,UAAU,CAAC;AAC1E,OAAO,EAAE,GAAG,EAAE,sBAAsB,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKjE,qBAAa,cAAe,SAAQ,GAAG;IACnC,OAAO,CAAC,UAAU,CAAmC;;IAMrD,IAAI,gBAAgB,IAAI,YAAY,CAKnC;IAED,IAAI,OAAO,IAAI,OAAO,CAKrB;IAED,IAAI,mBAAmB,IAAI,sBAAsB,CAEhD;IAED,QAAQ,CAAC,IAAI,EAAE,WAAW;CAG7B"}
|
|
@@ -8,7 +8,7 @@ import { Ble } from "#protocol";
|
|
|
8
8
|
import { BleScanner } from "./BleScanner.js";
|
|
9
9
|
import { ReactNativeBleCentralInterface } from "./ReactNativeBleChannel.js";
|
|
10
10
|
import { ReactNativeBleClient } from "./ReactNativeBleClient.js";
|
|
11
|
-
class
|
|
11
|
+
class ReactNativeBle extends Ble {
|
|
12
12
|
bleCentral;
|
|
13
13
|
constructor() {
|
|
14
14
|
super();
|
|
@@ -17,7 +17,7 @@ class BleReactNative extends Ble {
|
|
|
17
17
|
if (this.bleCentral === void 0) {
|
|
18
18
|
this.bleCentral = new ReactNativeBleClient();
|
|
19
19
|
}
|
|
20
|
-
return new ReactNativeBleCentralInterface();
|
|
20
|
+
return new ReactNativeBleCentralInterface(this);
|
|
21
21
|
}
|
|
22
22
|
get scanner() {
|
|
23
23
|
if (this.bleCentral === void 0) {
|
|
@@ -33,6 +33,6 @@ class BleReactNative extends Ble {
|
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
35
|
export {
|
|
36
|
-
|
|
36
|
+
ReactNativeBle
|
|
37
37
|
};
|
|
38
|
-
//# sourceMappingURL=
|
|
38
|
+
//# sourceMappingURL=ReactNativeBle.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/ble/ReactNativeBle.ts"],
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,aAAa,2BAAyC;AAC/D,SAAS,WAA4C;AACrD,SAAS,kBAAkB;AAC3B,SAAS,sCAAsC;AAC/C,SAAS,4BAA4B;AAE9B,MAAM,uBAAuB,IAAI;AAAA,EAC5B;AAAA,EAER,cAAc;AACV,UAAM;AAAA,EACV;AAAA,EAEA,IAAI,mBAAiC;AACjC,QAAI,KAAK,eAAe,QAAW;AAC/B,WAAK,aAAa,IAAI,qBAAqB;AAAA,IAC/C;AACA,WAAO,IAAI,+BAA+B,IAAI;AAAA,EAClD;AAAA,EAEA,IAAI,UAAmB;AACnB,QAAI,KAAK,eAAe,QAAW;AAC/B,WAAK,aAAa,IAAI,qBAAqB;AAAA,IAC/C;AACA,WAAO,IAAI,WAAW,KAAK,UAAU;AAAA,EACzC;AAAA,EAEA,IAAI,sBAA8C;AAC9C,UAAM,IAAI,oBAAoB,kEAAkE;AAAA,EACpG;AAAA,EAEA,SAAS,MAAmB;AACxB,WAAO,SAAS,YAAY;AAAA,EAChC;AACJ;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -4,11 +4,11 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import { Bytes, Channel, ChannelType, NetInterface, ServerAddress, TransportInterface } from "#general";
|
|
7
|
-
import { BleChannel, BtpSessionHandler } from "#protocol";
|
|
7
|
+
import { Ble, BleChannel, BtpSessionHandler } from "#protocol";
|
|
8
8
|
import { Characteristic, Device } from "react-native-ble-plx";
|
|
9
9
|
export declare class ReactNativeBleCentralInterface implements NetInterface {
|
|
10
|
-
private
|
|
11
|
-
|
|
10
|
+
#private;
|
|
11
|
+
constructor(ble: Ble);
|
|
12
12
|
openChannel(address: ServerAddress): Promise<Channel<Bytes>>;
|
|
13
13
|
onData(listener: (socket: Channel<Bytes>, data: Bytes) => void): TransportInterface.Listener;
|
|
14
14
|
close(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReactNativeBleChannel.d.ts","sourceRoot":"","sources":["../../../src/ble/ReactNativeBleChannel.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACH,KAAK,EACL,OAAO,EACP,WAAW,EAIX,YAAY,EACZ,aAAa,EAEb,kBAAkB,EAErB,MAAM,UAAU,CAAC;AAClB,OAAO,
|
|
1
|
+
{"version":3,"file":"ReactNativeBleChannel.d.ts","sourceRoot":"","sources":["../../../src/ble/ReactNativeBleChannel.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACH,KAAK,EACL,OAAO,EACP,WAAW,EAIX,YAAY,EACZ,aAAa,EAEb,kBAAkB,EAErB,MAAM,UAAU,CAAC;AAClB,OAAO,EASH,GAAG,EACH,UAAU,EAIV,iBAAiB,EACpB,MAAM,WAAW,CAAC;AACnB,OAAO,EAEH,cAAc,EACd,MAAM,EAGT,MAAM,sBAAsB,CAAC;AAK9B,qBAAa,8BAA+B,YAAW,YAAY;;gBAKnD,GAAG,EAAE,GAAG;IAId,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IA8FlE,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,KAAK,IAAI,GAAG,kBAAkB,CAAC,QAAQ;IAOtF,KAAK;IAMX,QAAQ,CAAC,IAAI,EAAE,WAAW;CAG7B;AAED,qBAAa,qBAAsB,SAAQ,UAAU,CAAC,KAAK,CAAC;IAsHpD,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,UAAU;WAtHlB,MAAM,CACf,UAAU,EAAE,MAAM,EAClB,wBAAwB,EAAE,cAAc,EACxC,4BAA4B,EAAE,cAAc,EAC5C,uBAAuB,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,KAAK,IAAI,EACtE,mCAAmC,CAAC,EAAE,KAAK,GAC5C,OAAO,CAAC,qBAAqB,CAAC;IA2GjC,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,sBAAsB,CAAe;gBAGxB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,iBAAiB;IAWlD;;;;OAIG;IACG,IAAI,CAAC,IAAI,EAAE,KAAK;IAYtB,IAAI,IAAI,WAEP;IAEK,KAAK;CAKd"}
|
|
@@ -21,7 +21,6 @@ import {
|
|
|
21
21
|
BTP_CONN_RSP_TIMEOUT,
|
|
22
22
|
BTP_MAXIMUM_WINDOW_SIZE,
|
|
23
23
|
BTP_SUPPORTED_VERSIONS,
|
|
24
|
-
Ble,
|
|
25
24
|
BleChannel,
|
|
26
25
|
BleError,
|
|
27
26
|
BtpCodec,
|
|
@@ -34,19 +33,23 @@ import {
|
|
|
34
33
|
} from "react-native-ble-plx";
|
|
35
34
|
const logger = Logger.get("BleChannel");
|
|
36
35
|
class ReactNativeBleCentralInterface {
|
|
37
|
-
|
|
38
|
-
|
|
36
|
+
#ble;
|
|
37
|
+
#openChannels = /* @__PURE__ */ new Map();
|
|
38
|
+
#onMatterMessageListener;
|
|
39
|
+
constructor(ble) {
|
|
40
|
+
this.#ble = ble;
|
|
41
|
+
}
|
|
39
42
|
async openChannel(address) {
|
|
40
43
|
if (address.type !== "ble") {
|
|
41
44
|
throw new InternalError(`Unsupported address type ${address.type}.`);
|
|
42
45
|
}
|
|
43
|
-
if (this
|
|
46
|
+
if (this.#onMatterMessageListener === void 0) {
|
|
44
47
|
throw new InternalError(`Network Interface was not added to the system yet.`);
|
|
45
48
|
}
|
|
46
|
-
const { peripheral, hasAdditionalAdvertisementData } =
|
|
49
|
+
const { peripheral, hasAdditionalAdvertisementData } = this.#ble.scanner.getDiscoveredDevice(
|
|
47
50
|
address.peripheralAddress
|
|
48
51
|
);
|
|
49
|
-
if (this
|
|
52
|
+
if (this.#openChannels.has(address)) {
|
|
50
53
|
throw new BleError(
|
|
51
54
|
`Peripheral ${address.peripheralAddress} is already connected. Only one connection supported right now.`
|
|
52
55
|
);
|
|
@@ -101,25 +104,25 @@ class ReactNativeBleCentralInterface {
|
|
|
101
104
|
logger.debug("missing characteristics");
|
|
102
105
|
continue;
|
|
103
106
|
}
|
|
104
|
-
this
|
|
107
|
+
this.#openChannels.set(address, device);
|
|
105
108
|
return await ReactNativeBleChannel.create(
|
|
106
109
|
device,
|
|
107
110
|
characteristicC1ForWrite,
|
|
108
111
|
characteristicC2ForSubscribe,
|
|
109
|
-
this
|
|
112
|
+
this.#onMatterMessageListener,
|
|
110
113
|
additionalCommissioningRelatedData
|
|
111
114
|
);
|
|
112
115
|
}
|
|
113
116
|
throw new BleError(`No Matter service found on peripheral ${device.id}`);
|
|
114
117
|
}
|
|
115
118
|
onData(listener) {
|
|
116
|
-
this
|
|
119
|
+
this.#onMatterMessageListener = listener;
|
|
117
120
|
return {
|
|
118
121
|
close: async () => await this.close()
|
|
119
122
|
};
|
|
120
123
|
}
|
|
121
124
|
async close() {
|
|
122
|
-
for (const peripheral of this
|
|
125
|
+
for (const peripheral of this.#openChannels.values()) {
|
|
123
126
|
await peripheral.cancelConnection();
|
|
124
127
|
}
|
|
125
128
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/ble/ReactNativeBleChannel.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA;AAAA,EACI;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAGA;AAAA,EAEA;AAAA,OACG;AACP;AAAA,EACI;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/dist/esm/ble/index.d.ts
CHANGED
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
* Copyright 2022-2025 Matter.js Authors
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
export * from "./BleReactNative.js";
|
|
7
6
|
export * from "./BleScanner.js";
|
|
7
|
+
export * from "./ReactNativeBle.js";
|
|
8
8
|
export * from "./ReactNativeBleChannel.js";
|
|
9
9
|
export * from "./ReactNativeBleClient.js";
|
|
10
10
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ble/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ble/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC"}
|
package/dist/esm/ble/index.js
CHANGED
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
* Copyright 2022-2025 Matter.js Authors
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
export * from "./BleReactNative.js";
|
|
7
6
|
export * from "./BleScanner.js";
|
|
7
|
+
export * from "./ReactNativeBle.js";
|
|
8
8
|
export * from "./ReactNativeBleChannel.js";
|
|
9
9
|
export * from "./ReactNativeBleClient.js";
|
|
10
10
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReactNativeEnvironment.d.ts","sourceRoot":"","sources":["../../../src/environment/ReactNativeEnvironment.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"ReactNativeEnvironment.d.ts","sourceRoot":"","sources":["../../../src/environment/ReactNativeEnvironment.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,WAAW,EAA2B,eAAe,EAAE,MAAM,UAAU,CAAC;AAKjF;;;;GAIG;AACH,wBAAgB,sBAAsB,gBASrC;AA2BD,wBAAgB,WAAW,CAAC,IAAI,EAAE,eAAe;;EAMhD"}
|
|
@@ -3,7 +3,9 @@
|
|
|
3
3
|
* Copyright 2022-2025 Matter.js Authors
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
+
import { ReactNativeBle } from "#ble/ReactNativeBle.js";
|
|
6
7
|
import { Environment, Network, StorageService } from "#general";
|
|
8
|
+
import { Ble } from "#protocol";
|
|
7
9
|
import { NetworkReactNative } from "../net/NetworkReactNative.js";
|
|
8
10
|
import { StorageBackendAsyncStorage } from "../storage/StorageBackendAsyncStorage.js";
|
|
9
11
|
function ReactNativeEnvironment() {
|
|
@@ -11,6 +13,7 @@ function ReactNativeEnvironment() {
|
|
|
11
13
|
loadVariables(env);
|
|
12
14
|
configureStorage(env);
|
|
13
15
|
configureNetwork(env);
|
|
16
|
+
configureBle(env);
|
|
14
17
|
return env;
|
|
15
18
|
}
|
|
16
19
|
function loadVariables(env) {
|
|
@@ -27,6 +30,9 @@ function configureStorage(env) {
|
|
|
27
30
|
function configureNetwork(env) {
|
|
28
31
|
env.set(Network, new NetworkReactNative());
|
|
29
32
|
}
|
|
33
|
+
function configureBle(env) {
|
|
34
|
+
env.set(Ble, new ReactNativeBle());
|
|
35
|
+
}
|
|
30
36
|
function getDefaults(vars) {
|
|
31
37
|
const envName = vars.get("environment", "default");
|
|
32
38
|
return {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/environment/ReactNativeEnvironment.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,aAAa,SAAS,sBAAuC;AACtE,SAAS,0BAA0B;AACnC,SAAS,kCAAkC;AAOpC,SAAS,yBAAyB;AACrC,QAAM,MAAM,IAAI,YAAY,SAAS;AAErC,gBAAc,GAAG;AACjB,mBAAiB,GAAG;AACpB,mBAAiB,GAAG;
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,sBAAsB;AAC/B,SAAS,aAAa,SAAS,sBAAuC;AACtE,SAAS,WAAW;AACpB,SAAS,0BAA0B;AACnC,SAAS,kCAAkC;AAOpC,SAAS,yBAAyB;AACrC,QAAM,MAAM,IAAI,YAAY,SAAS;AAErC,gBAAc,GAAG;AACjB,mBAAiB,GAAG;AACpB,mBAAiB,GAAG;AACpB,eAAa,GAAG;AAEhB,SAAO;AACX;AAEA,SAAS,cAAc,KAAkB;AACrC,QAAM,OAAO,IAAI;AAGjB,OAAK,eAAe,YAAY,IAAI,CAAC;AACzC;AAEA,SAAS,iBAAiB,KAAkB;AACxC,QAAM,UAAU,IAAI,IAAI,cAAc;AAEtC,MAAI,KAAK,IAAI,MAAM;AACf,YAAQ,WAAW;AAAA,EACvB,CAAC;AAED,UAAQ,UAAU,eAAa,IAAI,2BAA2B,SAAS;AAC3E;AAEA,SAAS,iBAAiB,KAAkB;AACxC,MAAI,IAAI,SAAS,IAAI,mBAAmB,CAAC;AAC7C;AAEA,SAAS,aAAa,KAAkB;AACpC,MAAI,IAAI,KAAK,IAAI,eAAe,CAAC;AACrC;AAEO,SAAS,YAAY,MAAuB;AAC/C,QAAM,UAAU,KAAK,IAAI,eAAe,SAAS;AAEjD,SAAO;AAAA,IACH,aAAa;AAAA,EACjB;AACJ;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@matter/react-native",
|
|
3
|
-
"version": "0.16.0-alpha.0-
|
|
3
|
+
"version": "0.16.0-alpha.0-20250913-0bc2515df",
|
|
4
4
|
"description": "Experimental React Native support for matter.js",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"iot",
|
|
@@ -36,9 +36,9 @@
|
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|
|
38
38
|
"@craftzdog/react-native-buffer": "6.1.0",
|
|
39
|
-
"@matter/general": "0.16.0-alpha.0-
|
|
40
|
-
"@matter/nodejs": "0.16.0-alpha.0-
|
|
41
|
-
"@matter/protocol": "0.16.0-alpha.0-
|
|
39
|
+
"@matter/general": "0.16.0-alpha.0-20250913-0bc2515df",
|
|
40
|
+
"@matter/nodejs": "0.16.0-alpha.0-20250913-0bc2515df",
|
|
41
|
+
"@matter/protocol": "0.16.0-alpha.0-20250913-0bc2515df",
|
|
42
42
|
"@react-native-async-storage/async-storage": "^2.2.0",
|
|
43
43
|
"@react-native-community/netinfo": "^11.4.1",
|
|
44
44
|
"@types/node": "^24.3.1",
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
"react-native-udp": "^4.1.7"
|
|
49
49
|
},
|
|
50
50
|
"devDependencies": {
|
|
51
|
-
"@matter/tools": "0.16.0-alpha.0-
|
|
51
|
+
"@matter/tools": "0.16.0-alpha.0-20250913-0bc2515df"
|
|
52
52
|
},
|
|
53
53
|
"overrides": {
|
|
54
54
|
"brorand": "npm:@matter.js/brorand@1.1.0"
|
|
@@ -10,7 +10,7 @@ import { BleScanner } from "./BleScanner.js";
|
|
|
10
10
|
import { ReactNativeBleCentralInterface } from "./ReactNativeBleChannel.js";
|
|
11
11
|
import { ReactNativeBleClient } from "./ReactNativeBleClient.js";
|
|
12
12
|
|
|
13
|
-
export class
|
|
13
|
+
export class ReactNativeBle extends Ble {
|
|
14
14
|
private bleCentral: ReactNativeBleClient | undefined;
|
|
15
15
|
|
|
16
16
|
constructor() {
|
|
@@ -21,7 +21,7 @@ export class BleReactNative extends Ble {
|
|
|
21
21
|
if (this.bleCentral === undefined) {
|
|
22
22
|
this.bleCentral = new ReactNativeBleClient();
|
|
23
23
|
}
|
|
24
|
-
return new ReactNativeBleCentralInterface();
|
|
24
|
+
return new ReactNativeBleCentralInterface(this);
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
get scanner(): Scanner {
|
|
@@ -45,22 +45,27 @@ import { BleScanner } from "./BleScanner.js";
|
|
|
45
45
|
const logger = Logger.get("BleChannel");
|
|
46
46
|
|
|
47
47
|
export class ReactNativeBleCentralInterface implements NetInterface {
|
|
48
|
-
|
|
49
|
-
|
|
48
|
+
#ble: Ble;
|
|
49
|
+
#openChannels: Map<ServerAddress, Device> = new Map();
|
|
50
|
+
#onMatterMessageListener: ((socket: Channel<Bytes>, data: Bytes) => void) | undefined;
|
|
51
|
+
|
|
52
|
+
constructor(ble: Ble) {
|
|
53
|
+
this.#ble = ble;
|
|
54
|
+
}
|
|
50
55
|
|
|
51
56
|
async openChannel(address: ServerAddress): Promise<Channel<Bytes>> {
|
|
52
57
|
if (address.type !== "ble") {
|
|
53
58
|
throw new InternalError(`Unsupported address type ${address.type}.`);
|
|
54
59
|
}
|
|
55
|
-
if (this
|
|
60
|
+
if (this.#onMatterMessageListener === undefined) {
|
|
56
61
|
throw new InternalError(`Network Interface was not added to the system yet.`);
|
|
57
62
|
}
|
|
58
63
|
|
|
59
64
|
// Get the peripheral by address and connect to it.
|
|
60
|
-
const { peripheral, hasAdditionalAdvertisementData } = (
|
|
65
|
+
const { peripheral, hasAdditionalAdvertisementData } = (this.#ble.scanner as BleScanner).getDiscoveredDevice(
|
|
61
66
|
address.peripheralAddress,
|
|
62
67
|
);
|
|
63
|
-
if (this
|
|
68
|
+
if (this.#openChannels.has(address)) {
|
|
64
69
|
throw new BleError(
|
|
65
70
|
`Peripheral ${address.peripheralAddress} is already connected. Only one connection supported right now.`,
|
|
66
71
|
);
|
|
@@ -129,12 +134,12 @@ export class ReactNativeBleCentralInterface implements NetInterface {
|
|
|
129
134
|
continue;
|
|
130
135
|
}
|
|
131
136
|
|
|
132
|
-
this
|
|
137
|
+
this.#openChannels.set(address, device);
|
|
133
138
|
return await ReactNativeBleChannel.create(
|
|
134
139
|
device,
|
|
135
140
|
characteristicC1ForWrite,
|
|
136
141
|
characteristicC2ForSubscribe,
|
|
137
|
-
this
|
|
142
|
+
this.#onMatterMessageListener,
|
|
138
143
|
additionalCommissioningRelatedData,
|
|
139
144
|
);
|
|
140
145
|
}
|
|
@@ -143,14 +148,14 @@ export class ReactNativeBleCentralInterface implements NetInterface {
|
|
|
143
148
|
}
|
|
144
149
|
|
|
145
150
|
onData(listener: (socket: Channel<Bytes>, data: Bytes) => void): TransportInterface.Listener {
|
|
146
|
-
this
|
|
151
|
+
this.#onMatterMessageListener = listener;
|
|
147
152
|
return {
|
|
148
153
|
close: async () => await this.close(),
|
|
149
154
|
};
|
|
150
155
|
}
|
|
151
156
|
|
|
152
157
|
async close() {
|
|
153
|
-
for (const peripheral of this
|
|
158
|
+
for (const peripheral of this.#openChannels.values()) {
|
|
154
159
|
await peripheral.cancelConnection();
|
|
155
160
|
}
|
|
156
161
|
}
|
package/src/ble/index.ts
CHANGED
|
@@ -4,7 +4,9 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
+
import { ReactNativeBle } from "#ble/ReactNativeBle.js";
|
|
7
8
|
import { Environment, Network, StorageService, VariableService } from "#general";
|
|
9
|
+
import { Ble } from "#protocol";
|
|
8
10
|
import { NetworkReactNative } from "../net/NetworkReactNative.js";
|
|
9
11
|
import { StorageBackendAsyncStorage } from "../storage/StorageBackendAsyncStorage.js";
|
|
10
12
|
|
|
@@ -19,6 +21,7 @@ export function ReactNativeEnvironment() {
|
|
|
19
21
|
loadVariables(env);
|
|
20
22
|
configureStorage(env);
|
|
21
23
|
configureNetwork(env);
|
|
24
|
+
configureBle(env);
|
|
22
25
|
|
|
23
26
|
return env;
|
|
24
27
|
}
|
|
@@ -44,6 +47,10 @@ function configureNetwork(env: Environment) {
|
|
|
44
47
|
env.set(Network, new NetworkReactNative());
|
|
45
48
|
}
|
|
46
49
|
|
|
50
|
+
function configureBle(env: Environment) {
|
|
51
|
+
env.set(Ble, new ReactNativeBle());
|
|
52
|
+
}
|
|
53
|
+
|
|
47
54
|
export function getDefaults(vars: VariableService) {
|
|
48
55
|
const envName = vars.get("environment", "default");
|
|
49
56
|
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/ble/BleReactNative.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,aAAa,2BAAyC;AAC/D,SAAS,WAA4C;AACrD,SAAS,kBAAkB;AAC3B,SAAS,sCAAsC;AAC/C,SAAS,4BAA4B;AAE9B,MAAM,uBAAuB,IAAI;AAAA,EAC5B;AAAA,EAER,cAAc;AACV,UAAM;AAAA,EACV;AAAA,EAEA,IAAI,mBAAiC;AACjC,QAAI,KAAK,eAAe,QAAW;AAC/B,WAAK,aAAa,IAAI,qBAAqB;AAAA,IAC/C;AACA,WAAO,IAAI,+BAA+B;AAAA,EAC9C;AAAA,EAEA,IAAI,UAAmB;AACnB,QAAI,KAAK,eAAe,QAAW;AAC/B,WAAK,aAAa,IAAI,qBAAqB;AAAA,IAC/C;AACA,WAAO,IAAI,WAAW,KAAK,UAAU;AAAA,EACzC;AAAA,EAEA,IAAI,sBAA8C;AAC9C,UAAM,IAAI,oBAAoB,kEAAkE;AAAA,EACpG;AAAA,EAEA,SAAS,MAAmB;AACxB,WAAO,SAAS,YAAY;AAAA,EAChC;AACJ;",
|
|
5
|
-
"names": []
|
|
6
|
-
}
|