@microbit/microbit-connection 0.0.0-alpha.3 → 0.0.0-alpha.30
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 +24 -43
- package/build/accelerometer-service.js.map +1 -1
- package/build/bluetooth-device-wrapper.d.ts +27 -26
- package/build/bluetooth-device-wrapper.js +137 -89
- package/build/bluetooth-device-wrapper.js.map +1 -1
- package/build/bluetooth.d.ts +14 -11
- package/build/bluetooth.js +70 -91
- 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 +30 -39
- package/build/device.js +12 -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 +10 -5
- package/build/index.js +7 -4
- 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 +3 -0
- 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 +14 -17
- package/build/usb.js +111 -47
- package/build/usb.js.map +1 -1
- package/package.json +5 -3
- package/vite.config.ts +9 -7
- package/build/bluetooth-utils.d.ts +0 -5
- package/build/bluetooth-utils.js +0 -14
- package/build/bluetooth-utils.js.map +0 -1
package/build/bluetooth.d.ts
CHANGED
|
@@ -5,8 +5,9 @@
|
|
|
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
|
+
import { LedMatrix } from "./led.js";
|
|
10
11
|
import { Logging } from "./logging.js";
|
|
11
12
|
import { ServiceConnectionEventMap } from "./service-events.js";
|
|
12
13
|
export interface MicrobitWebBluetoothConnectionOptions {
|
|
@@ -24,28 +25,30 @@ export declare class MicrobitWebBluetoothConnection extends TypedEventTarget<Dev
|
|
|
24
25
|
private device;
|
|
25
26
|
private logging;
|
|
26
27
|
connection: BluetoothDeviceWrapper | undefined;
|
|
27
|
-
private
|
|
28
|
-
private
|
|
29
|
-
private
|
|
28
|
+
private availabilityListener;
|
|
29
|
+
private availability;
|
|
30
|
+
private nameFilter;
|
|
30
31
|
constructor(options?: MicrobitWebBluetoothConnectionOptions);
|
|
32
|
+
protected eventActivated(type: string): void;
|
|
33
|
+
protected eventDeactivated(type: string): void;
|
|
31
34
|
private log;
|
|
32
35
|
initialize(): Promise<void>;
|
|
33
36
|
dispose(): void;
|
|
34
|
-
connect(
|
|
37
|
+
connect(): Promise<ConnectionStatus>;
|
|
35
38
|
getBoardVersion(): BoardVersion | undefined;
|
|
36
|
-
private startSerialInternal;
|
|
37
|
-
private stopSerialInternal;
|
|
38
39
|
disconnect(): Promise<void>;
|
|
39
40
|
private setStatus;
|
|
40
41
|
serialWrite(data: string): Promise<void>;
|
|
41
42
|
clearDevice(): Promise<void>;
|
|
42
43
|
private connectInternal;
|
|
44
|
+
setNameFilter(name: string): void;
|
|
43
45
|
private chooseDevice;
|
|
44
46
|
getAccelerometerData(): Promise<AccelerometerData | undefined>;
|
|
45
47
|
getAccelerometerPeriod(): Promise<number | undefined>;
|
|
46
48
|
setAccelerometerPeriod(value: number): Promise<void>;
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
49
|
+
setLedText(text: string): Promise<void>;
|
|
50
|
+
getLedScrollingDelay(): Promise<number | undefined>;
|
|
51
|
+
setLedScrollingDelay(delayInMillis: number): Promise<void>;
|
|
52
|
+
getLedMatrix(): Promise<LedMatrix | undefined>;
|
|
53
|
+
setLedMatrix(matrix: LedMatrix): Promise<void>;
|
|
51
54
|
}
|
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;
|
|
@@ -10,14 +10,11 @@ const requestDeviceTimeoutDuration = 30000;
|
|
|
10
10
|
export class MicrobitWebBluetoothConnection extends TypedEventTarget {
|
|
11
11
|
constructor(options = {}) {
|
|
12
12
|
super();
|
|
13
|
-
// TODO: when do we call getAvailable() ?
|
|
14
13
|
Object.defineProperty(this, "status", {
|
|
15
14
|
enumerable: true,
|
|
16
15
|
configurable: true,
|
|
17
16
|
writable: true,
|
|
18
|
-
value:
|
|
19
|
-
? ConnectionStatus.NO_AUTHORIZED_DEVICE
|
|
20
|
-
: ConnectionStatus.NOT_SUPPORTED
|
|
17
|
+
value: ConnectionStatus.SUPPORT_NOT_KNOWN
|
|
21
18
|
});
|
|
22
19
|
/**
|
|
23
20
|
* The USB device we last connected to.
|
|
@@ -41,72 +38,56 @@ export class MicrobitWebBluetoothConnection extends TypedEventTarget {
|
|
|
41
38
|
writable: true,
|
|
42
39
|
value: void 0
|
|
43
40
|
});
|
|
44
|
-
Object.defineProperty(this, "
|
|
41
|
+
Object.defineProperty(this, "availabilityListener", {
|
|
45
42
|
enumerable: true,
|
|
46
43
|
configurable: true,
|
|
47
44
|
writable: true,
|
|
48
|
-
value:
|
|
45
|
+
value: (e) => {
|
|
46
|
+
// TODO: is this called? is `value` correct?
|
|
47
|
+
const value = e.value;
|
|
48
|
+
this.availability = value;
|
|
49
|
+
}
|
|
49
50
|
});
|
|
50
|
-
Object.defineProperty(this, "
|
|
51
|
+
Object.defineProperty(this, "availability", {
|
|
51
52
|
enumerable: true,
|
|
52
53
|
configurable: true,
|
|
53
54
|
writable: true,
|
|
54
|
-
value:
|
|
55
|
+
value: void 0
|
|
55
56
|
});
|
|
56
|
-
Object.defineProperty(this, "
|
|
57
|
+
Object.defineProperty(this, "nameFilter", {
|
|
57
58
|
enumerable: true,
|
|
58
59
|
configurable: true,
|
|
59
60
|
writable: true,
|
|
60
|
-
value:
|
|
61
|
-
accelerometerdatachanged: false,
|
|
62
|
-
}
|
|
61
|
+
value: void 0
|
|
63
62
|
});
|
|
64
63
|
this.logging = options.logging || new NullLogging();
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
this._removeEventListener(type, ...args);
|
|
72
|
-
};
|
|
64
|
+
}
|
|
65
|
+
eventActivated(type) {
|
|
66
|
+
this.connection?.startNotifications(type);
|
|
67
|
+
}
|
|
68
|
+
eventDeactivated(type) {
|
|
69
|
+
this.connection?.stopNotifications(type);
|
|
73
70
|
}
|
|
74
71
|
log(v) {
|
|
75
72
|
this.logging.log(v);
|
|
76
73
|
}
|
|
77
74
|
async initialize() {
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
75
|
+
navigator.bluetooth?.addEventListener("availabilitychanged", this.availabilityListener);
|
|
76
|
+
this.availability = await navigator.bluetooth?.getAvailability();
|
|
77
|
+
this.setStatus(this.availability
|
|
78
|
+
? ConnectionStatus.NO_AUTHORIZED_DEVICE
|
|
79
|
+
: ConnectionStatus.NOT_SUPPORTED);
|
|
81
80
|
}
|
|
82
81
|
dispose() {
|
|
83
|
-
|
|
84
|
-
// TODO: availabilitychanged
|
|
85
|
-
}
|
|
82
|
+
navigator.bluetooth?.removeEventListener("availabilitychanged", this.availabilityListener);
|
|
86
83
|
}
|
|
87
|
-
async connect(
|
|
88
|
-
await this.connectInternal(
|
|
84
|
+
async connect() {
|
|
85
|
+
await this.connectInternal();
|
|
89
86
|
return this.status;
|
|
90
87
|
}
|
|
91
88
|
getBoardVersion() {
|
|
92
89
|
return this.connection?.boardVersion;
|
|
93
90
|
}
|
|
94
|
-
// @ts-ignore
|
|
95
|
-
async startSerialInternal() {
|
|
96
|
-
if (!this.connection) {
|
|
97
|
-
// As connecting then starting serial are async we could disconnect between them,
|
|
98
|
-
// so handle this gracefully.
|
|
99
|
-
return;
|
|
100
|
-
}
|
|
101
|
-
// TODO
|
|
102
|
-
}
|
|
103
|
-
// @ts-ignore
|
|
104
|
-
async stopSerialInternal() {
|
|
105
|
-
if (this.connection) {
|
|
106
|
-
// TODO
|
|
107
|
-
this.dispatchTypedEvent("serialreset", new SerialResetEvent());
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
91
|
async disconnect() {
|
|
111
92
|
try {
|
|
112
93
|
if (this.connection) {
|
|
@@ -122,7 +103,7 @@ export class MicrobitWebBluetoothConnection extends TypedEventTarget {
|
|
|
122
103
|
}
|
|
123
104
|
finally {
|
|
124
105
|
this.connection = undefined;
|
|
125
|
-
this.setStatus(ConnectionStatus.
|
|
106
|
+
this.setStatus(ConnectionStatus.DISCONNECTED);
|
|
126
107
|
this.logging.log("Disconnection complete");
|
|
127
108
|
this.logging.event({
|
|
128
109
|
type: "Bluetooth-info",
|
|
@@ -132,7 +113,7 @@ export class MicrobitWebBluetoothConnection extends TypedEventTarget {
|
|
|
132
113
|
}
|
|
133
114
|
setStatus(newStatus) {
|
|
134
115
|
this.status = newStatus;
|
|
135
|
-
this.log("
|
|
116
|
+
this.log("Bluetooth connection status " + newStatus);
|
|
136
117
|
this.dispatchTypedEvent("status", new ConnectionStatusEvent(newStatus));
|
|
137
118
|
}
|
|
138
119
|
serialWrite(data) {
|
|
@@ -146,20 +127,30 @@ export class MicrobitWebBluetoothConnection extends TypedEventTarget {
|
|
|
146
127
|
this.device = undefined;
|
|
147
128
|
this.setStatus(ConnectionStatus.NO_AUTHORIZED_DEVICE);
|
|
148
129
|
}
|
|
149
|
-
async connectInternal(
|
|
130
|
+
async connectInternal() {
|
|
150
131
|
if (!this.connection) {
|
|
151
|
-
const device = await this.chooseDevice(
|
|
132
|
+
const device = await this.chooseDevice();
|
|
152
133
|
if (!device) {
|
|
134
|
+
this.setStatus(ConnectionStatus.NO_AUTHORIZED_DEVICE);
|
|
153
135
|
return;
|
|
154
136
|
}
|
|
155
|
-
this.connection = await createBluetoothDeviceWrapper(device, this.logging, this.dispatchTypedEvent.bind(this), this.
|
|
137
|
+
this.connection = await createBluetoothDeviceWrapper(device, this.logging, this.dispatchTypedEvent.bind(this), () => this.getActiveEvents(), {
|
|
138
|
+
onConnecting: () => this.setStatus(ConnectionStatus.CONNECTING),
|
|
139
|
+
onReconnecting: () => this.setStatus(ConnectionStatus.RECONNECTING),
|
|
140
|
+
onSuccess: () => this.setStatus(ConnectionStatus.CONNECTED),
|
|
141
|
+
onFail: () => {
|
|
142
|
+
this.setStatus(ConnectionStatus.DISCONNECTED);
|
|
143
|
+
this.connection = undefined;
|
|
144
|
+
},
|
|
145
|
+
});
|
|
146
|
+
return;
|
|
156
147
|
}
|
|
157
148
|
// TODO: timeout unification?
|
|
158
|
-
// Connection happens inside createBluetoothDeviceWrapper.
|
|
159
|
-
// await this.connection?.connect();
|
|
160
|
-
this.setStatus(ConnectionStatus.CONNECTED);
|
|
161
149
|
}
|
|
162
|
-
|
|
150
|
+
setNameFilter(name) {
|
|
151
|
+
this.nameFilter = name;
|
|
152
|
+
}
|
|
153
|
+
async chooseDevice() {
|
|
163
154
|
if (this.device) {
|
|
164
155
|
return this.device;
|
|
165
156
|
}
|
|
@@ -171,10 +162,16 @@ export class MicrobitWebBluetoothConnection extends TypedEventTarget {
|
|
|
171
162
|
navigator.bluetooth.requestDevice({
|
|
172
163
|
filters: [
|
|
173
164
|
{
|
|
174
|
-
namePrefix:
|
|
175
|
-
? `BBC micro:bit [${
|
|
165
|
+
namePrefix: this.nameFilter
|
|
166
|
+
? `BBC micro:bit [${this.nameFilter}]`
|
|
176
167
|
: "BBC micro:bit",
|
|
177
168
|
},
|
|
169
|
+
{
|
|
170
|
+
// See https://github.com/bsiever/microbit-pxt-blehid/issues/31
|
|
171
|
+
namePrefix: this.nameFilter
|
|
172
|
+
? `uBit [${this.nameFilter}]`
|
|
173
|
+
: "uBit",
|
|
174
|
+
},
|
|
178
175
|
],
|
|
179
176
|
optionalServices: [
|
|
180
177
|
profile.accelerometer.id,
|
|
@@ -217,45 +214,27 @@ export class MicrobitWebBluetoothConnection extends TypedEventTarget {
|
|
|
217
214
|
}
|
|
218
215
|
async setAccelerometerPeriod(value) {
|
|
219
216
|
const accelerometerService = await this.connection?.getAccelerometerService();
|
|
220
|
-
accelerometerService?.setPeriod(value);
|
|
217
|
+
return accelerometerService?.setPeriod(value);
|
|
221
218
|
}
|
|
222
|
-
async
|
|
223
|
-
const
|
|
224
|
-
|
|
225
|
-
if (this.connection) {
|
|
226
|
-
this.connection.serviceListenerState.accelerometerdatachanged.notifying =
|
|
227
|
-
true;
|
|
228
|
-
}
|
|
229
|
-
else {
|
|
230
|
-
this.addedServiceListeners.accelerometerdatachanged = true;
|
|
231
|
-
}
|
|
219
|
+
async setLedText(text) {
|
|
220
|
+
const ledService = await this.connection?.getLedService();
|
|
221
|
+
return ledService?.setText(text);
|
|
232
222
|
}
|
|
233
|
-
async
|
|
234
|
-
const
|
|
235
|
-
|
|
236
|
-
this.connection.serviceListenerState.accelerometerdatachanged.notifying =
|
|
237
|
-
false;
|
|
238
|
-
}
|
|
239
|
-
else {
|
|
240
|
-
this.addedServiceListeners.accelerometerdatachanged = false;
|
|
241
|
-
}
|
|
242
|
-
accelerometerService?.stopNotifications();
|
|
223
|
+
async getLedScrollingDelay() {
|
|
224
|
+
const ledService = await this.connection?.getLedService();
|
|
225
|
+
return ledService?.getScrollingDelay();
|
|
243
226
|
}
|
|
244
|
-
async
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
this.startAccelerometerNotifications();
|
|
248
|
-
break;
|
|
249
|
-
}
|
|
250
|
-
}
|
|
227
|
+
async setLedScrollingDelay(delayInMillis) {
|
|
228
|
+
const ledService = await this.connection?.getLedService();
|
|
229
|
+
await ledService?.setScrollingDelay(delayInMillis);
|
|
251
230
|
}
|
|
252
|
-
async
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
231
|
+
async getLedMatrix() {
|
|
232
|
+
const ledService = await this.connection?.getLedService();
|
|
233
|
+
return ledService?.getLedMatrix();
|
|
234
|
+
}
|
|
235
|
+
async setLedMatrix(matrix) {
|
|
236
|
+
const ledService = await this.connection?.getLedService();
|
|
237
|
+
ledService?.setLedMatrix(matrix);
|
|
259
238
|
}
|
|
260
239
|
}
|
|
261
240
|
//# sourceMappingURL=bluetooth.js.map
|
package/build/bluetooth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bluetooth.js","sourceRoot":"","sources":["../lib/bluetooth.ts"],"names":[],"mappings":"AAMA,OAAO,EAEL,4BAA4B,GAC7B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EACL,kBAAkB,EAClB,mBAAmB,
|
|
1
|
+
{"version":3,"file":"bluetooth.js","sourceRoot":"","sources":["../lib/bluetooth.ts"],"names":[],"mappings":"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"}
|
package/build/board-id.d.ts
CHANGED
package/build/board-id.js
CHANGED
|
@@ -53,6 +53,14 @@ export class BoardId {
|
|
|
53
53
|
static parse(value) {
|
|
54
54
|
return new BoardId(parseInt(value, 16));
|
|
55
55
|
}
|
|
56
|
+
static forVersion(boardVersion) {
|
|
57
|
+
switch (boardVersion) {
|
|
58
|
+
case "V1":
|
|
59
|
+
return this.v1Normalized;
|
|
60
|
+
case "V2":
|
|
61
|
+
return this.v2Normalized;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
56
64
|
}
|
|
57
65
|
Object.defineProperty(BoardId, "v1Normalized", {
|
|
58
66
|
enumerable: true,
|
package/build/board-id.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"board-id.js","sourceRoot":"","sources":["../lib/board-id.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;GAEG;AACH,MAAM,OAAO,OAAO;IAIlB,YAAmB,EAAU;QAAjB;;;;mBAAO,EAAE;WAAQ;QAC3B,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,oCAAoC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IACnC,CAAC;IAED,IAAI;QACF,OAAO,IAAI,CAAC,EAAE,KAAK,MAAM,IAAI,IAAI,CAAC,EAAE,KAAK,MAAM,CAAC;IAClD,CAAC;IAED,IAAI;QACF,OAAO,CACL,IAAI,CAAC,EAAE,KAAK,MAAM;YAClB,IAAI,CAAC,EAAE,KAAK,MAAM;YAClB,IAAI,CAAC,EAAE,KAAK,MAAM;YAClB,IAAI,CAAC,EAAE,KAAK,MAAM,CACnB,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC;IACnE,CAAC;IAED;;;;OAIG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,KAAK,CAAC,KAAa;QACxB,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;IAC1C,CAAC;;
|
|
1
|
+
{"version":3,"file":"board-id.js","sourceRoot":"","sources":["../lib/board-id.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;GAEG;AACH,MAAM,OAAO,OAAO;IAIlB,YAAmB,EAAU;QAAjB;;;;mBAAO,EAAE;WAAQ;QAC3B,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,oCAAoC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IACnC,CAAC;IAED,IAAI;QACF,OAAO,IAAI,CAAC,EAAE,KAAK,MAAM,IAAI,IAAI,CAAC,EAAE,KAAK,MAAM,CAAC;IAClD,CAAC;IAED,IAAI;QACF,OAAO,CACL,IAAI,CAAC,EAAE,KAAK,MAAM;YAClB,IAAI,CAAC,EAAE,KAAK,MAAM;YAClB,IAAI,CAAC,EAAE,KAAK,MAAM;YAClB,IAAI,CAAC,EAAE,KAAK,MAAM,CACnB,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC;IACnE,CAAC;IAED;;;;OAIG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,KAAK,CAAC,KAAa;QACxB,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,YAA0B;QAC1C,QAAQ,YAAY,EAAE,CAAC;YACrB,KAAK,IAAI;gBACP,OAAO,IAAI,CAAC,YAAY,CAAC;YAC3B,KAAK,IAAI;gBACP,OAAO,IAAI,CAAC,YAAY,CAAC;QAC7B,CAAC;IACH,CAAC;;AA3Dc;;;;WAAe,IAAI,OAAO,CAAC,MAAM,CAAC;EAAtB,CAAuB;AACnC;;;;WAAe,IAAI,OAAO,CAAC,MAAM,CAAC;EAAtB,CAAuB"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Service } from "./bluetooth-device-wrapper.js";
|
|
2
|
+
import { TypedServiceEvent, TypedServiceEventDispatcher } from "./service-events.js";
|
|
3
|
+
export declare class ButtonService implements Service {
|
|
4
|
+
private buttonACharacteristic;
|
|
5
|
+
private buttonBCharacteristic;
|
|
6
|
+
private dispatchTypedEvent;
|
|
7
|
+
constructor(buttonACharacteristic: BluetoothRemoteGATTCharacteristic, buttonBCharacteristic: BluetoothRemoteGATTCharacteristic, dispatchTypedEvent: TypedServiceEventDispatcher);
|
|
8
|
+
static createService(gattServer: BluetoothRemoteGATTServer, dispatcher: TypedServiceEventDispatcher, queueGattOperation: <R>(action: () => Promise<R>) => Promise<R>, listenerInit: boolean): Promise<ButtonService | undefined>;
|
|
9
|
+
private dataViewToButtonState;
|
|
10
|
+
startNotifications(type: TypedServiceEvent): Promise<void>;
|
|
11
|
+
stopNotifications(type: TypedServiceEvent): Promise<void>;
|
|
12
|
+
private characteristicForEvent;
|
|
13
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { profile } from "./bluetooth-profile.js";
|
|
2
|
+
import { ButtonEvent } from "./buttons.js";
|
|
3
|
+
import { BackgroundErrorEvent, DeviceError } from "./device.js";
|
|
4
|
+
export class ButtonService {
|
|
5
|
+
constructor(buttonACharacteristic, buttonBCharacteristic, dispatchTypedEvent) {
|
|
6
|
+
Object.defineProperty(this, "buttonACharacteristic", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
configurable: true,
|
|
9
|
+
writable: true,
|
|
10
|
+
value: buttonACharacteristic
|
|
11
|
+
});
|
|
12
|
+
Object.defineProperty(this, "buttonBCharacteristic", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
configurable: true,
|
|
15
|
+
writable: true,
|
|
16
|
+
value: buttonBCharacteristic
|
|
17
|
+
});
|
|
18
|
+
Object.defineProperty(this, "dispatchTypedEvent", {
|
|
19
|
+
enumerable: true,
|
|
20
|
+
configurable: true,
|
|
21
|
+
writable: true,
|
|
22
|
+
value: dispatchTypedEvent
|
|
23
|
+
});
|
|
24
|
+
for (const type of ["buttonachanged", "buttonbchanged"]) {
|
|
25
|
+
this.characteristicForEvent(type)?.addEventListener("characteristicvaluechanged", (event) => {
|
|
26
|
+
const target = event.target;
|
|
27
|
+
const data = this.dataViewToButtonState(target.value);
|
|
28
|
+
this.dispatchTypedEvent(type, new ButtonEvent(type, data));
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
static async createService(gattServer, dispatcher, queueGattOperation, listenerInit) {
|
|
33
|
+
let buttonService;
|
|
34
|
+
try {
|
|
35
|
+
buttonService = await gattServer.getPrimaryService(profile.button.id);
|
|
36
|
+
}
|
|
37
|
+
catch (err) {
|
|
38
|
+
if (listenerInit) {
|
|
39
|
+
dispatcher("backgrounderror", new BackgroundErrorEvent(err));
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
throw new DeviceError({
|
|
44
|
+
code: "service-missing",
|
|
45
|
+
message: err,
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
const buttonACharacteristic = await buttonService.getCharacteristic(profile.button.characteristics.a.id);
|
|
50
|
+
const buttonBCharacteristic = await buttonService.getCharacteristic(profile.button.characteristics.b.id);
|
|
51
|
+
return new ButtonService(buttonACharacteristic, buttonBCharacteristic, dispatcher);
|
|
52
|
+
}
|
|
53
|
+
dataViewToButtonState(dataView) {
|
|
54
|
+
return dataView.getUint8(0);
|
|
55
|
+
}
|
|
56
|
+
async startNotifications(type) {
|
|
57
|
+
await this.characteristicForEvent(type)?.startNotifications();
|
|
58
|
+
}
|
|
59
|
+
async stopNotifications(type) {
|
|
60
|
+
await this.characteristicForEvent(type)?.stopNotifications();
|
|
61
|
+
}
|
|
62
|
+
characteristicForEvent(type) {
|
|
63
|
+
switch (type) {
|
|
64
|
+
case "buttonachanged": {
|
|
65
|
+
return this.buttonACharacteristic;
|
|
66
|
+
}
|
|
67
|
+
case "buttonbchanged": {
|
|
68
|
+
return this.buttonBCharacteristic;
|
|
69
|
+
}
|
|
70
|
+
default: {
|
|
71
|
+
return undefined;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=button-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"button-service.js","sourceRoot":"","sources":["../lib/button-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare enum ButtonState {
|
|
2
|
+
NotPressed = 0,
|
|
3
|
+
ShortPress = 1,
|
|
4
|
+
LongPress = 2
|
|
5
|
+
}
|
|
6
|
+
export type ButtonEventType = "buttonachanged" | "buttonbchanged";
|
|
7
|
+
export declare class ButtonEvent extends Event {
|
|
8
|
+
readonly state: ButtonState;
|
|
9
|
+
constructor(type: ButtonEventType, state: ButtonState);
|
|
10
|
+
}
|
package/build/buttons.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export var ButtonState;
|
|
2
|
+
(function (ButtonState) {
|
|
3
|
+
ButtonState[ButtonState["NotPressed"] = 0] = "NotPressed";
|
|
4
|
+
ButtonState[ButtonState["ShortPress"] = 1] = "ShortPress";
|
|
5
|
+
ButtonState[ButtonState["LongPress"] = 2] = "LongPress";
|
|
6
|
+
})(ButtonState || (ButtonState = {}));
|
|
7
|
+
export class ButtonEvent extends Event {
|
|
8
|
+
constructor(type, state) {
|
|
9
|
+
super(type);
|
|
10
|
+
Object.defineProperty(this, "state", {
|
|
11
|
+
enumerable: true,
|
|
12
|
+
configurable: true,
|
|
13
|
+
writable: true,
|
|
14
|
+
value: state
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=buttons.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buttons.js","sourceRoot":"","sources":["../lib/buttons.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,WAIX;AAJD,WAAY,WAAW;IACrB,yDAAc,CAAA;IACd,yDAAc,CAAA;IACd,uDAAa,CAAA;AACf,CAAC,EAJW,WAAW,KAAX,WAAW,QAItB;AAID,MAAM,OAAO,WAAY,SAAQ,KAAK;IACpC,YACE,IAAqB,EACL,KAAkB;QAElC,KAAK,CAAC,IAAI,CAAC,CAAC;QAFZ;;;;mBAAgB,KAAK;WAAa;IAGpC,CAAC;CACF"}
|
package/build/constants.d.ts
CHANGED
package/build/constants.js
CHANGED
package/build/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../lib/constants.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,sGAAsG;AACtG,yGAAyG;AAEzG,sGAAsG;AACtG,kEAAkE;AAClE,0EAA0E;AAE1E,iBAAiB;AACjB,MAAM,CAAC,MAAM,IAAI,GAAG;IAClB,YAAY,EAAE,UAAU,GAAG,IAAI;IAC/B,QAAQ,EAAE,UAAU,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../lib/constants.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,sGAAsG;AACtG,yGAAyG;AAEzG,sGAAsG;AACtG,kEAAkE;AAClE,0EAA0E;AAE1E,iBAAiB;AACjB,MAAM,CAAC,MAAM,IAAI,GAAG;IAClB,YAAY,EAAE,UAAU,GAAG,IAAI;IAC/B,QAAQ,EAAE,UAAU,GAAG,IAAI;IAE3B,WAAW,EAAE,UAAU,GAAG,IAAI;CAC/B,CAAC;AAEF,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,QAAQ,EAAE,IAAI;IACd,WAAW,EAAE,IAAI;IACjB,cAAc,EAAE,IAAI;IACpB,YAAY,EAAE,IAAI;IAClB,kBAAkB,EAAE,IAAI;IACxB,aAAa;CACd,CAAC;AAEF,MAAM,CAAC,MAAM,GAAG,GAAG;IACjB,QAAQ,EAAE,UAAU;IACpB,UAAU,EAAE,UAAU;IACtB,WAAW,EAAE,UAAU;IACvB,YAAY,EAAE,UAAU;IACxB,WAAW,EAAE,UAAU;IACvB,SAAS,EAAE,UAAU;IACrB,WAAW,EAAE,UAAU;IACvB,YAAY,EAAE,UAAU;IACxB,SAAS,EAAE,CAAC,CAAC,EAAE,YAAY;IAC3B,aAAa;CACd,CAAC;AACF,GAAG,CAAC,SAAS;IACX,GAAG,CAAC,YAAY;QAChB,GAAG,CAAC,WAAW;QACf,GAAG,CAAC,SAAS;QACb,GAAG,CAAC,WAAW;QACf,GAAG,CAAC,YAAY,CAAC;AAEnB,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,MAAM,EAAE,CAAC,IAAI,CAAC;IACd,IAAI,EAAE,CAAC,IAAI,CAAC;IACZ,KAAK,EAAE,CAAC,IAAI,CAAC;IACb,QAAQ;CACT,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,QAAQ;CACT,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,+CAA+C;IAC/C,KAAK,EAAE,UAAU;IACjB,gDAAgD;IAChD,kBAAkB,EAAE,CAAC,IAAI,CAAC;IAE1B,iBAAiB;IACjB,KAAK,EAAE,UAAU;IAEjB,4CAA4C;IAC5C,KAAK,EAAE,UAAU;IACjB,UAAU,EAAE,CAAC,IAAI,EAAE;IAEnB,UAAU,EAAE,UAAU;IACtB,kBAAkB,EAAE,KAAK,IAAI,EAAE;IAC/B,sBAAsB,EAAE,CAAC,IAAI,CAAC;IAE9B,aAAa;CACd,CAAC"}
|