@matter/nodejs-ble 0.13.0-alpha.0-20250415-475996bb5 → 0.13.0-alpha.0-20250418-8cfc0b832

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.
@@ -34,7 +34,7 @@ export declare class BlenoBleServer extends BleChannel<Uint8Array> {
34
34
  * @param offset
35
35
  * @param withoutResponse
36
36
  */
37
- handleC1WriteRequest(data: Buffer, offset: number, withoutResponse: boolean): void;
37
+ handleC1WriteRequest(data: Buffer<ArrayBufferLike>, offset: number, withoutResponse: boolean): void;
38
38
  /**
39
39
  * Process a Subscribe request on characteristic C2 from the Matter service.
40
40
  * This is expected directly after a handshake request and initializes the BTP session handler with the stored
@@ -1 +1 @@
1
- {"version":3,"file":"BlenoBleServer.d.ts","sourceRoot":"","sources":["../../src/BlenoBleServer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAA8C,MAAM,iBAAiB,CAAC;AAEtF,OAAO,EAMH,UAAU,EAKb,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAqG5C;;;;;GAKG;AACH,qBAAa,cAAe,SAAQ,UAAU,CAAC,UAAU,CAAC;IACtD,OAAO,CAAC,KAAK,CAAa;IAC1B,aAAa,UAAS;IACtB,OAAO,CAAC,yBAAyB,CAA2B;IAC5D,OAAO,CAAC,eAAe,CAAqB;IAE5C,OAAO,CAAC,sBAAsB,CAAqB;IACnD,OAAO,CAAC,UAAU,CAAgC;IAElD,OAAO,CAAC,uBAAuB,CAAwE;IACvG,OAAO,CAAC,yBAAyB,CAAsC;IAEhE,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,OAAO,CAAC,mBAAmB,CAEzB;IAEF,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC;gBAEtB,OAAO,CAAC,EAAE,UAAU;IAiEhC;;;;;;;;OAQG;IACH,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO;IA0B3E;;;;;;;;OAQG;IACG,wBAAwB,CAAC,YAAY,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI;IAsChG,gBAAgB;IAShB;;;;;OAKG;IACH,mBAAmB,CAAC,MAAM,EAAE,MAAM;IAQ5B,SAAS,CAAC,aAAa,EAAE,UAAU,EAAE,2BAA2B,CAAC,EAAE,UAAU;IAyB7E,eAAe;IAYrB,wBAAwB,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,UAAU,KAAK,IAAI;IAOpF,4BAA4B;IAK5B,KAAK;IAUL,UAAU;IAahB;;;;OAIG;IACG,IAAI,CAAC,IAAI,EAAE,UAAU;IAQ3B,IAAI,IAAI,WAEP;CACJ"}
1
+ {"version":3,"file":"BlenoBleServer.d.ts","sourceRoot":"","sources":["../../src/BlenoBleServer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAA8C,MAAM,iBAAiB,CAAC;AAEtF,OAAO,EAMH,UAAU,EAKb,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AA4G5C;;;;;GAKG;AACH,qBAAa,cAAe,SAAQ,UAAU,CAAC,UAAU,CAAC;IACtD,OAAO,CAAC,KAAK,CAAa;IAC1B,aAAa,UAAS;IACtB,OAAO,CAAC,yBAAyB,CAA2B;IAC5D,OAAO,CAAC,eAAe,CAAqB;IAE5C,OAAO,CAAC,sBAAsB,CAAqB;IACnD,OAAO,CAAC,UAAU,CAAgC;IAElD,OAAO,CAAC,uBAAuB,CAAwE;IACvG,OAAO,CAAC,yBAAyB,CAAsC;IAEhE,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,OAAO,CAAC,mBAAmB,CAEzB;IAEF,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC;gBAEtB,OAAO,CAAC,EAAE,UAAU;IAsEhC;;;;;;;;OAQG;IACH,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO;IA0B5F;;;;;;;;OAQG;IACG,wBAAwB,CAAC,YAAY,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI;IAsChG,gBAAgB;IAShB;;;;;OAKG;IACH,mBAAmB,CAAC,MAAM,EAAE,MAAM;IAQ5B,SAAS,CAAC,aAAa,EAAE,UAAU,EAAE,2BAA2B,CAAC,EAAE,UAAU;IAyB7E,eAAe;IAYrB,wBAAwB,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,UAAU,KAAK,IAAI;IAOpF,4BAA4B;IAK5B,KAAK;IAUL,UAAU;IAchB;;;;OAIG;IACG,IAAI,CAAC,IAAI,EAAE,UAAU;IAQ3B,IAAI,IAAI,WAEP;CACJ"}
@@ -40,10 +40,11 @@ function initializeBleno(server, hciId) {
40
40
  constructor() {
41
41
  super({
42
42
  uuid: import_protocol.BLE_MATTER_C1_CHARACTERISTIC_UUID,
43
- properties: ["write"]
43
+ properties: ["write"],
44
+ onWriteRequest: (_handle, data, offset, withoutResponse, callback) => this.#onWriteRequest(data, offset, withoutResponse, callback)
44
45
  });
45
46
  }
46
- onWriteRequest(data, offset, withoutResponse, callback) {
47
+ #onWriteRequest(data, offset, withoutResponse, callback) {
47
48
  logger.debug(`C1 write request: ${data.toString("hex")} ${offset} ${withoutResponse}`);
48
49
  try {
49
50
  server.handleC1WriteRequest(data, offset, withoutResponse);
@@ -58,18 +59,21 @@ function initializeBleno(server, hciId) {
58
59
  constructor() {
59
60
  super({
60
61
  uuid: import_protocol.BLE_MATTER_C2_CHARACTERISTIC_UUID,
61
- properties: ["indicate"]
62
+ properties: ["indicate"],
63
+ onSubscribe: (_handle, maxValueSize, updateValueCallback) => this.#onSubscribe(maxValueSize, updateValueCallback),
64
+ onUnsubscribe: () => this.#onUnsubscribe(),
65
+ onIndicate: () => this.#onIndicate()
62
66
  });
63
67
  }
64
- onSubscribe(maxValueSize, updateValueCallback) {
68
+ #onSubscribe(maxValueSize, updateValueCallback) {
65
69
  logger.debug(`C2 subscribe ${maxValueSize}`);
66
70
  server.handleC2SubscribeRequest(maxValueSize, updateValueCallback).catch((e) => logger.warn("Error happened in when handling C2 subscribe", e));
67
71
  }
68
- onUnsubscribe() {
72
+ #onUnsubscribe() {
69
73
  logger.debug("C2 unsubscribe");
70
74
  server.close().catch((e) => logger.warn("Error happened when closing server for C2 unsubscribe", e));
71
75
  }
72
- onIndicate() {
76
+ #onIndicate() {
73
77
  logger.debug("C2 indicate");
74
78
  server.handleC2Indicate();
75
79
  }
@@ -78,10 +82,11 @@ function initializeBleno(server, hciId) {
78
82
  constructor() {
79
83
  super({
80
84
  uuid: import_protocol.BLE_MATTER_C3_CHARACTERISTIC_UUID,
81
- properties: ["read"]
85
+ properties: ["read"],
86
+ onReadRequest: (_handle, offset, callback) => this.#onReadRequest(offset, callback)
82
87
  });
83
88
  }
84
- onReadRequest(offset, callback) {
89
+ #onReadRequest(offset, callback) {
85
90
  try {
86
91
  const data = server.handleC3ReadRequest(offset);
87
92
  logger.debug(`C3 read request: ${data.toString("hex")} ${offset}`);
@@ -124,6 +129,8 @@ class BlenoBleServer extends import_protocol.BleChannel {
124
129
  matterBleService;
125
130
  constructor(options) {
126
131
  super();
132
+ const { environment } = options ?? {};
133
+ environment?.runtime.add(this);
127
134
  this.matterBleService = initializeBleno(this, options?.hciId);
128
135
  Bleno.on("stateChange", (state) => {
129
136
  if (state === this.state) return;
@@ -143,6 +150,7 @@ class BlenoBleServer extends import_protocol.BleChannel {
143
150
  });
144
151
  Bleno.on("disconnect", (clientAddress) => {
145
152
  logger.debug(`disconnect, client: ${clientAddress}`);
153
+ this.isAdvertising = false;
146
154
  if (this.btpSession !== void 0) {
147
155
  this.btpSession.close().then(() => {
148
156
  this.btpSession = void 0;
@@ -314,6 +322,7 @@ class BlenoBleServer extends import_protocol.BleChannel {
314
322
  this.onMatterMessageListener = void 0;
315
323
  }
316
324
  async disconnect() {
325
+ this.isAdvertising = false;
317
326
  Bleno.disconnect();
318
327
  }
319
328
  // Channel<Uint8Array>
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/BlenoBleServer.ts"],
4
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,qBAAoE;AACpE,qBAAwB;AACxB,sBAWO;AAnBP;AAAA;AAAA;AAAA;AAAA;AAsBA,MAAM,SAAS,sBAAO,IAAI,gBAAgB;AAC1C,IAAI;AAEJ,SAAS,gBAAgB,QAAwB,OAAgB;AAE7D,MAAI,UAAU,QAAW;AACrB,YAAQ,IAAI,sBAAsB,MAAM,SAAS;AAAA,EACrD;AACA,cAAQ,wBAAQ,mBAAmB;AAAA,EAEnC,MAAM,iCAAiC,MAAM,eAAe;AAAA,IACxD,cAAc;AACV,YAAM;AAAA,QACF,MAAM;AAAA,QACN,YAAY,CAAC,OAAO;AAAA,MACxB,CAAC;AAAA,IACL;AAAA,IAES,eACL,MACA,QACA,iBACA,UACF;AACE,aAAO,MAAM,qBAAqB,KAAK,SAAS,KAAK,CAAC,IAAI,MAAM,IAAI,eAAe,EAAE;AAErF,UAAI;AACA,eAAO,qBAAqB,MAAM,QAAQ,eAAe;AACzD,iBAAS,KAAK,cAAc;AAAA,MAChC,SAAS,GAAG;AACR,eAAO,MAAM,4BAA4B,CAAC,EAAE;AAC5C,iBAAS,KAAK,qBAAqB;AAAA,MACvC;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,MAAM,oCAAoC,MAAM,eAAe;AAAA,IAC3D,cAAc;AACV,YAAM;AAAA,QACF,MAAM;AAAA,QACN,YAAY,CAAC,UAAU;AAAA,MAC3B,CAAC;AAAA,IACL;AAAA,IAES,YAAY,cAAsB,qBAA6C;AACpF,aAAO,MAAM,gBAAgB,YAAY,EAAE;AAE3C,aACK,yBAAyB,cAAc,mBAAmB,EAC1D,MAAM,OAAK,OAAO,KAAK,gDAAgD,CAAC,CAAC;AAAA,IAClF;AAAA,IAES,gBAAgB;AACrB,aAAO,MAAM,gBAAgB;AAC7B,aAAO,MAAM,EAAE,MAAM,OAAK,OAAO,KAAK,yDAAyD,CAAC,CAAC;AAAA,IACrG;AAAA,IAES,aAAa;AAClB,aAAO,MAAM,aAAa;AAC1B,aAAO,iBAAiB;AAAA,IAC5B;AAAA,EACJ;AAAA,EAEA,MAAM,gCAAgC,MAAM,eAAe;AAAA,IACvD,cAAc;AACV,YAAM;AAAA,QACF,MAAM;AAAA,QACN,YAAY,CAAC,MAAM;AAAA,MACvB,CAAC;AAAA,IACL;AAAA,IAES,cAAc,QAAgB,UAAmD;AACtF,UAAI;AACA,cAAM,OAAO,OAAO,oBAAoB,MAAM;AAC9C,eAAO,MAAM,oBAAoB,KAAK,SAAS,KAAK,CAAC,IAAI,MAAM,EAAE;AACjE,iBAAS,KAAK,gBAAgB,IAAI;AAAA,MACtC,SAAS,GAAG;AACR,eAAO,MAAM,4BAA4B,CAAC,IAAI,MAAM,EAAE;AACtD,iBAAS,KAAK,qBAAqB;AAAA,MACvC;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,MAAM,mBAAmB,MAAM,eAAe;AAAA,IAC1C,cAAc;AACV,YAAM;AAAA,QACF,MAAM;AAAA,QACN,iBAAiB;AAAA,UACb,IAAI,yBAAyB;AAAA,UAC7B,IAAI,4BAA4B;AAAA,UAChC,IAAI,wBAAwB;AAAA,QAChC;AAAA,MACJ,CAAC;AAAA,IACL;AAAA,EACJ;AAEA,SAAO,IAAI,WAAW;AAC1B;AAQO,MAAM,uBAAuB,2BAAuB;AAAA,EAC/C,QAAQ;AAAA,EAChB,gBAAgB;AAAA,EACR,4BAAoC,OAAO,MAAM,CAAC;AAAA,EAClD;AAAA,EAEA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EAED;AAAA,EACC,sBAAsB,oBAAK;AAAA,IAAS;AAAA,IAAyB;AAAA,IAAyB,MAC1F,KAAK,6BAA6B;AAAA,EACtC;AAAA,EAEiB;AAAA,EAEjB,YAAY,SAAsB;AAC9B,UAAM;AACN,SAAK,mBAAmB,gBAAgB,MAAM,SAAS,KAAK;AAG5D,UAAM,GAAG,eAAe,WAAS;AAC7B,UAAI,UAAU,KAAK,MAAO;AAC1B,WAAK,QAAQ;AACb,aAAO,MAAM,gBAAgB,KAAK,eAAe,MAAM,OAAO,EAAE;AAChE,UAAI,UAAU,aAAa;AACvB,cAAM,gBAAgB;AAAA,MAC1B,WAAW,KAAK,iBAAiB;AAC7B,cAAM,4BAA4B,KAAK,eAAe;AACtD,aAAK,gBAAgB;AAAA,MACzB;AAAA,IACJ,CAAC;AAGD,UAAM,GAAG,UAAU,mBAAiB;AAChC,aAAO,MAAM,kCAAkC,aAAa,EAAE;AAC9D,WAAK,gBAAgB;AACrB,YAAM,WAAW;AAAA,IACrB,CAAC;AAED,UAAM,GAAG,cAAc,mBAAiB;AACpC,aAAO,MAAM,uBAAuB,aAAa,EAAE;AACnD,UAAI,KAAK,eAAe,QAAW;AAC/B,aAAK,WACA,MAAM,EACN,KAAK,MAAM;AACR,eAAK,aAAa;AAAA,QACtB,CAAC,EACA,MAAM,MAAM;AACT,eAAK,aAAa;AAAA,QACtB,CAAC;AAAA,MACT;AAAA,IACJ,CAAC;AAED,UAAM,GAAG,cAAc,UAAQ;AAC3B,aAAO,MAAM,eAAe,IAAI,EAAE;AAAA,IACtC,CAAC;AAGD,UAAM,GAAG,aAAa,SAAO;AACzB,aAAO,MAAM,cAAc,GAAG,EAAE;AAAA,IACpC,CAAC;AAED,UAAM,GAAG,oBAAoB,WAAS;AAClC,aAAO,MAAM,qBAAqB,QAAQ,SAAS,KAAK,KAAK,SAAS,EAAE;AAExE,UAAI,CAAC,OAAO;AACR,cAAM,YAAY,CAAC,KAAK,gBAAgB,CAAC;AAAA,MAC7C;AAAA,IAEJ,CAAC;AAED,UAAM,GAAG,mBAAmB,MAAM;AAC9B,aAAO,MAAM,iBAAiB;AAAA,IAClC,CAAC;AAED,UAAM,GAAG,eAAe,WAAS;AAC7B,aAAO,MAAM,gBAAgB,QAAQ,SAAS,KAAK,KAAK,SAAS,EAAE;AAAA,IACvE,CAAC;AAAA,EACL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,qBAAqB,MAAc,QAAgB,iBAA0B;AACzE,QAAI,WAAW,KAAK,iBAAiB;AACjC,YAAM,IAAI,yBAAS,UAAU,MAAM,uBAAuB,eAAe,gBAAgB;AAAA,IAC7F;AAEA,QAAI,KAAK,CAAC,MAAM,OAAQ,KAAK,CAAC,MAAM,OAAQ,KAAK,WAAW,GAAG;AAE3D,WAAK,oBAAoB,MAAM;AAE/B,aAAO;AAAA,QACH,sCAAsC,KAAK,SAAS,KAAK,CAAC;AAAA,MAC9D;AACA,WAAK,yBAAyB;AAAA,IAElC,OAAO;AACH,UAAI,KAAK,eAAe,QAAW;AAC/B,eAAO,MAAM,yCAAyC,KAAK,SAAS,KAAK,CAAC,EAAE;AAC5E,aAAK,KAAK,WAAW,sBAAsB,IAAI,WAAW,IAAI,CAAC;AAAA,MACnE,OAAO;AACH,cAAM,IAAI;AAAA,UACN,4DAA4D,KAAK,SAAS,KAAK,CAAC;AAAA,QACpF;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAM,yBAAyB,cAAsB,qBAA6C;AAC9F,QAAI,KAAK,2BAA2B,QAAW;AAC3C,YAAM,IAAI,6BAAa,wDAAwD;AAAA,IACnF;AACA,QAAI,KAAK,eAAe,QAAW;AAC/B,YAAM,IAAI;AAAA,QACN;AAAA,MACJ;AAAA,IACJ;AACA,SAAK,oBAAoB,KAAK;AAE9B,SAAK,aAAa,MAAM,kCAAkB;AAAA,MACtC,KAAK,IAAI,MAAM,MAAM,GAAG,YAAY;AAAA,MACpC,IAAI,WAAW,KAAK,sBAAsB;AAAA;AAAA,MAG1C,OAAO,SAAqB;AACxB,4BAAoB,OAAO,KAAK,KAAK,MAAM,CAAC;AAC5C,cAAM,EAAE,SAAS,SAAS,QAAI,8BAAoB;AAClD,aAAK,4BAA4B;AAEjC,eAAO;AAAA,MACX;AAAA;AAAA,MAGA,YAAY,KAAK,MAAM;AAAA;AAAA,MAGvB,OAAO,SAAqB;AACxB,YAAI,KAAK,4BAA4B,QAAW;AAC5C,gBAAM,IAAI,6BAAc,4CAA4C;AAAA,QACxE;AACA,aAAK,wBAAwB,MAAM,IAAI;AAAA,MAC3C;AAAA,IACJ;AACA,SAAK,yBAAyB;AAAA,EAClC;AAAA,EAEA,mBAAmB;AACf,QAAI,KAAK,8BAA8B,QAAW;AAC9C,WAAK,0BAA0B;AAC/B,WAAK,4BAA4B;AAAA,IACrC,OAAO;AACH,aAAO,KAAK,oEAAoE;AAAA,IACpF;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,oBAAoB,QAAgB;AAChC,QAAI,SAAS,KAAK,0BAA0B,QAAQ;AAChD,YAAM,IAAI,yBAAS,UAAU,MAAM,wBAAwB,KAAK,0BAA0B,MAAM,EAAE;AAAA,IACtG,OAAO;AACH,aAAO,KAAK,0BAA0B,SAAS,MAAM;AAAA,IACzD;AAAA,EACJ;AAAA,EAEA,MAAM,UAAU,eAA2B,6BAA0C;AACjF,SAAK,kBAAkB,OAAO,KAAK,cAAc,MAAM;AAEvD,QAAI,6BAA6B;AAC7B,WAAK,4BAA4B,OAAO,KAAK,4BAA4B,MAAM;AAAA,IACnF,OAAO;AACH,WAAK,4BAA4B,OAAO,MAAM,CAAC;AAAA,IACnD;AAEA,QAAI,KAAK,eAAe;AACpB,YAAM,KAAK,gBAAgB;AAC3B,WAAK,gBAAgB;AAAA,IACzB;AAEA,QAAI,KAAK,UAAU,aAAa;AAC5B,YAAM,4BAA4B,KAAK,eAAe;AACtD,WAAK,gBAAgB;AAAA,IACzB,OAAO;AACH,aAAO,MAAM,YAAY,KAAK,KAAK,6BAA6B;AAAA,IACpE;AACA,WAAO,IAAI,QAAc,aAAW;AAChC,YAAM,KAAK,oBAAoB,MAAM,QAAQ,CAAC;AAAA,IAClD,CAAC;AAAA,EACL;AAAA,EAEA,MAAM,kBAAkB;AACpB,QAAI,KAAK,eAAe;AACpB,aAAO,IAAI,QAAc,aAAW;AAChC,cAAM,gBAAgB;AACtB,cAAM,KAAK,mBAAmB,MAAM;AAChC,eAAK,gBAAgB;AACrB,kBAAQ;AAAA,QACZ,CAAC;AAAA,MACL,CAAC;AAAA,IACL;AAAA,EACJ;AAAA,EAEA,yBAAyB,UAAmE;AACxF,QAAI,KAAK,4BAA4B,QAAW;AAC5C,YAAM,IAAI,6BAAc,6BAA6B;AAAA,IACzD;AACA,SAAK,0BAA0B;AAAA,EACnC;AAAA,EAEA,MAAM,+BAA+B;AACjC,UAAM,KAAK,WAAW;AACtB,WAAO,MAAM,uEAAuE;AAAA,EACxF;AAAA,EAEA,MAAM,QAAQ;AACV,SAAK,oBAAoB,KAAK;AAC9B,UAAM,KAAK,WAAW;AACtB,QAAI,KAAK,eAAe,QAAW;AAC/B,YAAM,KAAK,WAAW,MAAM;AAC5B,WAAK,aAAa;AAAA,IACtB;AACA,SAAK,0BAA0B;AAAA,EACnC;AAAA,EAEA,MAAM,aAAa;AACf,UAAM,WAAW;AAAA,EASrB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,KAAK,MAAkB;AACzB,QAAI,KAAK,eAAe,QAAW;AAC/B,YAAM,IAAI,yCAAyB,8CAA8C;AAAA,IACrF;AACA,UAAM,KAAK,WAAW,kBAAkB,IAAI;AAAA,EAChD;AAAA;AAAA,EAGA,IAAI,OAAO;AACP,WAAO,GAAG,KAAK,IAAI,MAAM,KAAK,aAAa;AAAA,EAC/C;AACJ;",
4
+ "mappings": "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",
5
5
  "names": []
6
6
  }
@@ -12,6 +12,7 @@ export declare class NobleBleClient {
12
12
  private nobleState;
13
13
  private deviceDiscoveredCallback;
14
14
  constructor(options?: BleOptions);
15
+ [Symbol.asyncDispose](): Promise<void>;
15
16
  setDiscoveryCallback(callback: (peripheral: Peripheral, manufacturerData: Uint8Array) => void): void;
16
17
  startScanning(): Promise<void>;
17
18
  stopScanning(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"NobleBleClient.d.ts","sourceRoot":"","sources":["../../src/NobleBleClient.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAkB5C,qBAAa,cAAc;IACvB,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAGlC;IACJ,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,wBAAwB,CAA+E;gBAEnG,OAAO,CAAC,EAAE,UAAU;IAkCzB,oBAAoB,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,UAAU,KAAK,IAAI;IAOvF,aAAa;IAgBb,YAAY;IAQzB,OAAO,CAAC,sBAAsB;CAqCjC"}
1
+ {"version":3,"file":"NobleBleClient.d.ts","sourceRoot":"","sources":["../../src/NobleBleClient.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAkB5C,qBAAa,cAAc;IACvB,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAGlC;IACJ,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,wBAAwB,CAA+E;gBAEnG,OAAO,CAAC,EAAE,UAAU;IAqChC,CAAC,MAAM,CAAC,YAAY,CAAC;IAId,oBAAoB,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,UAAU,KAAK,IAAI;IAOvF,aAAa;IAgBb,YAAY;IAQzB,OAAO,CAAC,sBAAsB;CAqCjC"}
@@ -47,6 +47,8 @@ class NobleBleClient {
47
47
  nobleState = "unknown";
48
48
  deviceDiscoveredCallback;
49
49
  constructor(options) {
50
+ const { environment } = options ?? {};
51
+ environment?.runtime.add(this);
50
52
  loadNoble(options?.hciId);
51
53
  noble.on("stateChange", (state) => {
52
54
  this.nobleState = state;
@@ -68,6 +70,9 @@ class NobleBleClient {
68
70
  });
69
71
  noble.on("scanStop", () => this.isScanning = false);
70
72
  }
73
+ [Symbol.asyncDispose]() {
74
+ return this.stopScanning();
75
+ }
71
76
  setDiscoveryCallback(callback) {
72
77
  this.deviceDiscoveredCallback = callback;
73
78
  for (const { peripheral, matterServiceData } of this.discoveredPeripherals.values()) {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/NobleBleClient.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": []
6
6
  }
@@ -3,15 +3,15 @@
3
3
  * Copyright 2022-2025 Matter.js Authors
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { NetInterface, TransportInterface } from "@matter/general";
6
+ import { Environment, NetInterface, TransportInterface } from "@matter/general";
7
7
  import { Ble, InstanceBroadcaster, Scanner } from "@matter/protocol";
8
8
  export type BleOptions = {
9
9
  hciId?: number;
10
+ environment?: Environment;
10
11
  };
11
12
  export declare class NodeJsBle extends Ble {
12
13
  #private;
13
- private readonly options?;
14
- constructor(options?: BleOptions | undefined);
14
+ constructor(options?: BleOptions);
15
15
  getBlePeripheralInterface(): TransportInterface;
16
16
  getBleCentralInterface(): NetInterface;
17
17
  getBleBroadcaster(additionalAdvertisementData?: Uint8Array): InstanceBroadcaster;
@@ -1 +1 @@
1
- {"version":3,"file":"NodeJsBle.d.ts","sourceRoot":"","sources":["../../src/NodeJsBle.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,GAAG,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAQrE,MAAM,MAAM,UAAU,GAAG;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,qBAAa,SAAU,SAAQ,GAAG;;IAQlB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAAR,OAAO,CAAC,EAAE,UAAU,YAAA;IAkBjD,yBAAyB,IAAI,kBAAkB;IAO/C,sBAAsB,IAAI,YAAY;IAOtC,iBAAiB,CAAC,2BAA2B,CAAC,EAAE,UAAU,GAAG,mBAAmB;IAOhF,aAAa,IAAI,OAAO;CAM3B"}
1
+ {"version":3,"file":"NodeJsBle.d.ts","sourceRoot":"","sources":["../../src/NodeJsBle.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAChF,OAAO,EAAE,GAAG,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAQrE,MAAM,MAAM,UAAU,GAAG;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,WAAW,CAAC;CAC7B,CAAC;AAEF,qBAAa,SAAU,SAAQ,GAAG;;gBASlB,OAAO,CAAC,EAAE,UAAU;IAmBhC,yBAAyB,IAAI,kBAAkB;IAO/C,sBAAsB,IAAI,YAAY;IAOtC,iBAAiB,CAAC,2BAA2B,CAAC,EAAE,UAAU,GAAG,mBAAmB;IAOhF,aAAa,IAAI,OAAO;CAM3B"}
@@ -34,25 +34,26 @@ var import_NobleBleClient = require("./NobleBleClient.js");
34
34
  * SPDX-License-Identifier: Apache-2.0
35
35
  */
36
36
  class NodeJsBle extends import_protocol.Ble {
37
- constructor(options) {
38
- super();
39
- this.options = options;
40
- }
37
+ #options;
41
38
  #blePeripheralInstance;
42
39
  #bleCentralInstance;
43
40
  #bleScanner;
44
41
  #bleBroadcaster;
45
42
  #bleCentralInterface;
46
43
  #blePeripheralInterface;
44
+ constructor(options) {
45
+ super();
46
+ this.#options = options;
47
+ }
47
48
  get #blePeripheralServer() {
48
49
  if (this.#blePeripheralInstance === void 0) {
49
- this.#blePeripheralInstance = new import_BlenoBleServer.BlenoBleServer(this.options);
50
+ this.#blePeripheralInstance = new import_BlenoBleServer.BlenoBleServer(this.#options);
50
51
  }
51
52
  return this.#blePeripheralInstance;
52
53
  }
53
54
  get #bleCentralClient() {
54
55
  if (this.#bleCentralInstance === void 0) {
55
- this.#bleCentralInstance = new import_NobleBleClient.NobleBleClient(this.options);
56
+ this.#bleCentralInstance = new import_NobleBleClient.NobleBleClient(this.#options);
56
57
  }
57
58
  return this.#bleCentralInstance;
58
59
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/NodeJsBle.ts"],
4
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,sBAAkD;AAClD,4BAA+B;AAC/B,oCAAuC;AACvC,wBAA2B;AAC3B,4BAA+B;AAC/B,6BAAyC;AACzC,4BAA+B;AAb/B;AAAA;AAAA;AAAA;AAAA;AAmBO,MAAM,kBAAkB,oBAAI;AAAA,EAQ/B,YAA6B,SAAsB;AAC/C,UAAM;AADmB;AAAA,EAE7B;AAAA,EATA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAMA,IAAI,uBAAuB;AACvB,QAAI,KAAK,2BAA2B,QAAW;AAC3C,WAAK,yBAAyB,IAAI,qCAAe,KAAK,OAAO;AAAA,IACjE;AACA,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,oBAAoB;AACpB,QAAI,KAAK,wBAAwB,QAAW;AACxC,WAAK,sBAAsB,IAAI,qCAAe,KAAK,OAAO;AAAA,IAC9D;AACA,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,4BAAgD;AAC5C,QAAI,KAAK,4BAA4B,QAAW;AAC5C,WAAK,0BAA0B,IAAI,qDAAuB,KAAK,oBAAoB;AAAA,IACvF;AACA,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,yBAAuC;AACnC,QAAI,KAAK,yBAAyB,QAAW;AACzC,WAAK,uBAAuB,IAAI,gDAAyB,KAAK,cAAc,CAAe;AAAA,IAC/F;AACA,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,kBAAkB,6BAA+D;AAC7E,QAAI,KAAK,oBAAoB,QAAW;AACpC,WAAK,kBAAkB,IAAI,qCAAe,KAAK,sBAAsB,2BAA2B;AAAA,IACpG;AACA,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,gBAAyB;AACrB,QAAI,KAAK,gBAAgB,QAAW;AAChC,WAAK,cAAc,IAAI,6BAAW,KAAK,iBAAiB;AAAA,IAC5D;AACA,WAAO,KAAK;AAAA,EAChB;AACJ;",
4
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,sBAAkD;AAClD,4BAA+B;AAC/B,oCAAuC;AACvC,wBAA2B;AAC3B,4BAA+B;AAC/B,6BAAyC;AACzC,4BAA+B;AAb/B;AAAA;AAAA;AAAA;AAAA;AAoBO,MAAM,kBAAkB,oBAAI;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA,YAAY,SAAsB;AAC9B,UAAM;AACN,SAAK,WAAW;AAAA,EACpB;AAAA,EAEA,IAAI,uBAAuB;AACvB,QAAI,KAAK,2BAA2B,QAAW;AAC3C,WAAK,yBAAyB,IAAI,qCAAe,KAAK,QAAQ;AAAA,IAClE;AACA,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,oBAAoB;AACpB,QAAI,KAAK,wBAAwB,QAAW;AACxC,WAAK,sBAAsB,IAAI,qCAAe,KAAK,QAAQ;AAAA,IAC/D;AACA,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,4BAAgD;AAC5C,QAAI,KAAK,4BAA4B,QAAW;AAC5C,WAAK,0BAA0B,IAAI,qDAAuB,KAAK,oBAAoB;AAAA,IACvF;AACA,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,yBAAuC;AACnC,QAAI,KAAK,yBAAyB,QAAW;AACzC,WAAK,uBAAuB,IAAI,gDAAyB,KAAK,cAAc,CAAe;AAAA,IAC/F;AACA,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,kBAAkB,6BAA+D;AAC7E,QAAI,KAAK,oBAAoB,QAAW;AACpC,WAAK,kBAAkB,IAAI,qCAAe,KAAK,sBAAsB,2BAA2B;AAAA,IACpG;AACA,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,gBAAyB;AACrB,QAAI,KAAK,gBAAgB,QAAW;AAChC,WAAK,cAAc,IAAI,6BAAW,KAAK,iBAAiB;AAAA,IAC5D;AACA,WAAO,KAAK;AAAA,EAChB;AACJ;",
5
5
  "names": []
6
6
  }
@@ -34,7 +34,7 @@ export declare class BlenoBleServer extends BleChannel<Uint8Array> {
34
34
  * @param offset
35
35
  * @param withoutResponse
36
36
  */
37
- handleC1WriteRequest(data: Buffer, offset: number, withoutResponse: boolean): void;
37
+ handleC1WriteRequest(data: Buffer<ArrayBufferLike>, offset: number, withoutResponse: boolean): void;
38
38
  /**
39
39
  * Process a Subscribe request on characteristic C2 from the Matter service.
40
40
  * This is expected directly after a handshake request and initializes the BTP session handler with the stored
@@ -1 +1 @@
1
- {"version":3,"file":"BlenoBleServer.d.ts","sourceRoot":"","sources":["../../src/BlenoBleServer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAA8C,MAAM,iBAAiB,CAAC;AAEtF,OAAO,EAMH,UAAU,EAKb,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAqG5C;;;;;GAKG;AACH,qBAAa,cAAe,SAAQ,UAAU,CAAC,UAAU,CAAC;IACtD,OAAO,CAAC,KAAK,CAAa;IAC1B,aAAa,UAAS;IACtB,OAAO,CAAC,yBAAyB,CAA2B;IAC5D,OAAO,CAAC,eAAe,CAAqB;IAE5C,OAAO,CAAC,sBAAsB,CAAqB;IACnD,OAAO,CAAC,UAAU,CAAgC;IAElD,OAAO,CAAC,uBAAuB,CAAwE;IACvG,OAAO,CAAC,yBAAyB,CAAsC;IAEhE,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,OAAO,CAAC,mBAAmB,CAEzB;IAEF,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC;gBAEtB,OAAO,CAAC,EAAE,UAAU;IAiEhC;;;;;;;;OAQG;IACH,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO;IA0B3E;;;;;;;;OAQG;IACG,wBAAwB,CAAC,YAAY,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI;IAsChG,gBAAgB;IAShB;;;;;OAKG;IACH,mBAAmB,CAAC,MAAM,EAAE,MAAM;IAQ5B,SAAS,CAAC,aAAa,EAAE,UAAU,EAAE,2BAA2B,CAAC,EAAE,UAAU;IAyB7E,eAAe;IAYrB,wBAAwB,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,UAAU,KAAK,IAAI;IAOpF,4BAA4B;IAK5B,KAAK;IAUL,UAAU;IAahB;;;;OAIG;IACG,IAAI,CAAC,IAAI,EAAE,UAAU;IAQ3B,IAAI,IAAI,WAEP;CACJ"}
1
+ {"version":3,"file":"BlenoBleServer.d.ts","sourceRoot":"","sources":["../../src/BlenoBleServer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAA8C,MAAM,iBAAiB,CAAC;AAEtF,OAAO,EAMH,UAAU,EAKb,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AA4G5C;;;;;GAKG;AACH,qBAAa,cAAe,SAAQ,UAAU,CAAC,UAAU,CAAC;IACtD,OAAO,CAAC,KAAK,CAAa;IAC1B,aAAa,UAAS;IACtB,OAAO,CAAC,yBAAyB,CAA2B;IAC5D,OAAO,CAAC,eAAe,CAAqB;IAE5C,OAAO,CAAC,sBAAsB,CAAqB;IACnD,OAAO,CAAC,UAAU,CAAgC;IAElD,OAAO,CAAC,uBAAuB,CAAwE;IACvG,OAAO,CAAC,yBAAyB,CAAsC;IAEhE,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,OAAO,CAAC,mBAAmB,CAEzB;IAEF,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC;gBAEtB,OAAO,CAAC,EAAE,UAAU;IAsEhC;;;;;;;;OAQG;IACH,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO;IA0B5F;;;;;;;;OAQG;IACG,wBAAwB,CAAC,YAAY,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI;IAsChG,gBAAgB;IAShB;;;;;OAKG;IACH,mBAAmB,CAAC,MAAM,EAAE,MAAM;IAQ5B,SAAS,CAAC,aAAa,EAAE,UAAU,EAAE,2BAA2B,CAAC,EAAE,UAAU;IAyB7E,eAAe;IAYrB,wBAAwB,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,UAAU,KAAK,IAAI;IAOpF,4BAA4B;IAK5B,KAAK;IAUL,UAAU;IAchB;;;;OAIG;IACG,IAAI,CAAC,IAAI,EAAE,UAAU;IAQ3B,IAAI,IAAI,WAEP;CACJ"}
@@ -28,10 +28,11 @@ function initializeBleno(server, hciId) {
28
28
  constructor() {
29
29
  super({
30
30
  uuid: BLE_MATTER_C1_CHARACTERISTIC_UUID,
31
- properties: ["write"]
31
+ properties: ["write"],
32
+ onWriteRequest: (_handle, data, offset, withoutResponse, callback) => this.#onWriteRequest(data, offset, withoutResponse, callback)
32
33
  });
33
34
  }
34
- onWriteRequest(data, offset, withoutResponse, callback) {
35
+ #onWriteRequest(data, offset, withoutResponse, callback) {
35
36
  logger.debug(`C1 write request: ${data.toString("hex")} ${offset} ${withoutResponse}`);
36
37
  try {
37
38
  server.handleC1WriteRequest(data, offset, withoutResponse);
@@ -46,18 +47,21 @@ function initializeBleno(server, hciId) {
46
47
  constructor() {
47
48
  super({
48
49
  uuid: BLE_MATTER_C2_CHARACTERISTIC_UUID,
49
- properties: ["indicate"]
50
+ properties: ["indicate"],
51
+ onSubscribe: (_handle, maxValueSize, updateValueCallback) => this.#onSubscribe(maxValueSize, updateValueCallback),
52
+ onUnsubscribe: () => this.#onUnsubscribe(),
53
+ onIndicate: () => this.#onIndicate()
50
54
  });
51
55
  }
52
- onSubscribe(maxValueSize, updateValueCallback) {
56
+ #onSubscribe(maxValueSize, updateValueCallback) {
53
57
  logger.debug(`C2 subscribe ${maxValueSize}`);
54
58
  server.handleC2SubscribeRequest(maxValueSize, updateValueCallback).catch((e) => logger.warn("Error happened in when handling C2 subscribe", e));
55
59
  }
56
- onUnsubscribe() {
60
+ #onUnsubscribe() {
57
61
  logger.debug("C2 unsubscribe");
58
62
  server.close().catch((e) => logger.warn("Error happened when closing server for C2 unsubscribe", e));
59
63
  }
60
- onIndicate() {
64
+ #onIndicate() {
61
65
  logger.debug("C2 indicate");
62
66
  server.handleC2Indicate();
63
67
  }
@@ -66,10 +70,11 @@ function initializeBleno(server, hciId) {
66
70
  constructor() {
67
71
  super({
68
72
  uuid: BLE_MATTER_C3_CHARACTERISTIC_UUID,
69
- properties: ["read"]
73
+ properties: ["read"],
74
+ onReadRequest: (_handle, offset, callback) => this.#onReadRequest(offset, callback)
70
75
  });
71
76
  }
72
- onReadRequest(offset, callback) {
77
+ #onReadRequest(offset, callback) {
73
78
  try {
74
79
  const data = server.handleC3ReadRequest(offset);
75
80
  logger.debug(`C3 read request: ${data.toString("hex")} ${offset}`);
@@ -112,6 +117,8 @@ class BlenoBleServer extends BleChannel {
112
117
  matterBleService;
113
118
  constructor(options) {
114
119
  super();
120
+ const { environment } = options ?? {};
121
+ environment?.runtime.add(this);
115
122
  this.matterBleService = initializeBleno(this, options?.hciId);
116
123
  Bleno.on("stateChange", (state) => {
117
124
  if (state === this.state) return;
@@ -131,6 +138,7 @@ class BlenoBleServer extends BleChannel {
131
138
  });
132
139
  Bleno.on("disconnect", (clientAddress) => {
133
140
  logger.debug(`disconnect, client: ${clientAddress}`);
141
+ this.isAdvertising = false;
134
142
  if (this.btpSession !== void 0) {
135
143
  this.btpSession.close().then(() => {
136
144
  this.btpSession = void 0;
@@ -302,6 +310,7 @@ class BlenoBleServer extends BleChannel {
302
310
  this.onMatterMessageListener = void 0;
303
311
  }
304
312
  async disconnect() {
313
+ this.isAdvertising = false;
305
314
  Bleno.disconnect();
306
315
  }
307
316
  // Channel<Uint8Array>
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/BlenoBleServer.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": ["require"]
6
6
  }
@@ -12,6 +12,7 @@ export declare class NobleBleClient {
12
12
  private nobleState;
13
13
  private deviceDiscoveredCallback;
14
14
  constructor(options?: BleOptions);
15
+ [Symbol.asyncDispose](): Promise<void>;
15
16
  setDiscoveryCallback(callback: (peripheral: Peripheral, manufacturerData: Uint8Array) => void): void;
16
17
  startScanning(): Promise<void>;
17
18
  stopScanning(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"NobleBleClient.d.ts","sourceRoot":"","sources":["../../src/NobleBleClient.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAkB5C,qBAAa,cAAc;IACvB,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAGlC;IACJ,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,wBAAwB,CAA+E;gBAEnG,OAAO,CAAC,EAAE,UAAU;IAkCzB,oBAAoB,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,UAAU,KAAK,IAAI;IAOvF,aAAa;IAgBb,YAAY;IAQzB,OAAO,CAAC,sBAAsB;CAqCjC"}
1
+ {"version":3,"file":"NobleBleClient.d.ts","sourceRoot":"","sources":["../../src/NobleBleClient.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAkB5C,qBAAa,cAAc;IACvB,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAGlC;IACJ,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,wBAAwB,CAA+E;gBAEnG,OAAO,CAAC,EAAE,UAAU;IAqChC,CAAC,MAAM,CAAC,YAAY,CAAC;IAId,oBAAoB,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,UAAU,KAAK,IAAI;IAOvF,aAAa;IAgBb,YAAY;IAQzB,OAAO,CAAC,sBAAsB;CAqCjC"}
@@ -24,6 +24,8 @@ class NobleBleClient {
24
24
  nobleState = "unknown";
25
25
  deviceDiscoveredCallback;
26
26
  constructor(options) {
27
+ const { environment } = options ?? {};
28
+ environment?.runtime.add(this);
27
29
  loadNoble(options?.hciId);
28
30
  noble.on("stateChange", (state) => {
29
31
  this.nobleState = state;
@@ -45,6 +47,9 @@ class NobleBleClient {
45
47
  });
46
48
  noble.on("scanStop", () => this.isScanning = false);
47
49
  }
50
+ [Symbol.asyncDispose]() {
51
+ return this.stopScanning();
52
+ }
48
53
  setDiscoveryCallback(callback) {
49
54
  this.deviceDiscoveredCallback = callback;
50
55
  for (const { peripheral, matterServiceData } of this.discoveredPeripherals.values()) {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/NobleBleClient.ts"],
4
- "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,YAAY,cAAc;AACnC,SAAS,WAAAA,gBAAe;AACxB,SAAS,+BAA+B;AAIxC,MAAM,SAAS,OAAO,IAAI,gBAAgB;AAC1C,IAAI;AAEJ,SAAS,UAAU,OAAgB;AAE/B,MAAI,UAAU,QAAW;AACrB,YAAQ,IAAI,sBAAsB,MAAM,SAAS;AAAA,EACrD;AACA,UAAQA,SAAQ,mBAAmB;AACnC,MAAI,OAAO,MAAM,OAAO,YAAY;AAGhC,YAAS,MAAc,EAAE,UAAU,MAAM,CAAC;AAAA,EAC9C;AACJ;AAEO,MAAM,eAAe;AAAA,EACP,wBAAwB,oBAAI,IAG3C;AAAA,EACM,aAAa;AAAA,EACb,aAAa;AAAA,EACb,aAAa;AAAA,EACb;AAAA,EAER,YAAY,SAAsB;AAC9B,cAAU,SAAS,KAAK;AAUxB,UAAM,GAAG,eAAe,WAAS;AAC7B,WAAK,aAAa;AAClB,aAAO,MAAM,0BAA0B,KAAK,EAAE;AAC9C,UAAI,UAAU,aAAa;AACvB,YAAI,KAAK,YAAY;AACjB,eAAK,KAAK,cAAc;AAAA,QAC5B;AAAA,MACJ,OAAO;AACH,aAAK,KAAK,aAAa;AAAA,MAC3B;AAAA,IACJ,CAAC;AACD,UAAM,GAAG,YAAY,gBAAc,KAAK,uBAAuB,UAAU,CAAC;AAC1E,UAAM,GAAG,aAAa,MAAM;AACxB,UAAI,CAAC,KAAK,YAAY;AAGlB;AAAA,MACJ;AACA,WAAK,aAAa;AAAA,IACtB,CAAC;AACD,UAAM,GAAG,YAAY,MAAO,KAAK,aAAa,KAAM;AAAA,EACxD;AAAA,EAEO,qBAAqB,UAA0E;AAClG,SAAK,2BAA2B;AAChC,eAAW,EAAE,YAAY,kBAAkB,KAAK,KAAK,sBAAsB,OAAO,GAAG;AACjF,WAAK,yBAAyB,YAAY,iBAAiB;AAAA,IAC/D;AAAA,EACJ;AAAA,EAEA,MAAa,gBAAgB;AACzB,QAAI,KAAK,YAAY;AACjB;AAAA,IACJ;AAEA,SAAK,aAAa;AAClB,QAAI,KAAK,eAAe,aAAa;AACjC,aAAO,MAAM,4CAA4C;AAGzD,YAAM,MAAM,mBAAmB,QAAQ,aAAa,UAAU,CAAC,uBAAuB,IAAI,QAAW,IAAI;AAAA,IAC7G,OAAO;AACH,aAAO,MAAM,gEAAgE;AAAA,IACjF;AAAA,EACJ;AAAA,EAEA,MAAa,eAAe;AACxB,SAAK,aAAa;AAClB,QAAI,KAAK,YAAY;AACjB,aAAO,MAAM,2CAA2C;AACxD,YAAM,MAAM,kBAAkB;AAAA,IAClC;AAAA,EACJ;AAAA,EAEQ,uBAAuB,YAAwB;AAOnD,QACI,QAAQ,aAAa,WACrB,CAAC,WAAW,cAAc,YAAY,KAAK,CAAC,EAAE,KAAK,MAAM,SAAS,uBAAuB,GAC3F;AACE;AAAA,IACJ;AAEA,UAAM,UAAU,WAAW;AAC3B,WAAO;AAAA,MACH,oBAAoB,OAAO,KAAK,WAAW,cAAc,SAAS,MAAM,WAAW;AAAA,QAC/E,WAAW;AAAA,MACf,CAAC;AAAA,IACL;AAEA,QAAI,CAAC,WAAW,aAAa;AACzB,aAAO,KAAK,cAAc,OAAO,kCAAkC;AACnE;AAAA,IACJ;AACA,UAAM,oBAAoB,WAAW,cAAc,YAAY;AAAA,MAC3D,CAAC,EAAE,KAAK,MAAM,SAAS;AAAA,IAC3B;AACA,QAAI,sBAAsB,UAAa,kBAAkB,KAAK,WAAW,GAAG;AACxE,aAAO,KAAK,cAAc,OAAO,iDAAiD;AAClF;AAAA,IACJ;AAEA,SAAK,sBAAsB,IAAI,SAAS,EAAE,YAAY,mBAAmB,kBAAkB,KAAK,CAAC;AAEjG,SAAK,2BAA2B,YAAY,kBAAkB,IAAI;AAAA,EACtE;AACJ;",
4
+ "mappings": "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",
5
5
  "names": ["require"]
6
6
  }
@@ -3,15 +3,15 @@
3
3
  * Copyright 2022-2025 Matter.js Authors
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { NetInterface, TransportInterface } from "@matter/general";
6
+ import { Environment, NetInterface, TransportInterface } from "@matter/general";
7
7
  import { Ble, InstanceBroadcaster, Scanner } from "@matter/protocol";
8
8
  export type BleOptions = {
9
9
  hciId?: number;
10
+ environment?: Environment;
10
11
  };
11
12
  export declare class NodeJsBle extends Ble {
12
13
  #private;
13
- private readonly options?;
14
- constructor(options?: BleOptions | undefined);
14
+ constructor(options?: BleOptions);
15
15
  getBlePeripheralInterface(): TransportInterface;
16
16
  getBleCentralInterface(): NetInterface;
17
17
  getBleBroadcaster(additionalAdvertisementData?: Uint8Array): InstanceBroadcaster;
@@ -1 +1 @@
1
- {"version":3,"file":"NodeJsBle.d.ts","sourceRoot":"","sources":["../../src/NodeJsBle.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,GAAG,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAQrE,MAAM,MAAM,UAAU,GAAG;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,qBAAa,SAAU,SAAQ,GAAG;;IAQlB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAAR,OAAO,CAAC,EAAE,UAAU,YAAA;IAkBjD,yBAAyB,IAAI,kBAAkB;IAO/C,sBAAsB,IAAI,YAAY;IAOtC,iBAAiB,CAAC,2BAA2B,CAAC,EAAE,UAAU,GAAG,mBAAmB;IAOhF,aAAa,IAAI,OAAO;CAM3B"}
1
+ {"version":3,"file":"NodeJsBle.d.ts","sourceRoot":"","sources":["../../src/NodeJsBle.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAChF,OAAO,EAAE,GAAG,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAQrE,MAAM,MAAM,UAAU,GAAG;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,WAAW,CAAC;CAC7B,CAAC;AAEF,qBAAa,SAAU,SAAQ,GAAG;;gBASlB,OAAO,CAAC,EAAE,UAAU;IAmBhC,yBAAyB,IAAI,kBAAkB;IAO/C,sBAAsB,IAAI,YAAY;IAOtC,iBAAiB,CAAC,2BAA2B,CAAC,EAAE,UAAU,GAAG,mBAAmB;IAOhF,aAAa,IAAI,OAAO;CAM3B"}
@@ -11,25 +11,26 @@ import { BlenoBleServer } from "./BlenoBleServer.js";
11
11
  import { NobleBleCentralInterface } from "./NobleBleChannel.js";
12
12
  import { NobleBleClient } from "./NobleBleClient.js";
13
13
  class NodeJsBle extends Ble {
14
- constructor(options) {
15
- super();
16
- this.options = options;
17
- }
14
+ #options;
18
15
  #blePeripheralInstance;
19
16
  #bleCentralInstance;
20
17
  #bleScanner;
21
18
  #bleBroadcaster;
22
19
  #bleCentralInterface;
23
20
  #blePeripheralInterface;
21
+ constructor(options) {
22
+ super();
23
+ this.#options = options;
24
+ }
24
25
  get #blePeripheralServer() {
25
26
  if (this.#blePeripheralInstance === void 0) {
26
- this.#blePeripheralInstance = new BlenoBleServer(this.options);
27
+ this.#blePeripheralInstance = new BlenoBleServer(this.#options);
27
28
  }
28
29
  return this.#blePeripheralInstance;
29
30
  }
30
31
  get #bleCentralClient() {
31
32
  if (this.#bleCentralInstance === void 0) {
32
- this.#bleCentralInstance = new NobleBleClient(this.options);
33
+ this.#bleCentralInstance = new NobleBleClient(this.#options);
33
34
  }
34
35
  return this.#bleCentralInstance;
35
36
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/NodeJsBle.ts"],
4
- "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,SAAS,WAAyC;AAClD,SAAS,sBAAsB;AAC/B,SAAS,8BAA8B;AACvC,SAAS,kBAAkB;AAC3B,SAAS,sBAAsB;AAC/B,SAAS,gCAAgC;AACzC,SAAS,sBAAsB;AAMxB,MAAM,kBAAkB,IAAI;AAAA,EAQ/B,YAA6B,SAAsB;AAC/C,UAAM;AADmB;AAAA,EAE7B;AAAA,EATA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAMA,IAAI,uBAAuB;AACvB,QAAI,KAAK,2BAA2B,QAAW;AAC3C,WAAK,yBAAyB,IAAI,eAAe,KAAK,OAAO;AAAA,IACjE;AACA,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,oBAAoB;AACpB,QAAI,KAAK,wBAAwB,QAAW;AACxC,WAAK,sBAAsB,IAAI,eAAe,KAAK,OAAO;AAAA,IAC9D;AACA,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,4BAAgD;AAC5C,QAAI,KAAK,4BAA4B,QAAW;AAC5C,WAAK,0BAA0B,IAAI,uBAAuB,KAAK,oBAAoB;AAAA,IACvF;AACA,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,yBAAuC;AACnC,QAAI,KAAK,yBAAyB,QAAW;AACzC,WAAK,uBAAuB,IAAI,yBAAyB,KAAK,cAAc,CAAe;AAAA,IAC/F;AACA,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,kBAAkB,6BAA+D;AAC7E,QAAI,KAAK,oBAAoB,QAAW;AACpC,WAAK,kBAAkB,IAAI,eAAe,KAAK,sBAAsB,2BAA2B;AAAA,IACpG;AACA,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,gBAAyB;AACrB,QAAI,KAAK,gBAAgB,QAAW;AAChC,WAAK,cAAc,IAAI,WAAW,KAAK,iBAAiB;AAAA,IAC5D;AACA,WAAO,KAAK;AAAA,EAChB;AACJ;",
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,SAAS,WAAyC;AAClD,SAAS,sBAAsB;AAC/B,SAAS,8BAA8B;AACvC,SAAS,kBAAkB;AAC3B,SAAS,sBAAsB;AAC/B,SAAS,gCAAgC;AACzC,SAAS,sBAAsB;AAOxB,MAAM,kBAAkB,IAAI;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA,YAAY,SAAsB;AAC9B,UAAM;AACN,SAAK,WAAW;AAAA,EACpB;AAAA,EAEA,IAAI,uBAAuB;AACvB,QAAI,KAAK,2BAA2B,QAAW;AAC3C,WAAK,yBAAyB,IAAI,eAAe,KAAK,QAAQ;AAAA,IAClE;AACA,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,oBAAoB;AACpB,QAAI,KAAK,wBAAwB,QAAW;AACxC,WAAK,sBAAsB,IAAI,eAAe,KAAK,QAAQ;AAAA,IAC/D;AACA,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,4BAAgD;AAC5C,QAAI,KAAK,4BAA4B,QAAW;AAC5C,WAAK,0BAA0B,IAAI,uBAAuB,KAAK,oBAAoB;AAAA,IACvF;AACA,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,yBAAuC;AACnC,QAAI,KAAK,yBAAyB,QAAW;AACzC,WAAK,uBAAuB,IAAI,yBAAyB,KAAK,cAAc,CAAe;AAAA,IAC/F;AACA,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,kBAAkB,6BAA+D;AAC7E,QAAI,KAAK,oBAAoB,QAAW;AACpC,WAAK,kBAAkB,IAAI,eAAe,KAAK,sBAAsB,2BAA2B;AAAA,IACpG;AACA,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,gBAAyB;AACrB,QAAI,KAAK,gBAAgB,QAAW;AAChC,WAAK,cAAc,IAAI,WAAW,KAAK,iBAAiB;AAAA,IAC5D;AACA,WAAO,KAAK;AAAA,EAChB;AACJ;",
5
5
  "names": []
6
6
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@matter/nodejs-ble",
3
- "version": "0.13.0-alpha.0-20250415-475996bb5",
3
+ "version": "0.13.0-alpha.0-20250418-8cfc0b832",
4
4
  "description": "Matter BLE support for node.js",
5
5
  "keywords": [
6
6
  "iot",
@@ -28,15 +28,15 @@
28
28
  "build-clean": "matter-build --clean"
29
29
  },
30
30
  "dependencies": {
31
- "@matter/general": "0.13.0-alpha.0-20250415-475996bb5",
32
- "@matter/types": "0.13.0-alpha.0-20250415-475996bb5",
33
- "@matter/protocol": "0.13.0-alpha.0-20250415-475996bb5"
31
+ "@matter/general": "0.13.0-alpha.0-20250418-8cfc0b832",
32
+ "@matter/types": "0.13.0-alpha.0-20250418-8cfc0b832",
33
+ "@matter/protocol": "0.13.0-alpha.0-20250418-8cfc0b832"
34
34
  },
35
35
  "devDependencies": {
36
- "@matter/tools": "0.13.0-alpha.0-20250415-475996bb5"
36
+ "@matter/tools": "0.13.0-alpha.0-20250418-8cfc0b832"
37
37
  },
38
38
  "optionalDependencies": {
39
- "@stoprocent/bleno": "^0.8.5",
39
+ "@stoprocent/bleno": "^0.10.2",
40
40
  "@stoprocent/noble": "^1.19.1"
41
41
  },
42
42
  "engines": {
@@ -18,10 +18,11 @@ import {
18
18
  BtpSessionHandler,
19
19
  ChannelNotConnectedError,
20
20
  } from "@matter/protocol";
21
+ import type { Bleno as BlenoType } from "@stoprocent/bleno";
21
22
  import { BleOptions } from "./NodeJsBle.js";
22
23
 
23
24
  const logger = Logger.get("BlenoBleServer");
24
- let Bleno: typeof import("@stoprocent/bleno");
25
+ let Bleno: BlenoType;
25
26
 
26
27
  function initializeBleno(server: BlenoBleServer, hciId?: number) {
27
28
  // load Bleno driver with the correct device selected
@@ -35,11 +36,13 @@ function initializeBleno(server: BlenoBleServer, hciId?: number) {
35
36
  super({
36
37
  uuid: BLE_MATTER_C1_CHARACTERISTIC_UUID,
37
38
  properties: ["write"],
39
+ onWriteRequest: (_handle, data, offset, withoutResponse, callback) =>
40
+ this.#onWriteRequest(data, offset, withoutResponse, callback),
38
41
  });
39
42
  }
40
43
 
41
- override onWriteRequest(
42
- data: Buffer,
44
+ #onWriteRequest(
45
+ data: Buffer<ArrayBufferLike>,
43
46
  offset: number,
44
47
  withoutResponse: boolean,
45
48
  callback: (result: number) => void,
@@ -61,10 +64,14 @@ function initializeBleno(server: BlenoBleServer, hciId?: number) {
61
64
  super({
62
65
  uuid: BLE_MATTER_C2_CHARACTERISTIC_UUID,
63
66
  properties: ["indicate"],
67
+ onSubscribe: (_handle, maxValueSize, updateValueCallback) =>
68
+ this.#onSubscribe(maxValueSize, updateValueCallback),
69
+ onUnsubscribe: () => this.#onUnsubscribe(),
70
+ onIndicate: () => this.#onIndicate(),
64
71
  });
65
72
  }
66
73
 
67
- override onSubscribe(maxValueSize: number, updateValueCallback: (data: Buffer) => void) {
74
+ #onSubscribe(maxValueSize: number, updateValueCallback: (data: Buffer) => void) {
68
75
  logger.debug(`C2 subscribe ${maxValueSize}`);
69
76
 
70
77
  server
@@ -72,12 +79,12 @@ function initializeBleno(server: BlenoBleServer, hciId?: number) {
72
79
  .catch(e => logger.warn("Error happened in when handling C2 subscribe", e));
73
80
  }
74
81
 
75
- override onUnsubscribe() {
82
+ #onUnsubscribe() {
76
83
  logger.debug("C2 unsubscribe");
77
84
  server.close().catch(e => logger.warn("Error happened when closing server for C2 unsubscribe", e));
78
85
  }
79
86
 
80
- override onIndicate() {
87
+ #onIndicate() {
81
88
  logger.debug("C2 indicate");
82
89
  server.handleC2Indicate();
83
90
  }
@@ -88,10 +95,11 @@ function initializeBleno(server: BlenoBleServer, hciId?: number) {
88
95
  super({
89
96
  uuid: BLE_MATTER_C3_CHARACTERISTIC_UUID,
90
97
  properties: ["read"],
98
+ onReadRequest: (_handle, offset, callback) => this.#onReadRequest(offset, callback),
91
99
  });
92
100
  }
93
101
 
94
- override onReadRequest(offset: number, callback: (result: number, data?: Buffer) => void) {
102
+ #onReadRequest(offset: number, callback: (result: number, data?: Buffer) => void) {
95
103
  try {
96
104
  const data = server.handleC3ReadRequest(offset);
97
105
  logger.debug(`C3 read request: ${data.toString("hex")} ${offset}`);
@@ -146,6 +154,10 @@ export class BlenoBleServer extends BleChannel<Uint8Array> {
146
154
 
147
155
  constructor(options?: BleOptions) {
148
156
  super();
157
+
158
+ const { environment } = options ?? {};
159
+ environment?.runtime.add(this);
160
+
149
161
  this.matterBleService = initializeBleno(this, options?.hciId);
150
162
 
151
163
  // Write Bleno into this class
@@ -170,6 +182,7 @@ export class BlenoBleServer extends BleChannel<Uint8Array> {
170
182
 
171
183
  Bleno.on("disconnect", clientAddress => {
172
184
  logger.debug(`disconnect, client: ${clientAddress}`);
185
+ this.isAdvertising = false;
173
186
  if (this.btpSession !== undefined) {
174
187
  this.btpSession
175
188
  .close()
@@ -218,7 +231,7 @@ export class BlenoBleServer extends BleChannel<Uint8Array> {
218
231
  * @param offset
219
232
  * @param withoutResponse
220
233
  */
221
- handleC1WriteRequest(data: Buffer, offset: number, withoutResponse: boolean) {
234
+ handleC1WriteRequest(data: Buffer<ArrayBufferLike>, offset: number, withoutResponse: boolean) {
222
235
  if (offset !== 0 || withoutResponse) {
223
236
  throw new BleError(`Offset ${offset} or withoutResponse ${withoutResponse} not supported`);
224
237
  }
@@ -374,6 +387,7 @@ export class BlenoBleServer extends BleChannel<Uint8Array> {
374
387
  }
375
388
 
376
389
  async disconnect() {
390
+ this.isAdvertising = false;
377
391
  Bleno.disconnect();
378
392
  /*
379
393
  TODO: This is not working as expected, the disconnect event is not triggered, seems issue in Bleno
@@ -37,6 +37,9 @@ export class NobleBleClient {
37
37
  private deviceDiscoveredCallback: ((peripheral: Peripheral, manufacturerData: Uint8Array) => void) | undefined;
38
38
 
39
39
  constructor(options?: BleOptions) {
40
+ const { environment } = options ?? {};
41
+ environment?.runtime.add(this);
42
+
40
43
  loadNoble(options?.hciId);
41
44
  /*try {
42
45
  noble.reset();
@@ -70,6 +73,10 @@ export class NobleBleClient {
70
73
  noble.on("scanStop", () => (this.isScanning = false));
71
74
  }
72
75
 
76
+ [Symbol.asyncDispose]() {
77
+ return this.stopScanning();
78
+ }
79
+
73
80
  public setDiscoveryCallback(callback: (peripheral: Peripheral, manufacturerData: Uint8Array) => void) {
74
81
  this.deviceDiscoveredCallback = callback;
75
82
  for (const { peripheral, matterServiceData } of this.discoveredPeripherals.values()) {
package/src/NodeJsBle.ts CHANGED
@@ -4,7 +4,7 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- import { NetInterface, TransportInterface } from "@matter/general";
7
+ import { Environment, NetInterface, TransportInterface } from "@matter/general";
8
8
  import { Ble, InstanceBroadcaster, Scanner } from "@matter/protocol";
9
9
  import { BleBroadcaster } from "./BleBroadcaster.js";
10
10
  import { BlePeripheralInterface } from "./BlePeripheralInterface.js";
@@ -15,9 +15,11 @@ import { NobleBleClient } from "./NobleBleClient.js";
15
15
 
16
16
  export type BleOptions = {
17
17
  hciId?: number;
18
+ environment?: Environment;
18
19
  };
19
20
 
20
21
  export class NodeJsBle extends Ble {
22
+ #options?: BleOptions;
21
23
  #blePeripheralInstance?: BlenoBleServer;
22
24
  #bleCentralInstance?: NobleBleClient;
23
25
  #bleScanner?: BleScanner;
@@ -25,20 +27,21 @@ export class NodeJsBle extends Ble {
25
27
  #bleCentralInterface?: NobleBleCentralInterface;
26
28
  #blePeripheralInterface?: BlePeripheralInterface;
27
29
 
28
- constructor(private readonly options?: BleOptions) {
30
+ constructor(options?: BleOptions) {
29
31
  super();
32
+ this.#options = options;
30
33
  }
31
34
 
32
35
  get #blePeripheralServer() {
33
36
  if (this.#blePeripheralInstance === undefined) {
34
- this.#blePeripheralInstance = new BlenoBleServer(this.options);
37
+ this.#blePeripheralInstance = new BlenoBleServer(this.#options);
35
38
  }
36
39
  return this.#blePeripheralInstance;
37
40
  }
38
41
 
39
42
  get #bleCentralClient() {
40
43
  if (this.#bleCentralInstance === undefined) {
41
- this.#bleCentralInstance = new NobleBleClient(this.options);
44
+ this.#bleCentralInstance = new NobleBleClient(this.#options);
42
45
  }
43
46
  return this.#bleCentralInstance;
44
47
  }