@microbit/microbit-connection 0.0.0-alpha.1 → 0.0.0-alpha.10
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 +10 -9
- package/build/accelerometer-service.js +61 -27
- package/build/accelerometer-service.js.map +1 -1
- package/build/bluetooth-device-wrapper.d.ts +30 -14
- package/build/bluetooth-device-wrapper.js +143 -27
- package/build/bluetooth-device-wrapper.js.map +1 -1
- package/build/bluetooth-utils.d.ts +5 -0
- package/build/bluetooth-utils.js +14 -0
- package/build/bluetooth-utils.js.map +1 -0
- package/build/bluetooth.d.ts +12 -13
- package/build/bluetooth.js +59 -75
- package/build/bluetooth.js.map +1 -1
- package/build/board-id.d.ts +2 -1
- package/build/board-id.js +8 -0
- package/build/board-id.js.map +1 -1
- package/build/board-serial-info.d.ts +1 -1
- package/build/board-serial-info.js +1 -1
- package/build/board-serial-info.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 +19 -29
- package/build/device.js +19 -2
- package/build/device.js.map +1 -1
- package/build/hex-flash-data-source.d.ts +7 -9
- package/build/hex-flash-data-source.js +16 -44
- package/build/hex-flash-data-source.js.map +1 -1
- package/build/index.d.ts +10 -7
- package/build/index.js +7 -6
- package/build/index.js.map +1 -1
- package/build/logging.js +3 -1
- package/build/logging.js.map +1 -1
- package/build/service-events.d.ts +7 -3
- package/build/service-events.js +12 -0
- package/build/service-events.js.map +1 -1
- package/build/usb-device-wrapper.d.ts +9 -3
- package/build/usb-device-wrapper.js +41 -4
- package/build/usb-device-wrapper.js.map +1 -1
- package/build/usb-partial-flashing-utils.js +1 -1
- package/build/usb-partial-flashing-utils.js.map +1 -1
- package/build/usb-partial-flashing.d.ts +13 -7
- package/build/usb-partial-flashing.js +55 -12
- package/build/usb-partial-flashing.js.map +1 -1
- package/build/usb-radio-bridge.d.ts +28 -19
- package/build/usb-radio-bridge.js +277 -192
- package/build/usb-radio-bridge.js.map +1 -1
- package/build/usb.d.ts +13 -14
- package/build/usb.js +117 -48
- package/build/usb.js.map +1 -1
- package/package.json +3 -2
- package/vite.config.ts +1 -1
|
@@ -1,17 +1,18 @@
|
|
|
1
|
-
import { AccelerometerData } from "./accelerometer";
|
|
2
|
-
import {
|
|
3
|
-
|
|
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
|
|
8
|
-
constructor(accelerometerDataCharacteristic: BluetoothRemoteGATTCharacteristic, accelerometerPeriodCharacteristic: BluetoothRemoteGATTCharacteristic, dispatchTypedEvent: TypedServiceEventDispatcher,
|
|
9
|
-
static createService(gattServer: BluetoothRemoteGATTServer, dispatcher: TypedServiceEventDispatcher,
|
|
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
|
-
|
|
15
|
-
|
|
16
|
-
|
|
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,
|
|
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, "
|
|
25
|
+
Object.defineProperty(this, "queueGattOperation", {
|
|
24
26
|
enumerable: true,
|
|
25
27
|
configurable: true,
|
|
26
28
|
writable: true,
|
|
27
|
-
value:
|
|
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,
|
|
35
|
-
|
|
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,
|
|
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
|
|
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
|
|
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
|
-
|
|
67
|
-
|
|
68
|
-
|
|
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.
|
|
77
|
-
this.isNotifying = true;
|
|
101
|
+
async startNotifications(type) {
|
|
102
|
+
await this.characteristicForEvent(type)?.startNotifications();
|
|
78
103
|
}
|
|
79
|
-
stopNotifications() {
|
|
80
|
-
this.
|
|
81
|
-
|
|
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":"AAAA,OAAO,EAAqB,sBAAsB,EAAE,MAAM,
|
|
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
|
|
33
|
+
private accelerometer;
|
|
34
|
+
private buttons;
|
|
35
|
+
private serviceInfo;
|
|
21
36
|
boardVersion: BoardVersion | undefined;
|
|
22
|
-
|
|
23
|
-
|
|
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
|
-
|
|
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 {
|
|
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, "
|
|
136
|
+
Object.defineProperty(this, "accelerometer", {
|
|
90
137
|
enumerable: true,
|
|
91
138
|
configurable: true,
|
|
92
139
|
writable: true,
|
|
93
|
-
value:
|
|
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, "
|
|
165
|
+
Object.defineProperty(this, "gattOperations", {
|
|
102
166
|
enumerable: true,
|
|
103
167
|
configurable: true,
|
|
104
168
|
writable: true,
|
|
105
169
|
value: {
|
|
106
|
-
|
|
107
|
-
|
|
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
|
-
|
|
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
|
-
|
|
293
|
-
|
|
294
|
-
|
|
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
|
-
|
|
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.
|
|
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,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"}
|
package/build/bluetooth.d.ts
CHANGED
|
@@ -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,
|
|
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(
|
|
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
|
}
|