@microbit/microbit-connection 0.0.0-alpha.7 → 0.0.0-alpha.9
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 +23 -26
- package/build/accelerometer-service.js.map +1 -1
- package/build/bluetooth-device-wrapper.d.ts +14 -15
- package/build/bluetooth-device-wrapper.js +76 -30
- package/build/bluetooth-device-wrapper.js.map +1 -1
- package/build/bluetooth.d.ts +5 -9
- package/build/bluetooth.js +24 -67
- package/build/bluetooth.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/device.d.ts +1 -4
- package/build/device.js.map +1 -1
- package/build/index.d.ts +5 -3
- package/build/index.js +2 -1
- 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 +3 -0
- package/build/service-events.js +12 -0
- package/build/service-events.js.map +1 -1
- package/build/usb-device-wrapper.d.ts +1 -1
- package/build/usb-device-wrapper.js.map +1 -1
- package/build/usb-radio-bridge.d.ts +27 -18
- package/build/usb-radio-bridge.js +276 -191
- package/build/usb-radio-bridge.js.map +1 -1
- package/build/usb.d.ts +1 -0
- package/build/usb.js +3 -0
- package/build/usb.js.map +1 -1
- package/package.json +2 -1
|
@@ -1,19 +1,18 @@
|
|
|
1
1
|
import { AccelerometerData } from "./accelerometer.js";
|
|
2
|
-
import { GattOperation } from "./bluetooth-device-wrapper.js";
|
|
3
|
-
import { TypedServiceEventDispatcher } from "./service-events.js";
|
|
4
|
-
export declare class AccelerometerService {
|
|
2
|
+
import { GattOperation, 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: (gattOperation: GattOperation) => void);
|
|
10
|
+
static createService(gattServer: BluetoothRemoteGATTServer, dispatcher: TypedServiceEventDispatcher, queueGattOperation: (gattOperation: GattOperation) => void, 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
|
}
|
|
@@ -3,7 +3,7 @@ import { profile } from "./bluetooth-profile.js";
|
|
|
3
3
|
import { createGattOperationPromise } from "./bluetooth-utils.js";
|
|
4
4
|
import { BackgroundErrorEvent, DeviceError } from "./device.js";
|
|
5
5
|
export class AccelerometerService {
|
|
6
|
-
constructor(accelerometerDataCharacteristic, accelerometerPeriodCharacteristic, dispatchTypedEvent,
|
|
6
|
+
constructor(accelerometerDataCharacteristic, accelerometerPeriodCharacteristic, dispatchTypedEvent, queueGattOperation) {
|
|
7
7
|
Object.defineProperty(this, "accelerometerDataCharacteristic", {
|
|
8
8
|
enumerable: true,
|
|
9
9
|
configurable: true,
|
|
@@ -22,24 +22,19 @@ export class AccelerometerService {
|
|
|
22
22
|
writable: true,
|
|
23
23
|
value: dispatchTypedEvent
|
|
24
24
|
});
|
|
25
|
-
Object.defineProperty(this, "isNotifying", {
|
|
26
|
-
enumerable: true,
|
|
27
|
-
configurable: true,
|
|
28
|
-
writable: true,
|
|
29
|
-
value: isNotifying
|
|
30
|
-
});
|
|
31
25
|
Object.defineProperty(this, "queueGattOperation", {
|
|
32
26
|
enumerable: true,
|
|
33
27
|
configurable: true,
|
|
34
28
|
writable: true,
|
|
35
29
|
value: queueGattOperation
|
|
36
30
|
});
|
|
37
|
-
this.
|
|
38
|
-
|
|
39
|
-
this.
|
|
40
|
-
|
|
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));
|
|
35
|
+
});
|
|
41
36
|
}
|
|
42
|
-
static async createService(gattServer, dispatcher,
|
|
37
|
+
static async createService(gattServer, dispatcher, queueGattOperation, listenerInit) {
|
|
43
38
|
let accelerometerService;
|
|
44
39
|
try {
|
|
45
40
|
accelerometerService = await gattServer.getPrimaryService(profile.accelerometer.id);
|
|
@@ -58,7 +53,7 @@ export class AccelerometerService {
|
|
|
58
53
|
}
|
|
59
54
|
const accelerometerDataCharacteristic = await accelerometerService.getCharacteristic(profile.accelerometer.characteristics.data.id);
|
|
60
55
|
const accelerometerPeriodCharacteristic = await accelerometerService.getCharacteristic(profile.accelerometer.characteristics.period.id);
|
|
61
|
-
return new AccelerometerService(accelerometerDataCharacteristic, accelerometerPeriodCharacteristic, dispatcher,
|
|
56
|
+
return new AccelerometerService(accelerometerDataCharacteristic, accelerometerPeriodCharacteristic, dispatcher, queueGattOperation);
|
|
62
57
|
}
|
|
63
58
|
dataViewToData(dataView) {
|
|
64
59
|
return {
|
|
@@ -94,28 +89,30 @@ export class AccelerometerService {
|
|
|
94
89
|
// Values passed are rounded up to the allowed values on device.
|
|
95
90
|
// Documentation for allowed values looks wrong.
|
|
96
91
|
// https://lancaster-university.github.io/microbit-docs/resources/bluetooth/bluetooth_profile.html
|
|
97
|
-
const { callback } = createGattOperationPromise();
|
|
92
|
+
const { callback, gattOperationPromise } = createGattOperationPromise();
|
|
98
93
|
const dataView = new DataView(new ArrayBuffer(2));
|
|
99
94
|
dataView.setUint16(0, value, true);
|
|
100
95
|
this.queueGattOperation({
|
|
101
96
|
callback,
|
|
102
97
|
operation: () => this.accelerometerPeriodCharacteristic.writeValueWithoutResponse(dataView),
|
|
103
98
|
});
|
|
99
|
+
await gattOperationPromise;
|
|
104
100
|
}
|
|
105
|
-
|
|
106
|
-
this.
|
|
107
|
-
const target = event.target;
|
|
108
|
-
const data = this.dataViewToData(target.value);
|
|
109
|
-
this.dispatchTypedEvent("accelerometerdatachanged", new AccelerometerDataEvent(data));
|
|
110
|
-
});
|
|
101
|
+
async startNotifications(type) {
|
|
102
|
+
await this.characteristicForEvent(type)?.startNotifications();
|
|
111
103
|
}
|
|
112
|
-
|
|
113
|
-
this.
|
|
114
|
-
this.isNotifying = true;
|
|
104
|
+
async stopNotifications(type) {
|
|
105
|
+
await this.characteristicForEvent(type)?.stopNotifications();
|
|
115
106
|
}
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
107
|
+
characteristicForEvent(type) {
|
|
108
|
+
switch (type) {
|
|
109
|
+
case "accelerometerdatachanged": {
|
|
110
|
+
return this.accelerometerDataCharacteristic;
|
|
111
|
+
}
|
|
112
|
+
default: {
|
|
113
|
+
return undefined;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
119
116
|
}
|
|
120
117
|
}
|
|
121
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,oBAAoB,CAAC;AAE/E,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"accelerometer-service.js","sourceRoot":"","sources":["../lib/accelerometer-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
import { AccelerometerService } from "./accelerometer-service.js";
|
|
7
7
|
import { BoardVersion, DeviceError } from "./device.js";
|
|
8
8
|
import { Logging } from "./logging.js";
|
|
9
|
-
import { ServiceConnectionEventMap, TypedServiceEventDispatcher } from "./service-events.js";
|
|
9
|
+
import { ServiceConnectionEventMap, TypedServiceEvent, TypedServiceEventDispatcher } from "./service-events.js";
|
|
10
10
|
export interface GattOperationCallback {
|
|
11
11
|
resolve: (result: DataView | void) => void;
|
|
12
12
|
reject: (error: DeviceError) => void;
|
|
@@ -15,29 +15,27 @@ export interface GattOperation {
|
|
|
15
15
|
operation: () => Promise<DataView | void>;
|
|
16
16
|
callback: GattOperationCallback;
|
|
17
17
|
}
|
|
18
|
+
export interface Service {
|
|
19
|
+
startNotifications(type: TypedServiceEvent): Promise<void>;
|
|
20
|
+
stopNotifications(type: TypedServiceEvent): Promise<void>;
|
|
21
|
+
}
|
|
18
22
|
export declare class BluetoothDeviceWrapper {
|
|
19
23
|
readonly device: BluetoothDevice;
|
|
20
24
|
private logging;
|
|
21
25
|
private dispatchTypedEvent;
|
|
22
|
-
private
|
|
26
|
+
private events;
|
|
23
27
|
private duringExplicitConnectDisconnect;
|
|
24
28
|
private gattConnectPromise;
|
|
25
29
|
private disconnectPromise;
|
|
26
30
|
private connecting;
|
|
27
31
|
private isReconnect;
|
|
28
32
|
private reconnectReadyPromise;
|
|
29
|
-
private
|
|
33
|
+
private accelerometer;
|
|
34
|
+
private buttons;
|
|
35
|
+
private serviceInfo;
|
|
30
36
|
boardVersion: BoardVersion | undefined;
|
|
31
|
-
serviceListenerState: {
|
|
32
|
-
accelerometerdatachanged: {
|
|
33
|
-
notifying: boolean;
|
|
34
|
-
service: (options?: {
|
|
35
|
-
listenerInit: boolean;
|
|
36
|
-
}) => Promise<AccelerometerService | undefined>;
|
|
37
|
-
};
|
|
38
|
-
};
|
|
39
37
|
private gattOperations;
|
|
40
|
-
constructor(device: BluetoothDevice, logging: Logging, dispatchTypedEvent: TypedServiceEventDispatcher,
|
|
38
|
+
constructor(device: BluetoothDevice, logging: Logging, dispatchTypedEvent: TypedServiceEventDispatcher, events: Record<keyof ServiceConnectionEventMap, boolean>);
|
|
41
39
|
connect(): Promise<void>;
|
|
42
40
|
disconnect(): Promise<void>;
|
|
43
41
|
private disconnectInternal;
|
|
@@ -48,9 +46,10 @@ export declare class BluetoothDeviceWrapper {
|
|
|
48
46
|
private queueGattOperation;
|
|
49
47
|
private processGattOperationQueue;
|
|
50
48
|
private clearGattQueueOnDisconnect;
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
49
|
+
private createIfNeeded;
|
|
50
|
+
getAccelerometerService(): Promise<AccelerometerService | undefined>;
|
|
51
|
+
startNotifications(type: TypedServiceEvent): Promise<void>;
|
|
52
|
+
stopNotifications(type: TypedServiceEvent): Promise<void>;
|
|
54
53
|
private disposeServices;
|
|
55
54
|
}
|
|
56
55
|
export declare const createBluetoothDeviceWrapper: (device: BluetoothDevice, logging: Logging, dispatchTypedEvent: TypedServiceEventDispatcher, addedServiceListeners: Record<keyof ServiceConnectionEventMap, boolean>) => Promise<BluetoothDeviceWrapper | undefined>;
|
|
@@ -5,6 +5,7 @@
|
|
|
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";
|
|
9
10
|
import { NullLogging } from "./logging.js";
|
|
10
11
|
const deviceIdToWrapper = new Map();
|
|
@@ -23,8 +24,44 @@ function findPlatform() {
|
|
|
23
24
|
}
|
|
24
25
|
const platform = findPlatform();
|
|
25
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
|
+
}
|
|
26
61
|
export class BluetoothDeviceWrapper {
|
|
27
|
-
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) {
|
|
28
65
|
Object.defineProperty(this, "device", {
|
|
29
66
|
enumerable: true,
|
|
30
67
|
configurable: true,
|
|
@@ -43,11 +80,11 @@ export class BluetoothDeviceWrapper {
|
|
|
43
80
|
writable: true,
|
|
44
81
|
value: dispatchTypedEvent
|
|
45
82
|
});
|
|
46
|
-
Object.defineProperty(this, "
|
|
83
|
+
Object.defineProperty(this, "events", {
|
|
47
84
|
enumerable: true,
|
|
48
85
|
configurable: true,
|
|
49
86
|
writable: true,
|
|
50
|
-
value:
|
|
87
|
+
value: events
|
|
51
88
|
});
|
|
52
89
|
// Used to avoid automatic reconnection during user triggered connect/disconnect
|
|
53
90
|
// or reconnection itself.
|
|
@@ -96,28 +133,34 @@ export class BluetoothDeviceWrapper {
|
|
|
96
133
|
writable: true,
|
|
97
134
|
value: void 0
|
|
98
135
|
});
|
|
99
|
-
Object.defineProperty(this, "
|
|
136
|
+
Object.defineProperty(this, "accelerometer", {
|
|
100
137
|
enumerable: true,
|
|
101
138
|
configurable: true,
|
|
102
139
|
writable: true,
|
|
103
|
-
value:
|
|
140
|
+
value: new ServiceInfo(AccelerometerService.createService, [
|
|
141
|
+
"accelerometerdatachanged",
|
|
142
|
+
])
|
|
104
143
|
});
|
|
105
|
-
Object.defineProperty(this, "
|
|
144
|
+
Object.defineProperty(this, "buttons", {
|
|
106
145
|
enumerable: true,
|
|
107
146
|
configurable: true,
|
|
108
147
|
writable: true,
|
|
109
|
-
value:
|
|
148
|
+
value: new ServiceInfo(ButtonService.createService, [
|
|
149
|
+
"buttonachanged",
|
|
150
|
+
"buttonbchanged",
|
|
151
|
+
])
|
|
110
152
|
});
|
|
111
|
-
Object.defineProperty(this, "
|
|
153
|
+
Object.defineProperty(this, "serviceInfo", {
|
|
112
154
|
enumerable: true,
|
|
113
155
|
configurable: true,
|
|
114
156
|
writable: true,
|
|
115
|
-
value:
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
157
|
+
value: [this.accelerometer, this.buttons]
|
|
158
|
+
});
|
|
159
|
+
Object.defineProperty(this, "boardVersion", {
|
|
160
|
+
enumerable: true,
|
|
161
|
+
configurable: true,
|
|
162
|
+
writable: true,
|
|
163
|
+
value: void 0
|
|
121
164
|
});
|
|
122
165
|
Object.defineProperty(this, "gattOperations", {
|
|
123
166
|
enumerable: true,
|
|
@@ -185,9 +228,6 @@ export class BluetoothDeviceWrapper {
|
|
|
185
228
|
}
|
|
186
229
|
});
|
|
187
230
|
device.addEventListener("gattserverdisconnected", this.handleDisconnectEvent);
|
|
188
|
-
for (const [key, value] of Object.entries(this.addedServiceListeners)) {
|
|
189
|
-
this.serviceListenerState[key].notifying = value;
|
|
190
|
-
}
|
|
191
231
|
}
|
|
192
232
|
async connect() {
|
|
193
233
|
this.logging.event({
|
|
@@ -259,13 +299,7 @@ export class BluetoothDeviceWrapper {
|
|
|
259
299
|
finally {
|
|
260
300
|
this.connecting = false;
|
|
261
301
|
}
|
|
262
|
-
|
|
263
|
-
// the user has listened to.
|
|
264
|
-
for (const serviceListener of Object.values(this.serviceListenerState)) {
|
|
265
|
-
if (serviceListener.notifying) {
|
|
266
|
-
serviceListener.service.call(this, { listenerInit: true });
|
|
267
|
-
}
|
|
268
|
-
}
|
|
302
|
+
Object.keys(this.events).forEach((e) => this.startNotifications(e));
|
|
269
303
|
this.logging.event({
|
|
270
304
|
type: this.isReconnect ? "Reconnect" : "Connect",
|
|
271
305
|
message: "Bluetooth connect success",
|
|
@@ -357,15 +391,27 @@ export class BluetoothDeviceWrapper {
|
|
|
357
391
|
});
|
|
358
392
|
this.gattOperations = { busy: false, queue: [] };
|
|
359
393
|
}
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
394
|
+
createIfNeeded(info, listenerInit) {
|
|
395
|
+
const gattServer = this.assertGattServer();
|
|
396
|
+
return info.createIfNeeded(gattServer, this.dispatchTypedEvent, this.queueGattOperation.bind(this), listenerInit);
|
|
397
|
+
}
|
|
398
|
+
async getAccelerometerService() {
|
|
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);
|
|
364
407
|
}
|
|
365
|
-
|
|
408
|
+
}
|
|
409
|
+
async stopNotifications(type) {
|
|
410
|
+
const serviceInfo = this.serviceInfo.find((s) => s.events.includes(type));
|
|
411
|
+
serviceInfo?.get()?.stopNotifications(type);
|
|
366
412
|
}
|
|
367
413
|
disposeServices() {
|
|
368
|
-
this.
|
|
414
|
+
this.serviceInfo.forEach((s) => s.dispose());
|
|
369
415
|
this.clearGattQueueOnDisconnect();
|
|
370
416
|
}
|
|
371
417
|
}
|
|
@@ -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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"}
|
package/build/bluetooth.d.ts
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { AccelerometerData } from "./accelerometer.js";
|
|
7
7
|
import { BluetoothDeviceWrapper } from "./bluetooth-device-wrapper.js";
|
|
8
|
-
import { BoardVersion,
|
|
8
|
+
import { BoardVersion, ConnectionStatus, DeviceConnection, DeviceConnectionEventMap } from "./device.js";
|
|
9
9
|
import { TypedEventTarget } from "./events.js";
|
|
10
10
|
import { Logging } from "./logging.js";
|
|
11
11
|
import { ServiceConnectionEventMap } from "./service-events.js";
|
|
@@ -26,28 +26,24 @@ export declare class MicrobitWebBluetoothConnection extends TypedEventTarget<Dev
|
|
|
26
26
|
connection: BluetoothDeviceWrapper | undefined;
|
|
27
27
|
private _addEventListener;
|
|
28
28
|
private _removeEventListener;
|
|
29
|
-
private
|
|
29
|
+
private activeEvents;
|
|
30
30
|
private availabilityListener;
|
|
31
31
|
private availability;
|
|
32
|
+
private nameFilter;
|
|
32
33
|
constructor(options?: MicrobitWebBluetoothConnectionOptions);
|
|
33
34
|
private log;
|
|
34
35
|
initialize(): Promise<void>;
|
|
35
36
|
dispose(): void;
|
|
36
|
-
connect(
|
|
37
|
+
connect(): Promise<ConnectionStatus>;
|
|
37
38
|
getBoardVersion(): BoardVersion | undefined;
|
|
38
|
-
private startSerialInternal;
|
|
39
|
-
private stopSerialInternal;
|
|
40
39
|
disconnect(): Promise<void>;
|
|
41
40
|
private setStatus;
|
|
42
41
|
serialWrite(data: string): Promise<void>;
|
|
43
42
|
clearDevice(): Promise<void>;
|
|
44
43
|
private connectInternal;
|
|
44
|
+
setNameFilter(name: string): void;
|
|
45
45
|
private chooseDevice;
|
|
46
46
|
getAccelerometerData(): Promise<AccelerometerData | undefined>;
|
|
47
47
|
getAccelerometerPeriod(): Promise<number | undefined>;
|
|
48
48
|
setAccelerometerPeriod(value: number): Promise<void>;
|
|
49
|
-
private startAccelerometerNotifications;
|
|
50
|
-
private stopAccelerometerNotifications;
|
|
51
|
-
private startNotifications;
|
|
52
|
-
private stopNotifications;
|
|
53
49
|
}
|
package/build/bluetooth.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createBluetoothDeviceWrapper, } from "./bluetooth-device-wrapper.js";
|
|
2
2
|
import { profile } from "./bluetooth-profile.js";
|
|
3
|
-
import { AfterRequestDevice, BeforeRequestDevice, ConnectionStatus, ConnectionStatusEvent,
|
|
3
|
+
import { AfterRequestDevice, BeforeRequestDevice, ConnectionStatus, ConnectionStatusEvent, } from "./device.js";
|
|
4
4
|
import { TypedEventTarget } from "./events.js";
|
|
5
5
|
import { NullLogging } from "./logging.js";
|
|
6
6
|
const requestDeviceTimeoutDuration = 30000;
|
|
@@ -50,12 +50,14 @@ export class MicrobitWebBluetoothConnection extends TypedEventTarget {
|
|
|
50
50
|
writable: true,
|
|
51
51
|
value: this.removeEventListener
|
|
52
52
|
});
|
|
53
|
-
Object.defineProperty(this, "
|
|
53
|
+
Object.defineProperty(this, "activeEvents", {
|
|
54
54
|
enumerable: true,
|
|
55
55
|
configurable: true,
|
|
56
56
|
writable: true,
|
|
57
57
|
value: {
|
|
58
58
|
accelerometerdatachanged: false,
|
|
59
|
+
buttonachanged: false,
|
|
60
|
+
buttonbchanged: false,
|
|
59
61
|
}
|
|
60
62
|
});
|
|
61
63
|
Object.defineProperty(this, "availabilityListener", {
|
|
@@ -74,13 +76,19 @@ export class MicrobitWebBluetoothConnection extends TypedEventTarget {
|
|
|
74
76
|
writable: true,
|
|
75
77
|
value: void 0
|
|
76
78
|
});
|
|
79
|
+
Object.defineProperty(this, "nameFilter", {
|
|
80
|
+
enumerable: true,
|
|
81
|
+
configurable: true,
|
|
82
|
+
writable: true,
|
|
83
|
+
value: void 0
|
|
84
|
+
});
|
|
77
85
|
this.logging = options.logging || new NullLogging();
|
|
78
86
|
this.addEventListener = (type, ...args) => {
|
|
79
87
|
this._addEventListener(type, ...args);
|
|
80
|
-
this.startNotifications(type);
|
|
88
|
+
this.connection?.startNotifications(type);
|
|
81
89
|
};
|
|
82
90
|
this.removeEventListener = (type, ...args) => {
|
|
83
|
-
this.stopNotifications(type);
|
|
91
|
+
this.connection?.stopNotifications(type);
|
|
84
92
|
this._removeEventListener(type, ...args);
|
|
85
93
|
};
|
|
86
94
|
}
|
|
@@ -97,29 +105,13 @@ export class MicrobitWebBluetoothConnection extends TypedEventTarget {
|
|
|
97
105
|
dispose() {
|
|
98
106
|
navigator.bluetooth?.removeEventListener("availabilitychanged", this.availabilityListener);
|
|
99
107
|
}
|
|
100
|
-
async connect(
|
|
101
|
-
await this.connectInternal(
|
|
108
|
+
async connect() {
|
|
109
|
+
await this.connectInternal();
|
|
102
110
|
return this.status;
|
|
103
111
|
}
|
|
104
112
|
getBoardVersion() {
|
|
105
113
|
return this.connection?.boardVersion;
|
|
106
114
|
}
|
|
107
|
-
// @ts-ignore
|
|
108
|
-
async startSerialInternal() {
|
|
109
|
-
if (!this.connection) {
|
|
110
|
-
// As connecting then starting serial are async we could disconnect between them,
|
|
111
|
-
// so handle this gracefully.
|
|
112
|
-
return;
|
|
113
|
-
}
|
|
114
|
-
// TODO
|
|
115
|
-
}
|
|
116
|
-
// @ts-ignore
|
|
117
|
-
async stopSerialInternal() {
|
|
118
|
-
if (this.connection) {
|
|
119
|
-
// TODO
|
|
120
|
-
this.dispatchTypedEvent("serialreset", new SerialResetEvent());
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
115
|
async disconnect() {
|
|
124
116
|
try {
|
|
125
117
|
if (this.connection) {
|
|
@@ -159,20 +151,23 @@ export class MicrobitWebBluetoothConnection extends TypedEventTarget {
|
|
|
159
151
|
this.device = undefined;
|
|
160
152
|
this.setStatus(ConnectionStatus.NO_AUTHORIZED_DEVICE);
|
|
161
153
|
}
|
|
162
|
-
async connectInternal(
|
|
154
|
+
async connectInternal() {
|
|
163
155
|
if (!this.connection) {
|
|
164
|
-
const device = await this.chooseDevice(
|
|
156
|
+
const device = await this.chooseDevice();
|
|
165
157
|
if (!device) {
|
|
166
158
|
return;
|
|
167
159
|
}
|
|
168
|
-
this.connection = await createBluetoothDeviceWrapper(device, this.logging, this.dispatchTypedEvent.bind(this), this.
|
|
160
|
+
this.connection = await createBluetoothDeviceWrapper(device, this.logging, this.dispatchTypedEvent.bind(this), this.activeEvents);
|
|
169
161
|
}
|
|
170
162
|
// TODO: timeout unification?
|
|
171
163
|
// Connection happens inside createBluetoothDeviceWrapper.
|
|
172
164
|
// await this.connection?.connect();
|
|
173
165
|
this.setStatus(ConnectionStatus.CONNECTED);
|
|
174
166
|
}
|
|
175
|
-
|
|
167
|
+
setNameFilter(name) {
|
|
168
|
+
this.nameFilter = name;
|
|
169
|
+
}
|
|
170
|
+
async chooseDevice() {
|
|
176
171
|
if (this.device) {
|
|
177
172
|
return this.device;
|
|
178
173
|
}
|
|
@@ -184,8 +179,8 @@ export class MicrobitWebBluetoothConnection extends TypedEventTarget {
|
|
|
184
179
|
navigator.bluetooth.requestDevice({
|
|
185
180
|
filters: [
|
|
186
181
|
{
|
|
187
|
-
namePrefix:
|
|
188
|
-
? `BBC micro:bit [${
|
|
182
|
+
namePrefix: this.nameFilter
|
|
183
|
+
? `BBC micro:bit [${this.nameFilter}]`
|
|
189
184
|
: "BBC micro:bit",
|
|
190
185
|
},
|
|
191
186
|
],
|
|
@@ -230,45 +225,7 @@ export class MicrobitWebBluetoothConnection extends TypedEventTarget {
|
|
|
230
225
|
}
|
|
231
226
|
async setAccelerometerPeriod(value) {
|
|
232
227
|
const accelerometerService = await this.connection?.getAccelerometerService();
|
|
233
|
-
accelerometerService?.setPeriod(value);
|
|
234
|
-
}
|
|
235
|
-
async startAccelerometerNotifications() {
|
|
236
|
-
const accelerometerService = await this.connection?.getAccelerometerService({ listenerInit: true });
|
|
237
|
-
accelerometerService?.startNotifications();
|
|
238
|
-
if (this.connection) {
|
|
239
|
-
this.connection.serviceListenerState.accelerometerdatachanged.notifying =
|
|
240
|
-
true;
|
|
241
|
-
}
|
|
242
|
-
else {
|
|
243
|
-
this.addedServiceListeners.accelerometerdatachanged = true;
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
async stopAccelerometerNotifications() {
|
|
247
|
-
const accelerometerService = await this.connection?.getAccelerometerService();
|
|
248
|
-
if (this.connection) {
|
|
249
|
-
this.connection.serviceListenerState.accelerometerdatachanged.notifying =
|
|
250
|
-
false;
|
|
251
|
-
}
|
|
252
|
-
else {
|
|
253
|
-
this.addedServiceListeners.accelerometerdatachanged = false;
|
|
254
|
-
}
|
|
255
|
-
accelerometerService?.stopNotifications();
|
|
256
|
-
}
|
|
257
|
-
async startNotifications(type) {
|
|
258
|
-
switch (type) {
|
|
259
|
-
case "accelerometerdatachanged": {
|
|
260
|
-
this.startAccelerometerNotifications();
|
|
261
|
-
break;
|
|
262
|
-
}
|
|
263
|
-
}
|
|
264
|
-
}
|
|
265
|
-
async stopNotifications(type) {
|
|
266
|
-
switch (type) {
|
|
267
|
-
case "accelerometerdatachanged": {
|
|
268
|
-
this.stopAccelerometerNotifications();
|
|
269
|
-
break;
|
|
270
|
-
}
|
|
271
|
-
}
|
|
228
|
+
return accelerometerService?.setPeriod(value);
|
|
272
229
|
}
|
|
273
230
|
}
|
|
274
231
|
//# sourceMappingURL=bluetooth.js.map
|