@microbit/microbit-connection 0.9.0-apps.alpha.0 → 0.9.0-apps.alpha.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/cjs/availability.d.ts +14 -0
- package/build/cjs/availability.js +44 -0
- package/build/cjs/availability.js.map +1 -0
- package/build/cjs/bluetooth-device-wrapper.d.ts +2 -1
- package/build/cjs/bluetooth-device-wrapper.js +26 -6
- package/build/cjs/bluetooth-device-wrapper.js.map +1 -1
- package/build/cjs/bluetooth.js +109 -110
- package/build/cjs/bluetooth.js.map +1 -1
- package/build/cjs/device-information-service.d.ts +1 -1
- package/build/cjs/device-information-service.js +2 -2
- package/build/cjs/device-information-service.js.map +1 -1
- package/build/cjs/device.d.ts +51 -24
- package/build/cjs/device.js +20 -14
- package/build/cjs/device.js.map +1 -1
- package/build/cjs/dfu-service.js +2 -2
- package/build/cjs/dfu-service.js.map +1 -1
- package/build/cjs/flashing/flashing-full.d.ts +2 -2
- package/build/cjs/flashing/flashing-full.js +14 -14
- package/build/cjs/flashing/flashing-full.js.map +1 -1
- package/build/cjs/flashing/flashing-makecode.d.ts +1 -1
- package/build/cjs/flashing/flashing-partial.d.ts +2 -2
- package/build/cjs/flashing/flashing-partial.js +18 -18
- package/build/cjs/flashing/flashing-partial.js.map +1 -1
- package/build/cjs/flashing/nordic-dfu.d.ts +2 -2
- package/build/cjs/flashing/nordic-dfu.js +8 -8
- package/build/cjs/flashing/nordic-dfu.js.map +1 -1
- package/build/cjs/index.d.ts +2 -2
- package/build/cjs/index.js.map +1 -1
- package/build/cjs/partial-flashing-service.d.ts +1 -1
- package/build/cjs/partial-flashing-service.js +8 -8
- package/build/cjs/partial-flashing-service.js.map +1 -1
- package/build/cjs/usb-radio-bridge.js +30 -7
- package/build/cjs/usb-radio-bridge.js.map +1 -1
- package/build/cjs/usb.js +25 -28
- package/build/cjs/usb.js.map +1 -1
- package/build/esm/availability.d.ts +14 -0
- package/build/esm/availability.js +40 -0
- package/build/esm/availability.js.map +1 -0
- package/build/esm/bluetooth-device-wrapper.d.ts +2 -1
- package/build/esm/bluetooth-device-wrapper.js +26 -6
- package/build/esm/bluetooth-device-wrapper.js.map +1 -1
- package/build/esm/bluetooth.js +109 -110
- package/build/esm/bluetooth.js.map +1 -1
- package/build/esm/device-information-service.d.ts +1 -1
- package/build/esm/device-information-service.js +1 -1
- package/build/esm/device-information-service.js.map +1 -1
- package/build/esm/device.d.ts +51 -24
- package/build/esm/device.js +20 -14
- package/build/esm/device.js.map +1 -1
- package/build/esm/dfu-service.js +1 -1
- package/build/esm/dfu-service.js.map +1 -1
- package/build/esm/flashing/flashing-full.d.ts +2 -2
- package/build/esm/flashing/flashing-full.js +5 -5
- package/build/esm/flashing/flashing-full.js.map +1 -1
- package/build/esm/flashing/flashing-makecode.d.ts +1 -1
- package/build/esm/flashing/flashing-partial.d.ts +2 -2
- package/build/esm/flashing/flashing-partial.js +4 -4
- package/build/esm/flashing/flashing-partial.js.map +1 -1
- package/build/esm/flashing/nordic-dfu.d.ts +2 -2
- package/build/esm/flashing/nordic-dfu.js +2 -2
- package/build/esm/flashing/nordic-dfu.js.map +1 -1
- package/build/esm/index.d.ts +2 -2
- package/build/esm/index.js.map +1 -1
- package/build/esm/partial-flashing-service.d.ts +1 -1
- package/build/esm/partial-flashing-service.js +1 -1
- package/build/esm/partial-flashing-service.js.map +1 -1
- package/build/esm/usb-radio-bridge.js +30 -7
- package/build/esm/usb-radio-bridge.js.map +1 -1
- package/build/esm/usb.js +25 -28
- package/build/esm/usb.js.map +1 -1
- package/package.json +3 -3
package/build/cjs/device.d.ts
CHANGED
|
@@ -4,6 +4,11 @@
|
|
|
4
4
|
* SPDX-License-Identifier: MIT
|
|
5
5
|
*/
|
|
6
6
|
import { TypedEventTarget, ValueIsEvent } from "./events.js";
|
|
7
|
+
/**
|
|
8
|
+
* Connection availability status returned by checkAvailability().
|
|
9
|
+
* Used for pre-flight UX decisions before attempting to connect.
|
|
10
|
+
*/
|
|
11
|
+
export type ConnectionAvailabilityStatus = "available" | "unsupported" | "disabled" | "permission-denied" | "location-disabled";
|
|
7
12
|
/**
|
|
8
13
|
* Specific identified error types.
|
|
9
14
|
*
|
|
@@ -46,14 +51,6 @@ export type DeviceErrorCode =
|
|
|
46
51
|
* Failed to establish Bluetooth connection.
|
|
47
52
|
*/
|
|
48
53
|
| "bluetooth-connection-failed"
|
|
49
|
-
/**
|
|
50
|
-
* Bluetooth is disabled on the device.
|
|
51
|
-
*/
|
|
52
|
-
| "bluetooth-disabled"
|
|
53
|
-
/**
|
|
54
|
-
* Missing required Bluetooth permissions.
|
|
55
|
-
*/
|
|
56
|
-
| "bluetooth-missing-permissions"
|
|
57
54
|
/**
|
|
58
55
|
* Partial flash operation failed.
|
|
59
56
|
*/
|
|
@@ -65,7 +62,27 @@ export type DeviceErrorCode =
|
|
|
65
62
|
/**
|
|
66
63
|
* Flash operation was cancelled.
|
|
67
64
|
*/
|
|
68
|
-
| "flash-cancelled"
|
|
65
|
+
| "flash-cancelled"
|
|
66
|
+
/**
|
|
67
|
+
* Connection type is not supported on this platform/browser.
|
|
68
|
+
* Aligns with ConnectionAvailabilityStatus "unsupported".
|
|
69
|
+
*/
|
|
70
|
+
| "unsupported"
|
|
71
|
+
/**
|
|
72
|
+
* Connection is disabled (e.g., Bluetooth turned off).
|
|
73
|
+
* Aligns with ConnectionAvailabilityStatus "disabled".
|
|
74
|
+
*/
|
|
75
|
+
| "disabled"
|
|
76
|
+
/**
|
|
77
|
+
* Required permissions were denied.
|
|
78
|
+
* Aligns with ConnectionAvailabilityStatus "permission-denied".
|
|
79
|
+
*/
|
|
80
|
+
| "permission-denied"
|
|
81
|
+
/**
|
|
82
|
+
* Location services are disabled (Android < 12 only).
|
|
83
|
+
* Aligns with ConnectionAvailabilityStatus "location-disabled".
|
|
84
|
+
*/
|
|
85
|
+
| "location-disabled";
|
|
69
86
|
export declare enum ProgressStage {
|
|
70
87
|
Initializing = "Initializing",
|
|
71
88
|
FindingDevice = "FindingDevice",
|
|
@@ -108,23 +125,17 @@ export declare class DeviceError extends Error {
|
|
|
108
125
|
});
|
|
109
126
|
}
|
|
110
127
|
/**
|
|
111
|
-
* Tracks connection status
|
|
128
|
+
* Tracks connection status.
|
|
112
129
|
*/
|
|
113
130
|
export declare enum ConnectionStatus {
|
|
114
131
|
/**
|
|
115
|
-
*
|
|
116
|
-
*
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
/**
|
|
120
|
-
* Not supported.
|
|
121
|
-
*/
|
|
122
|
-
NOT_SUPPORTED = "NOT_SUPPORTED",
|
|
123
|
-
/**
|
|
124
|
-
* Supported but no device available.
|
|
132
|
+
* No device available.
|
|
133
|
+
*
|
|
134
|
+
* This is the initial status and will be the case even when a device is
|
|
135
|
+
* physically connected but has not been connected via the browser security UI.
|
|
125
136
|
*
|
|
126
|
-
*
|
|
127
|
-
*
|
|
137
|
+
* Use checkAvailability() to determine whether the connection type is
|
|
138
|
+
* supported before attempting to connect.
|
|
128
139
|
*/
|
|
129
140
|
NO_AUTHORIZED_DEVICE = "NO_AUTHORIZED_DEVICE",
|
|
130
141
|
/**
|
|
@@ -143,7 +154,13 @@ export declare enum ConnectionStatus {
|
|
|
143
154
|
* Reconnecting. When there is unexpected disruption in the connection,
|
|
144
155
|
* a reconnection is attempted.
|
|
145
156
|
*/
|
|
146
|
-
RECONNECTING = "RECONNECTING"
|
|
157
|
+
RECONNECTING = "RECONNECTING",
|
|
158
|
+
/**
|
|
159
|
+
* Paused due to tab visibility. The connection was temporarily suspended
|
|
160
|
+
* because the browser tab became hidden. Reconnection will be attempted
|
|
161
|
+
* automatically when the tab becomes visible again.
|
|
162
|
+
*/
|
|
163
|
+
PAUSED = "PAUSED"
|
|
147
164
|
}
|
|
148
165
|
export interface ConnectOptions {
|
|
149
166
|
/**
|
|
@@ -176,7 +193,8 @@ export type FlashDataSource = (boardVersion: BoardVersion) => Promise<string | U
|
|
|
176
193
|
export type BoardVersion = "V1" | "V2";
|
|
177
194
|
export declare class ConnectionStatusEvent extends Event {
|
|
178
195
|
readonly status: ConnectionStatus;
|
|
179
|
-
|
|
196
|
+
readonly previousStatus: ConnectionStatus;
|
|
197
|
+
constructor(status: ConnectionStatus, previousStatus: ConnectionStatus);
|
|
180
198
|
}
|
|
181
199
|
export declare class BeforeRequestDevice extends Event {
|
|
182
200
|
constructor();
|
|
@@ -201,6 +219,15 @@ export interface DeviceConnection<M extends ValueIsEvent<M>> extends TypedEventT
|
|
|
201
219
|
* Initializes the device.
|
|
202
220
|
*/
|
|
203
221
|
initialize(): Promise<void>;
|
|
222
|
+
/**
|
|
223
|
+
* Checks if this connection type is currently available.
|
|
224
|
+
*
|
|
225
|
+
* Use this for pre-flight UX decisions (e.g., showing "enable Bluetooth" dialog).
|
|
226
|
+
* Note: Even if this returns "available", connect() can still fail.
|
|
227
|
+
*
|
|
228
|
+
* @returns A promise resolving to the current availability status.
|
|
229
|
+
*/
|
|
230
|
+
checkAvailability(): Promise<ConnectionAvailabilityStatus>;
|
|
204
231
|
/**
|
|
205
232
|
* Removes all listeners.
|
|
206
233
|
*/
|
package/build/cjs/device.js
CHANGED
|
@@ -32,24 +32,18 @@ class DeviceError extends Error {
|
|
|
32
32
|
}
|
|
33
33
|
exports.DeviceError = DeviceError;
|
|
34
34
|
/**
|
|
35
|
-
* Tracks connection status
|
|
35
|
+
* Tracks connection status.
|
|
36
36
|
*/
|
|
37
37
|
var ConnectionStatus;
|
|
38
38
|
(function (ConnectionStatus) {
|
|
39
39
|
/**
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
/**
|
|
45
|
-
* Not supported.
|
|
46
|
-
*/
|
|
47
|
-
ConnectionStatus["NOT_SUPPORTED"] = "NOT_SUPPORTED";
|
|
48
|
-
/**
|
|
49
|
-
* Supported but no device available.
|
|
40
|
+
* No device available.
|
|
41
|
+
*
|
|
42
|
+
* This is the initial status and will be the case even when a device is
|
|
43
|
+
* physically connected but has not been connected via the browser security UI.
|
|
50
44
|
*
|
|
51
|
-
*
|
|
52
|
-
*
|
|
45
|
+
* Use checkAvailability() to determine whether the connection type is
|
|
46
|
+
* supported before attempting to connect.
|
|
53
47
|
*/
|
|
54
48
|
ConnectionStatus["NO_AUTHORIZED_DEVICE"] = "NO_AUTHORIZED_DEVICE";
|
|
55
49
|
/**
|
|
@@ -69,12 +63,18 @@ var ConnectionStatus;
|
|
|
69
63
|
* a reconnection is attempted.
|
|
70
64
|
*/
|
|
71
65
|
ConnectionStatus["RECONNECTING"] = "RECONNECTING";
|
|
66
|
+
/**
|
|
67
|
+
* Paused due to tab visibility. The connection was temporarily suspended
|
|
68
|
+
* because the browser tab became hidden. Reconnection will be attempted
|
|
69
|
+
* automatically when the tab becomes visible again.
|
|
70
|
+
*/
|
|
71
|
+
ConnectionStatus["PAUSED"] = "PAUSED";
|
|
72
72
|
})(ConnectionStatus || (exports.ConnectionStatus = ConnectionStatus = {}));
|
|
73
73
|
class FlashDataError extends Error {
|
|
74
74
|
}
|
|
75
75
|
exports.FlashDataError = FlashDataError;
|
|
76
76
|
class ConnectionStatusEvent extends Event {
|
|
77
|
-
constructor(status) {
|
|
77
|
+
constructor(status, previousStatus) {
|
|
78
78
|
super("status");
|
|
79
79
|
Object.defineProperty(this, "status", {
|
|
80
80
|
enumerable: true,
|
|
@@ -82,6 +82,12 @@ class ConnectionStatusEvent extends Event {
|
|
|
82
82
|
writable: true,
|
|
83
83
|
value: status
|
|
84
84
|
});
|
|
85
|
+
Object.defineProperty(this, "previousStatus", {
|
|
86
|
+
enumerable: true,
|
|
87
|
+
configurable: true,
|
|
88
|
+
writable: true,
|
|
89
|
+
value: previousStatus
|
|
90
|
+
});
|
|
85
91
|
}
|
|
86
92
|
}
|
|
87
93
|
exports.ConnectionStatusEvent = ConnectionStatusEvent;
|
package/build/cjs/device.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device.js","sourceRoot":"","sources":["../../lib/device.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"device.js","sourceRoot":"","sources":["../../lib/device.ts"],"names":[],"mappings":";;;AA6FA,IAAY,aAMX;AAND,WAAY,aAAa;IACvB,8CAA6B,CAAA;IAC7B,gDAA+B,CAAA;IAC/B,0CAAyB,CAAA;IACzB,oDAAmC,CAAA;IACnC,8CAA6B,CAAA;AAC/B,CAAC,EANW,aAAa,6BAAb,aAAa,QAMxB;AAwBD;;;;;;;;GAQG;AACH,MAAa,WAAY,SAAQ,KAAK;IAEpC,YAAY,EAAE,IAAI,EAAE,OAAO,EAA+C;QACxE,KAAK,CAAC,OAAO,CAAC,CAAC;QAFjB;;;;;WAAsB;QAGpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAND,kCAMC;AAED;;GAEG;AACH,IAAY,gBAkCX;AAlCD,WAAY,gBAAgB;IAC1B;;;;;;;;OAQG;IACH,iEAA6C,CAAA;IAC7C;;OAEG;IACH,iDAA6B,CAAA;IAC7B;;OAEG;IACH,2CAAuB,CAAA;IACvB;;OAEG;IACH,6CAAyB,CAAA;IACzB;;;OAGG;IACH,iDAA6B,CAAA;IAC7B;;;;OAIG;IACH,qCAAiB,CAAA;AACnB,CAAC,EAlCW,gBAAgB,gCAAhB,gBAAgB,QAkC3B;AA6BD,MAAa,cAAe,SAAQ,KAAK;CAAG;AAA5C,wCAA4C;AAQ5C,MAAa,qBAAsB,SAAQ,KAAK;IAC9C,YACkB,MAAwB,EACxB,cAAgC;QAEhD,KAAK,CAAC,QAAQ,CAAC,CAAC;QAHhB;;;;mBAAgB,MAAM;WAAkB;QACxC;;;;mBAAgB,cAAc;WAAkB;IAGlD,CAAC;CACF;AAPD,sDAOC;AAED,MAAa,mBAAoB,SAAQ,KAAK;IAC5C;QACE,KAAK,CAAC,qBAAqB,CAAC,CAAC;IAC/B,CAAC;CACF;AAJD,kDAIC;AAED,MAAa,kBAAmB,SAAQ,KAAK;IAC3C;QACE,KAAK,CAAC,oBAAoB,CAAC,CAAC;IAC9B,CAAC;CACF;AAJD,gDAIC;AAED,MAAa,oBAAqB,SAAQ,KAAK;IAC7C,YACkB,YAAoB,EACpB,KAAe;QAE/B,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAHzB;;;;mBAAgB,YAAY;WAAQ;QACpC;;;;mBAAgB,KAAK;WAAU;IAGjC,CAAC;CACF;AAPD,oDAOC;AAED,MAAa,wBAAwB;IAArC;QACE,4BAAA,QAAQ;;;;;WAAwB;QAChC,4BAAA,iBAAiB;;;;;WAAuB;QACxC,4BAAA,qBAAqB;;;;;WAAQ;QAC7B,4BAAA,oBAAoB;;;;;WAAQ;IAC9B,CAAC;CAAA;AALD,4DAKC"}
|
package/build/cjs/dfu-service.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.DfuService = exports.NORDIC_DFU_SERVICE = void 0;
|
|
4
4
|
const bluetooth_le_1 = require("@capacitor-community/bluetooth-le");
|
|
5
|
-
const
|
|
5
|
+
const bluetooth_profile_js_1 = require("./bluetooth-profile.js");
|
|
6
6
|
// This is the service that should be available on V1 after the reboot.
|
|
7
7
|
// We don't use it directly (the Nordic DFU library does) but we check it's there.
|
|
8
8
|
exports.NORDIC_DFU_SERVICE = "00001530-1212-EFDE-1523-785FEABCD123";
|
|
@@ -19,7 +19,7 @@ class DfuService {
|
|
|
19
19
|
* We do this for V1 only.
|
|
20
20
|
*/
|
|
21
21
|
async requestRebootToBootloader() {
|
|
22
|
-
await bluetooth_le_1.BleClient.write(this.deviceId,
|
|
22
|
+
await bluetooth_le_1.BleClient.write(this.deviceId, bluetooth_profile_js_1.profile.dfuControl.id, bluetooth_profile_js_1.profile.dfuControl.characteristics.control.id, (0, bluetooth_le_1.numbersToDataView)([0x01]));
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
25
|
exports.DfuService = DfuService;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dfu-service.js","sourceRoot":"","sources":["../../lib/dfu-service.ts"],"names":[],"mappings":";;;AAAA,oEAG2C;AAC3C,
|
|
1
|
+
{"version":3,"file":"dfu-service.js","sourceRoot":"","sources":["../../lib/dfu-service.ts"],"names":[],"mappings":";;;AAAA,oEAG2C;AAC3C,iEAAiD;AAEjD,uEAAuE;AACvE,kFAAkF;AACrE,QAAA,kBAAkB,GAAG,sCAAsC,CAAC;AAEzE,MAAa,UAAU;IACrB,YAAoB,QAAgB;QAAxB;;;;mBAAQ,QAAQ;WAAQ;IAAG,CAAC;IAExC;;OAEG;IACH,KAAK,CAAC,yBAAyB;QAC7B,MAAM,wBAAS,CAAC,KAAK,CACnB,IAAI,CAAC,QAAQ,EACb,8BAAO,CAAC,UAAU,CAAC,EAAE,EACrB,8BAAO,CAAC,UAAU,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,EAC7C,IAAA,gCAAiB,EAAC,CAAC,IAAI,CAAC,CAAC,CAC1B,CAAC;IACJ,CAAC;CACF;AAdD,gCAcC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import MemoryMap from "nrf-intel-hex";
|
|
2
|
-
import { BoardVersion, ProgressCallback } from "../device";
|
|
3
|
-
import { BluetoothDeviceWrapper } from "../bluetooth-device-wrapper";
|
|
2
|
+
import { BoardVersion, ProgressCallback } from "../device.js";
|
|
3
|
+
import { BluetoothDeviceWrapper } from "../bluetooth-device-wrapper.js";
|
|
4
4
|
/**
|
|
5
5
|
* Perform a full flash via Nordic's DFU service.
|
|
6
6
|
*
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.fullFlash = fullFlash;
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
const
|
|
4
|
+
const device_js_1 = require("../device.js");
|
|
5
|
+
const dfu_service_js_1 = require("../dfu-service.js");
|
|
6
|
+
const flashing_v1_js_1 = require("./flashing-v1.js");
|
|
7
|
+
const nordic_dfu_js_1 = require("./nordic-dfu.js");
|
|
8
|
+
const async_util_js_1 = require("../async-util.js");
|
|
9
9
|
/**
|
|
10
10
|
* Perform a full flash via Nordic's DFU service.
|
|
11
11
|
*
|
|
@@ -18,18 +18,18 @@ const async_util_1 = require("../async-util");
|
|
|
18
18
|
*/
|
|
19
19
|
async function fullFlash(connection, boardVersion, memoryMap, progress) {
|
|
20
20
|
connection.log("Full flash");
|
|
21
|
-
progress(
|
|
21
|
+
progress(device_js_1.ProgressStage.FullFlashing);
|
|
22
22
|
const { deviceId } = connection.device;
|
|
23
23
|
try {
|
|
24
24
|
if (boardVersion === "V1") {
|
|
25
25
|
connection.log("Rebooting V1 to bootloader");
|
|
26
|
-
const dfuService = new
|
|
26
|
+
const dfuService = new dfu_service_js_1.DfuService(deviceId);
|
|
27
27
|
try {
|
|
28
28
|
await dfuService.requestRebootToBootloader();
|
|
29
29
|
}
|
|
30
30
|
catch (e) {
|
|
31
31
|
connection.error("Failed to request reboot to bootloader", e);
|
|
32
|
-
throw new
|
|
32
|
+
throw new device_js_1.DeviceError({
|
|
33
33
|
code: "flash-full-failed",
|
|
34
34
|
message: e instanceof Error ? e.message : "Failed to reboot to bootloader",
|
|
35
35
|
});
|
|
@@ -44,26 +44,26 @@ async function fullFlash(connection, boardVersion, memoryMap, progress) {
|
|
|
44
44
|
await connection.disconnect();
|
|
45
45
|
}
|
|
46
46
|
// Give device time to disconnect and reboot into bootloader mode
|
|
47
|
-
await (0,
|
|
47
|
+
await (0, async_util_js_1.delay)(2500);
|
|
48
48
|
// Reconnect to device now in bootloader mode
|
|
49
|
-
progress(
|
|
49
|
+
progress(device_js_1.ProgressStage.Connecting);
|
|
50
50
|
await connection.connect();
|
|
51
|
-
await (0,
|
|
51
|
+
await (0, flashing_v1_js_1.refreshServicesForV1IfDesiredServiceMissing)(deviceId, dfu_service_js_1.NORDIC_DFU_SERVICE);
|
|
52
52
|
}
|
|
53
53
|
}
|
|
54
54
|
finally {
|
|
55
55
|
// The Nordic code opens its own connection.
|
|
56
56
|
await connection.disconnect();
|
|
57
57
|
// If we've previously been connected, maybe this helps???
|
|
58
|
-
await (0,
|
|
58
|
+
await (0, async_util_js_1.delay)(3000);
|
|
59
59
|
}
|
|
60
60
|
const appBin = createAppBin(memoryMap, boardVersion);
|
|
61
61
|
if (appBin === null) {
|
|
62
62
|
connection.log("Invalid hex (app bin case)");
|
|
63
|
-
throw new
|
|
63
|
+
throw new device_js_1.FlashDataError("Invalid hex data: could not extract app binary");
|
|
64
64
|
}
|
|
65
65
|
connection.log(`Extracted app bin: ${appBin.length} bytes`);
|
|
66
|
-
await (0,
|
|
66
|
+
await (0, nordic_dfu_js_1.flashDfu)(connection, boardVersion, appBin, progress);
|
|
67
67
|
}
|
|
68
68
|
const createAppBin = (memoryMap, boardVersion) => {
|
|
69
69
|
const appRegionBoundaries = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flashing-full.js","sourceRoot":"","sources":["../../../lib/flashing/flashing-full.ts"],"names":[],"mappings":";;AAwBA,8BA+DC;AAtFD,
|
|
1
|
+
{"version":3,"file":"flashing-full.js","sourceRoot":"","sources":["../../../lib/flashing/flashing-full.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import MemoryMap from "nrf-intel-hex";
|
|
2
|
-
import { BluetoothDeviceWrapper } from "../bluetooth-device-wrapper";
|
|
3
|
-
import { ProgressCallback } from "../device";
|
|
2
|
+
import { BluetoothDeviceWrapper } from "../bluetooth-device-wrapper.js";
|
|
3
|
+
import { ProgressCallback } from "../device.js";
|
|
4
4
|
export declare enum PartialFlashResult {
|
|
5
5
|
Success = "Success",
|
|
6
6
|
AttemptFullFlash = "AttemptFullFlash"
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.PartialFlashResult = void 0;
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
const
|
|
4
|
+
const partial_flashing_service_js_1 = require("../partial-flashing-service.js");
|
|
5
|
+
const flashing_makecode_js_1 = require("./flashing-makecode.js");
|
|
6
|
+
const async_util_js_1 = require("../async-util.js");
|
|
7
|
+
const device_js_1 = require("../device.js");
|
|
8
8
|
var PartialFlashResult;
|
|
9
9
|
(function (PartialFlashResult) {
|
|
10
10
|
PartialFlashResult["Success"] = "Success";
|
|
11
11
|
PartialFlashResult["AttemptFullFlash"] = "AttemptFullFlash";
|
|
12
12
|
})(PartialFlashResult || (exports.PartialFlashResult = PartialFlashResult = {}));
|
|
13
13
|
const partialFlash = async (connection, memoryMap, progress) => {
|
|
14
|
-
const pf = new
|
|
14
|
+
const pf = new partial_flashing_service_js_1.PartialFlashingService(connection);
|
|
15
15
|
await pf.startNotifications();
|
|
16
16
|
const result = await connection.raceDisconnectAndTimeout(partialFlashInternal(connection, pf, memoryMap, progress), { timeout: 30_000, actionName: "partial flash" });
|
|
17
17
|
try {
|
|
@@ -19,7 +19,7 @@ const partialFlash = async (connection, memoryMap, progress) => {
|
|
|
19
19
|
}
|
|
20
20
|
catch (e) {
|
|
21
21
|
// V1 disconnects quickly after a partial flash.
|
|
22
|
-
if (!(e instanceof
|
|
22
|
+
if (!(e instanceof async_util_js_1.DisconnectError)) {
|
|
23
23
|
connection.error("Error stopping notifications", e);
|
|
24
24
|
}
|
|
25
25
|
}
|
|
@@ -27,20 +27,20 @@ const partialFlash = async (connection, memoryMap, progress) => {
|
|
|
27
27
|
};
|
|
28
28
|
const partialFlashInternal = async (connection, pf, memoryMap, progress) => {
|
|
29
29
|
connection.log("Partial flash");
|
|
30
|
-
progress(
|
|
30
|
+
progress(device_js_1.ProgressStage.PartialFlashing);
|
|
31
31
|
try {
|
|
32
|
-
const deviceCodeRegion = await pf.getRegionInfo(
|
|
32
|
+
const deviceCodeRegion = await pf.getRegionInfo(partial_flashing_service_js_1.RegionId.MakeCode);
|
|
33
33
|
if (deviceCodeRegion === null) {
|
|
34
34
|
connection.log("Could not read code region");
|
|
35
35
|
return PartialFlashResult.AttemptFullFlash;
|
|
36
36
|
}
|
|
37
|
-
const deviceDalRegion = await pf.getRegionInfo(
|
|
37
|
+
const deviceDalRegion = await pf.getRegionInfo(partial_flashing_service_js_1.RegionId.Dal);
|
|
38
38
|
if (deviceDalRegion === null) {
|
|
39
39
|
connection.log("Could not read DAL region");
|
|
40
40
|
return PartialFlashResult.AttemptFullFlash;
|
|
41
41
|
}
|
|
42
|
-
progress(
|
|
43
|
-
const fileCodeRegion = (0,
|
|
42
|
+
progress(device_js_1.ProgressStage.PartialFlashing);
|
|
43
|
+
const fileCodeRegion = (0, flashing_makecode_js_1.findMakeCodeRegionInMemoryMap)(memoryMap, deviceCodeRegion);
|
|
44
44
|
if (fileCodeRegion === null) {
|
|
45
45
|
connection.log("No partial flash data");
|
|
46
46
|
return PartialFlashResult.AttemptFullFlash;
|
|
@@ -64,31 +64,31 @@ const partialFlashInternal = async (connection, pf, memoryMap, progress) => {
|
|
|
64
64
|
}
|
|
65
65
|
else {
|
|
66
66
|
const result = await pf.writeFlashForNotification(memoryMap, batchStartAddress, packetDataOffset, packetNumber, packetInBatch);
|
|
67
|
-
if (result ===
|
|
67
|
+
if (result === partial_flashing_service_js_1.PacketState.Retransmit) {
|
|
68
68
|
// Retry the whole 64 bytes.
|
|
69
69
|
connection.log(`Retransmit requested at offset ${offset}`);
|
|
70
70
|
continue outer;
|
|
71
71
|
}
|
|
72
72
|
else {
|
|
73
|
-
progress(
|
|
73
|
+
progress(device_js_1.ProgressStage.PartialFlashing, (offset - fileCodeRegion.start) /
|
|
74
74
|
(fileCodeRegion.end - fileCodeRegion.start));
|
|
75
75
|
}
|
|
76
76
|
}
|
|
77
77
|
}
|
|
78
78
|
offset += 64;
|
|
79
79
|
}
|
|
80
|
-
await (0,
|
|
80
|
+
await (0, async_util_js_1.delay)(100); // allow time for write to complete
|
|
81
81
|
await pf.writeEndOfFlashPacket();
|
|
82
|
-
await (0,
|
|
83
|
-
progress(
|
|
82
|
+
await (0, async_util_js_1.delay)(100); // allow time for write to complete
|
|
83
|
+
progress(device_js_1.ProgressStage.PartialFlashing, 1);
|
|
84
84
|
return PartialFlashResult.Success;
|
|
85
85
|
}
|
|
86
86
|
catch (e) {
|
|
87
87
|
connection.error("Partial flash failed", e);
|
|
88
|
-
if (e instanceof
|
|
88
|
+
if (e instanceof device_js_1.DeviceError) {
|
|
89
89
|
throw e;
|
|
90
90
|
}
|
|
91
|
-
throw new
|
|
91
|
+
throw new device_js_1.DeviceError({
|
|
92
92
|
code: "flash-partial-failed",
|
|
93
93
|
message: e instanceof Error ? e.message : String(e),
|
|
94
94
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flashing-partial.js","sourceRoot":"","sources":["../../../lib/flashing/flashing-partial.ts"],"names":[],"mappings":";;;AAEA,
|
|
1
|
+
{"version":3,"file":"flashing-partial.js","sourceRoot":"","sources":["../../../lib/flashing/flashing-partial.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { BluetoothDeviceWrapper } from "../bluetooth-device-wrapper";
|
|
2
|
-
import { BoardVersion, ProgressCallback } from "../device";
|
|
1
|
+
import { BluetoothDeviceWrapper } from "../bluetooth-device-wrapper.js";
|
|
2
|
+
import { BoardVersion, ProgressCallback } from "../device.js";
|
|
3
3
|
export declare function flashDfu(connection: BluetoothDeviceWrapper, boardVersion: BoardVersion, appBin: Uint8Array, progress: ProgressCallback): Promise<void>;
|
|
@@ -4,8 +4,8 @@ exports.flashDfu = flashDfu;
|
|
|
4
4
|
const core_1 = require("@capacitor/core");
|
|
5
5
|
const filesystem_1 = require("@capacitor/filesystem");
|
|
6
6
|
const capacitor_community_nordic_dfu_1 = require("@microbit/capacitor-community-nordic-dfu");
|
|
7
|
-
const
|
|
8
|
-
const
|
|
7
|
+
const zip_js_1 = require("./zip.js");
|
|
8
|
+
const device_js_1 = require("../device.js");
|
|
9
9
|
const appBinFilename = "application.bin";
|
|
10
10
|
const appDatFilename = "application.dat";
|
|
11
11
|
const manifestData = JSON.stringify({
|
|
@@ -32,7 +32,7 @@ async function writeCacheFile(options) {
|
|
|
32
32
|
async function createDfuZipFile(boardVersion, appBin) {
|
|
33
33
|
const createInitPacket = boardVersion === "V1" ? createLegacyInitPacketV1 : createInitPacketV2;
|
|
34
34
|
const encoder = new TextEncoder();
|
|
35
|
-
const zipData = (0,
|
|
35
|
+
const zipData = (0, zip_js_1.createZip)([
|
|
36
36
|
{ name: appDatFilename, data: createInitPacket(appBin) },
|
|
37
37
|
{ name: appBinFilename, data: appBin },
|
|
38
38
|
{ name: "manifest.json", data: encoder.encode(manifestData) },
|
|
@@ -68,12 +68,12 @@ async function flashDfu(connection, boardVersion, appBin, progress) {
|
|
|
68
68
|
listener = await capacitor_community_nordic_dfu_1.NordicDfu.addListener("DFUStateChanged", ({ state, data }) => {
|
|
69
69
|
switch (state) {
|
|
70
70
|
case capacitor_community_nordic_dfu_1.DfuState.DFU_COMPLETED: {
|
|
71
|
-
progress(
|
|
71
|
+
progress(device_js_1.ProgressStage.FullFlashing, 1);
|
|
72
72
|
resolve();
|
|
73
73
|
break;
|
|
74
74
|
}
|
|
75
75
|
case capacitor_community_nordic_dfu_1.DfuState.DFU_ABORTED: {
|
|
76
|
-
reject(new
|
|
76
|
+
reject(new device_js_1.DeviceError({
|
|
77
77
|
code: "flash-cancelled",
|
|
78
78
|
message: "Flash operation was cancelled",
|
|
79
79
|
}));
|
|
@@ -81,12 +81,12 @@ async function flashDfu(connection, boardVersion, appBin, progress) {
|
|
|
81
81
|
}
|
|
82
82
|
case capacitor_community_nordic_dfu_1.DfuState.DFU_PROGRESS: {
|
|
83
83
|
if (typeof data.percent === "number") {
|
|
84
|
-
progress(
|
|
84
|
+
progress(device_js_1.ProgressStage.FullFlashing, data.percent / 100);
|
|
85
85
|
}
|
|
86
86
|
break;
|
|
87
87
|
}
|
|
88
88
|
case capacitor_community_nordic_dfu_1.DfuState.DFU_FAILED: {
|
|
89
|
-
reject(new
|
|
89
|
+
reject(new device_js_1.DeviceError({
|
|
90
90
|
code: "flash-full-failed",
|
|
91
91
|
message: "Full flash via DFU failed",
|
|
92
92
|
}));
|
|
@@ -120,7 +120,7 @@ async function flashDfu(connection, boardVersion, appBin, progress) {
|
|
|
120
120
|
});
|
|
121
121
|
if (error) {
|
|
122
122
|
connection.error(`DFU Error: ${error.message}`, error);
|
|
123
|
-
reject(new
|
|
123
|
+
reject(new device_js_1.DeviceError({
|
|
124
124
|
code: "flash-full-failed",
|
|
125
125
|
message: error.message || "Full flash via DFU failed",
|
|
126
126
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nordic-dfu.js","sourceRoot":"","sources":["../../../lib/flashing/nordic-dfu.ts"],"names":[],"mappings":";;AAiFA,4BAyFC;AA1KD,0CAAkE;AAClE,sDAAgF;AAChF,6FAA+E;AAE/E
|
|
1
|
+
{"version":3,"file":"nordic-dfu.js","sourceRoot":"","sources":["../../../lib/flashing/nordic-dfu.ts"],"names":[],"mappings":"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"}
|
package/build/cjs/index.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { AccelerometerData, AccelerometerDataEvent } from "./accelerometer.js";
|
|
|
2
2
|
import { createWebBluetoothConnection, MicrobitWebBluetoothConnection, MicrobitWebBluetoothConnectionOptions } from "./bluetooth.js";
|
|
3
3
|
import { BoardId } from "./board-id.js";
|
|
4
4
|
import { ButtonEvent, ButtonEventType, ButtonState } from "./buttons.js";
|
|
5
|
-
import { AfterRequestDevice, BackgroundErrorEvent, BeforeRequestDevice, BoardVersion, ConnectOptions, ConnectionStatus, ConnectionStatusEvent, DeviceConnection, DeviceConnectionEventMap, DeviceError, DeviceErrorCode, FlashDataError, FlashDataSource, FlashOptions, ProgressCallback, ProgressStage } from "./device.js";
|
|
5
|
+
import { AfterRequestDevice, BackgroundErrorEvent, BeforeRequestDevice, BoardVersion, ConnectOptions, ConnectionAvailabilityStatus, ConnectionStatus, ConnectionStatusEvent, DeviceConnection, DeviceConnectionEventMap, DeviceError, DeviceErrorCode, FlashDataError, FlashDataSource, FlashOptions, ProgressCallback, ProgressStage } from "./device.js";
|
|
6
6
|
import { TypedEventTarget } from "./events.js";
|
|
7
7
|
import { createUniversalHexFlashDataSource } from "./hex-flash-data-source.js";
|
|
8
8
|
import { LedMatrix } from "./led.js";
|
|
@@ -14,4 +14,4 @@ import { UARTDataEvent } from "./uart.js";
|
|
|
14
14
|
import { createRadioBridgeConnection, MicrobitRadioBridgeConnection, MicrobitRadioBridgeConnectionOptions } from "./usb-radio-bridge.js";
|
|
15
15
|
import { createWebUSBConnection, DeviceSelectionMode, MicrobitWebUSBConnection, MicrobitWebUSBConnectionOptions } from "./usb.js";
|
|
16
16
|
export { AfterRequestDevice, BackgroundErrorEvent, BeforeRequestDevice, BoardId, ConnectionStatus, ConnectionStatusEvent, createRadioBridgeConnection, createUniversalHexFlashDataSource, createWebBluetoothConnection, createWebUSBConnection, DeviceConnectionEventMap, DeviceSelectionMode, DeviceError, FlashDataError, FlashEvent, ProgressStage, SerialConnectionEventMap, SerialDataEvent, SerialErrorEvent, SerialResetEvent, ServiceConnectionEventMap, TypedEventTarget, UARTDataEvent, };
|
|
17
|
-
export type { AccelerometerData, AccelerometerDataEvent, BoardVersion, ButtonEvent, ButtonEventType, ButtonState, ConnectOptions, DeviceConnection, DeviceErrorCode, FlashDataSource, FlashOptions, LedMatrix, Logging, LoggingEvent, MagnetometerData, MagnetometerDataEvent, MicrobitRadioBridgeConnection, MicrobitRadioBridgeConnectionOptions, MicrobitWebBluetoothConnection, MicrobitWebBluetoothConnectionOptions, MicrobitWebUSBConnection, MicrobitWebUSBConnectionOptions, ProgressCallback, };
|
|
17
|
+
export type { AccelerometerData, AccelerometerDataEvent, BoardVersion, ConnectionAvailabilityStatus, ButtonEvent, ButtonEventType, ButtonState, ConnectOptions, DeviceConnection, DeviceErrorCode, FlashDataSource, FlashOptions, LedMatrix, Logging, LoggingEvent, MagnetometerData, MagnetometerDataEvent, MicrobitRadioBridgeConnection, MicrobitRadioBridgeConnectionOptions, MicrobitWebBluetoothConnection, MicrobitWebBluetoothConnectionOptions, MicrobitWebUSBConnection, MicrobitWebUSBConnectionOptions, ProgressCallback, };
|
package/build/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../lib/index.ts"],"names":[],"mappings":";;;AACA,iDAIwB;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../lib/index.ts"],"names":[],"mappings":";;;AACA,iDAIwB;AAyDtB,6GA5DA,2CAA4B,OA4DA;AAxD9B,+CAAwC;AAmDtC,wFAnDO,qBAAO,OAmDP;AAjDT,2CAkBqB;AA4BnB,mGA7CA,8BAAkB,OA6CA;AAClB,qGA7CA,gCAAoB,OA6CA;AACpB,oGA7CA,+BAAmB,OA6CA;AAEnB,iGA3CA,4BAAgB,OA2CA;AAChB,sGA3CA,iCAAqB,OA2CA;AAKrB,yGA9CA,oCAAwB,OA8CA;AAExB,4FA/CA,uBAAW,OA+CA;AACX,+FA9CA,0BAAc,OA8CA;AAEd,8FA5CA,yBAAa,OA4CA;AA1Cf,2CAA+C;AAgD7C,iGAhDO,4BAAgB,OAgDP;AA/ClB,yEAA+E;AAiC7E,kHAjCO,4DAAiC,OAiCP;AA7BnC,yDAM4B;AA8B1B,2FAnCA,6BAAU,OAmCA;AAEV,yGApCA,2CAAwB,OAoCA;AACxB,gGApCA,kCAAe,OAoCA;AACf,iGApCA,mCAAgB,OAoCA;AAChB,iGApCA,mCAAgB,OAoCA;AAlClB,2DAAgE;AAmC9D,0GAnCO,6CAAyB,OAmCP;AAlC3B,uCAA0C;AAoCxC,8FApCO,uBAAa,OAoCP;AAnCf,+DAI+B;AAe7B,4GAlBA,iDAA2B,OAkBA;AAd7B,qCAKkB;AAYhB,uGAhBA,+BAAsB,OAgBA;AAEtB,oGAjBA,4BAAmB,OAiBA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { TimeoutOptions } from "@capacitor-community/bluetooth-le";
|
|
2
2
|
import MemoryMap from "nrf-intel-hex";
|
|
3
|
-
import { BluetoothDeviceWrapper } from "./bluetooth-device-wrapper";
|
|
3
|
+
import { BluetoothDeviceWrapper } from "./bluetooth-device-wrapper.js";
|
|
4
4
|
export declare const enum MicroBitMode {
|
|
5
5
|
Pairing = 0,
|
|
6
6
|
Application = 1
|