@microbit/microbit-connection 0.1.0 → 0.9.0-apps.alpha.0
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/README.md +4 -4
- package/build/cjs/accelerometer-service.d.ts +5 -5
- package/build/cjs/accelerometer-service.js +41 -42
- package/build/cjs/accelerometer-service.js.map +1 -1
- package/build/cjs/async-util.d.ts +9 -0
- package/build/cjs/async-util.js +27 -7
- package/build/cjs/async-util.js.map +1 -1
- package/build/cjs/bluetooth-device-wrapper.d.ts +61 -27
- package/build/cjs/bluetooth-device-wrapper.js +285 -266
- package/build/cjs/bluetooth-device-wrapper.js.map +1 -1
- package/build/cjs/bluetooth-profile.d.ts +43 -35
- package/build/cjs/bluetooth-profile.js +35 -29
- package/build/cjs/bluetooth-profile.js.map +1 -1
- package/build/cjs/bluetooth.d.ts +10 -6
- package/build/cjs/bluetooth.js +286 -100
- package/build/cjs/bluetooth.js.map +1 -1
- package/build/cjs/button-service.d.ts +5 -5
- package/build/cjs/button-service.js +31 -45
- package/build/cjs/button-service.js.map +1 -1
- package/build/cjs/device-information-service.d.ts +6 -0
- package/build/cjs/device-information-service.js +34 -0
- package/build/cjs/device-information-service.js.map +1 -0
- package/build/cjs/device.d.ts +65 -8
- package/build/cjs/device.js +16 -2
- package/build/cjs/device.js.map +1 -1
- package/build/cjs/dfu-service.d.ts +9 -0
- package/build/cjs/dfu-service.js +26 -0
- package/build/cjs/dfu-service.js.map +1 -0
- package/build/cjs/flashing/flashing-full.d.ts +14 -0
- package/build/cjs/flashing/flashing-full.js +87 -0
- package/build/cjs/flashing/flashing-full.js.map +1 -0
- package/build/cjs/flashing/flashing-makecode.d.ts +6 -0
- package/build/cjs/flashing/flashing-makecode.js +48 -0
- package/build/cjs/flashing/flashing-makecode.js.map +1 -0
- package/build/cjs/flashing/flashing-partial.d.ts +9 -0
- package/build/cjs/flashing/flashing-partial.js +98 -0
- package/build/cjs/flashing/flashing-partial.js.map +1 -0
- package/build/cjs/flashing/flashing-v1.d.ts +11 -0
- package/build/cjs/flashing/flashing-v1.js +24 -0
- package/build/cjs/flashing/flashing-v1.js.map +1 -0
- package/build/cjs/flashing/nordic-dfu.d.ts +3 -0
- package/build/cjs/flashing/nordic-dfu.js +214 -0
- package/build/cjs/flashing/nordic-dfu.js.map +1 -0
- package/build/cjs/flashing/zip.d.ts +12 -0
- package/build/cjs/flashing/zip.js +177 -0
- package/build/cjs/flashing/zip.js.map +1 -0
- package/build/cjs/index.d.ts +3 -3
- package/build/cjs/index.js +2 -1
- package/build/cjs/index.js.map +1 -1
- package/build/cjs/led-service.d.ts +5 -7
- package/build/cjs/led-service.js +13 -44
- package/build/cjs/led-service.js.map +1 -1
- package/build/cjs/logging.d.ts +1 -1
- package/build/cjs/logging.js +3 -3
- package/build/cjs/logging.js.map +1 -1
- package/build/cjs/magnetometer-service.d.ts +5 -9
- package/build/cjs/magnetometer-service.js +30 -65
- package/build/cjs/magnetometer-service.js.map +1 -1
- package/build/cjs/partial-flashing-service.d.ts +45 -0
- package/build/cjs/partial-flashing-service.js +110 -0
- package/build/cjs/partial-flashing-service.js.map +1 -0
- package/build/cjs/uart-service.d.ts +4 -5
- package/build/cjs/uart-service.js +19 -40
- package/build/cjs/uart-service.js.map +1 -1
- package/build/cjs/usb-device-wrapper.js +33 -8
- package/build/cjs/usb-device-wrapper.js.map +1 -1
- package/build/cjs/usb-partial-flashing.d.ts +1 -3
- package/build/cjs/usb-partial-flashing.js +4 -3
- package/build/cjs/usb-partial-flashing.js.map +1 -1
- package/build/cjs/usb-radio-bridge.js +1 -2
- package/build/cjs/usb-radio-bridge.js.map +1 -1
- package/build/cjs/usb.d.ts +4 -2
- package/build/cjs/usb.js +31 -16
- package/build/cjs/usb.js.map +1 -1
- package/build/esm/accelerometer-service.d.ts +5 -5
- package/build/esm/accelerometer-service.js +42 -43
- package/build/esm/accelerometer-service.js.map +1 -1
- package/build/esm/async-util.d.ts +9 -0
- package/build/esm/async-util.js +22 -6
- package/build/esm/async-util.js.map +1 -1
- package/build/esm/bluetooth-device-wrapper.d.ts +61 -27
- package/build/esm/bluetooth-device-wrapper.js +284 -265
- package/build/esm/bluetooth-device-wrapper.js.map +1 -1
- package/build/esm/bluetooth-profile.d.ts +43 -35
- package/build/esm/bluetooth-profile.js +35 -29
- package/build/esm/bluetooth-profile.js.map +1 -1
- package/build/esm/bluetooth.d.ts +10 -6
- package/build/esm/bluetooth.js +263 -103
- package/build/esm/bluetooth.js.map +1 -1
- package/build/esm/button-service.d.ts +5 -5
- package/build/esm/button-service.js +32 -46
- package/build/esm/button-service.js.map +1 -1
- package/build/esm/device-information-service.d.ts +6 -0
- package/build/esm/device-information-service.js +30 -0
- package/build/esm/device-information-service.js.map +1 -0
- package/build/esm/device.d.ts +65 -8
- package/build/esm/device.js +15 -1
- package/build/esm/device.js.map +1 -1
- package/build/esm/dfu-service.d.ts +9 -0
- package/build/esm/dfu-service.js +22 -0
- package/build/esm/dfu-service.js.map +1 -0
- package/build/esm/flashing/flashing-full.d.ts +14 -0
- package/build/esm/flashing/flashing-full.js +84 -0
- package/build/esm/flashing/flashing-full.js.map +1 -0
- package/build/esm/flashing/flashing-makecode.d.ts +6 -0
- package/build/esm/flashing/flashing-makecode.js +44 -0
- package/build/esm/flashing/flashing-makecode.js.map +1 -0
- package/build/esm/flashing/flashing-partial.d.ts +9 -0
- package/build/esm/flashing/flashing-partial.js +95 -0
- package/build/esm/flashing/flashing-partial.js.map +1 -0
- package/build/esm/flashing/flashing-v1.d.ts +11 -0
- package/build/esm/flashing/flashing-v1.js +20 -0
- package/build/esm/flashing/flashing-v1.js.map +1 -0
- package/build/esm/flashing/nordic-dfu.d.ts +3 -0
- package/build/esm/flashing/nordic-dfu.js +211 -0
- package/build/esm/flashing/nordic-dfu.js.map +1 -0
- package/build/esm/flashing/zip.d.ts +12 -0
- package/build/esm/flashing/zip.js +174 -0
- package/build/esm/flashing/zip.js.map +1 -0
- package/build/esm/index.d.ts +3 -3
- package/build/esm/index.js +2 -2
- package/build/esm/index.js.map +1 -1
- package/build/esm/led-service.d.ts +5 -7
- package/build/esm/led-service.js +13 -44
- package/build/esm/led-service.js.map +1 -1
- package/build/esm/logging.d.ts +1 -1
- package/build/esm/logging.js +1 -1
- package/build/esm/logging.js.map +1 -1
- package/build/esm/magnetometer-service.d.ts +5 -9
- package/build/esm/magnetometer-service.js +31 -66
- package/build/esm/magnetometer-service.js.map +1 -1
- package/build/esm/partial-flashing-service.d.ts +45 -0
- package/build/esm/partial-flashing-service.js +106 -0
- package/build/esm/partial-flashing-service.js.map +1 -0
- package/build/esm/uart-service.d.ts +4 -5
- package/build/esm/uart-service.js +19 -40
- package/build/esm/uart-service.js.map +1 -1
- package/build/esm/usb-device-wrapper.js +33 -8
- package/build/esm/usb-device-wrapper.js.map +1 -1
- package/build/esm/usb-partial-flashing.d.ts +1 -3
- package/build/esm/usb-partial-flashing.js +4 -3
- package/build/esm/usb-partial-flashing.js.map +1 -1
- package/build/esm/usb-radio-bridge.js +2 -3
- package/build/esm/usb-radio-bridge.js.map +1 -1
- package/build/esm/usb.d.ts +4 -2
- package/build/esm/usb.js +33 -18
- package/build/esm/usb.js.map +1 -1
- package/package.json +5 -1
package/build/cjs/bluetooth.js
CHANGED
|
@@ -1,12 +1,48 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
2
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
29
|
exports.createWebBluetoothConnection = void 0;
|
|
30
|
+
/**
|
|
31
|
+
* (c) 2021, Micro:bit Educational Foundation and contributors
|
|
32
|
+
*
|
|
33
|
+
* SPDX-License-Identifier: MIT
|
|
34
|
+
*/
|
|
35
|
+
const bluetooth_le_1 = require("@capacitor-community/bluetooth-le");
|
|
36
|
+
const core_1 = require("@capacitor/core");
|
|
37
|
+
const nrf_intel_hex_1 = __importDefault(require("nrf-intel-hex"));
|
|
4
38
|
const bluetooth_device_wrapper_js_1 = require("./bluetooth-device-wrapper.js");
|
|
5
39
|
const bluetooth_profile_js_1 = require("./bluetooth-profile.js");
|
|
6
40
|
const device_js_1 = require("./device.js");
|
|
7
41
|
const events_js_1 = require("./events.js");
|
|
8
42
|
const logging_js_1 = require("./logging.js");
|
|
9
|
-
const
|
|
43
|
+
const flashing_full_js_1 = require("./flashing/flashing-full.js");
|
|
44
|
+
const flashing_partial_js_1 = __importStar(require("./flashing/flashing-partial.js"));
|
|
45
|
+
let bleClientInitialized = false;
|
|
10
46
|
/**
|
|
11
47
|
* A Bluetooth connection factory.
|
|
12
48
|
*/
|
|
@@ -68,7 +104,13 @@ class MicrobitWebBluetoothConnectionImpl extends events_js_1.TypedEventTarget {
|
|
|
68
104
|
writable: true,
|
|
69
105
|
value: void 0
|
|
70
106
|
});
|
|
71
|
-
this
|
|
107
|
+
Object.defineProperty(this, "deferStatusUpdates", {
|
|
108
|
+
enumerable: true,
|
|
109
|
+
configurable: true,
|
|
110
|
+
writable: true,
|
|
111
|
+
value: false
|
|
112
|
+
});
|
|
113
|
+
this.logging = options.logging || new logging_js_1.ConsoleLogging();
|
|
72
114
|
}
|
|
73
115
|
eventActivated(type) {
|
|
74
116
|
this.connection?.startNotifications(type);
|
|
@@ -79,6 +121,9 @@ class MicrobitWebBluetoothConnectionImpl extends events_js_1.TypedEventTarget {
|
|
|
79
121
|
log(v) {
|
|
80
122
|
this.logging.log(v);
|
|
81
123
|
}
|
|
124
|
+
error(message, e) {
|
|
125
|
+
this.logging.error(message, e);
|
|
126
|
+
}
|
|
82
127
|
async initialize() {
|
|
83
128
|
navigator.bluetooth?.addEventListener("availabilitychanged", this.availabilityListener);
|
|
84
129
|
this.availability = await navigator.bluetooth?.getAvailability();
|
|
@@ -89,13 +134,76 @@ class MicrobitWebBluetoothConnectionImpl extends events_js_1.TypedEventTarget {
|
|
|
89
134
|
dispose() {
|
|
90
135
|
navigator.bluetooth?.removeEventListener("availabilitychanged", this.availabilityListener);
|
|
91
136
|
}
|
|
92
|
-
async connect() {
|
|
93
|
-
await this.connectInternal();
|
|
94
|
-
return this.status;
|
|
95
|
-
}
|
|
96
137
|
getBoardVersion() {
|
|
97
138
|
return this.connection?.boardVersion;
|
|
98
139
|
}
|
|
140
|
+
async connect(options) {
|
|
141
|
+
const progress = options?.progress ?? (() => { });
|
|
142
|
+
progress(device_js_1.ProgressStage.Initializing);
|
|
143
|
+
await this.preConnectInitialization();
|
|
144
|
+
if (!this.connection) {
|
|
145
|
+
progress(device_js_1.ProgressStage.FindingDevice);
|
|
146
|
+
const device = await this.requestDevice();
|
|
147
|
+
this.connection = new bluetooth_device_wrapper_js_1.BluetoothDeviceWrapper(device, this.logging, this.dispatchTypedEvent.bind(this), () => this.getActiveEvents(), {
|
|
148
|
+
onConnecting: () => this.setStatus(device_js_1.ConnectionStatus.CONNECTING),
|
|
149
|
+
onReconnecting: () => this.setStatus(device_js_1.ConnectionStatus.RECONNECTING),
|
|
150
|
+
onSuccess: () => this.setStatus(device_js_1.ConnectionStatus.CONNECTED),
|
|
151
|
+
onFail: () => {
|
|
152
|
+
this.setStatus(device_js_1.ConnectionStatus.DISCONNECTED);
|
|
153
|
+
this.connection = undefined;
|
|
154
|
+
},
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
progress(device_js_1.ProgressStage.Connecting);
|
|
158
|
+
await this.connection.connect();
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Initializes BLE.
|
|
162
|
+
*
|
|
163
|
+
* This must happen before requesting a device or connecting.
|
|
164
|
+
*
|
|
165
|
+
* We do this just before use not at connection initialize because on Android/iOS
|
|
166
|
+
* that's the appropriate time to ask for permissions.
|
|
167
|
+
*/
|
|
168
|
+
async preConnectInitialization() {
|
|
169
|
+
try {
|
|
170
|
+
if ((0, bluetooth_device_wrapper_js_1.isAndroid)()) {
|
|
171
|
+
const isLocationEnabled = await bluetooth_le_1.BleClient.isLocationEnabled();
|
|
172
|
+
if (!isLocationEnabled) {
|
|
173
|
+
throw new device_js_1.DeviceError({
|
|
174
|
+
code: "bluetooth-missing-permissions",
|
|
175
|
+
message: "Location services is disabled",
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
if (!bleClientInitialized) {
|
|
180
|
+
await bluetooth_le_1.BleClient.initialize({ androidNeverForLocation: true });
|
|
181
|
+
bleClientInitialized = true;
|
|
182
|
+
}
|
|
183
|
+
const isBluetoothEnabled = await bluetooth_le_1.BleClient.isEnabled();
|
|
184
|
+
if (!isBluetoothEnabled) {
|
|
185
|
+
throw new device_js_1.DeviceError({
|
|
186
|
+
code: "bluetooth-disabled",
|
|
187
|
+
message: "Bluetooth is disabled",
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
catch (e) {
|
|
192
|
+
this.error("Error initializing Bluetooth", e);
|
|
193
|
+
const error = e;
|
|
194
|
+
if (error.message === "BLE permission denied") {
|
|
195
|
+
// Error thrown for iOS platform.
|
|
196
|
+
throw new device_js_1.DeviceError({
|
|
197
|
+
code: "bluetooth-disabled",
|
|
198
|
+
message: "Bluetooth is disabled",
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
throw new device_js_1.DeviceError({
|
|
202
|
+
code: "bluetooth-missing-permissions",
|
|
203
|
+
message: "Missing permissions",
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
}
|
|
99
207
|
async disconnect() {
|
|
100
208
|
try {
|
|
101
209
|
if (this.connection) {
|
|
@@ -103,7 +211,6 @@ class MicrobitWebBluetoothConnectionImpl extends events_js_1.TypedEventTarget {
|
|
|
103
211
|
}
|
|
104
212
|
}
|
|
105
213
|
catch (e) {
|
|
106
|
-
this.log("Error during disconnection:\r\n" + e);
|
|
107
214
|
this.logging.event({
|
|
108
215
|
type: "Bluetooth-error",
|
|
109
216
|
message: "error-disconnecting",
|
|
@@ -112,7 +219,6 @@ class MicrobitWebBluetoothConnectionImpl extends events_js_1.TypedEventTarget {
|
|
|
112
219
|
finally {
|
|
113
220
|
this.connection = undefined;
|
|
114
221
|
this.setStatus(device_js_1.ConnectionStatus.DISCONNECTED);
|
|
115
|
-
this.logging.log("Disconnection complete");
|
|
116
222
|
this.logging.event({
|
|
117
223
|
type: "Bluetooth-info",
|
|
118
224
|
message: "disconnected",
|
|
@@ -122,7 +228,9 @@ class MicrobitWebBluetoothConnectionImpl extends events_js_1.TypedEventTarget {
|
|
|
122
228
|
setStatus(newStatus) {
|
|
123
229
|
this.status = newStatus;
|
|
124
230
|
this.log("Bluetooth connection status " + newStatus);
|
|
125
|
-
this.
|
|
231
|
+
if (!this.deferStatusUpdates) {
|
|
232
|
+
this.dispatchTypedEvent("status", new device_js_1.ConnectionStatusEvent(newStatus));
|
|
233
|
+
}
|
|
126
234
|
}
|
|
127
235
|
serialWrite(data) {
|
|
128
236
|
if (this.connection) {
|
|
@@ -135,138 +243,216 @@ class MicrobitWebBluetoothConnectionImpl extends events_js_1.TypedEventTarget {
|
|
|
135
243
|
this.device = undefined;
|
|
136
244
|
this.setStatus(device_js_1.ConnectionStatus.NO_AUTHORIZED_DEVICE);
|
|
137
245
|
}
|
|
138
|
-
async connectInternal() {
|
|
139
|
-
if (!this.connection) {
|
|
140
|
-
const device = await this.chooseDevice();
|
|
141
|
-
if (!device) {
|
|
142
|
-
this.setStatus(device_js_1.ConnectionStatus.NO_AUTHORIZED_DEVICE);
|
|
143
|
-
return;
|
|
144
|
-
}
|
|
145
|
-
this.connection = await (0, bluetooth_device_wrapper_js_1.createBluetoothDeviceWrapper)(device, this.logging, this.dispatchTypedEvent.bind(this), () => this.getActiveEvents(), {
|
|
146
|
-
onConnecting: () => this.setStatus(device_js_1.ConnectionStatus.CONNECTING),
|
|
147
|
-
onReconnecting: () => this.setStatus(device_js_1.ConnectionStatus.RECONNECTING),
|
|
148
|
-
onSuccess: () => this.setStatus(device_js_1.ConnectionStatus.CONNECTED),
|
|
149
|
-
onFail: () => {
|
|
150
|
-
this.setStatus(device_js_1.ConnectionStatus.DISCONNECTED);
|
|
151
|
-
this.connection = undefined;
|
|
152
|
-
},
|
|
153
|
-
});
|
|
154
|
-
return;
|
|
155
|
-
}
|
|
156
|
-
// TODO: timeout unification?
|
|
157
|
-
}
|
|
158
246
|
setNameFilter(name) {
|
|
159
247
|
this.nameFilter = name;
|
|
160
248
|
}
|
|
161
|
-
async
|
|
249
|
+
async requestDevice() {
|
|
162
250
|
if (this.device) {
|
|
163
251
|
return this.device;
|
|
164
252
|
}
|
|
165
253
|
this.dispatchTypedEvent("beforerequestdevice", new device_js_1.BeforeRequestDevice());
|
|
166
254
|
try {
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
{
|
|
173
|
-
namePrefix: this.nameFilter
|
|
174
|
-
? `BBC micro:bit [${this.nameFilter}]`
|
|
175
|
-
: "BBC micro:bit",
|
|
176
|
-
},
|
|
177
|
-
{
|
|
178
|
-
// See https://github.com/bsiever/microbit-pxt-blehid/issues/31
|
|
179
|
-
namePrefix: this.nameFilter
|
|
180
|
-
? `uBit [${this.nameFilter}]`
|
|
181
|
-
: "uBit",
|
|
182
|
-
},
|
|
183
|
-
],
|
|
184
|
-
optionalServices: [
|
|
185
|
-
bluetooth_profile_js_1.profile.accelerometer.id,
|
|
186
|
-
bluetooth_profile_js_1.profile.button.id,
|
|
187
|
-
bluetooth_profile_js_1.profile.deviceInformation.id,
|
|
188
|
-
bluetooth_profile_js_1.profile.dfuControl.id,
|
|
189
|
-
bluetooth_profile_js_1.profile.event.id,
|
|
190
|
-
bluetooth_profile_js_1.profile.ioPin.id,
|
|
191
|
-
bluetooth_profile_js_1.profile.led.id,
|
|
192
|
-
bluetooth_profile_js_1.profile.magnetometer.id,
|
|
193
|
-
bluetooth_profile_js_1.profile.temperature.id,
|
|
194
|
-
bluetooth_profile_js_1.profile.uart.id,
|
|
195
|
-
],
|
|
196
|
-
}),
|
|
197
|
-
new Promise((resolve) => setTimeout(() => resolve("timeout"), requestDeviceTimeoutDuration)),
|
|
198
|
-
]);
|
|
199
|
-
if (result === "timeout") {
|
|
200
|
-
// btSelectMicrobitDialogOnLoad.set(true);
|
|
201
|
-
window.location.reload();
|
|
202
|
-
return undefined;
|
|
255
|
+
const namePrefix = this.nameFilter
|
|
256
|
+
? `BBC micro:bit [${this.nameFilter}]`
|
|
257
|
+
: "BBC micro:bit";
|
|
258
|
+
if (core_1.Capacitor.isNativePlatform()) {
|
|
259
|
+
this.device = await this.requestDeviceNative(namePrefix);
|
|
203
260
|
}
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
261
|
+
else {
|
|
262
|
+
this.device = await this.requestDeviceWeb(namePrefix);
|
|
263
|
+
}
|
|
264
|
+
if (!this.device) {
|
|
265
|
+
this.setStatus(device_js_1.ConnectionStatus.NO_AUTHORIZED_DEVICE);
|
|
266
|
+
throw new device_js_1.DeviceError({
|
|
267
|
+
code: "timeout-error",
|
|
268
|
+
message: "Timeout scanning for device",
|
|
269
|
+
});
|
|
270
|
+
}
|
|
271
|
+
return this.device;
|
|
210
272
|
}
|
|
211
273
|
finally {
|
|
212
274
|
this.dispatchTypedEvent("afterrequestdevice", new device_js_1.AfterRequestDevice());
|
|
213
275
|
}
|
|
214
276
|
}
|
|
215
277
|
async getAccelerometerData() {
|
|
216
|
-
|
|
217
|
-
return accelerometerService?.getData();
|
|
278
|
+
return this.connection?.accelerometer.getData();
|
|
218
279
|
}
|
|
219
280
|
async getAccelerometerPeriod() {
|
|
220
|
-
|
|
221
|
-
return accelerometerService?.getPeriod();
|
|
281
|
+
return this.connection?.accelerometer.getPeriod();
|
|
222
282
|
}
|
|
223
283
|
async setAccelerometerPeriod(value) {
|
|
224
|
-
|
|
225
|
-
return accelerometerService?.setPeriod(value);
|
|
284
|
+
return this.connection?.accelerometer.setPeriod(value);
|
|
226
285
|
}
|
|
227
286
|
async setLedText(text) {
|
|
228
|
-
|
|
229
|
-
return ledService?.setText(text);
|
|
287
|
+
return this.connection?.led.setText(text);
|
|
230
288
|
}
|
|
231
289
|
async getLedScrollingDelay() {
|
|
232
|
-
|
|
233
|
-
return ledService?.getScrollingDelay();
|
|
290
|
+
return this.connection?.led.getScrollingDelay();
|
|
234
291
|
}
|
|
235
292
|
async setLedScrollingDelay(delayInMillis) {
|
|
236
|
-
|
|
237
|
-
await ledService?.setScrollingDelay(delayInMillis);
|
|
293
|
+
await this.connection?.led.setScrollingDelay(delayInMillis);
|
|
238
294
|
}
|
|
239
295
|
async getLedMatrix() {
|
|
240
|
-
|
|
241
|
-
return ledService?.getLedMatrix();
|
|
296
|
+
return await this.connection?.led.getLedMatrix();
|
|
242
297
|
}
|
|
243
298
|
async setLedMatrix(matrix) {
|
|
244
|
-
|
|
245
|
-
ledService?.setLedMatrix(matrix);
|
|
299
|
+
await this.connection?.led.setLedMatrix(matrix);
|
|
246
300
|
}
|
|
247
301
|
async getMagnetometerData() {
|
|
248
|
-
|
|
249
|
-
return magnetometerService?.getData();
|
|
302
|
+
return this.connection?.magnetometer.getData();
|
|
250
303
|
}
|
|
251
304
|
async getMagnetometerPeriod() {
|
|
252
|
-
|
|
253
|
-
return magnetometerService?.getPeriod();
|
|
305
|
+
return this.connection?.magnetometer.getPeriod();
|
|
254
306
|
}
|
|
255
307
|
async setMagnetometerPeriod(value) {
|
|
256
|
-
|
|
257
|
-
return magnetometerService?.setPeriod(value);
|
|
308
|
+
return this.connection?.magnetometer.setPeriod(value);
|
|
258
309
|
}
|
|
259
310
|
async getMagnetometerBearing() {
|
|
260
|
-
|
|
261
|
-
return magnetometerService?.getBearing();
|
|
311
|
+
return this.connection?.magnetometer.getBearing();
|
|
262
312
|
}
|
|
263
313
|
async triggerMagnetometerCalibration() {
|
|
264
|
-
|
|
265
|
-
return magnetometerService?.triggerCalibration();
|
|
314
|
+
await this.connection?.magnetometer.triggerCalibration();
|
|
266
315
|
}
|
|
267
316
|
async uartWrite(data) {
|
|
268
|
-
|
|
269
|
-
|
|
317
|
+
await this.connection?.uart.writeData(data);
|
|
318
|
+
}
|
|
319
|
+
/**
|
|
320
|
+
* Flash the micro:bit.
|
|
321
|
+
*
|
|
322
|
+
* Note that this will always leave the connection disconnected.
|
|
323
|
+
*
|
|
324
|
+
* @param dataSource The data to use.
|
|
325
|
+
* @param options Flash options and progress callback.
|
|
326
|
+
*/
|
|
327
|
+
async flash(dataSource, options = {}) {
|
|
328
|
+
const progress = options.progress ?? (() => { });
|
|
329
|
+
try {
|
|
330
|
+
// We'll disconnect/reconnect multiple times due to device resets, but reporting this is unhelpful.
|
|
331
|
+
this.deferStatusUpdates = true;
|
|
332
|
+
if (this.status !== device_js_1.ConnectionStatus.CONNECTED) {
|
|
333
|
+
await this.connect({ progress });
|
|
334
|
+
}
|
|
335
|
+
const connection = this.connection;
|
|
336
|
+
try {
|
|
337
|
+
const boardVersion = connection.boardVersion;
|
|
338
|
+
if (!boardVersion) {
|
|
339
|
+
throw new device_js_1.DeviceError({
|
|
340
|
+
code: "device-disconnected",
|
|
341
|
+
message: "No board version found",
|
|
342
|
+
});
|
|
343
|
+
}
|
|
344
|
+
const memoryMap = convertDataToMemoryMap(await dataSource(boardVersion));
|
|
345
|
+
if (!memoryMap) {
|
|
346
|
+
throw new device_js_1.FlashDataError("Could not convert hex to memory map");
|
|
347
|
+
}
|
|
348
|
+
if (!this.device) {
|
|
349
|
+
throw new device_js_1.DeviceError({
|
|
350
|
+
code: "device-disconnected",
|
|
351
|
+
message: "No device",
|
|
352
|
+
});
|
|
353
|
+
}
|
|
354
|
+
this.log(`Got board version ${boardVersion}`);
|
|
355
|
+
const partialFlashResult = await (0, flashing_partial_js_1.default)(connection, memoryMap, progress);
|
|
356
|
+
if (partialFlashResult === flashing_partial_js_1.PartialFlashResult.AttemptFullFlash) {
|
|
357
|
+
await (0, flashing_full_js_1.fullFlash)(connection, boardVersion, memoryMap, progress);
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
catch (e) {
|
|
361
|
+
this.error("Failed to flash", e);
|
|
362
|
+
throw e;
|
|
363
|
+
}
|
|
364
|
+
finally {
|
|
365
|
+
await this.disconnect();
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
finally {
|
|
369
|
+
this.deferStatusUpdates = false;
|
|
370
|
+
this.dispatchTypedEvent("status", new device_js_1.ConnectionStatusEvent(this.status));
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
async requestDeviceWeb(namePrefix) {
|
|
374
|
+
return await bluetooth_le_1.BleClient.requestDevice({
|
|
375
|
+
namePrefix: this.nameFilter
|
|
376
|
+
? `BBC micro:bit [${namePrefix}]`
|
|
377
|
+
: "BBC micro:bit",
|
|
378
|
+
// TODO: is this possible to reinstate?
|
|
379
|
+
// See https://github.com/bsiever/microbit-pxt-blehid/issues/31
|
|
380
|
+
//namePrefix: this.nameFilter
|
|
381
|
+
// ? `uBit [${this.nameFilter}]`
|
|
382
|
+
// : "uBit",
|
|
383
|
+
optionalServices: [
|
|
384
|
+
bluetooth_profile_js_1.profile.accelerometer.id,
|
|
385
|
+
bluetooth_profile_js_1.profile.button.id,
|
|
386
|
+
bluetooth_profile_js_1.profile.deviceInformation.id,
|
|
387
|
+
bluetooth_profile_js_1.profile.dfuControl.id,
|
|
388
|
+
bluetooth_profile_js_1.profile.event.id,
|
|
389
|
+
bluetooth_profile_js_1.profile.ioPin.id,
|
|
390
|
+
bluetooth_profile_js_1.profile.led.id,
|
|
391
|
+
bluetooth_profile_js_1.profile.magnetometer.id,
|
|
392
|
+
bluetooth_profile_js_1.profile.temperature.id,
|
|
393
|
+
bluetooth_profile_js_1.profile.uart.id,
|
|
394
|
+
],
|
|
395
|
+
});
|
|
396
|
+
}
|
|
397
|
+
/**
|
|
398
|
+
* Finds device with specified name prefix.
|
|
399
|
+
*
|
|
400
|
+
* @returns device or undefined if none can be found.
|
|
401
|
+
*/
|
|
402
|
+
async requestDeviceNative(namePrefix) {
|
|
403
|
+
// Check for existing bonded devices.
|
|
404
|
+
const bonded = await this.checkBondedDevices((device) => {
|
|
405
|
+
const name = device.name;
|
|
406
|
+
return !!name && name.startsWith(namePrefix);
|
|
407
|
+
});
|
|
408
|
+
if (bonded) {
|
|
409
|
+
return bonded;
|
|
410
|
+
}
|
|
411
|
+
this.log(`Scanning for device - ${namePrefix}`);
|
|
412
|
+
let found = false;
|
|
413
|
+
const scanPromise = new Promise((resolve) =>
|
|
414
|
+
// This only resolves when we stop the scan.
|
|
415
|
+
void bluetooth_le_1.BleClient.requestLEScan({}, async (result) => {
|
|
416
|
+
// For a V1 in the Nordic bootloader, we see a name of "DfuTarg" that
|
|
417
|
+
// isn't matched by the name filter but the advertising name is in the
|
|
418
|
+
// localName on the device. So we filter here instead. This happens on
|
|
419
|
+
// iOS if DFU fails / is interrupted.
|
|
420
|
+
if (result.device.name?.startsWith(namePrefix) ||
|
|
421
|
+
result.localName?.startsWith(namePrefix)) {
|
|
422
|
+
found = true;
|
|
423
|
+
await bluetooth_le_1.BleClient.stopLEScan();
|
|
424
|
+
resolve(result.device);
|
|
425
|
+
}
|
|
426
|
+
}));
|
|
427
|
+
const scanTimeoutPromise = new Promise((resolve) => setTimeout(async () => {
|
|
428
|
+
if (!found) {
|
|
429
|
+
await bluetooth_le_1.BleClient.stopLEScan();
|
|
430
|
+
this.log("Timeout scanning for device");
|
|
431
|
+
resolve(undefined);
|
|
432
|
+
}
|
|
433
|
+
}, bluetooth_device_wrapper_js_1.scanningTimeoutInMs));
|
|
434
|
+
return await Promise.race([scanPromise, scanTimeoutPromise]);
|
|
435
|
+
}
|
|
436
|
+
async checkBondedDevices(predicate) {
|
|
437
|
+
if (!(0, bluetooth_device_wrapper_js_1.isAndroid)()) {
|
|
438
|
+
// Not supported.
|
|
439
|
+
return undefined;
|
|
440
|
+
}
|
|
441
|
+
const bondedDevices = await bluetooth_le_1.BleClient.getBondedDevices();
|
|
442
|
+
const result = bondedDevices.find(predicate);
|
|
443
|
+
this.log(result === undefined
|
|
444
|
+
? "No matching bonded device"
|
|
445
|
+
: "Found matching bonded device");
|
|
446
|
+
return result;
|
|
270
447
|
}
|
|
271
448
|
}
|
|
449
|
+
const convertDataToMemoryMap = (data) => {
|
|
450
|
+
if (data instanceof nrf_intel_hex_1.default) {
|
|
451
|
+
return data;
|
|
452
|
+
}
|
|
453
|
+
if (data instanceof Uint8Array) {
|
|
454
|
+
return nrf_intel_hex_1.default.fromPaddedUint8Array(data);
|
|
455
|
+
}
|
|
456
|
+
return nrf_intel_hex_1.default.fromHex(data);
|
|
457
|
+
};
|
|
272
458
|
//# sourceMappingURL=bluetooth.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bluetooth.js","sourceRoot":"","sources":["../../lib/bluetooth.ts"],"names":[],"mappings":";;;AAMA,+EAGuC;AACvC,iEAAiD;AACjD,2CAQqB;AACrB,2CAA+C;AAE/C,6CAAoD;AAOpD,MAAM,4BAA4B,GAAW,KAAK,CAAC;AAgHnD;;GAEG;AACI,MAAM,4BAA4B,GAAG,CAC1C,OAA+C,EACf,EAAE,CAClC,IAAI,kCAAkC,CAAC,OAAO,CAAC,CAAC;AAHrC,QAAA,4BAA4B,gCAGS;AAElD;;GAEG;AACH,MAAM,kCACJ,SAAQ,4BAAsE;IAsB9E,YAAY,UAAiD,EAAE;QAC7D,KAAK,EAAE,CAAC;QApBV;;;;mBAA2B,4BAAgB,CAAC,iBAAiB;WAAC;QAE9D;;;WAGG;QACK;;;;;WAAoC;QAEpC;;;;;WAAiB;QACjB;;;;;WAA+C;QAE/C;;;;mBAAuB,CAAC,CAAQ,EAAE,EAAE;gBAC1C,4CAA4C;gBAC5C,MAAM,KAAK,GAAI,CAAS,CAAC,KAAgB,CAAC;gBAC1C,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;YAC5B,CAAC;WAAC;QACM;;;;;WAAkC;QAClC;;;;;WAA+B;QAIrC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,IAAI,wBAAW,EAAE,CAAC;IACtD,CAAC;IAES,cAAc,CAAC,IAAY;QACnC,IAAI,CAAC,UAAU,EAAE,kBAAkB,CAAC,IAAyB,CAAC,CAAC;IACjE,CAAC;IAES,gBAAgB,CAAC,IAAY;QACrC,IAAI,CAAC,UAAU,EAAE,iBAAiB,CAAC,IAAyB,CAAC,CAAC;IAChE,CAAC;IAEO,GAAG,CAAC,CAAM;QAChB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,UAAU;QACd,SAAS,CAAC,SAAS,EAAE,gBAAgB,CACnC,qBAAqB,EACrB,IAAI,CAAC,oBAAoB,CAC1B,CAAC;QACF,IAAI,CAAC,YAAY,GAAG,MAAM,SAAS,CAAC,SAAS,EAAE,eAAe,EAAE,CAAC;QACjE,IAAI,CAAC,SAAS,CACZ,IAAI,CAAC,YAAY;YACf,CAAC,CAAC,4BAAgB,CAAC,oBAAoB;YACvC,CAAC,CAAC,4BAAgB,CAAC,aAAa,CACnC,CAAC;IACJ,CAAC;IAED,OAAO;QACL,SAAS,CAAC,SAAS,EAAE,mBAAmB,CACtC,qBAAqB,EACrB,IAAI,CAAC,oBAAoB,CAC1B,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,eAAe;QACb,OAAO,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,UAAU;QACd,IAAI,CAAC;YACH,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACpB,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;YACrC,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,GAAG,CAAC,iCAAiC,GAAG,CAAC,CAAC,CAAC;YAChD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;gBACjB,IAAI,EAAE,iBAAiB;gBACvB,OAAO,EAAE,qBAAqB;aAC/B,CAAC,CAAC;QACL,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;YAC5B,IAAI,CAAC,SAAS,CAAC,4BAAgB,CAAC,YAAY,CAAC,CAAC;YAC9C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;YAC3C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;gBACjB,IAAI,EAAE,gBAAgB;gBACtB,OAAO,EAAE,cAAc;aACxB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAEO,SAAS,CAAC,SAA2B;QAC3C,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;QACxB,IAAI,CAAC,GAAG,CAAC,8BAA8B,GAAG,SAAS,CAAC,CAAC;QACrD,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,IAAI,iCAAqB,CAAC,SAAS,CAAC,CAAC,CAAC;IAC1E,CAAC;IAED,WAAW,CAAC,IAAY;QACtB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QACD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,WAAW;QACf,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;QACxB,IAAI,CAAC,SAAS,CAAC,4BAAgB,CAAC,oBAAoB,CAAC,CAAC;IACxD,CAAC;IAEO,KAAK,CAAC,eAAe;QAC3B,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;YACzC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,IAAI,CAAC,SAAS,CAAC,4BAAgB,CAAC,oBAAoB,CAAC,CAAC;gBACtD,OAAO;YACT,CAAC;YACD,IAAI,CAAC,UAAU,GAAG,MAAM,IAAA,0DAA4B,EAClD,MAAM,EACN,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAClC,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,EAA4C,EACtE;gBACE,YAAY,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,4BAAgB,CAAC,UAAU,CAAC;gBAC/D,cAAc,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,4BAAgB,CAAC,YAAY,CAAC;gBACnE,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,4BAAgB,CAAC,SAAS,CAAC;gBAC3D,MAAM,EAAE,GAAG,EAAE;oBACX,IAAI,CAAC,SAAS,CAAC,4BAAgB,CAAC,YAAY,CAAC,CAAC;oBAC9C,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;gBAC9B,CAAC;aACF,CACF,CAAC;YACF,OAAO;QACT,CAAC;QACD,6BAA6B;IAC/B,CAAC;IAED,aAAa,CAAC,IAAY;QACxB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IACzB,CAAC;IAEO,KAAK,CAAC,YAAY;QACxB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO,IAAI,CAAC,MAAM,CAAC;QACrB,CAAC;QACD,IAAI,CAAC,kBAAkB,CAAC,qBAAqB,EAAE,IAAI,+BAAmB,EAAE,CAAC,CAAC;QAC1E,IAAI,CAAC;YACH,6HAA6H;YAC7H,6CAA6C;YAC7C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;gBAChC,SAAS,CAAC,SAAS,CAAC,aAAa,CAAC;oBAChC,OAAO,EAAE;wBACP;4BACE,UAAU,EAAE,IAAI,CAAC,UAAU;gCACzB,CAAC,CAAC,kBAAkB,IAAI,CAAC,UAAU,GAAG;gCACtC,CAAC,CAAC,eAAe;yBACpB;wBACD;4BACE,+DAA+D;4BAC/D,UAAU,EAAE,IAAI,CAAC,UAAU;gCACzB,CAAC,CAAC,SAAS,IAAI,CAAC,UAAU,GAAG;gCAC7B,CAAC,CAAC,MAAM;yBACX;qBACF;oBACD,gBAAgB,EAAE;wBAChB,8BAAO,CAAC,aAAa,CAAC,EAAE;wBACxB,8BAAO,CAAC,MAAM,CAAC,EAAE;wBACjB,8BAAO,CAAC,iBAAiB,CAAC,EAAE;wBAC5B,8BAAO,CAAC,UAAU,CAAC,EAAE;wBACrB,8BAAO,CAAC,KAAK,CAAC,EAAE;wBAChB,8BAAO,CAAC,KAAK,CAAC,EAAE;wBAChB,8BAAO,CAAC,GAAG,CAAC,EAAE;wBACd,8BAAO,CAAC,YAAY,CAAC,EAAE;wBACvB,8BAAO,CAAC,WAAW,CAAC,EAAE;wBACtB,8BAAO,CAAC,IAAI,CAAC,EAAE;qBAChB;iBACF,CAAC;gBACF,IAAI,OAAO,CAAY,CAAC,OAAO,EAAE,EAAE,CACjC,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,4BAA4B,CAAC,CACnE;aACF,CAAC,CAAC;YACH,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,0CAA0C;gBAC1C,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;gBACzB,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;YACrB,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,2CAA2C,EAAE,CAAC,CAAC,CAAC;YACnE,OAAO,SAAS,CAAC;QACnB,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,EAAE,IAAI,8BAAkB,EAAE,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IAED,KAAK,CAAC,oBAAoB;QACxB,MAAM,oBAAoB,GACxB,MAAM,IAAI,CAAC,UAAU,EAAE,uBAAuB,EAAE,CAAC;QACnD,OAAO,oBAAoB,EAAE,OAAO,EAAE,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,sBAAsB;QAC1B,MAAM,oBAAoB,GACxB,MAAM,IAAI,CAAC,UAAU,EAAE,uBAAuB,EAAE,CAAC;QACnD,OAAO,oBAAoB,EAAE,SAAS,EAAE,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,sBAAsB,CAAC,KAAa;QACxC,MAAM,oBAAoB,GACxB,MAAM,IAAI,CAAC,UAAU,EAAE,uBAAuB,EAAE,CAAC;QACnD,OAAO,oBAAoB,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,IAAY;QAC3B,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE,CAAC;QAC1D,OAAO,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,oBAAoB;QACxB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE,CAAC;QAC1D,OAAO,UAAU,EAAE,iBAAiB,EAAE,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,aAAqB;QAC9C,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE,CAAC;QAC1D,MAAM,UAAU,EAAE,iBAAiB,CAAC,aAAa,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE,CAAC;QAC1D,OAAO,UAAU,EAAE,YAAY,EAAE,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,MAAiB;QAClC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE,CAAC;QAC1D,UAAU,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,mBAAmB;QACvB,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,sBAAsB,EAAE,CAAC;QAC5E,OAAO,mBAAmB,EAAE,OAAO,EAAE,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,qBAAqB;QACzB,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,sBAAsB,EAAE,CAAC;QAC5E,OAAO,mBAAmB,EAAE,SAAS,EAAE,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,KAAa;QACvC,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,sBAAsB,EAAE,CAAC;QAC5E,OAAO,mBAAmB,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,sBAAsB;QAC1B,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,sBAAsB,EAAE,CAAC;QAC5E,OAAO,mBAAmB,EAAE,UAAU,EAAE,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,8BAA8B;QAClC,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,sBAAsB,EAAE,CAAC;QAC5E,OAAO,mBAAmB,EAAE,kBAAkB,EAAE,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,IAAgB;QAC9B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,cAAc,EAAE,CAAC;QAC5D,WAAW,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"bluetooth.js","sourceRoot":"","sources":["../../lib/bluetooth.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { Service } from "./bluetooth-device-wrapper.js";
|
|
2
2
|
import { TypedServiceEvent, TypedServiceEventDispatcher } from "./service-events.js";
|
|
3
3
|
export declare class ButtonService implements Service {
|
|
4
|
-
private
|
|
5
|
-
private buttonBCharacteristic;
|
|
4
|
+
private deviceId;
|
|
6
5
|
private dispatchTypedEvent;
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
uuid: string;
|
|
7
|
+
constructor(deviceId: string, dispatchTypedEvent: TypedServiceEventDispatcher);
|
|
8
|
+
getRelevantEvents(): TypedServiceEvent[];
|
|
9
9
|
private dataViewToButtonState;
|
|
10
10
|
startNotifications(type: TypedServiceEvent): Promise<void>;
|
|
11
11
|
stopNotifications(type: TypedServiceEvent): Promise<void>;
|
|
12
|
-
private
|
|
12
|
+
private characteristicForButtonEventType;
|
|
13
13
|
}
|
|
@@ -1,80 +1,66 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ButtonService = void 0;
|
|
4
|
+
const bluetooth_le_1 = require("@capacitor-community/bluetooth-le");
|
|
4
5
|
const bluetooth_profile_js_1 = require("./bluetooth-profile.js");
|
|
5
6
|
const buttons_js_1 = require("./buttons.js");
|
|
6
7
|
const device_js_1 = require("./device.js");
|
|
7
8
|
class ButtonService {
|
|
8
|
-
constructor(
|
|
9
|
-
Object.defineProperty(this, "
|
|
9
|
+
constructor(deviceId, dispatchTypedEvent) {
|
|
10
|
+
Object.defineProperty(this, "deviceId", {
|
|
10
11
|
enumerable: true,
|
|
11
12
|
configurable: true,
|
|
12
13
|
writable: true,
|
|
13
|
-
value:
|
|
14
|
+
value: deviceId
|
|
14
15
|
});
|
|
15
|
-
Object.defineProperty(this, "
|
|
16
|
+
Object.defineProperty(this, "dispatchTypedEvent", {
|
|
16
17
|
enumerable: true,
|
|
17
18
|
configurable: true,
|
|
18
19
|
writable: true,
|
|
19
|
-
value:
|
|
20
|
+
value: dispatchTypedEvent
|
|
20
21
|
});
|
|
21
|
-
Object.defineProperty(this, "
|
|
22
|
+
Object.defineProperty(this, "uuid", {
|
|
22
23
|
enumerable: true,
|
|
23
24
|
configurable: true,
|
|
24
25
|
writable: true,
|
|
25
|
-
value:
|
|
26
|
+
value: bluetooth_profile_js_1.profile.button.id
|
|
26
27
|
});
|
|
27
|
-
for (const type of ["buttonachanged", "buttonbchanged"]) {
|
|
28
|
-
this.characteristicForEvent(type)?.addEventListener("characteristicvaluechanged", (event) => {
|
|
29
|
-
const target = event.target;
|
|
30
|
-
const data = this.dataViewToButtonState(target.value);
|
|
31
|
-
this.dispatchTypedEvent(type, new buttons_js_1.ButtonEvent(type, data));
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
28
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
try {
|
|
38
|
-
buttonService = await gattServer.getPrimaryService(bluetooth_profile_js_1.profile.button.id);
|
|
39
|
-
}
|
|
40
|
-
catch (err) {
|
|
41
|
-
if (listenerInit) {
|
|
42
|
-
dispatcher("backgrounderror", new device_js_1.BackgroundErrorEvent(err));
|
|
43
|
-
return;
|
|
44
|
-
}
|
|
45
|
-
else {
|
|
46
|
-
throw new device_js_1.DeviceError({
|
|
47
|
-
code: "service-missing",
|
|
48
|
-
message: err,
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
const buttonACharacteristic = await buttonService.getCharacteristic(bluetooth_profile_js_1.profile.button.characteristics.a.id);
|
|
53
|
-
const buttonBCharacteristic = await buttonService.getCharacteristic(bluetooth_profile_js_1.profile.button.characteristics.b.id);
|
|
54
|
-
return new ButtonService(buttonACharacteristic, buttonBCharacteristic, dispatcher);
|
|
29
|
+
getRelevantEvents() {
|
|
30
|
+
return ["buttonachanged", "buttonbchanged"];
|
|
55
31
|
}
|
|
56
32
|
dataViewToButtonState(dataView) {
|
|
57
33
|
return dataView.getUint8(0);
|
|
58
34
|
}
|
|
59
35
|
async startNotifications(type) {
|
|
60
|
-
|
|
36
|
+
switch (type) {
|
|
37
|
+
case "buttonachanged":
|
|
38
|
+
case "buttonbchanged": {
|
|
39
|
+
try {
|
|
40
|
+
await bluetooth_le_1.BleClient.startNotifications(this.deviceId, bluetooth_profile_js_1.profile.button.id, this.characteristicForButtonEventType(type).id, (value) => {
|
|
41
|
+
const data = this.dataViewToButtonState(value);
|
|
42
|
+
this.dispatchTypedEvent(type, new buttons_js_1.ButtonEvent(type, data));
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
catch (e) {
|
|
46
|
+
this.dispatchTypedEvent("backgrounderror", new device_js_1.BackgroundErrorEvent("Failed to start notifications", e));
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
61
50
|
}
|
|
62
51
|
async stopNotifications(type) {
|
|
63
|
-
await this.characteristicForEvent(type)?.stopNotifications();
|
|
64
|
-
}
|
|
65
|
-
characteristicForEvent(type) {
|
|
66
52
|
switch (type) {
|
|
67
|
-
case "buttonachanged":
|
|
68
|
-
return this.buttonACharacteristic;
|
|
69
|
-
}
|
|
53
|
+
case "buttonachanged":
|
|
70
54
|
case "buttonbchanged": {
|
|
71
|
-
|
|
72
|
-
}
|
|
73
|
-
default: {
|
|
74
|
-
return undefined;
|
|
55
|
+
await bluetooth_le_1.BleClient.stopNotifications(this.deviceId, bluetooth_profile_js_1.profile.button.id, this.characteristicForButtonEventType(type).id);
|
|
75
56
|
}
|
|
76
57
|
}
|
|
77
58
|
}
|
|
59
|
+
characteristicForButtonEventType(type) {
|
|
60
|
+
return type === "buttonachanged"
|
|
61
|
+
? bluetooth_profile_js_1.profile.button.characteristics.a
|
|
62
|
+
: bluetooth_profile_js_1.profile.button.characteristics.b;
|
|
63
|
+
}
|
|
78
64
|
}
|
|
79
65
|
exports.ButtonService = ButtonService;
|
|
80
66
|
//# sourceMappingURL=button-service.js.map
|