@microbit/microbit-connection 0.0.0-alpha.1 → 0.0.0-alpha.11

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.
Files changed (57) hide show
  1. package/build/accelerometer-service.d.ts +10 -9
  2. package/build/accelerometer-service.js +61 -27
  3. package/build/accelerometer-service.js.map +1 -1
  4. package/build/bluetooth-device-wrapper.d.ts +30 -14
  5. package/build/bluetooth-device-wrapper.js +143 -27
  6. package/build/bluetooth-device-wrapper.js.map +1 -1
  7. package/build/bluetooth-utils.d.ts +5 -0
  8. package/build/bluetooth-utils.js +14 -0
  9. package/build/bluetooth-utils.js.map +1 -0
  10. package/build/bluetooth.d.ts +12 -13
  11. package/build/bluetooth.js +59 -75
  12. package/build/bluetooth.js.map +1 -1
  13. package/build/board-id.d.ts +2 -1
  14. package/build/board-id.js +8 -0
  15. package/build/board-id.js.map +1 -1
  16. package/build/board-serial-info.d.ts +1 -1
  17. package/build/board-serial-info.js +1 -1
  18. package/build/board-serial-info.js.map +1 -1
  19. package/build/button-service.d.ts +13 -0
  20. package/build/button-service.js +76 -0
  21. package/build/button-service.js.map +1 -0
  22. package/build/buttons.d.ts +10 -0
  23. package/build/buttons.js +18 -0
  24. package/build/buttons.js.map +1 -0
  25. package/build/constants.d.ts +1 -0
  26. package/build/constants.js +1 -0
  27. package/build/constants.js.map +1 -1
  28. package/build/device.d.ts +19 -29
  29. package/build/device.js +19 -2
  30. package/build/device.js.map +1 -1
  31. package/build/hex-flash-data-source.d.ts +7 -9
  32. package/build/hex-flash-data-source.js +16 -44
  33. package/build/hex-flash-data-source.js.map +1 -1
  34. package/build/index.d.ts +10 -7
  35. package/build/index.js +7 -6
  36. package/build/index.js.map +1 -1
  37. package/build/logging.js +3 -1
  38. package/build/logging.js.map +1 -1
  39. package/build/service-events.d.ts +7 -3
  40. package/build/service-events.js +12 -0
  41. package/build/service-events.js.map +1 -1
  42. package/build/usb-device-wrapper.d.ts +9 -3
  43. package/build/usb-device-wrapper.js +41 -4
  44. package/build/usb-device-wrapper.js.map +1 -1
  45. package/build/usb-partial-flashing-utils.js +1 -1
  46. package/build/usb-partial-flashing-utils.js.map +1 -1
  47. package/build/usb-partial-flashing.d.ts +13 -7
  48. package/build/usb-partial-flashing.js +55 -12
  49. package/build/usb-partial-flashing.js.map +1 -1
  50. package/build/usb-radio-bridge.d.ts +28 -19
  51. package/build/usb-radio-bridge.js +284 -192
  52. package/build/usb-radio-bridge.js.map +1 -1
  53. package/build/usb.d.ts +13 -14
  54. package/build/usb.js +117 -48
  55. package/build/usb.js.map +1 -1
  56. package/package.json +3 -2
  57. package/vite.config.ts +1 -1
@@ -1,17 +1,18 @@
1
- import { AccelerometerData } from "./accelerometer";
2
- import { TypedServiceEventDispatcher } from "./service-events";
3
- export declare class AccelerometerService {
1
+ import { AccelerometerData } from "./accelerometer.js";
2
+ import { GattOperation, Service } from "./bluetooth-device-wrapper.js";
3
+ import { TypedServiceEvent, TypedServiceEventDispatcher } from "./service-events.js";
4
+ export declare class AccelerometerService implements Service {
4
5
  private accelerometerDataCharacteristic;
5
6
  private accelerometerPeriodCharacteristic;
6
7
  private dispatchTypedEvent;
7
- private isNotifying;
8
- constructor(accelerometerDataCharacteristic: BluetoothRemoteGATTCharacteristic, accelerometerPeriodCharacteristic: BluetoothRemoteGATTCharacteristic, dispatchTypedEvent: TypedServiceEventDispatcher, isNotifying: boolean);
9
- static createService(gattServer: BluetoothRemoteGATTServer, dispatcher: TypedServiceEventDispatcher, isNotifying: boolean): Promise<AccelerometerService>;
8
+ private queueGattOperation;
9
+ constructor(accelerometerDataCharacteristic: BluetoothRemoteGATTCharacteristic, accelerometerPeriodCharacteristic: BluetoothRemoteGATTCharacteristic, dispatchTypedEvent: TypedServiceEventDispatcher, queueGattOperation: (gattOperation: GattOperation) => void);
10
+ static createService(gattServer: BluetoothRemoteGATTServer, dispatcher: TypedServiceEventDispatcher, queueGattOperation: (gattOperation: GattOperation) => void, listenerInit: boolean): Promise<AccelerometerService | undefined>;
10
11
  private dataViewToData;
11
12
  getData(): Promise<AccelerometerData>;
12
13
  getPeriod(): Promise<number>;
13
14
  setPeriod(value: number): Promise<void>;
14
- private addDataEventListener;
15
- startNotifications(): void;
16
- stopNotifications(): void;
15
+ startNotifications(type: TypedServiceEvent): Promise<void>;
16
+ stopNotifications(type: TypedServiceEvent): Promise<void>;
17
+ private characteristicForEvent;
17
18
  }
@@ -1,7 +1,9 @@
1
- import { AccelerometerDataEvent } from "./accelerometer";
2
- import { profile } from "./bluetooth-profile";
1
+ import { AccelerometerDataEvent } from "./accelerometer.js";
2
+ import { profile } from "./bluetooth-profile.js";
3
+ import { createGattOperationPromise } from "./bluetooth-utils.js";
4
+ import { BackgroundErrorEvent, DeviceError } from "./device.js";
3
5
  export class AccelerometerService {
4
- constructor(accelerometerDataCharacteristic, accelerometerPeriodCharacteristic, dispatchTypedEvent, isNotifying) {
6
+ constructor(accelerometerDataCharacteristic, accelerometerPeriodCharacteristic, dispatchTypedEvent, queueGattOperation) {
5
7
  Object.defineProperty(this, "accelerometerDataCharacteristic", {
6
8
  enumerable: true,
7
9
  configurable: true,
@@ -20,22 +22,38 @@ export class AccelerometerService {
20
22
  writable: true,
21
23
  value: dispatchTypedEvent
22
24
  });
23
- Object.defineProperty(this, "isNotifying", {
25
+ Object.defineProperty(this, "queueGattOperation", {
24
26
  enumerable: true,
25
27
  configurable: true,
26
28
  writable: true,
27
- value: isNotifying
29
+ value: queueGattOperation
30
+ });
31
+ this.accelerometerDataCharacteristic.addEventListener("characteristicvaluechanged", (event) => {
32
+ const target = event.target;
33
+ const data = this.dataViewToData(target.value);
34
+ this.dispatchTypedEvent("accelerometerdatachanged", new AccelerometerDataEvent(data));
28
35
  });
29
- this.addDataEventListener();
30
- if (this.isNotifying) {
31
- this.startNotifications();
32
- }
33
36
  }
34
- static async createService(gattServer, dispatcher, isNotifying) {
35
- const accelerometerService = await gattServer.getPrimaryService(profile.accelerometer.id);
37
+ static async createService(gattServer, dispatcher, queueGattOperation, listenerInit) {
38
+ let accelerometerService;
39
+ try {
40
+ accelerometerService = await gattServer.getPrimaryService(profile.accelerometer.id);
41
+ }
42
+ catch (err) {
43
+ if (listenerInit) {
44
+ dispatcher("backgrounderror", new BackgroundErrorEvent(err));
45
+ return;
46
+ }
47
+ else {
48
+ throw new DeviceError({
49
+ code: "service-missing",
50
+ message: err,
51
+ });
52
+ }
53
+ }
36
54
  const accelerometerDataCharacteristic = await accelerometerService.getCharacteristic(profile.accelerometer.characteristics.data.id);
37
55
  const accelerometerPeriodCharacteristic = await accelerometerService.getCharacteristic(profile.accelerometer.characteristics.period.id);
38
- return new AccelerometerService(accelerometerDataCharacteristic, accelerometerPeriodCharacteristic, dispatcher, isNotifying);
56
+ return new AccelerometerService(accelerometerDataCharacteristic, accelerometerPeriodCharacteristic, dispatcher, queueGattOperation);
39
57
  }
40
58
  dataViewToData(dataView) {
41
59
  return {
@@ -45,11 +63,21 @@ export class AccelerometerService {
45
63
  };
46
64
  }
47
65
  async getData() {
48
- const dataView = await this.accelerometerDataCharacteristic.readValue();
66
+ const { callback, gattOperationPromise } = createGattOperationPromise();
67
+ this.queueGattOperation({
68
+ callback,
69
+ operation: () => this.accelerometerDataCharacteristic.readValue(),
70
+ });
71
+ const dataView = (await gattOperationPromise);
49
72
  return this.dataViewToData(dataView);
50
73
  }
51
74
  async getPeriod() {
52
- const dataView = await this.accelerometerPeriodCharacteristic.readValue();
75
+ const { callback, gattOperationPromise } = createGattOperationPromise();
76
+ this.queueGattOperation({
77
+ callback,
78
+ operation: () => this.accelerometerPeriodCharacteristic.readValue(),
79
+ });
80
+ const dataView = (await gattOperationPromise);
53
81
  return dataView.getUint16(0, true);
54
82
  }
55
83
  async setPeriod(value) {
@@ -61,24 +89,30 @@ export class AccelerometerService {
61
89
  // Values passed are rounded up to the allowed values on device.
62
90
  // Documentation for allowed values looks wrong.
63
91
  // https://lancaster-university.github.io/microbit-docs/resources/bluetooth/bluetooth_profile.html
92
+ const { callback, gattOperationPromise } = createGattOperationPromise();
64
93
  const dataView = new DataView(new ArrayBuffer(2));
65
94
  dataView.setUint16(0, value, true);
66
- await this.accelerometerPeriodCharacteristic.writeValueWithoutResponse(dataView);
67
- }
68
- addDataEventListener() {
69
- this.accelerometerDataCharacteristic.addEventListener("characteristicvaluechanged", (event) => {
70
- const target = event.target;
71
- const data = this.dataViewToData(target.value);
72
- this.dispatchTypedEvent("accelerometerdatachanged", new AccelerometerDataEvent(data));
95
+ this.queueGattOperation({
96
+ callback,
97
+ operation: () => this.accelerometerPeriodCharacteristic.writeValueWithoutResponse(dataView),
73
98
  });
99
+ await gattOperationPromise;
74
100
  }
75
- startNotifications() {
76
- this.accelerometerDataCharacteristic.startNotifications();
77
- this.isNotifying = true;
101
+ async startNotifications(type) {
102
+ await this.characteristicForEvent(type)?.startNotifications();
78
103
  }
79
- stopNotifications() {
80
- this.isNotifying = false;
81
- this.accelerometerDataCharacteristic.stopNotifications();
104
+ async stopNotifications(type) {
105
+ await this.characteristicForEvent(type)?.stopNotifications();
106
+ }
107
+ characteristicForEvent(type) {
108
+ switch (type) {
109
+ case "accelerometerdatachanged": {
110
+ return this.accelerometerDataCharacteristic;
111
+ }
112
+ default: {
113
+ return undefined;
114
+ }
115
+ }
82
116
  }
83
117
  }
84
118
  //# sourceMappingURL=accelerometer-service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"accelerometer-service.js","sourceRoot":"","sources":["../lib/accelerometer-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"accelerometer-service.js","sourceRoot":"","sources":["../lib/accelerometer-service.ts"],"names":[],"mappings":"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"}
@@ -3,29 +3,39 @@
3
3
  *
4
4
  * SPDX-License-Identifier: MIT
5
5
  */
6
- import { AccelerometerService } from "./accelerometer-service";
7
- import { BoardVersion } from "./device";
8
- import { Logging } from "./logging";
9
- import { TypedServiceEventDispatcher } from "./service-events";
6
+ import { AccelerometerService } from "./accelerometer-service.js";
7
+ import { BoardVersion, DeviceError } from "./device.js";
8
+ import { Logging } from "./logging.js";
9
+ import { ServiceConnectionEventMap, TypedServiceEvent, TypedServiceEventDispatcher } from "./service-events.js";
10
+ export interface GattOperationCallback {
11
+ resolve: (result: DataView | void) => void;
12
+ reject: (error: DeviceError) => void;
13
+ }
14
+ export interface GattOperation {
15
+ operation: () => Promise<DataView | void>;
16
+ callback: GattOperationCallback;
17
+ }
18
+ export interface Service {
19
+ startNotifications(type: TypedServiceEvent): Promise<void>;
20
+ stopNotifications(type: TypedServiceEvent): Promise<void>;
21
+ }
10
22
  export declare class BluetoothDeviceWrapper {
11
23
  readonly device: BluetoothDevice;
12
24
  private logging;
13
25
  private dispatchTypedEvent;
26
+ private events;
14
27
  private duringExplicitConnectDisconnect;
15
28
  private gattConnectPromise;
16
29
  private disconnectPromise;
17
30
  private connecting;
18
31
  private isReconnect;
19
32
  private reconnectReadyPromise;
20
- private accelerometerService;
33
+ private accelerometer;
34
+ private buttons;
35
+ private serviceInfo;
21
36
  boardVersion: BoardVersion | undefined;
22
- serviceListeners: {
23
- accelerometerdatachanged: {
24
- notifying: boolean;
25
- service: () => Promise<AccelerometerService>;
26
- };
27
- };
28
- constructor(device: BluetoothDevice, logging: Logging, dispatchTypedEvent: TypedServiceEventDispatcher);
37
+ private gattOperations;
38
+ constructor(device: BluetoothDevice, logging: Logging, dispatchTypedEvent: TypedServiceEventDispatcher, events: Record<keyof ServiceConnectionEventMap, boolean>);
29
39
  connect(): Promise<void>;
30
40
  disconnect(): Promise<void>;
31
41
  private disconnectInternal;
@@ -33,7 +43,13 @@ export declare class BluetoothDeviceWrapper {
33
43
  handleDisconnectEvent: () => Promise<void>;
34
44
  private assertGattServer;
35
45
  private getBoardVersion;
36
- getAccelerometerService(): Promise<AccelerometerService>;
46
+ private queueGattOperation;
47
+ private processGattOperationQueue;
48
+ private clearGattQueueOnDisconnect;
49
+ private createIfNeeded;
50
+ getAccelerometerService(): Promise<AccelerometerService | undefined>;
51
+ startNotifications(type: TypedServiceEvent): Promise<void>;
52
+ stopNotifications(type: TypedServiceEvent): Promise<void>;
37
53
  private disposeServices;
38
54
  }
39
- export declare const createBluetoothDeviceWrapper: (device: BluetoothDevice, logging: Logging, dispatchTypedEvent: TypedServiceEventDispatcher) => Promise<BluetoothDeviceWrapper | undefined>;
55
+ export declare const createBluetoothDeviceWrapper: (device: BluetoothDevice, logging: Logging, dispatchTypedEvent: TypedServiceEventDispatcher, addedServiceListeners: Record<keyof ServiceConnectionEventMap, boolean>) => Promise<BluetoothDeviceWrapper | undefined>;
@@ -3,13 +3,18 @@
3
3
  *
4
4
  * SPDX-License-Identifier: MIT
5
5
  */
6
- import { AccelerometerService } from "./accelerometer-service";
7
- import { profile } from "./bluetooth-profile";
8
- import { NullLogging } from "./logging";
6
+ import { AccelerometerService } from "./accelerometer-service.js";
7
+ import { profile } from "./bluetooth-profile.js";
8
+ import { ButtonService } from "./button-service.js";
9
+ import { DeviceError } from "./device.js";
10
+ import { NullLogging } from "./logging.js";
9
11
  const deviceIdToWrapper = new Map();
10
12
  const connectTimeoutDuration = 10000;
11
13
  function findPlatform() {
12
- const navigator = window.navigator;
14
+ const navigator = typeof window !== "undefined" ? window.navigator : undefined;
15
+ if (!navigator) {
16
+ return "unknown";
17
+ }
13
18
  const platform = navigator.userAgentData?.platform;
14
19
  if (platform) {
15
20
  return platform;
@@ -19,8 +24,44 @@ function findPlatform() {
19
24
  }
20
25
  const platform = findPlatform();
21
26
  const isWindowsOS = platform && /^Win/.test(platform);
27
+ class ServiceInfo {
28
+ constructor(serviceFactory, events) {
29
+ Object.defineProperty(this, "serviceFactory", {
30
+ enumerable: true,
31
+ configurable: true,
32
+ writable: true,
33
+ value: serviceFactory
34
+ });
35
+ Object.defineProperty(this, "events", {
36
+ enumerable: true,
37
+ configurable: true,
38
+ writable: true,
39
+ value: events
40
+ });
41
+ Object.defineProperty(this, "service", {
42
+ enumerable: true,
43
+ configurable: true,
44
+ writable: true,
45
+ value: void 0
46
+ });
47
+ }
48
+ get() {
49
+ return this.service;
50
+ }
51
+ async createIfNeeded(gattServer, dispatcher, queueGattOperation, listenerInit) {
52
+ this.service =
53
+ this.service ??
54
+ (await this.serviceFactory(gattServer, dispatcher, queueGattOperation, listenerInit));
55
+ return this.service;
56
+ }
57
+ dispose() {
58
+ this.service = undefined;
59
+ }
60
+ }
22
61
  export class BluetoothDeviceWrapper {
23
- constructor(device, logging = new NullLogging(), dispatchTypedEvent) {
62
+ constructor(device, logging = new NullLogging(), dispatchTypedEvent,
63
+ // We recreate this for the same connection and need to re-setup notifications for the old events
64
+ events) {
24
65
  Object.defineProperty(this, "device", {
25
66
  enumerable: true,
26
67
  configurable: true,
@@ -39,6 +80,12 @@ export class BluetoothDeviceWrapper {
39
80
  writable: true,
40
81
  value: dispatchTypedEvent
41
82
  });
83
+ Object.defineProperty(this, "events", {
84
+ enumerable: true,
85
+ configurable: true,
86
+ writable: true,
87
+ value: events
88
+ });
42
89
  // Used to avoid automatic reconnection during user triggered connect/disconnect
43
90
  // or reconnection itself.
44
91
  Object.defineProperty(this, "duringExplicitConnectDisconnect", {
@@ -86,11 +133,28 @@ export class BluetoothDeviceWrapper {
86
133
  writable: true,
87
134
  value: void 0
88
135
  });
89
- Object.defineProperty(this, "accelerometerService", {
136
+ Object.defineProperty(this, "accelerometer", {
90
137
  enumerable: true,
91
138
  configurable: true,
92
139
  writable: true,
93
- value: void 0
140
+ value: new ServiceInfo(AccelerometerService.createService, [
141
+ "accelerometerdatachanged",
142
+ ])
143
+ });
144
+ Object.defineProperty(this, "buttons", {
145
+ enumerable: true,
146
+ configurable: true,
147
+ writable: true,
148
+ value: new ServiceInfo(ButtonService.createService, [
149
+ "buttonachanged",
150
+ "buttonbchanged",
151
+ ])
152
+ });
153
+ Object.defineProperty(this, "serviceInfo", {
154
+ enumerable: true,
155
+ configurable: true,
156
+ writable: true,
157
+ value: [this.accelerometer, this.buttons]
94
158
  });
95
159
  Object.defineProperty(this, "boardVersion", {
96
160
  enumerable: true,
@@ -98,15 +162,13 @@ export class BluetoothDeviceWrapper {
98
162
  writable: true,
99
163
  value: void 0
100
164
  });
101
- Object.defineProperty(this, "serviceListeners", {
165
+ Object.defineProperty(this, "gattOperations", {
102
166
  enumerable: true,
103
167
  configurable: true,
104
168
  writable: true,
105
169
  value: {
106
- accelerometerdatachanged: {
107
- notifying: false,
108
- service: this.getAccelerometerService,
109
- },
170
+ busy: false,
171
+ queue: [],
110
172
  }
111
173
  });
112
174
  Object.defineProperty(this, "handleDisconnectEvent", {
@@ -114,7 +176,6 @@ export class BluetoothDeviceWrapper {
114
176
  configurable: true,
115
177
  writable: true,
116
178
  value: async () => {
117
- // this.outputWriteQueue = { busy: false, queue: [] };
118
179
  try {
119
180
  if (!this.duringExplicitConnectDisconnect) {
120
181
  this.logging.log("Bluetooth GATT disconnected... automatically trying reconnect");
@@ -131,6 +192,41 @@ export class BluetoothDeviceWrapper {
131
192
  }
132
193
  }
133
194
  });
195
+ Object.defineProperty(this, "processGattOperationQueue", {
196
+ enumerable: true,
197
+ configurable: true,
198
+ writable: true,
199
+ value: () => {
200
+ if (!this.device.gatt?.connected) {
201
+ // No longer connected. Drop queue.
202
+ this.clearGattQueueOnDisconnect();
203
+ return;
204
+ }
205
+ if (this.gattOperations.busy) {
206
+ // We will finish processing the current operation, then
207
+ // pick up processing the queue in the finally block.
208
+ return;
209
+ }
210
+ const gattOperation = this.gattOperations.queue.shift();
211
+ if (!gattOperation) {
212
+ return;
213
+ }
214
+ this.gattOperations.busy = true;
215
+ gattOperation
216
+ .operation()
217
+ .then((result) => {
218
+ gattOperation.callback.resolve(result);
219
+ })
220
+ .catch((err) => {
221
+ gattOperation.callback.reject(new DeviceError({ code: "background-comms-error", message: err }));
222
+ this.logging.error("Error processing gatt operations queue", err);
223
+ })
224
+ .finally(() => {
225
+ this.gattOperations.busy = false;
226
+ this.processGattOperationQueue();
227
+ });
228
+ }
229
+ });
134
230
  device.addEventListener("gattserverdisconnected", this.handleDisconnectEvent);
135
231
  }
136
232
  async connect() {
@@ -203,13 +299,7 @@ export class BluetoothDeviceWrapper {
203
299
  finally {
204
300
  this.connecting = false;
205
301
  }
206
- // Restart notifications for services and characteristics
207
- // the user has listened to.
208
- for (const serviceListener of Object.values(this.serviceListeners)) {
209
- if (serviceListener.notifying) {
210
- serviceListener.service.call(this);
211
- }
212
- }
302
+ Object.keys(this.events).forEach((e) => this.startNotifications(e));
213
303
  this.logging.event({
214
304
  type: this.isReconnect ? "Reconnect" : "Connect",
215
305
  message: "Bluetooth connect success",
@@ -288,23 +378,49 @@ export class BluetoothDeviceWrapper {
288
378
  throw new Error("Could not read model number");
289
379
  }
290
380
  }
381
+ queueGattOperation(gattOperation) {
382
+ this.gattOperations.queue.push(gattOperation);
383
+ this.processGattOperationQueue();
384
+ }
385
+ clearGattQueueOnDisconnect() {
386
+ this.gattOperations.queue.forEach((op) => {
387
+ op.callback.reject(new DeviceError({
388
+ code: "device-disconnected",
389
+ message: "Error processing gatt operations queue - device disconnected",
390
+ }));
391
+ });
392
+ this.gattOperations = { busy: false, queue: [] };
393
+ }
394
+ createIfNeeded(info, listenerInit) {
395
+ const gattServer = this.assertGattServer();
396
+ return info.createIfNeeded(gattServer, this.dispatchTypedEvent, this.queueGattOperation.bind(this), listenerInit);
397
+ }
291
398
  async getAccelerometerService() {
292
- if (!this.accelerometerService) {
293
- const gattServer = this.assertGattServer();
294
- this.accelerometerService = await AccelerometerService.createService(gattServer, this.dispatchTypedEvent, this.serviceListeners.accelerometerdatachanged.notifying);
399
+ return this.createIfNeeded(this.accelerometer, false);
400
+ }
401
+ async startNotifications(type) {
402
+ const serviceInfo = this.serviceInfo.find((s) => s.events.includes(type));
403
+ if (serviceInfo) {
404
+ // TODO: type cheat! why?
405
+ const service = await this.createIfNeeded(serviceInfo, true);
406
+ service?.startNotifications(type);
295
407
  }
296
- return this.accelerometerService;
408
+ }
409
+ async stopNotifications(type) {
410
+ const serviceInfo = this.serviceInfo.find((s) => s.events.includes(type));
411
+ serviceInfo?.get()?.stopNotifications(type);
297
412
  }
298
413
  disposeServices() {
299
- this.accelerometerService = undefined;
414
+ this.serviceInfo.forEach((s) => s.dispose());
415
+ this.clearGattQueueOnDisconnect();
300
416
  }
301
417
  }
302
- export const createBluetoothDeviceWrapper = async (device, logging, dispatchTypedEvent) => {
418
+ export const createBluetoothDeviceWrapper = async (device, logging, dispatchTypedEvent, addedServiceListeners) => {
303
419
  try {
304
420
  // Reuse our connection objects for the same device as they
305
421
  // track the GATT connect promise that never resolves.
306
422
  const bluetooth = deviceIdToWrapper.get(device.id) ??
307
- new BluetoothDeviceWrapper(device, logging, dispatchTypedEvent);
423
+ new BluetoothDeviceWrapper(device, logging, dispatchTypedEvent, addedServiceListeners);
308
424
  deviceIdToWrapper.set(device.id, bluetooth);
309
425
  await bluetooth.connect();
310
426
  return bluetooth;
@@ -1 +1 @@
1
- {"version":3,"file":"bluetooth-device-wrapper.js","sourceRoot":"","sources":["../lib/bluetooth-device-wrapper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bluetooth-device-wrapper.js","sourceRoot":"","sources":["../lib/bluetooth-device-wrapper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { GattOperationCallback } from "./bluetooth-device-wrapper.js";
2
+ export declare const createGattOperationPromise: () => {
3
+ callback: GattOperationCallback;
4
+ gattOperationPromise: Promise<DataView | void>;
5
+ };
@@ -0,0 +1,14 @@
1
+ export const createGattOperationPromise = () => {
2
+ let resolve;
3
+ let reject;
4
+ const gattOperationPromise = new Promise((res, rej) => {
5
+ resolve = res;
6
+ reject = rej;
7
+ });
8
+ const callback = {
9
+ resolve: resolve,
10
+ reject: reject,
11
+ };
12
+ return { callback, gattOperationPromise };
13
+ };
14
+ //# sourceMappingURL=bluetooth-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bluetooth-utils.js","sourceRoot":"","sources":["../lib/bluetooth-utils.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAGxC,EAAE;IACF,IAAI,OAA0C,CAAC;IAC/C,IAAI,MAAkB,CAAC;IACvB,MAAM,oBAAoB,GAAG,IAAI,OAAO,CAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACrE,OAAO,GAAG,GAAG,CAAC;QACd,MAAM,GAAG,GAAG,CAAC;IACf,CAAC,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG;QACf,OAAO,EAAE,OAAQ;QACjB,MAAM,EAAE,MAAO;KAChB,CAAC;IACF,OAAO,EAAE,QAAQ,EAAE,oBAAoB,EAAE,CAAC;AAC5C,CAAC,CAAC"}
@@ -3,12 +3,12 @@
3
3
  *
4
4
  * SPDX-License-Identifier: MIT
5
5
  */
6
- import { AccelerometerData } from "./accelerometer";
7
- import { BluetoothDeviceWrapper } from "./bluetooth-device-wrapper";
8
- import { BoardVersion, ConnectOptions, ConnectionStatus, DeviceConnection, DeviceConnectionEventMap } from "./device";
9
- import { TypedEventTarget } from "./events";
10
- import { Logging } from "./logging";
11
- import { ServiceConnectionEventMap } from "./service-events";
6
+ import { AccelerometerData } from "./accelerometer.js";
7
+ import { BluetoothDeviceWrapper } from "./bluetooth-device-wrapper.js";
8
+ import { BoardVersion, ConnectionStatus, DeviceConnection, DeviceConnectionEventMap } from "./device.js";
9
+ import { TypedEventTarget } from "./events.js";
10
+ import { Logging } from "./logging.js";
11
+ import { ServiceConnectionEventMap } from "./service-events.js";
12
12
  export interface MicrobitWebBluetoothConnectionOptions {
13
13
  logging?: Logging;
14
14
  }
@@ -26,25 +26,24 @@ export declare class MicrobitWebBluetoothConnection extends TypedEventTarget<Dev
26
26
  connection: BluetoothDeviceWrapper | undefined;
27
27
  private _addEventListener;
28
28
  private _removeEventListener;
29
+ private activeEvents;
30
+ private availabilityListener;
31
+ private availability;
32
+ private nameFilter;
29
33
  constructor(options?: MicrobitWebBluetoothConnectionOptions);
30
34
  private log;
31
35
  initialize(): Promise<void>;
32
36
  dispose(): void;
33
- connect(options?: ConnectOptions): Promise<ConnectionStatus>;
37
+ connect(): Promise<ConnectionStatus>;
34
38
  getBoardVersion(): BoardVersion | undefined;
35
- private startSerialInternal;
36
- private stopSerialInternal;
37
39
  disconnect(): Promise<void>;
38
40
  private setStatus;
39
41
  serialWrite(data: string): Promise<void>;
40
42
  clearDevice(): Promise<void>;
41
43
  private connectInternal;
44
+ setNameFilter(name: string): void;
42
45
  private chooseDevice;
43
46
  getAccelerometerData(): Promise<AccelerometerData | undefined>;
44
47
  getAccelerometerPeriod(): Promise<number | undefined>;
45
48
  setAccelerometerPeriod(value: number): Promise<void>;
46
- private startAccelerometerNotifications;
47
- private stopAccelerometerNotifications;
48
- private startNotifications;
49
- private stopNotifications;
50
49
  }