@microbit/microbit-connection 0.9.0-apps.alpha.17 → 0.9.0-apps.alpha.19
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/async-util.d.ts +3 -1
- package/build/cjs/async-util.js +5 -1
- package/build/cjs/async-util.js.map +1 -1
- package/build/cjs/bluetooth/ble-error.d.ts +10 -0
- package/build/cjs/bluetooth/ble-error.js +47 -0
- package/build/cjs/bluetooth/ble-error.js.map +1 -0
- package/build/cjs/bluetooth/connection.d.ts +263 -3
- package/build/cjs/bluetooth/connection.js +78 -21
- package/build/cjs/bluetooth/connection.js.map +1 -1
- package/build/cjs/bluetooth/device-wrapper.d.ts +6 -0
- package/build/cjs/bluetooth/device-wrapper.js +30 -7
- package/build/cjs/bluetooth/device-wrapper.js.map +1 -1
- package/build/cjs/bluetooth/flashing/flashing-full.js +2 -1
- package/build/cjs/bluetooth/flashing/flashing-full.js.map +1 -1
- package/build/cjs/bluetooth/flashing/flashing-partial.js +2 -1
- package/build/cjs/bluetooth/flashing/flashing-partial.js.map +1 -1
- package/build/cjs/bluetooth/flashing/nordic-dfu.js +18 -6
- package/build/cjs/bluetooth/flashing/nordic-dfu.js.map +1 -1
- package/build/cjs/bluetooth/services/accelerometer-service.js +5 -4
- package/build/cjs/bluetooth/services/accelerometer-service.js.map +1 -1
- package/build/cjs/bluetooth/services/button-service.js +12 -3
- package/build/cjs/bluetooth/services/button-service.js.map +1 -1
- package/build/cjs/bluetooth/services/device-information-service.js +7 -12
- package/build/cjs/bluetooth/services/device-information-service.js.map +1 -1
- package/build/cjs/bluetooth/services/event-service.d.ts +48 -0
- package/build/cjs/bluetooth/services/event-service.js +273 -0
- package/build/cjs/bluetooth/services/event-service.js.map +1 -0
- package/build/cjs/bluetooth/services/event-service.test.d.ts +1 -0
- package/build/cjs/bluetooth/services/event-service.test.js +252 -0
- package/build/cjs/bluetooth/services/event-service.test.js.map +1 -0
- package/build/cjs/bluetooth/services/io-pin-service.d.ts +65 -0
- package/build/cjs/bluetooth/services/io-pin-service.js +173 -0
- package/build/cjs/bluetooth/services/io-pin-service.js.map +1 -0
- package/build/cjs/bluetooth/services/led-service.js +3 -0
- package/build/cjs/bluetooth/services/led-service.js.map +1 -1
- package/build/cjs/bluetooth/services/magnetometer-service.js +5 -4
- package/build/cjs/bluetooth/services/magnetometer-service.js.map +1 -1
- package/build/cjs/bluetooth/services/temperature-service.d.ts +14 -0
- package/build/cjs/bluetooth/services/temperature-service.js +80 -0
- package/build/cjs/bluetooth/services/temperature-service.js.map +1 -0
- package/build/cjs/bluetooth/services/uart-service.js +12 -3
- package/build/cjs/bluetooth/services/uart-service.js.map +1 -1
- package/build/cjs/device.d.ts +73 -58
- package/build/cjs/device.js +7 -2
- package/build/cjs/device.js.map +1 -1
- package/build/cjs/events.d.ts +1 -2
- package/build/cjs/events.js.map +1 -1
- package/build/cjs/index.d.ts +5 -5
- package/build/cjs/index.js +4 -3
- package/build/cjs/index.js.map +1 -1
- package/build/cjs/microbit-events.d.ts +67 -0
- package/build/cjs/microbit-events.js +55 -0
- package/build/cjs/microbit-events.js.map +1 -0
- package/build/cjs/radio-bridge/connection.d.ts +18 -5
- package/build/cjs/radio-bridge/connection.js +30 -12
- package/build/cjs/radio-bridge/connection.js.map +1 -1
- package/build/cjs/service-events.d.ts +55 -6
- package/build/cjs/service-events.js.map +1 -1
- package/build/cjs/usb/arm-debug.d.ts +1 -1
- package/build/cjs/usb/arm-debug.js +3 -3
- package/build/cjs/usb/arm-debug.js.map +1 -1
- package/build/cjs/usb/cmsis-dap.js +1 -1
- package/build/cjs/usb/cmsis-dap.js.map +1 -1
- package/build/cjs/usb/connection.d.ts +18 -3
- package/build/cjs/usb/connection.js +17 -10
- package/build/cjs/usb/connection.js.map +1 -1
- package/build/cjs/usb/index.d.ts +1 -1
- package/build/cjs/usb/partial-flashing.d.ts +22 -4
- package/build/cjs/usb/partial-flashing.js +108 -18
- package/build/cjs/usb/partial-flashing.js.map +1 -1
- package/build/cjs/usb/serial-events.d.ts +0 -5
- package/build/cjs/usb/transport.js +4 -4
- package/build/cjs/usb/transport.js.map +1 -1
- package/build/esm/async-util.d.ts +3 -1
- package/build/esm/async-util.js +5 -1
- package/build/esm/async-util.js.map +1 -1
- package/build/esm/bluetooth/ble-error.d.ts +10 -0
- package/build/esm/bluetooth/ble-error.js +42 -0
- package/build/esm/bluetooth/ble-error.js.map +1 -0
- package/build/esm/bluetooth/connection.d.ts +263 -3
- package/build/esm/bluetooth/connection.js +79 -22
- package/build/esm/bluetooth/connection.js.map +1 -1
- package/build/esm/bluetooth/device-wrapper.d.ts +6 -0
- package/build/esm/bluetooth/device-wrapper.js +30 -7
- package/build/esm/bluetooth/device-wrapper.js.map +1 -1
- package/build/esm/bluetooth/flashing/flashing-full.js +2 -1
- package/build/esm/bluetooth/flashing/flashing-full.js.map +1 -1
- package/build/esm/bluetooth/flashing/flashing-partial.js +2 -1
- package/build/esm/bluetooth/flashing/flashing-partial.js.map +1 -1
- package/build/esm/bluetooth/flashing/nordic-dfu.js +18 -6
- package/build/esm/bluetooth/flashing/nordic-dfu.js.map +1 -1
- package/build/esm/bluetooth/services/accelerometer-service.js +5 -4
- package/build/esm/bluetooth/services/accelerometer-service.js.map +1 -1
- package/build/esm/bluetooth/services/button-service.js +12 -3
- package/build/esm/bluetooth/services/button-service.js.map +1 -1
- package/build/esm/bluetooth/services/device-information-service.js +7 -12
- package/build/esm/bluetooth/services/device-information-service.js.map +1 -1
- package/build/esm/bluetooth/services/event-service.d.ts +48 -0
- package/build/esm/bluetooth/services/event-service.js +269 -0
- package/build/esm/bluetooth/services/event-service.js.map +1 -0
- package/build/esm/bluetooth/services/event-service.test.d.ts +1 -0
- package/build/esm/bluetooth/services/event-service.test.js +250 -0
- package/build/esm/bluetooth/services/event-service.test.js.map +1 -0
- package/build/esm/bluetooth/services/io-pin-service.d.ts +65 -0
- package/build/esm/bluetooth/services/io-pin-service.js +169 -0
- package/build/esm/bluetooth/services/io-pin-service.js.map +1 -0
- package/build/esm/bluetooth/services/led-service.js +3 -0
- package/build/esm/bluetooth/services/led-service.js.map +1 -1
- package/build/esm/bluetooth/services/magnetometer-service.js +5 -4
- package/build/esm/bluetooth/services/magnetometer-service.js.map +1 -1
- package/build/esm/bluetooth/services/temperature-service.d.ts +14 -0
- package/build/esm/bluetooth/services/temperature-service.js +76 -0
- package/build/esm/bluetooth/services/temperature-service.js.map +1 -0
- package/build/esm/bluetooth/services/uart-service.js +12 -3
- package/build/esm/bluetooth/services/uart-service.js.map +1 -1
- package/build/esm/device.d.ts +73 -58
- package/build/esm/device.js +7 -2
- package/build/esm/device.js.map +1 -1
- package/build/esm/events.d.ts +1 -2
- package/build/esm/events.js.map +1 -1
- package/build/esm/index.d.ts +5 -5
- package/build/esm/index.js +2 -2
- package/build/esm/index.js.map +1 -1
- package/build/esm/microbit-events.d.ts +67 -0
- package/build/esm/microbit-events.js +52 -0
- package/build/esm/microbit-events.js.map +1 -0
- package/build/esm/radio-bridge/connection.d.ts +18 -5
- package/build/esm/radio-bridge/connection.js +31 -13
- package/build/esm/radio-bridge/connection.js.map +1 -1
- package/build/esm/service-events.d.ts +55 -6
- package/build/esm/service-events.js.map +1 -1
- package/build/esm/usb/arm-debug.d.ts +1 -1
- package/build/esm/usb/arm-debug.js +3 -3
- package/build/esm/usb/arm-debug.js.map +1 -1
- package/build/esm/usb/cmsis-dap.js +1 -1
- package/build/esm/usb/cmsis-dap.js.map +1 -1
- package/build/esm/usb/connection.d.ts +18 -3
- package/build/esm/usb/connection.js +18 -11
- package/build/esm/usb/connection.js.map +1 -1
- package/build/esm/usb/index.d.ts +1 -1
- package/build/esm/usb/partial-flashing.d.ts +22 -4
- package/build/esm/usb/partial-flashing.js +108 -18
- package/build/esm/usb/partial-flashing.js.map +1 -1
- package/build/esm/usb/serial-events.d.ts +0 -5
- package/build/esm/usb/transport.js +4 -4
- package/build/esm/usb/transport.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.IoPinService = void 0;
|
|
4
|
+
const bluetooth_le_1 = require("@capacitor-community/bluetooth-le");
|
|
5
|
+
const profile_js_1 = require("../profile.js");
|
|
6
|
+
const ble_error_js_1 = require("../ble-error.js");
|
|
7
|
+
function pinsToBitmask(pins) {
|
|
8
|
+
let mask = 0;
|
|
9
|
+
for (const pin of pins) {
|
|
10
|
+
mask |= 1 << pin;
|
|
11
|
+
}
|
|
12
|
+
return mask;
|
|
13
|
+
}
|
|
14
|
+
function bitmaskToPins(mask) {
|
|
15
|
+
const pins = [];
|
|
16
|
+
for (let i = 0; i < 19; i++) {
|
|
17
|
+
if (mask & (1 << i)) {
|
|
18
|
+
pins.push(i);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return pins;
|
|
22
|
+
}
|
|
23
|
+
class IoPinService {
|
|
24
|
+
constructor(deviceId, dispatchTypedEvent) {
|
|
25
|
+
Object.defineProperty(this, "deviceId", {
|
|
26
|
+
enumerable: true,
|
|
27
|
+
configurable: true,
|
|
28
|
+
writable: true,
|
|
29
|
+
value: deviceId
|
|
30
|
+
});
|
|
31
|
+
Object.defineProperty(this, "dispatchTypedEvent", {
|
|
32
|
+
enumerable: true,
|
|
33
|
+
configurable: true,
|
|
34
|
+
writable: true,
|
|
35
|
+
value: dispatchTypedEvent
|
|
36
|
+
});
|
|
37
|
+
Object.defineProperty(this, "uuid", {
|
|
38
|
+
enumerable: true,
|
|
39
|
+
configurable: true,
|
|
40
|
+
writable: true,
|
|
41
|
+
value: profile_js_1.profile.ioPin.id
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
getRelevantEvents() {
|
|
45
|
+
return ["pinchanged"];
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Gets which pins are configured as analog.
|
|
49
|
+
* All other pins are digital (the default).
|
|
50
|
+
*
|
|
51
|
+
* @returns array of pin numbers (0-18) configured as analog.
|
|
52
|
+
*/
|
|
53
|
+
async getAnalogPins() {
|
|
54
|
+
const dataView = await bluetooth_le_1.BleClient.read(this.deviceId, profile_js_1.profile.ioPin.id, profile_js_1.profile.ioPin.characteristics.pinAdConfiguration.id);
|
|
55
|
+
return bitmaskToPins(dataView.getUint32(0, true));
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Sets which pins are configured as analog.
|
|
59
|
+
* All other pins become digital (the default).
|
|
60
|
+
*
|
|
61
|
+
* @param pins array of pin numbers (0-18) to configure as analog.
|
|
62
|
+
*/
|
|
63
|
+
async setAnalogPins(pins) {
|
|
64
|
+
const dataView = new DataView(new ArrayBuffer(4));
|
|
65
|
+
dataView.setUint32(0, pinsToBitmask(pins), true);
|
|
66
|
+
await bluetooth_le_1.BleClient.write(this.deviceId, profile_js_1.profile.ioPin.id, profile_js_1.profile.ioPin.characteristics.pinAdConfiguration.id, dataView);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Gets which pins are configured as inputs.
|
|
70
|
+
* Input pins are monitored by the service and their values reported
|
|
71
|
+
* via notifications and reads of the pin data characteristic.
|
|
72
|
+
* All other pins are outputs (the default).
|
|
73
|
+
*
|
|
74
|
+
* @returns array of pin numbers (0-18) configured as inputs.
|
|
75
|
+
*/
|
|
76
|
+
async getInputPins() {
|
|
77
|
+
const dataView = await bluetooth_le_1.BleClient.read(this.deviceId, profile_js_1.profile.ioPin.id, profile_js_1.profile.ioPin.characteristics.pinIoConfiguration.id);
|
|
78
|
+
return bitmaskToPins(dataView.getUint32(0, true));
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Sets which pins are configured as inputs.
|
|
82
|
+
* Input pins are monitored by the service and their values reported
|
|
83
|
+
* via notifications and reads of the pin data characteristic.
|
|
84
|
+
* All other pins become outputs (the default).
|
|
85
|
+
*
|
|
86
|
+
* @param pins array of pin numbers (0-18) to configure as inputs.
|
|
87
|
+
*/
|
|
88
|
+
async setInputPins(pins) {
|
|
89
|
+
const dataView = new DataView(new ArrayBuffer(4));
|
|
90
|
+
dataView.setUint32(0, pinsToBitmask(pins), true);
|
|
91
|
+
await bluetooth_le_1.BleClient.write(this.deviceId, profile_js_1.profile.ioPin.id, profile_js_1.profile.ioPin.characteristics.pinIoConfiguration.id, dataView);
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Reads pin data for all active input pins.
|
|
95
|
+
* For digital pins, value is 0 or 1.
|
|
96
|
+
* For analog pins, value is 0-255 (10-bit analog value >> 2).
|
|
97
|
+
*/
|
|
98
|
+
async readPins() {
|
|
99
|
+
const dataView = await bluetooth_le_1.BleClient.read(this.deviceId, profile_js_1.profile.ioPin.id, profile_js_1.profile.ioPin.characteristics.pinData.id);
|
|
100
|
+
return this.dataViewToPinData(dataView);
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Writes pin data for output pins.
|
|
104
|
+
* Only pins configured as outputs (not active inputs) will be affected.
|
|
105
|
+
* For digital pins, value is 0 or 1.
|
|
106
|
+
* For analog pins, value 0-255 is scaled to 0-1023 on the device.
|
|
107
|
+
*/
|
|
108
|
+
async writePins(data) {
|
|
109
|
+
const dataView = new DataView(new ArrayBuffer(data.length * 2));
|
|
110
|
+
for (let i = 0; i < data.length; i++) {
|
|
111
|
+
dataView.setUint8(i * 2, data[i].pin);
|
|
112
|
+
dataView.setUint8(i * 2 + 1, data[i].value);
|
|
113
|
+
}
|
|
114
|
+
await bluetooth_le_1.BleClient.write(this.deviceId, profile_js_1.profile.ioPin.id, profile_js_1.profile.ioPin.characteristics.pinData.id, dataView);
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Sets PWM output on a pin.
|
|
118
|
+
*
|
|
119
|
+
* @param pin Pin number (0-18).
|
|
120
|
+
* @param value Analog value (0-1024).
|
|
121
|
+
* @param period Period in microseconds.
|
|
122
|
+
*/
|
|
123
|
+
async setPwm(pin, value, period) {
|
|
124
|
+
const dataView = new DataView(new ArrayBuffer(7));
|
|
125
|
+
dataView.setUint8(0, pin);
|
|
126
|
+
dataView.setUint16(1, value, true);
|
|
127
|
+
dataView.setUint32(3, period, true);
|
|
128
|
+
await bluetooth_le_1.BleClient.write(this.deviceId, profile_js_1.profile.ioPin.id, profile_js_1.profile.ioPin.characteristics.pwmControl.id, dataView);
|
|
129
|
+
}
|
|
130
|
+
async startNotifications(type) {
|
|
131
|
+
if (type !== "pinchanged") {
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
try {
|
|
135
|
+
await bluetooth_le_1.BleClient.startNotifications(this.deviceId, profile_js_1.profile.ioPin.id, profile_js_1.profile.ioPin.characteristics.pinData.id, (value) => {
|
|
136
|
+
const data = this.dataViewToPinData(value);
|
|
137
|
+
this.dispatchTypedEvent("pinchanged", { data });
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
catch (e) {
|
|
141
|
+
this.dispatchTypedEvent("backgrounderror", {
|
|
142
|
+
error: (0, ble_error_js_1.mapBleError)(e),
|
|
143
|
+
event: type,
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
async stopNotifications(type) {
|
|
148
|
+
if (type !== "pinchanged") {
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
try {
|
|
152
|
+
await bluetooth_le_1.BleClient.stopNotifications(this.deviceId, profile_js_1.profile.ioPin.id, profile_js_1.profile.ioPin.characteristics.pinData.id);
|
|
153
|
+
}
|
|
154
|
+
catch (e) {
|
|
155
|
+
this.dispatchTypedEvent("backgrounderror", {
|
|
156
|
+
error: (0, ble_error_js_1.mapBleError)(e),
|
|
157
|
+
event: type,
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
dataViewToPinData(dataView) {
|
|
162
|
+
const result = [];
|
|
163
|
+
for (let i = 0; i + 1 < dataView.byteLength; i += 2) {
|
|
164
|
+
result.push({
|
|
165
|
+
pin: dataView.getUint8(i),
|
|
166
|
+
value: dataView.getUint8(i + 1),
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
return result;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
exports.IoPinService = IoPinService;
|
|
173
|
+
//# sourceMappingURL=io-pin-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"io-pin-service.js","sourceRoot":"","sources":["../../../../src/bluetooth/services/io-pin-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -35,6 +35,9 @@ class LedService {
|
|
|
35
35
|
return this.dataViewToLedMatrix(dataView);
|
|
36
36
|
}
|
|
37
37
|
async setLedMatrix(value) {
|
|
38
|
+
if (value.length !== 5 || value.some((row) => row.length !== 5)) {
|
|
39
|
+
throw new Error("LED matrix must be 5x5");
|
|
40
|
+
}
|
|
38
41
|
const dataView = this.ledMatrixToDataView(value);
|
|
39
42
|
await bluetooth_le_1.BleClient.write(this.deviceId, profile_js_1.profile.led.id, profile_js_1.profile.led.characteristics.matrixState.id, dataView);
|
|
40
43
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"led-service.js","sourceRoot":"","sources":["../../../../src/bluetooth/services/led-service.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"led-service.js","sourceRoot":"","sources":["../../../../src/bluetooth/services/led-service.ts"],"names":[],"mappings":";;;AAAA,oEAA8D;AAE9D,8CAAwC;AAGxC,MAAM,eAAe,GAAG,GAAc,EAAE;IACtC,OAAO;QACL,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;QACnC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;QACnC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;QACnC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;QACnC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;KACpC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAa,UAAU;IAGrB,YAAoB,QAAgB;QAAxB;;;;mBAAQ,QAAQ;WAAQ;QAFpC;;;;mBAAO,oBAAO,CAAC,GAAG,CAAC,EAAE;WAAC;IAEiB,CAAC;IAExC,iBAAiB;QACf,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,MAAM,QAAQ,GAAG,MAAM,wBAAS,CAAC,IAAI,CACnC,IAAI,CAAC,QAAQ,EACb,oBAAO,CAAC,GAAG,CAAC,EAAE,EACd,oBAAO,CAAC,GAAG,CAAC,eAAe,CAAC,WAAW,CAAC,EAAE,CAC3C,CAAC;QACF,OAAO,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,KAAgB;QACjC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;YAChE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC5C,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QACjD,MAAM,wBAAS,CAAC,KAAK,CACnB,IAAI,CAAC,QAAQ,EACb,oBAAO,CAAC,GAAG,CAAC,EAAE,EACd,oBAAO,CAAC,GAAG,CAAC,eAAe,CAAC,WAAW,CAAC,EAAE,EAC1C,QAAQ,CACT,CAAC;IACJ,CAAC;IAEO,mBAAmB,CAAC,QAAkB;QAC5C,IAAI,QAAQ,CAAC,UAAU,KAAK,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACvD,CAAC;QACD,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;QACjC,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC;YACjC,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YACvC,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC;gBAC1C,MAAM,UAAU,GAAG,GAAG,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;gBACvC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;YACpD,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,mBAAmB,CAAC,MAAiB;QAC3C,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;QAClD,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC;YACjC,IAAI,OAAO,GAAG,CAAC,CAAC;YAChB,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC;gBAC1C,MAAM,UAAU,GAAG,GAAG,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;gBACvC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;oBACxB,OAAO,IAAI,UAAU,CAAC;gBACxB,CAAC;YACH,CAAC;YACD,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAClC,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,IAAY;QACxB,MAAM,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC7C,IAAI,KAAK,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;QACpE,CAAC;QACD,MAAM,wBAAS,CAAC,KAAK,CACnB,IAAI,CAAC,QAAQ,EACb,oBAAO,CAAC,GAAG,CAAC,EAAE,EACd,oBAAO,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,EACnC,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAC3B,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,KAAa;QACnC,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;QAClD,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QACnC,MAAM,wBAAS,CAAC,KAAK,CACnB,IAAI,CAAC,QAAQ,EACb,oBAAO,CAAC,GAAG,CAAC,EAAE,EACd,oBAAO,CAAC,GAAG,CAAC,eAAe,CAAC,cAAc,CAAC,EAAE,EAC7C,QAAQ,CACT,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,iBAAiB;QACrB,MAAM,QAAQ,GAAG,MAAM,wBAAS,CAAC,IAAI,CACnC,IAAI,CAAC,QAAQ,EACb,oBAAO,CAAC,GAAG,CAAC,EAAE,EACd,oBAAO,CAAC,GAAG,CAAC,eAAe,CAAC,cAAc,CAAC,EAAE,CAC9C,CAAC;QACF,OAAO,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,IAAuB,IAAkB,CAAC;IAEnE,KAAK,CAAC,iBAAiB,CAAC,IAAuB,IAAkB,CAAC;CACnE;AAjGD,gCAiGC"}
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.MagnetometerService = void 0;
|
|
4
4
|
const bluetooth_le_1 = require("@capacitor-community/bluetooth-le");
|
|
5
5
|
const profile_js_1 = require("../profile.js");
|
|
6
|
+
const ble_error_js_1 = require("../ble-error.js");
|
|
6
7
|
class MagnetometerService {
|
|
7
8
|
constructor(deviceId, dispatchTypedEvent) {
|
|
8
9
|
Object.defineProperty(this, "deviceId", {
|
|
@@ -74,8 +75,8 @@ class MagnetometerService {
|
|
|
74
75
|
}
|
|
75
76
|
catch (e) {
|
|
76
77
|
this.dispatchTypedEvent("backgrounderror", {
|
|
77
|
-
|
|
78
|
-
|
|
78
|
+
error: (0, ble_error_js_1.mapBleError)(e),
|
|
79
|
+
event: type,
|
|
79
80
|
});
|
|
80
81
|
}
|
|
81
82
|
}
|
|
@@ -87,8 +88,8 @@ class MagnetometerService {
|
|
|
87
88
|
}
|
|
88
89
|
catch (e) {
|
|
89
90
|
this.dispatchTypedEvent("backgrounderror", {
|
|
90
|
-
|
|
91
|
-
|
|
91
|
+
error: (0, ble_error_js_1.mapBleError)(e),
|
|
92
|
+
event: type,
|
|
92
93
|
});
|
|
93
94
|
}
|
|
94
95
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"magnetometer-service.js","sourceRoot":"","sources":["../../../../src/bluetooth/services/magnetometer-service.ts"],"names":[],"mappings":";;;AAAA,oEAA8D;AAE9D,8CAAwC;
|
|
1
|
+
{"version":3,"file":"magnetometer-service.js","sourceRoot":"","sources":["../../../../src/bluetooth/services/magnetometer-service.ts"],"names":[],"mappings":";;;AAAA,oEAA8D;AAE9D,8CAAwC;AAMxC,kDAA8C;AAE9C,MAAa,mBAAmB;IAG9B,YACU,QAAgB,EAChB,kBAA+C;QADvD;;;;mBAAQ,QAAQ;WAAQ;QACxB;;;;mBAAQ,kBAAkB;WAA6B;QAJzD;;;;mBAAO,oBAAO,CAAC,YAAY,CAAC,EAAE;WAAC;IAK5B,CAAC;IAEJ,iBAAiB;QACf,OAAO,CAAC,yBAAyB,CAAC,CAAC;IACrC,CAAC;IAEO,cAAc,CAAC,QAAkB;QACvC,OAAO;YACL,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC;YAC7B,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC;YAC7B,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC;SAC9B,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,QAAQ,GAAG,MAAM,wBAAS,CAAC,IAAI,CACnC,IAAI,CAAC,QAAQ,EACb,oBAAO,CAAC,YAAY,CAAC,EAAE,EACvB,oBAAO,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAC7C,CAAC;QACF,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,SAAS;QACb,MAAM,QAAQ,GAAG,MAAM,wBAAS,CAAC,IAAI,CACnC,IAAI,CAAC,QAAQ,EACb,oBAAO,CAAC,YAAY,CAAC,EAAE,EACvB,oBAAO,CAAC,YAAY,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,CAC/C,CAAC;QACF,OAAO,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,KAAa;QAC3B,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YAChB,wCAAwC;YACxC,OAAO;QACT,CAAC;QACD,kCAAkC;QAClC,gEAAgE;QAChE,gDAAgD;QAChD,mGAAmG;QACnG,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;QAClD,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QACnC,MAAM,wBAAS,CAAC,KAAK,CACnB,IAAI,CAAC,QAAQ,EACb,oBAAO,CAAC,YAAY,CAAC,EAAE,EACvB,oBAAO,CAAC,YAAY,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,EAC9C,QAAQ,CACT,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,QAAQ,GAAG,MAAM,wBAAS,CAAC,IAAI,CACnC,IAAI,CAAC,QAAQ,EACb,oBAAO,CAAC,YAAY,CAAC,EAAE,EACvB,oBAAO,CAAC,YAAY,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAChD,CAAC;QACF,OAAO,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,kBAAkB;QACtB,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;QAClD,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACxB,MAAM,wBAAS,CAAC,KAAK,CACnB,IAAI,CAAC,QAAQ,EACb,oBAAO,CAAC,YAAY,CAAC,EAAE,EACvB,oBAAO,CAAC,YAAY,CAAC,eAAe,CAAC,WAAW,CAAC,EAAE,EACnD,QAAQ,CACT,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,IAAuB;QAC9C,IAAI,IAAI,KAAK,yBAAyB,EAAE,CAAC;YACvC,IAAI,CAAC;gBACH,MAAM,wBAAS,CAAC,kBAAkB,CAChC,IAAI,CAAC,QAAQ,EACb,oBAAO,CAAC,YAAY,CAAC,EAAE,EACvB,oBAAO,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,EAC5C,CAAC,KAAe,EAAE,EAAE;oBAClB,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;oBACxC,IAAI,CAAC,kBAAkB,CAAC,yBAAyB,EAAE,IAAI,CAAC,CAAC;gBAC3D,CAAC,CACF,CAAC;YACJ,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,EAAE;oBACzC,KAAK,EAAE,IAAA,0BAAW,EAAC,CAAC,CAAC;oBACrB,KAAK,EAAE,IAAI;iBACZ,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,IAAuB;QAC7C,IAAI,IAAI,KAAK,yBAAyB,EAAE,CAAC;YACvC,IAAI,CAAC;gBACH,MAAM,wBAAS,CAAC,iBAAiB,CAC/B,IAAI,CAAC,QAAQ,EACb,oBAAO,CAAC,YAAY,CAAC,EAAE,EACvB,oBAAO,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAC7C,CAAC;YACJ,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,EAAE;oBACzC,KAAK,EAAE,IAAA,0BAAW,EAAC,CAAC,CAAC;oBACrB,KAAK,EAAE,IAAI;iBACZ,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAlHD,kDAkHC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Service } from "../device-wrapper.js";
|
|
2
|
+
import { TypedServiceEvent, TypedServiceEventDispatcher } from "../../service-events.js";
|
|
3
|
+
export declare class TemperatureService implements Service {
|
|
4
|
+
private deviceId;
|
|
5
|
+
private dispatchTypedEvent;
|
|
6
|
+
uuid: string;
|
|
7
|
+
constructor(deviceId: string, dispatchTypedEvent: TypedServiceEventDispatcher);
|
|
8
|
+
getRelevantEvents(): TypedServiceEvent[];
|
|
9
|
+
getData(): Promise<number>;
|
|
10
|
+
getPeriod(): Promise<number>;
|
|
11
|
+
setPeriod(value: number): Promise<void>;
|
|
12
|
+
startNotifications(type: TypedServiceEvent): Promise<void>;
|
|
13
|
+
stopNotifications(type: TypedServiceEvent): Promise<void>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TemperatureService = void 0;
|
|
4
|
+
const bluetooth_le_1 = require("@capacitor-community/bluetooth-le");
|
|
5
|
+
const profile_js_1 = require("../profile.js");
|
|
6
|
+
const ble_error_js_1 = require("../ble-error.js");
|
|
7
|
+
class TemperatureService {
|
|
8
|
+
constructor(deviceId, dispatchTypedEvent) {
|
|
9
|
+
Object.defineProperty(this, "deviceId", {
|
|
10
|
+
enumerable: true,
|
|
11
|
+
configurable: true,
|
|
12
|
+
writable: true,
|
|
13
|
+
value: deviceId
|
|
14
|
+
});
|
|
15
|
+
Object.defineProperty(this, "dispatchTypedEvent", {
|
|
16
|
+
enumerable: true,
|
|
17
|
+
configurable: true,
|
|
18
|
+
writable: true,
|
|
19
|
+
value: dispatchTypedEvent
|
|
20
|
+
});
|
|
21
|
+
Object.defineProperty(this, "uuid", {
|
|
22
|
+
enumerable: true,
|
|
23
|
+
configurable: true,
|
|
24
|
+
writable: true,
|
|
25
|
+
value: profile_js_1.profile.temperature.id
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
getRelevantEvents() {
|
|
29
|
+
return ["temperaturechanged"];
|
|
30
|
+
}
|
|
31
|
+
async getData() {
|
|
32
|
+
const dataView = await bluetooth_le_1.BleClient.read(this.deviceId, profile_js_1.profile.temperature.id, profile_js_1.profile.temperature.characteristics.data.id);
|
|
33
|
+
return dataView.getInt8(0);
|
|
34
|
+
}
|
|
35
|
+
async getPeriod() {
|
|
36
|
+
const dataView = await bluetooth_le_1.BleClient.read(this.deviceId, profile_js_1.profile.temperature.id, profile_js_1.profile.temperature.characteristics.period.id);
|
|
37
|
+
return dataView.getUint16(0, true);
|
|
38
|
+
}
|
|
39
|
+
async setPeriod(value) {
|
|
40
|
+
if (value === 0) {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
const dataView = new DataView(new ArrayBuffer(2));
|
|
44
|
+
dataView.setUint16(0, value, true);
|
|
45
|
+
await bluetooth_le_1.BleClient.write(this.deviceId, profile_js_1.profile.temperature.id, profile_js_1.profile.temperature.characteristics.period.id, dataView);
|
|
46
|
+
}
|
|
47
|
+
async startNotifications(type) {
|
|
48
|
+
if (type !== "temperaturechanged") {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
try {
|
|
52
|
+
await bluetooth_le_1.BleClient.startNotifications(this.deviceId, profile_js_1.profile.temperature.id, profile_js_1.profile.temperature.characteristics.data.id, (value) => {
|
|
53
|
+
const celsius = value.getInt8(0);
|
|
54
|
+
this.dispatchTypedEvent("temperaturechanged", { celsius });
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
catch (e) {
|
|
58
|
+
this.dispatchTypedEvent("backgrounderror", {
|
|
59
|
+
error: (0, ble_error_js_1.mapBleError)(e),
|
|
60
|
+
event: type,
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
async stopNotifications(type) {
|
|
65
|
+
if (type !== "temperaturechanged") {
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
try {
|
|
69
|
+
await bluetooth_le_1.BleClient.stopNotifications(this.deviceId, profile_js_1.profile.temperature.id, profile_js_1.profile.temperature.characteristics.data.id);
|
|
70
|
+
}
|
|
71
|
+
catch (e) {
|
|
72
|
+
this.dispatchTypedEvent("backgrounderror", {
|
|
73
|
+
error: (0, ble_error_js_1.mapBleError)(e),
|
|
74
|
+
event: type,
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
exports.TemperatureService = TemperatureService;
|
|
80
|
+
//# sourceMappingURL=temperature-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"temperature-service.js","sourceRoot":"","sources":["../../../../src/bluetooth/services/temperature-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.UARTService = void 0;
|
|
4
4
|
const bluetooth_le_1 = require("@capacitor-community/bluetooth-le");
|
|
5
5
|
const profile_js_1 = require("../profile.js");
|
|
6
|
+
const ble_error_js_1 = require("../ble-error.js");
|
|
6
7
|
class UARTService {
|
|
7
8
|
constructor(deviceId, dispatchTypedEvent) {
|
|
8
9
|
Object.defineProperty(this, "deviceId", {
|
|
@@ -38,15 +39,23 @@ class UARTService {
|
|
|
38
39
|
}
|
|
39
40
|
catch (e) {
|
|
40
41
|
this.dispatchTypedEvent("backgrounderror", {
|
|
41
|
-
|
|
42
|
-
|
|
42
|
+
error: (0, ble_error_js_1.mapBleError)(e),
|
|
43
|
+
event: type,
|
|
43
44
|
});
|
|
44
45
|
}
|
|
45
46
|
}
|
|
46
47
|
}
|
|
47
48
|
async stopNotifications(type) {
|
|
48
49
|
if (type === "uartdata") {
|
|
49
|
-
|
|
50
|
+
try {
|
|
51
|
+
await bluetooth_le_1.BleClient.stopNotifications(this.deviceId, profile_js_1.profile.uart.id, profile_js_1.profile.uart.characteristics.tx.id);
|
|
52
|
+
}
|
|
53
|
+
catch (e) {
|
|
54
|
+
this.dispatchTypedEvent("backgrounderror", {
|
|
55
|
+
error: (0, ble_error_js_1.mapBleError)(e),
|
|
56
|
+
event: type,
|
|
57
|
+
});
|
|
58
|
+
}
|
|
50
59
|
}
|
|
51
60
|
}
|
|
52
61
|
async writeData(value) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uart-service.js","sourceRoot":"","sources":["../../../../src/bluetooth/services/uart-service.ts"],"names":[],"mappings":";;;AAAA,oEAA8D;AAE9D,8CAAwC;
|
|
1
|
+
{"version":3,"file":"uart-service.js","sourceRoot":"","sources":["../../../../src/bluetooth/services/uart-service.ts"],"names":[],"mappings":";;;AAAA,oEAA8D;AAE9D,8CAAwC;AAKxC,kDAA8C;AAE9C,MAAa,WAAW;IAGtB,YACU,QAAgB,EAChB,kBAA+C;QADvD;;;;mBAAQ,QAAQ;WAAQ;QACxB;;;;mBAAQ,kBAAkB;WAA6B;QAJzD;;;;mBAAO,oBAAO,CAAC,IAAI,CAAC,EAAE;WAAC;IAKpB,CAAC;IAEJ,iBAAiB;QACf,OAAO,CAAC,UAAU,CAAC,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,IAAuB;QAC9C,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;YACxB,IAAI,CAAC;gBACH,MAAM,wBAAS,CAAC,kBAAkB,CAChC,IAAI,CAAC,QAAQ,EACb,oBAAO,CAAC,IAAI,CAAC,EAAE,EACf,oBAAO,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,EAAE,EAClC,CAAC,KAAe,EAAE,EAAE;oBAClB,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE;wBAClC,KAAK,EAAE,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC;qBACpC,CAAC,CAAC;gBACL,CAAC,CACF,CAAC;YACJ,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,EAAE;oBACzC,KAAK,EAAE,IAAA,0BAAW,EAAC,CAAC,CAAC;oBACrB,KAAK,EAAE,IAAI;iBACZ,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,IAAuB;QAC7C,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;YACxB,IAAI,CAAC;gBACH,MAAM,wBAAS,CAAC,iBAAiB,CAC/B,IAAI,CAAC,QAAQ,EACb,oBAAO,CAAC,IAAI,CAAC,EAAE,EACf,oBAAO,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,EAAE,CACnC,CAAC;YACJ,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,EAAE;oBACzC,KAAK,EAAE,IAAA,0BAAW,EAAC,CAAC,CAAC;oBACrB,KAAK,EAAE,IAAI;iBACZ,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,KAAiB;QAC/B,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,wBAAS,CAAC,oBAAoB,CAClC,IAAI,CAAC,QAAQ,EACb,oBAAO,CAAC,IAAI,CAAC,EAAE,EACf,oBAAO,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,EAAE,EAClC,QAAQ,CACT,CAAC;IACJ,CAAC;CACF;AA5DD,kCA4DC"}
|
package/build/cjs/device.d.ts
CHANGED
|
@@ -3,98 +3,101 @@
|
|
|
3
3
|
*
|
|
4
4
|
* SPDX-License-Identifier: MIT
|
|
5
5
|
*/
|
|
6
|
-
import { TypedEventTarget } from "./events.js";
|
|
7
6
|
/**
|
|
8
7
|
* Connection availability status returned by checkAvailability().
|
|
9
8
|
* Used for pre-flight UX decisions before attempting to connect.
|
|
10
9
|
*/
|
|
11
10
|
export type ConnectionAvailabilityStatus = "available" | "unsupported" | "disabled" | "permission-denied" | "location-disabled";
|
|
12
11
|
/**
|
|
13
|
-
*
|
|
12
|
+
* Error codes identifying specific failure modes.
|
|
14
13
|
*
|
|
15
|
-
*
|
|
14
|
+
* Each code represents a distinct category of failure that apps can
|
|
15
|
+
* match on to decide what message to show or what recovery to attempt.
|
|
16
|
+
* New codes may be added in future minor releases.
|
|
17
|
+
*
|
|
18
|
+
* Codes are annotated with **USB**, **BLE**, or **USB, BLE** to indicate
|
|
19
|
+
* which connection types can produce them. USB-only apps can ignore
|
|
20
|
+
* BLE-only codes.
|
|
16
21
|
*/
|
|
17
22
|
export type DeviceErrorCode =
|
|
18
23
|
/**
|
|
19
|
-
*
|
|
24
|
+
* **BLE.** The operation was cancelled via an {@link AbortSignal}
|
|
25
|
+
* supplied by the caller. No user-facing error is needed.
|
|
20
26
|
*/
|
|
21
27
|
"aborted"
|
|
22
28
|
/**
|
|
23
|
-
*
|
|
29
|
+
* **USB, BLE.** The user dismissed the device-picker dialog without
|
|
30
|
+
* selecting a device. Typically no error message is needed — the user
|
|
31
|
+
* chose not to proceed.
|
|
24
32
|
*/
|
|
25
33
|
| "no-device-selected"
|
|
26
34
|
/**
|
|
27
|
-
*
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
/**
|
|
31
|
-
* Unable to claim the interface, usually because it's in use in another tab/window.
|
|
35
|
+
* **USB, BLE.** The connection type is not supported on this platform
|
|
36
|
+
* or browser. Corresponds to {@link ConnectionAvailabilityStatus}
|
|
37
|
+
* `"unsupported"`.
|
|
32
38
|
*/
|
|
33
|
-
| "
|
|
39
|
+
| "unsupported"
|
|
34
40
|
/**
|
|
35
|
-
*
|
|
41
|
+
* **BLE.** Bluetooth is turned off at the OS level. Prompt the user
|
|
42
|
+
* to enable it in system settings. Corresponds to
|
|
43
|
+
* {@link ConnectionAvailabilityStatus} `"disabled"`.
|
|
36
44
|
*/
|
|
37
|
-
| "
|
|
45
|
+
| "disabled"
|
|
38
46
|
/**
|
|
39
|
-
*
|
|
47
|
+
* **BLE.** The app does not have the required Bluetooth permissions
|
|
48
|
+
* (iOS/Android). Prompt the user to grant permission in system
|
|
49
|
+
* settings. Corresponds to {@link ConnectionAvailabilityStatus}
|
|
50
|
+
* `"permission-denied"`.
|
|
40
51
|
*/
|
|
41
|
-
| "
|
|
52
|
+
| "permission-denied"
|
|
42
53
|
/**
|
|
43
|
-
*
|
|
54
|
+
* **BLE.** Location services are disabled. Required on Android
|
|
55
|
+
* versions before 12 for Bluetooth scanning. Prompt the user to
|
|
56
|
+
* enable location in system settings. Corresponds to
|
|
57
|
+
* {@link ConnectionAvailabilityStatus} `"location-disabled"`.
|
|
44
58
|
*/
|
|
45
|
-
| "
|
|
59
|
+
| "location-disabled"
|
|
46
60
|
/**
|
|
47
|
-
*
|
|
61
|
+
* **USB, BLE.** A method was called that requires an active
|
|
62
|
+
* connection, but no connection is currently open. Call
|
|
63
|
+
* {@link DeviceConnection.connect} first.
|
|
48
64
|
*/
|
|
49
65
|
| "not-connected"
|
|
50
66
|
/**
|
|
51
|
-
*
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
/**
|
|
55
|
-
* Bluetooth service is missing on device.
|
|
56
|
-
*/
|
|
57
|
-
| "service-missing"
|
|
58
|
-
/**
|
|
59
|
-
* Failed to establish Bluetooth connection.
|
|
67
|
+
* **USB.** The USB interface could not be claimed, usually because
|
|
68
|
+
* another browser tab or application already has an open connection
|
|
69
|
+
* to the device.
|
|
60
70
|
*/
|
|
61
|
-
| "
|
|
71
|
+
| "device-in-use"
|
|
62
72
|
/**
|
|
63
|
-
*
|
|
73
|
+
* **USB, BLE.** The device disconnected during an operation.
|
|
74
|
+
* The physical USB or Bluetooth connection was lost.
|
|
64
75
|
*/
|
|
65
|
-
| "
|
|
66
|
-
/**
|
|
67
|
-
* Partial flash operation failed.
|
|
68
|
-
*/
|
|
69
|
-
| "flash-partial-failed"
|
|
70
|
-
/**
|
|
71
|
-
* Full flash operation failed.
|
|
72
|
-
*/
|
|
73
|
-
| "flash-full-failed"
|
|
74
|
-
/**
|
|
75
|
-
* Flash operation was cancelled.
|
|
76
|
-
*/
|
|
77
|
-
| "flash-cancelled"
|
|
76
|
+
| "device-disconnected"
|
|
78
77
|
/**
|
|
79
|
-
*
|
|
80
|
-
*
|
|
78
|
+
* **USB, BLE.** A communication timeout — the device did not respond
|
|
79
|
+
* within the expected time. This may indicate the device is busy,
|
|
80
|
+
* hung, or that the connection is degraded.
|
|
81
81
|
*/
|
|
82
|
-
| "
|
|
82
|
+
| "timeout"
|
|
83
83
|
/**
|
|
84
|
-
*
|
|
85
|
-
*
|
|
84
|
+
* **USB, BLE.** A communication failure that does not match any more
|
|
85
|
+
* specific code. Typical handling: prompt the user to physically
|
|
86
|
+
* disconnect and reconnect the device, then retry.
|
|
86
87
|
*/
|
|
87
|
-
| "
|
|
88
|
+
| "connection-error"
|
|
88
89
|
/**
|
|
89
|
-
*
|
|
90
|
-
*
|
|
90
|
+
* **USB.** The USB device was found but lacks the expected CMSIS-DAP
|
|
91
|
+
* interface. On micro:bit V1 this indicates the DAPLink firmware is
|
|
92
|
+
* too old and needs updating.
|
|
91
93
|
*/
|
|
92
|
-
| "
|
|
94
|
+
| "firmware-update-required"
|
|
93
95
|
/**
|
|
94
|
-
*
|
|
95
|
-
*
|
|
96
|
+
* **BLE.** The micro:bit's Bluetooth pairing/bonding information has
|
|
97
|
+
* been lost (e.g. after a firmware reflash). The user needs to
|
|
98
|
+
* re-pair the device. Currently only detected on iOS.
|
|
96
99
|
*/
|
|
97
|
-
| "
|
|
100
|
+
| "pairing-information-lost";
|
|
98
101
|
/**
|
|
99
102
|
* Stages reported by the progress callback during connection and flashing.
|
|
100
103
|
*/
|
|
@@ -145,9 +148,10 @@ export type ProgressCallback = (stage: ProgressStage, progress?: number) => void
|
|
|
145
148
|
*/
|
|
146
149
|
export declare class DeviceError extends Error {
|
|
147
150
|
code: DeviceErrorCode;
|
|
148
|
-
constructor({ code, message }: {
|
|
151
|
+
constructor({ code, message, cause, }: {
|
|
149
152
|
code: DeviceErrorCode;
|
|
150
153
|
message?: string;
|
|
154
|
+
cause?: unknown;
|
|
151
155
|
});
|
|
152
156
|
}
|
|
153
157
|
/**
|
|
@@ -237,8 +241,8 @@ export interface ConnectionStatusChange {
|
|
|
237
241
|
previousStatus: ConnectionStatus;
|
|
238
242
|
}
|
|
239
243
|
export interface BackgroundErrorData {
|
|
240
|
-
|
|
241
|
-
|
|
244
|
+
error: DeviceError;
|
|
245
|
+
event?: string;
|
|
242
246
|
}
|
|
243
247
|
export interface DeviceConnectionEventMap {
|
|
244
248
|
status: ConnectionStatusChange;
|
|
@@ -247,7 +251,18 @@ export interface DeviceConnectionEventMap {
|
|
|
247
251
|
afterrequestdevice: void;
|
|
248
252
|
flash: void;
|
|
249
253
|
}
|
|
250
|
-
export interface DeviceConnection
|
|
254
|
+
export interface DeviceConnection {
|
|
255
|
+
addEventListener(type: "status", listener: (data: ConnectionStatusChange) => void): void;
|
|
256
|
+
addEventListener(type: "backgrounderror", listener: (data: BackgroundErrorData) => void): void;
|
|
257
|
+
addEventListener(type: "beforerequestdevice", listener: () => void): void;
|
|
258
|
+
addEventListener(type: "afterrequestdevice", listener: () => void): void;
|
|
259
|
+
addEventListener(type: "flash", listener: () => void): void;
|
|
260
|
+
removeEventListener(type: "status", listener: (data: ConnectionStatusChange) => void): void;
|
|
261
|
+
removeEventListener(type: "backgrounderror", listener: (data: BackgroundErrorData) => void): void;
|
|
262
|
+
removeEventListener(type: "beforerequestdevice", listener: () => void): void;
|
|
263
|
+
removeEventListener(type: "afterrequestdevice", listener: () => void): void;
|
|
264
|
+
removeEventListener(type: "flash", listener: () => void): void;
|
|
265
|
+
readonly type: string;
|
|
251
266
|
status: ConnectionStatus;
|
|
252
267
|
/**
|
|
253
268
|
* Initializes the device.
|
package/build/cjs/device.js
CHANGED
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* (c) 2021, Micro:bit Educational Foundation and contributors
|
|
4
|
+
*
|
|
5
|
+
* SPDX-License-Identifier: MIT
|
|
6
|
+
*/
|
|
2
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
8
|
exports.FlashDataError = exports.ConnectionStatus = exports.DeviceError = exports.ProgressStage = void 0;
|
|
4
9
|
exports.assertConnected = assertConnected;
|
|
@@ -31,8 +36,8 @@ exports.ProgressStage = {
|
|
|
31
36
|
* English.
|
|
32
37
|
*/
|
|
33
38
|
class DeviceError extends Error {
|
|
34
|
-
constructor({ code, message }) {
|
|
35
|
-
super(message);
|
|
39
|
+
constructor({ code, message, cause, }) {
|
|
40
|
+
super(message, { cause });
|
|
36
41
|
Object.defineProperty(this, "code", {
|
|
37
42
|
enumerable: true,
|
|
38
43
|
configurable: true,
|
package/build/cjs/device.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device.js","sourceRoot":"","sources":["../../src/device.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"device.js","sourceRoot":"","sources":["../../src/device.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAgMH,0CAMC;AAhFD;;GAEG;AACU,QAAA,aAAa,GAAG;IAC3B,+DAA+D;IAC/D,YAAY,EAAE,cAAc;IAC5B,sBAAsB;IACtB,aAAa,EAAE,eAAe;IAC9B,gFAAgF;IAChF,YAAY,EAAE,cAAc;IAC5B,yFAAyF;IACzF,eAAe,EAAE,iBAAiB;IAClC,+BAA+B;IAC/B,UAAU,EAAE,YAAY;IACxB,wBAAwB;IACxB,eAAe,EAAE,iBAAiB;IAClC,qBAAqB;IACrB,YAAY,EAAE,cAAc;CACpB,CAAC;AA2BX;;;;;;;;GAQG;AACH,MAAa,WAAY,SAAQ,KAAK;IAEpC,YAAY,EACV,IAAI,EACJ,OAAO,EACP,KAAK,GAKN;QACC,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAV5B;;;;;WAAsB;QAWpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAdD,kCAcC;AAED;;;GAGG;AACH,SAAgB,eAAe,CAC7B,UAAyB;IAEzB,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,WAAW,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC;IAC7E,CAAC;AACH,CAAC;AAED;;GAEG;AACU,QAAA,gBAAgB,GAAG;IAC9B;;;;;;;;OAQG;IACH,kBAAkB,EAAE,oBAAoB;IACxC,kEAAkE;IAClE,YAAY,EAAE,cAAc;IAC5B,iBAAiB;IACjB,SAAS,EAAE,WAAW;IACtB,kBAAkB;IAClB,UAAU,EAAE,YAAY;IACxB;;;;OAIG;IACH,MAAM,EAAE,QAAQ;CACR,CAAC;AAoDX,MAAa,cAAe,SAAQ,KAAK;CAAG;AAA5C,wCAA4C"}
|
package/build/cjs/events.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
type Listener<T> = (data: T) => void;
|
|
1
|
+
export type Listener<T> = (data: T) => void;
|
|
2
2
|
export declare class TypedEventTarget<M> {
|
|
3
3
|
private listeners;
|
|
4
4
|
addEventListener<K extends keyof M & string>(type: K, listener: Listener<M[K]>): void;
|
|
@@ -8,4 +8,3 @@ export declare class TypedEventTarget<M> {
|
|
|
8
8
|
protected eventDeactivated(_type: string): void;
|
|
9
9
|
protected getActiveEvents(): string[];
|
|
10
10
|
}
|
|
11
|
-
export {};
|