@microbit/microbit-connection 0.0.0-alpha.2 → 0.0.0-alpha.20
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/build/accelerometer-service.d.ts +8 -9
- package/build/accelerometer-service.js +41 -44
- package/build/accelerometer-service.js.map +1 -1
- package/build/bluetooth-device-wrapper.d.ts +26 -20
- package/build/bluetooth-device-wrapper.js +134 -75
- package/build/bluetooth-device-wrapper.js.map +1 -1
- package/build/bluetooth.d.ts +14 -10
- package/build/bluetooth.js +68 -78
- package/build/bluetooth.js.map +1 -1
- package/build/board-id.d.ts +1 -0
- package/build/board-id.js +8 -0
- package/build/board-id.js.map +1 -1
- package/build/button-service.d.ts +13 -0
- package/build/button-service.js +76 -0
- package/build/button-service.js.map +1 -0
- package/build/buttons.d.ts +10 -0
- package/build/buttons.js +18 -0
- package/build/buttons.js.map +1 -0
- package/build/constants.d.ts +1 -0
- package/build/constants.js +1 -0
- package/build/constants.js.map +1 -1
- package/build/device.d.ts +22 -27
- package/build/device.js +29 -3
- package/build/device.js.map +1 -1
- package/build/events.d.ts +11 -1
- package/build/events.js +86 -1
- package/build/events.js.map +1 -1
- package/build/hex-flash-data-source.d.ts +6 -8
- package/build/hex-flash-data-source.js +16 -45
- package/build/hex-flash-data-source.js.map +1 -1
- package/build/index.d.ts +7 -4
- package/build/index.js +3 -2
- package/build/index.js.map +1 -1
- package/build/led-service.d.ts +20 -0
- package/build/led-service.js +116 -0
- package/build/led-service.js.map +1 -0
- package/build/led.d.ts +6 -0
- package/build/led.js +2 -0
- package/build/led.js.map +1 -0
- package/build/logging.js +3 -1
- package/build/logging.js.map +1 -1
- package/build/promise-queue.d.ts +27 -0
- package/build/promise-queue.js +74 -0
- package/build/promise-queue.js.map +1 -0
- package/build/service-events.d.ts +6 -2
- package/build/service-events.js +12 -0
- package/build/service-events.js.map +1 -1
- package/build/usb-device-wrapper.d.ts +7 -1
- package/build/usb-device-wrapper.js +40 -3
- package/build/usb-device-wrapper.js.map +1 -1
- package/build/usb-partial-flashing.d.ts +11 -5
- package/build/usb-partial-flashing.js +53 -10
- package/build/usb-partial-flashing.js.map +1 -1
- package/build/usb-radio-bridge.d.ts +31 -18
- package/build/usb-radio-bridge.js +351 -187
- package/build/usb-radio-bridge.js.map +1 -1
- package/build/usb.d.ts +12 -13
- package/build/usb.js +95 -46
- package/build/usb.js.map +1 -1
- package/package.json +6 -4
- package/vite.config.ts +10 -8
- package/build/bluetooth-utils.d.ts +0 -5
- package/build/bluetooth-utils.js +0 -14
- package/build/bluetooth-utils.js.map +0 -1
|
@@ -1,19 +1,18 @@
|
|
|
1
1
|
import { AccelerometerData } from "./accelerometer.js";
|
|
2
|
-
import {
|
|
3
|
-
import { TypedServiceEventDispatcher } from "./service-events.js";
|
|
4
|
-
export declare class AccelerometerService {
|
|
2
|
+
import { Service } from "./bluetooth-device-wrapper.js";
|
|
3
|
+
import { TypedServiceEvent, TypedServiceEventDispatcher } from "./service-events.js";
|
|
4
|
+
export declare class AccelerometerService implements Service {
|
|
5
5
|
private accelerometerDataCharacteristic;
|
|
6
6
|
private accelerometerPeriodCharacteristic;
|
|
7
7
|
private dispatchTypedEvent;
|
|
8
|
-
private isNotifying;
|
|
9
8
|
private queueGattOperation;
|
|
10
|
-
constructor(accelerometerDataCharacteristic: BluetoothRemoteGATTCharacteristic, accelerometerPeriodCharacteristic: BluetoothRemoteGATTCharacteristic, dispatchTypedEvent: TypedServiceEventDispatcher,
|
|
11
|
-
static createService(gattServer: BluetoothRemoteGATTServer, dispatcher: TypedServiceEventDispatcher,
|
|
9
|
+
constructor(accelerometerDataCharacteristic: BluetoothRemoteGATTCharacteristic, accelerometerPeriodCharacteristic: BluetoothRemoteGATTCharacteristic, dispatchTypedEvent: TypedServiceEventDispatcher, queueGattOperation: <R>(action: () => Promise<R>) => Promise<R>);
|
|
10
|
+
static createService(gattServer: BluetoothRemoteGATTServer, dispatcher: TypedServiceEventDispatcher, queueGattOperation: <R>(action: () => Promise<R>) => Promise<R>, listenerInit: boolean): Promise<AccelerometerService | undefined>;
|
|
12
11
|
private dataViewToData;
|
|
13
12
|
getData(): Promise<AccelerometerData>;
|
|
14
13
|
getPeriod(): Promise<number>;
|
|
15
14
|
setPeriod(value: number): Promise<void>;
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
15
|
+
startNotifications(type: TypedServiceEvent): Promise<void>;
|
|
16
|
+
stopNotifications(type: TypedServiceEvent): Promise<void>;
|
|
17
|
+
private characteristicForEvent;
|
|
19
18
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { AccelerometerDataEvent } from "./accelerometer.js";
|
|
2
2
|
import { profile } from "./bluetooth-profile.js";
|
|
3
|
-
import {
|
|
3
|
+
import { BackgroundErrorEvent, DeviceError } from "./device.js";
|
|
4
4
|
export class AccelerometerService {
|
|
5
|
-
constructor(accelerometerDataCharacteristic, accelerometerPeriodCharacteristic, dispatchTypedEvent,
|
|
5
|
+
constructor(accelerometerDataCharacteristic, accelerometerPeriodCharacteristic, dispatchTypedEvent, queueGattOperation) {
|
|
6
6
|
Object.defineProperty(this, "accelerometerDataCharacteristic", {
|
|
7
7
|
enumerable: true,
|
|
8
8
|
configurable: true,
|
|
@@ -21,28 +21,38 @@ export class AccelerometerService {
|
|
|
21
21
|
writable: true,
|
|
22
22
|
value: dispatchTypedEvent
|
|
23
23
|
});
|
|
24
|
-
Object.defineProperty(this, "isNotifying", {
|
|
25
|
-
enumerable: true,
|
|
26
|
-
configurable: true,
|
|
27
|
-
writable: true,
|
|
28
|
-
value: isNotifying
|
|
29
|
-
});
|
|
30
24
|
Object.defineProperty(this, "queueGattOperation", {
|
|
31
25
|
enumerable: true,
|
|
32
26
|
configurable: true,
|
|
33
27
|
writable: true,
|
|
34
28
|
value: queueGattOperation
|
|
35
29
|
});
|
|
36
|
-
this.
|
|
37
|
-
|
|
38
|
-
this.
|
|
39
|
-
|
|
30
|
+
this.accelerometerDataCharacteristic.addEventListener("characteristicvaluechanged", (event) => {
|
|
31
|
+
const target = event.target;
|
|
32
|
+
const data = this.dataViewToData(target.value);
|
|
33
|
+
this.dispatchTypedEvent("accelerometerdatachanged", new AccelerometerDataEvent(data));
|
|
34
|
+
});
|
|
40
35
|
}
|
|
41
|
-
static async createService(gattServer, dispatcher,
|
|
42
|
-
|
|
36
|
+
static async createService(gattServer, dispatcher, queueGattOperation, listenerInit) {
|
|
37
|
+
let accelerometerService;
|
|
38
|
+
try {
|
|
39
|
+
accelerometerService = await gattServer.getPrimaryService(profile.accelerometer.id);
|
|
40
|
+
}
|
|
41
|
+
catch (err) {
|
|
42
|
+
if (listenerInit) {
|
|
43
|
+
dispatcher("backgrounderror", new BackgroundErrorEvent(err));
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
throw new DeviceError({
|
|
48
|
+
code: "service-missing",
|
|
49
|
+
message: err,
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
}
|
|
43
53
|
const accelerometerDataCharacteristic = await accelerometerService.getCharacteristic(profile.accelerometer.characteristics.data.id);
|
|
44
54
|
const accelerometerPeriodCharacteristic = await accelerometerService.getCharacteristic(profile.accelerometer.characteristics.period.id);
|
|
45
|
-
return new AccelerometerService(accelerometerDataCharacteristic, accelerometerPeriodCharacteristic, dispatcher,
|
|
55
|
+
return new AccelerometerService(accelerometerDataCharacteristic, accelerometerPeriodCharacteristic, dispatcher, queueGattOperation);
|
|
46
56
|
}
|
|
47
57
|
dataViewToData(dataView) {
|
|
48
58
|
return {
|
|
@@ -52,21 +62,11 @@ export class AccelerometerService {
|
|
|
52
62
|
};
|
|
53
63
|
}
|
|
54
64
|
async getData() {
|
|
55
|
-
const
|
|
56
|
-
this.queueGattOperation({
|
|
57
|
-
callback,
|
|
58
|
-
operation: () => this.accelerometerDataCharacteristic.readValue(),
|
|
59
|
-
});
|
|
60
|
-
const dataView = (await gattOperationPromise);
|
|
65
|
+
const dataView = await this.queueGattOperation(() => this.accelerometerDataCharacteristic.readValue());
|
|
61
66
|
return this.dataViewToData(dataView);
|
|
62
67
|
}
|
|
63
68
|
async getPeriod() {
|
|
64
|
-
const
|
|
65
|
-
this.queueGattOperation({
|
|
66
|
-
callback,
|
|
67
|
-
operation: () => this.accelerometerPeriodCharacteristic.readValue(),
|
|
68
|
-
});
|
|
69
|
-
const dataView = (await gattOperationPromise);
|
|
69
|
+
const dataView = await this.queueGattOperation(() => this.accelerometerPeriodCharacteristic.readValue());
|
|
70
70
|
return dataView.getUint16(0, true);
|
|
71
71
|
}
|
|
72
72
|
async setPeriod(value) {
|
|
@@ -78,28 +78,25 @@ export class AccelerometerService {
|
|
|
78
78
|
// Values passed are rounded up to the allowed values on device.
|
|
79
79
|
// Documentation for allowed values looks wrong.
|
|
80
80
|
// https://lancaster-university.github.io/microbit-docs/resources/bluetooth/bluetooth_profile.html
|
|
81
|
-
const { callback } = createGattOperationPromise();
|
|
82
81
|
const dataView = new DataView(new ArrayBuffer(2));
|
|
83
82
|
dataView.setUint16(0, value, true);
|
|
84
|
-
this.queueGattOperation(
|
|
85
|
-
callback,
|
|
86
|
-
operation: () => this.accelerometerPeriodCharacteristic.writeValueWithoutResponse(dataView),
|
|
87
|
-
});
|
|
83
|
+
return this.queueGattOperation(() => this.accelerometerDataCharacteristic.writeValueWithoutResponse(dataView));
|
|
88
84
|
}
|
|
89
|
-
|
|
90
|
-
this.
|
|
91
|
-
const target = event.target;
|
|
92
|
-
const data = this.dataViewToData(target.value);
|
|
93
|
-
this.dispatchTypedEvent("accelerometerdatachanged", new AccelerometerDataEvent(data));
|
|
94
|
-
});
|
|
85
|
+
async startNotifications(type) {
|
|
86
|
+
await this.characteristicForEvent(type)?.startNotifications();
|
|
95
87
|
}
|
|
96
|
-
|
|
97
|
-
this.
|
|
98
|
-
this.isNotifying = true;
|
|
88
|
+
async stopNotifications(type) {
|
|
89
|
+
await this.characteristicForEvent(type)?.stopNotifications();
|
|
99
90
|
}
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
91
|
+
characteristicForEvent(type) {
|
|
92
|
+
switch (type) {
|
|
93
|
+
case "accelerometerdatachanged": {
|
|
94
|
+
return this.accelerometerDataCharacteristic;
|
|
95
|
+
}
|
|
96
|
+
default: {
|
|
97
|
+
return undefined;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
103
100
|
}
|
|
104
101
|
}
|
|
105
102
|
//# sourceMappingURL=accelerometer-service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accelerometer-service.js","sourceRoot":"","sources":["../lib/accelerometer-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAE/E,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"accelerometer-service.js","sourceRoot":"","sources":["../lib/accelerometer-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,37 +4,40 @@
|
|
|
4
4
|
* SPDX-License-Identifier: MIT
|
|
5
5
|
*/
|
|
6
6
|
import { AccelerometerService } from "./accelerometer-service.js";
|
|
7
|
-
import { BoardVersion
|
|
7
|
+
import { BoardVersion } from "./device.js";
|
|
8
|
+
import { LedService } from "./led-service.js";
|
|
8
9
|
import { Logging } from "./logging.js";
|
|
9
|
-
import { TypedServiceEventDispatcher } from "./service-events.js";
|
|
10
|
-
export interface
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
import { ServiceConnectionEventMap, TypedServiceEvent, TypedServiceEventDispatcher } from "./service-events.js";
|
|
11
|
+
export interface Service {
|
|
12
|
+
startNotifications(type: TypedServiceEvent): Promise<void>;
|
|
13
|
+
stopNotifications(type: TypedServiceEvent): Promise<void>;
|
|
13
14
|
}
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
interface ConnectCallbacks {
|
|
16
|
+
onConnecting: () => void;
|
|
17
|
+
onReconnecting: () => void;
|
|
18
|
+
onFail: () => void;
|
|
19
|
+
onSuccess: () => void;
|
|
17
20
|
}
|
|
18
21
|
export declare class BluetoothDeviceWrapper {
|
|
19
22
|
readonly device: BluetoothDevice;
|
|
20
23
|
private logging;
|
|
21
24
|
private dispatchTypedEvent;
|
|
25
|
+
private currentEvents;
|
|
26
|
+
private callbacks;
|
|
22
27
|
private duringExplicitConnectDisconnect;
|
|
23
28
|
private gattConnectPromise;
|
|
24
29
|
private disconnectPromise;
|
|
25
30
|
private connecting;
|
|
26
31
|
private isReconnect;
|
|
27
32
|
private reconnectReadyPromise;
|
|
28
|
-
private
|
|
33
|
+
private accelerometer;
|
|
34
|
+
private buttons;
|
|
35
|
+
private led;
|
|
36
|
+
private serviceInfo;
|
|
29
37
|
boardVersion: BoardVersion | undefined;
|
|
30
|
-
|
|
31
|
-
accelerometerdatachanged: {
|
|
32
|
-
notifying: boolean;
|
|
33
|
-
service: () => Promise<AccelerometerService>;
|
|
34
|
-
};
|
|
35
|
-
};
|
|
38
|
+
private disconnectedRejectionErrorFactory;
|
|
36
39
|
private gattOperations;
|
|
37
|
-
constructor(device: BluetoothDevice, logging: Logging, dispatchTypedEvent: TypedServiceEventDispatcher);
|
|
40
|
+
constructor(device: BluetoothDevice, logging: Logging, dispatchTypedEvent: TypedServiceEventDispatcher, currentEvents: () => Array<keyof ServiceConnectionEventMap>, callbacks: ConnectCallbacks);
|
|
38
41
|
connect(): Promise<void>;
|
|
39
42
|
disconnect(): Promise<void>;
|
|
40
43
|
private disconnectInternal;
|
|
@@ -43,9 +46,12 @@ export declare class BluetoothDeviceWrapper {
|
|
|
43
46
|
private assertGattServer;
|
|
44
47
|
private getBoardVersion;
|
|
45
48
|
private queueGattOperation;
|
|
46
|
-
private
|
|
47
|
-
|
|
48
|
-
|
|
49
|
+
private createIfNeeded;
|
|
50
|
+
getAccelerometerService(): Promise<AccelerometerService | undefined>;
|
|
51
|
+
getLedService(): Promise<LedService | undefined>;
|
|
52
|
+
startNotifications(type: TypedServiceEvent): Promise<void>;
|
|
53
|
+
stopNotifications(type: TypedServiceEvent): Promise<void>;
|
|
49
54
|
private disposeServices;
|
|
50
55
|
}
|
|
51
|
-
export declare const createBluetoothDeviceWrapper: (device: BluetoothDevice, logging: Logging, dispatchTypedEvent: TypedServiceEventDispatcher) => Promise<BluetoothDeviceWrapper | undefined>;
|
|
56
|
+
export declare const createBluetoothDeviceWrapper: (device: BluetoothDevice, logging: Logging, dispatchTypedEvent: TypedServiceEventDispatcher, currentEvents: () => Array<keyof ServiceConnectionEventMap>, callbacks: ConnectCallbacks) => Promise<BluetoothDeviceWrapper | undefined>;
|
|
57
|
+
export {};
|
|
@@ -5,12 +5,18 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { AccelerometerService } from "./accelerometer-service.js";
|
|
7
7
|
import { profile } from "./bluetooth-profile.js";
|
|
8
|
+
import { ButtonService } from "./button-service.js";
|
|
8
9
|
import { DeviceError } from "./device.js";
|
|
10
|
+
import { LedService } from "./led-service.js";
|
|
9
11
|
import { NullLogging } from "./logging.js";
|
|
12
|
+
import { PromiseQueue } from "./promise-queue.js";
|
|
10
13
|
const deviceIdToWrapper = new Map();
|
|
11
14
|
const connectTimeoutDuration = 10000;
|
|
12
15
|
function findPlatform() {
|
|
13
|
-
const navigator = window.navigator;
|
|
16
|
+
const navigator = typeof window !== "undefined" ? window.navigator : undefined;
|
|
17
|
+
if (!navigator) {
|
|
18
|
+
return "unknown";
|
|
19
|
+
}
|
|
14
20
|
const platform = navigator.userAgentData?.platform;
|
|
15
21
|
if (platform) {
|
|
16
22
|
return platform;
|
|
@@ -20,8 +26,42 @@ function findPlatform() {
|
|
|
20
26
|
}
|
|
21
27
|
const platform = findPlatform();
|
|
22
28
|
const isWindowsOS = platform && /^Win/.test(platform);
|
|
29
|
+
class ServiceInfo {
|
|
30
|
+
constructor(serviceFactory, events) {
|
|
31
|
+
Object.defineProperty(this, "serviceFactory", {
|
|
32
|
+
enumerable: true,
|
|
33
|
+
configurable: true,
|
|
34
|
+
writable: true,
|
|
35
|
+
value: serviceFactory
|
|
36
|
+
});
|
|
37
|
+
Object.defineProperty(this, "events", {
|
|
38
|
+
enumerable: true,
|
|
39
|
+
configurable: true,
|
|
40
|
+
writable: true,
|
|
41
|
+
value: events
|
|
42
|
+
});
|
|
43
|
+
Object.defineProperty(this, "service", {
|
|
44
|
+
enumerable: true,
|
|
45
|
+
configurable: true,
|
|
46
|
+
writable: true,
|
|
47
|
+
value: void 0
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
get() {
|
|
51
|
+
return this.service;
|
|
52
|
+
}
|
|
53
|
+
async createIfNeeded(gattServer, dispatcher, queueGattOperation, listenerInit) {
|
|
54
|
+
this.service =
|
|
55
|
+
this.service ??
|
|
56
|
+
(await this.serviceFactory(gattServer, dispatcher, queueGattOperation, listenerInit));
|
|
57
|
+
return this.service;
|
|
58
|
+
}
|
|
59
|
+
dispose() {
|
|
60
|
+
this.service = undefined;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
23
63
|
export class BluetoothDeviceWrapper {
|
|
24
|
-
constructor(device, logging = new NullLogging(), dispatchTypedEvent) {
|
|
64
|
+
constructor(device, logging = new NullLogging(), dispatchTypedEvent, currentEvents, callbacks) {
|
|
25
65
|
Object.defineProperty(this, "device", {
|
|
26
66
|
enumerable: true,
|
|
27
67
|
configurable: true,
|
|
@@ -40,6 +80,18 @@ export class BluetoothDeviceWrapper {
|
|
|
40
80
|
writable: true,
|
|
41
81
|
value: dispatchTypedEvent
|
|
42
82
|
});
|
|
83
|
+
Object.defineProperty(this, "currentEvents", {
|
|
84
|
+
enumerable: true,
|
|
85
|
+
configurable: true,
|
|
86
|
+
writable: true,
|
|
87
|
+
value: currentEvents
|
|
88
|
+
});
|
|
89
|
+
Object.defineProperty(this, "callbacks", {
|
|
90
|
+
enumerable: true,
|
|
91
|
+
configurable: true,
|
|
92
|
+
writable: true,
|
|
93
|
+
value: callbacks
|
|
94
|
+
});
|
|
43
95
|
// Used to avoid automatic reconnection during user triggered connect/disconnect
|
|
44
96
|
// or reconnection itself.
|
|
45
97
|
Object.defineProperty(this, "duringExplicitConnectDisconnect", {
|
|
@@ -87,11 +139,34 @@ export class BluetoothDeviceWrapper {
|
|
|
87
139
|
writable: true,
|
|
88
140
|
value: void 0
|
|
89
141
|
});
|
|
90
|
-
Object.defineProperty(this, "
|
|
142
|
+
Object.defineProperty(this, "accelerometer", {
|
|
91
143
|
enumerable: true,
|
|
92
144
|
configurable: true,
|
|
93
145
|
writable: true,
|
|
94
|
-
value:
|
|
146
|
+
value: new ServiceInfo(AccelerometerService.createService, [
|
|
147
|
+
"accelerometerdatachanged",
|
|
148
|
+
])
|
|
149
|
+
});
|
|
150
|
+
Object.defineProperty(this, "buttons", {
|
|
151
|
+
enumerable: true,
|
|
152
|
+
configurable: true,
|
|
153
|
+
writable: true,
|
|
154
|
+
value: new ServiceInfo(ButtonService.createService, [
|
|
155
|
+
"buttonachanged",
|
|
156
|
+
"buttonbchanged",
|
|
157
|
+
])
|
|
158
|
+
});
|
|
159
|
+
Object.defineProperty(this, "led", {
|
|
160
|
+
enumerable: true,
|
|
161
|
+
configurable: true,
|
|
162
|
+
writable: true,
|
|
163
|
+
value: new ServiceInfo(LedService.createService, [])
|
|
164
|
+
});
|
|
165
|
+
Object.defineProperty(this, "serviceInfo", {
|
|
166
|
+
enumerable: true,
|
|
167
|
+
configurable: true,
|
|
168
|
+
writable: true,
|
|
169
|
+
value: [this.accelerometer, this.buttons, this.led]
|
|
95
170
|
});
|
|
96
171
|
Object.defineProperty(this, "boardVersion", {
|
|
97
172
|
enumerable: true,
|
|
@@ -99,25 +174,29 @@ export class BluetoothDeviceWrapper {
|
|
|
99
174
|
writable: true,
|
|
100
175
|
value: void 0
|
|
101
176
|
});
|
|
102
|
-
Object.defineProperty(this, "
|
|
177
|
+
Object.defineProperty(this, "disconnectedRejectionErrorFactory", {
|
|
103
178
|
enumerable: true,
|
|
104
179
|
configurable: true,
|
|
105
180
|
writable: true,
|
|
106
|
-
value: {
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
}
|
|
181
|
+
value: () => {
|
|
182
|
+
return new DeviceError({
|
|
183
|
+
code: "device-disconnected",
|
|
184
|
+
message: "Error processing gatt operations queue - device disconnected",
|
|
185
|
+
});
|
|
111
186
|
}
|
|
112
187
|
});
|
|
113
188
|
Object.defineProperty(this, "gattOperations", {
|
|
114
189
|
enumerable: true,
|
|
115
190
|
configurable: true,
|
|
116
191
|
writable: true,
|
|
117
|
-
value: {
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
192
|
+
value: new PromiseQueue({
|
|
193
|
+
abortCheck: () => {
|
|
194
|
+
if (!this.device.gatt?.connected) {
|
|
195
|
+
return this.disconnectedRejectionErrorFactory;
|
|
196
|
+
}
|
|
197
|
+
return undefined;
|
|
198
|
+
},
|
|
199
|
+
})
|
|
121
200
|
});
|
|
122
201
|
Object.defineProperty(this, "handleDisconnectEvent", {
|
|
123
202
|
enumerable: true,
|
|
@@ -140,41 +219,6 @@ export class BluetoothDeviceWrapper {
|
|
|
140
219
|
}
|
|
141
220
|
}
|
|
142
221
|
});
|
|
143
|
-
Object.defineProperty(this, "processGattOperationQueue", {
|
|
144
|
-
enumerable: true,
|
|
145
|
-
configurable: true,
|
|
146
|
-
writable: true,
|
|
147
|
-
value: () => {
|
|
148
|
-
if (!this.device.gatt?.connected) {
|
|
149
|
-
// No longer connected. Drop queue.
|
|
150
|
-
this.clearGattQueueOnDisconnect();
|
|
151
|
-
return;
|
|
152
|
-
}
|
|
153
|
-
if (this.gattOperations.busy) {
|
|
154
|
-
// We will finish processing the current operation, then
|
|
155
|
-
// pick up processing the queue in the finally block.
|
|
156
|
-
return;
|
|
157
|
-
}
|
|
158
|
-
const gattOperation = this.gattOperations.queue.shift();
|
|
159
|
-
if (!gattOperation) {
|
|
160
|
-
return;
|
|
161
|
-
}
|
|
162
|
-
this.gattOperations.busy = true;
|
|
163
|
-
gattOperation
|
|
164
|
-
.operation()
|
|
165
|
-
.then((result) => {
|
|
166
|
-
gattOperation.callback.resolve(result);
|
|
167
|
-
})
|
|
168
|
-
.catch((err) => {
|
|
169
|
-
gattOperation.callback.reject(new DeviceError({ code: "background-comms-error", message: err }));
|
|
170
|
-
this.logging.error("Error processing gatt operations queue", err);
|
|
171
|
-
})
|
|
172
|
-
.finally(() => {
|
|
173
|
-
this.gattOperations.busy = false;
|
|
174
|
-
this.processGattOperationQueue();
|
|
175
|
-
});
|
|
176
|
-
}
|
|
177
|
-
});
|
|
178
222
|
device.addEventListener("gattserverdisconnected", this.handleDisconnectEvent);
|
|
179
223
|
}
|
|
180
224
|
async connect() {
|
|
@@ -190,6 +234,12 @@ export class BluetoothDeviceWrapper {
|
|
|
190
234
|
await this.gattConnectPromise;
|
|
191
235
|
return;
|
|
192
236
|
}
|
|
237
|
+
if (this.isReconnect) {
|
|
238
|
+
this.callbacks.onReconnecting();
|
|
239
|
+
}
|
|
240
|
+
else {
|
|
241
|
+
this.callbacks.onConnecting();
|
|
242
|
+
}
|
|
193
243
|
this.duringExplicitConnectDisconnect++;
|
|
194
244
|
if (this.device.gatt === undefined) {
|
|
195
245
|
throw new Error("BluetoothRemoteGATTServer for micro:bit device is undefined");
|
|
@@ -247,17 +297,12 @@ export class BluetoothDeviceWrapper {
|
|
|
247
297
|
finally {
|
|
248
298
|
this.connecting = false;
|
|
249
299
|
}
|
|
250
|
-
|
|
251
|
-
// the user has listened to.
|
|
252
|
-
for (const serviceListener of Object.values(this.serviceListeners)) {
|
|
253
|
-
if (serviceListener.notifying) {
|
|
254
|
-
serviceListener.service.call(this);
|
|
255
|
-
}
|
|
256
|
-
}
|
|
300
|
+
this.currentEvents().forEach((e) => this.startNotifications(e));
|
|
257
301
|
this.logging.event({
|
|
258
302
|
type: this.isReconnect ? "Reconnect" : "Connect",
|
|
259
303
|
message: "Bluetooth connect success",
|
|
260
304
|
});
|
|
305
|
+
this.callbacks.onSuccess();
|
|
261
306
|
}
|
|
262
307
|
catch (e) {
|
|
263
308
|
this.logging.error("Bluetooth connect error", e);
|
|
@@ -266,10 +311,13 @@ export class BluetoothDeviceWrapper {
|
|
|
266
311
|
message: "Bluetooth connect failed",
|
|
267
312
|
});
|
|
268
313
|
await this.disconnectInternal(false);
|
|
314
|
+
this.callbacks.onFail();
|
|
269
315
|
throw new Error("Failed to establish a connection!");
|
|
270
316
|
}
|
|
271
317
|
finally {
|
|
272
318
|
this.duringExplicitConnectDisconnect--;
|
|
319
|
+
// Reset isReconnect for next time
|
|
320
|
+
this.isReconnect = false;
|
|
273
321
|
}
|
|
274
322
|
}
|
|
275
323
|
async disconnect() {
|
|
@@ -332,37 +380,48 @@ export class BluetoothDeviceWrapper {
|
|
|
332
380
|
throw new Error("Could not read model number");
|
|
333
381
|
}
|
|
334
382
|
}
|
|
335
|
-
queueGattOperation(
|
|
336
|
-
|
|
337
|
-
|
|
383
|
+
queueGattOperation(action) {
|
|
384
|
+
// Previously we wrapped rejections with:
|
|
385
|
+
// new DeviceError({ code: "background-comms-error", message: err }),
|
|
386
|
+
return this.gattOperations.add(action);
|
|
338
387
|
}
|
|
339
|
-
|
|
340
|
-
this.
|
|
341
|
-
|
|
342
|
-
code: "device-disconnected",
|
|
343
|
-
message: "Error processing gatt operations queue - device disconnected",
|
|
344
|
-
}));
|
|
345
|
-
});
|
|
346
|
-
this.gattOperations = { busy: false, queue: [] };
|
|
388
|
+
createIfNeeded(info, listenerInit) {
|
|
389
|
+
const gattServer = this.assertGattServer();
|
|
390
|
+
return info.createIfNeeded(gattServer, this.dispatchTypedEvent, this.queueGattOperation.bind(this), listenerInit);
|
|
347
391
|
}
|
|
348
392
|
async getAccelerometerService() {
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
393
|
+
return this.createIfNeeded(this.accelerometer, false);
|
|
394
|
+
}
|
|
395
|
+
async getLedService() {
|
|
396
|
+
return this.createIfNeeded(this.led, false);
|
|
397
|
+
}
|
|
398
|
+
async startNotifications(type) {
|
|
399
|
+
const serviceInfo = this.serviceInfo.find((s) => s.events.includes(type));
|
|
400
|
+
if (serviceInfo) {
|
|
401
|
+
this.queueGattOperation(async () => {
|
|
402
|
+
// TODO: type cheat! why?
|
|
403
|
+
const service = await this.createIfNeeded(serviceInfo, true);
|
|
404
|
+
await service?.startNotifications(type);
|
|
405
|
+
});
|
|
352
406
|
}
|
|
353
|
-
|
|
407
|
+
}
|
|
408
|
+
async stopNotifications(type) {
|
|
409
|
+
this.queueGattOperation(async () => {
|
|
410
|
+
const serviceInfo = this.serviceInfo.find((s) => s.events.includes(type));
|
|
411
|
+
await serviceInfo?.get()?.stopNotifications(type);
|
|
412
|
+
});
|
|
354
413
|
}
|
|
355
414
|
disposeServices() {
|
|
356
|
-
this.
|
|
357
|
-
this.
|
|
415
|
+
this.serviceInfo.forEach((s) => s.dispose());
|
|
416
|
+
this.gattOperations.clear(this.disconnectedRejectionErrorFactory);
|
|
358
417
|
}
|
|
359
418
|
}
|
|
360
|
-
export const createBluetoothDeviceWrapper = async (device, logging, dispatchTypedEvent) => {
|
|
419
|
+
export const createBluetoothDeviceWrapper = async (device, logging, dispatchTypedEvent, currentEvents, callbacks) => {
|
|
361
420
|
try {
|
|
362
421
|
// Reuse our connection objects for the same device as they
|
|
363
422
|
// track the GATT connect promise that never resolves.
|
|
364
423
|
const bluetooth = deviceIdToWrapper.get(device.id) ??
|
|
365
|
-
new BluetoothDeviceWrapper(device, logging, dispatchTypedEvent);
|
|
424
|
+
new BluetoothDeviceWrapper(device, logging, dispatchTypedEvent, currentEvents, callbacks);
|
|
366
425
|
deviceIdToWrapper.set(device.id, bluetooth);
|
|
367
426
|
await bluetooth.connect();
|
|
368
427
|
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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"}
|