@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.
Files changed (147) hide show
  1. package/build/cjs/async-util.d.ts +3 -1
  2. package/build/cjs/async-util.js +5 -1
  3. package/build/cjs/async-util.js.map +1 -1
  4. package/build/cjs/bluetooth/ble-error.d.ts +10 -0
  5. package/build/cjs/bluetooth/ble-error.js +47 -0
  6. package/build/cjs/bluetooth/ble-error.js.map +1 -0
  7. package/build/cjs/bluetooth/connection.d.ts +263 -3
  8. package/build/cjs/bluetooth/connection.js +78 -21
  9. package/build/cjs/bluetooth/connection.js.map +1 -1
  10. package/build/cjs/bluetooth/device-wrapper.d.ts +6 -0
  11. package/build/cjs/bluetooth/device-wrapper.js +30 -7
  12. package/build/cjs/bluetooth/device-wrapper.js.map +1 -1
  13. package/build/cjs/bluetooth/flashing/flashing-full.js +2 -1
  14. package/build/cjs/bluetooth/flashing/flashing-full.js.map +1 -1
  15. package/build/cjs/bluetooth/flashing/flashing-partial.js +2 -1
  16. package/build/cjs/bluetooth/flashing/flashing-partial.js.map +1 -1
  17. package/build/cjs/bluetooth/flashing/nordic-dfu.js +18 -6
  18. package/build/cjs/bluetooth/flashing/nordic-dfu.js.map +1 -1
  19. package/build/cjs/bluetooth/services/accelerometer-service.js +5 -4
  20. package/build/cjs/bluetooth/services/accelerometer-service.js.map +1 -1
  21. package/build/cjs/bluetooth/services/button-service.js +12 -3
  22. package/build/cjs/bluetooth/services/button-service.js.map +1 -1
  23. package/build/cjs/bluetooth/services/device-information-service.js +7 -12
  24. package/build/cjs/bluetooth/services/device-information-service.js.map +1 -1
  25. package/build/cjs/bluetooth/services/event-service.d.ts +48 -0
  26. package/build/cjs/bluetooth/services/event-service.js +273 -0
  27. package/build/cjs/bluetooth/services/event-service.js.map +1 -0
  28. package/build/cjs/bluetooth/services/event-service.test.d.ts +1 -0
  29. package/build/cjs/bluetooth/services/event-service.test.js +252 -0
  30. package/build/cjs/bluetooth/services/event-service.test.js.map +1 -0
  31. package/build/cjs/bluetooth/services/io-pin-service.d.ts +65 -0
  32. package/build/cjs/bluetooth/services/io-pin-service.js +173 -0
  33. package/build/cjs/bluetooth/services/io-pin-service.js.map +1 -0
  34. package/build/cjs/bluetooth/services/led-service.js +3 -0
  35. package/build/cjs/bluetooth/services/led-service.js.map +1 -1
  36. package/build/cjs/bluetooth/services/magnetometer-service.js +5 -4
  37. package/build/cjs/bluetooth/services/magnetometer-service.js.map +1 -1
  38. package/build/cjs/bluetooth/services/temperature-service.d.ts +14 -0
  39. package/build/cjs/bluetooth/services/temperature-service.js +80 -0
  40. package/build/cjs/bluetooth/services/temperature-service.js.map +1 -0
  41. package/build/cjs/bluetooth/services/uart-service.js +12 -3
  42. package/build/cjs/bluetooth/services/uart-service.js.map +1 -1
  43. package/build/cjs/device.d.ts +73 -58
  44. package/build/cjs/device.js +7 -2
  45. package/build/cjs/device.js.map +1 -1
  46. package/build/cjs/events.d.ts +1 -2
  47. package/build/cjs/events.js.map +1 -1
  48. package/build/cjs/index.d.ts +5 -5
  49. package/build/cjs/index.js +4 -3
  50. package/build/cjs/index.js.map +1 -1
  51. package/build/cjs/microbit-events.d.ts +67 -0
  52. package/build/cjs/microbit-events.js +55 -0
  53. package/build/cjs/microbit-events.js.map +1 -0
  54. package/build/cjs/radio-bridge/connection.d.ts +18 -5
  55. package/build/cjs/radio-bridge/connection.js +30 -12
  56. package/build/cjs/radio-bridge/connection.js.map +1 -1
  57. package/build/cjs/service-events.d.ts +55 -6
  58. package/build/cjs/service-events.js.map +1 -1
  59. package/build/cjs/usb/arm-debug.d.ts +1 -1
  60. package/build/cjs/usb/arm-debug.js +3 -3
  61. package/build/cjs/usb/arm-debug.js.map +1 -1
  62. package/build/cjs/usb/cmsis-dap.js +1 -1
  63. package/build/cjs/usb/cmsis-dap.js.map +1 -1
  64. package/build/cjs/usb/connection.d.ts +18 -3
  65. package/build/cjs/usb/connection.js +17 -10
  66. package/build/cjs/usb/connection.js.map +1 -1
  67. package/build/cjs/usb/index.d.ts +1 -1
  68. package/build/cjs/usb/partial-flashing.d.ts +22 -4
  69. package/build/cjs/usb/partial-flashing.js +108 -18
  70. package/build/cjs/usb/partial-flashing.js.map +1 -1
  71. package/build/cjs/usb/serial-events.d.ts +0 -5
  72. package/build/cjs/usb/transport.js +4 -4
  73. package/build/cjs/usb/transport.js.map +1 -1
  74. package/build/esm/async-util.d.ts +3 -1
  75. package/build/esm/async-util.js +5 -1
  76. package/build/esm/async-util.js.map +1 -1
  77. package/build/esm/bluetooth/ble-error.d.ts +10 -0
  78. package/build/esm/bluetooth/ble-error.js +42 -0
  79. package/build/esm/bluetooth/ble-error.js.map +1 -0
  80. package/build/esm/bluetooth/connection.d.ts +263 -3
  81. package/build/esm/bluetooth/connection.js +79 -22
  82. package/build/esm/bluetooth/connection.js.map +1 -1
  83. package/build/esm/bluetooth/device-wrapper.d.ts +6 -0
  84. package/build/esm/bluetooth/device-wrapper.js +30 -7
  85. package/build/esm/bluetooth/device-wrapper.js.map +1 -1
  86. package/build/esm/bluetooth/flashing/flashing-full.js +2 -1
  87. package/build/esm/bluetooth/flashing/flashing-full.js.map +1 -1
  88. package/build/esm/bluetooth/flashing/flashing-partial.js +2 -1
  89. package/build/esm/bluetooth/flashing/flashing-partial.js.map +1 -1
  90. package/build/esm/bluetooth/flashing/nordic-dfu.js +18 -6
  91. package/build/esm/bluetooth/flashing/nordic-dfu.js.map +1 -1
  92. package/build/esm/bluetooth/services/accelerometer-service.js +5 -4
  93. package/build/esm/bluetooth/services/accelerometer-service.js.map +1 -1
  94. package/build/esm/bluetooth/services/button-service.js +12 -3
  95. package/build/esm/bluetooth/services/button-service.js.map +1 -1
  96. package/build/esm/bluetooth/services/device-information-service.js +7 -12
  97. package/build/esm/bluetooth/services/device-information-service.js.map +1 -1
  98. package/build/esm/bluetooth/services/event-service.d.ts +48 -0
  99. package/build/esm/bluetooth/services/event-service.js +269 -0
  100. package/build/esm/bluetooth/services/event-service.js.map +1 -0
  101. package/build/esm/bluetooth/services/event-service.test.d.ts +1 -0
  102. package/build/esm/bluetooth/services/event-service.test.js +250 -0
  103. package/build/esm/bluetooth/services/event-service.test.js.map +1 -0
  104. package/build/esm/bluetooth/services/io-pin-service.d.ts +65 -0
  105. package/build/esm/bluetooth/services/io-pin-service.js +169 -0
  106. package/build/esm/bluetooth/services/io-pin-service.js.map +1 -0
  107. package/build/esm/bluetooth/services/led-service.js +3 -0
  108. package/build/esm/bluetooth/services/led-service.js.map +1 -1
  109. package/build/esm/bluetooth/services/magnetometer-service.js +5 -4
  110. package/build/esm/bluetooth/services/magnetometer-service.js.map +1 -1
  111. package/build/esm/bluetooth/services/temperature-service.d.ts +14 -0
  112. package/build/esm/bluetooth/services/temperature-service.js +76 -0
  113. package/build/esm/bluetooth/services/temperature-service.js.map +1 -0
  114. package/build/esm/bluetooth/services/uart-service.js +12 -3
  115. package/build/esm/bluetooth/services/uart-service.js.map +1 -1
  116. package/build/esm/device.d.ts +73 -58
  117. package/build/esm/device.js +7 -2
  118. package/build/esm/device.js.map +1 -1
  119. package/build/esm/events.d.ts +1 -2
  120. package/build/esm/events.js.map +1 -1
  121. package/build/esm/index.d.ts +5 -5
  122. package/build/esm/index.js +2 -2
  123. package/build/esm/index.js.map +1 -1
  124. package/build/esm/microbit-events.d.ts +67 -0
  125. package/build/esm/microbit-events.js +52 -0
  126. package/build/esm/microbit-events.js.map +1 -0
  127. package/build/esm/radio-bridge/connection.d.ts +18 -5
  128. package/build/esm/radio-bridge/connection.js +31 -13
  129. package/build/esm/radio-bridge/connection.js.map +1 -1
  130. package/build/esm/service-events.d.ts +55 -6
  131. package/build/esm/service-events.js.map +1 -1
  132. package/build/esm/usb/arm-debug.d.ts +1 -1
  133. package/build/esm/usb/arm-debug.js +3 -3
  134. package/build/esm/usb/arm-debug.js.map +1 -1
  135. package/build/esm/usb/cmsis-dap.js +1 -1
  136. package/build/esm/usb/cmsis-dap.js.map +1 -1
  137. package/build/esm/usb/connection.d.ts +18 -3
  138. package/build/esm/usb/connection.js +18 -11
  139. package/build/esm/usb/connection.js.map +1 -1
  140. package/build/esm/usb/index.d.ts +1 -1
  141. package/build/esm/usb/partial-flashing.d.ts +22 -4
  142. package/build/esm/usb/partial-flashing.js +108 -18
  143. package/build/esm/usb/partial-flashing.js.map +1 -1
  144. package/build/esm/usb/serial-events.d.ts +0 -5
  145. package/build/esm/usb/transport.js +4 -4
  146. package/build/esm/usb/transport.js.map +1 -1
  147. 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":"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"}
@@ -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
- message: "Failed to start notifications",
78
- error: e,
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
- message: "Failed to stop notifications",
91
- error: e,
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":"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"}
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
- message: "Failed to start notifications",
42
- error: e,
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
- await bluetooth_le_1.BleClient.stopNotifications(this.deviceId, profile_js_1.profile.uart.id, profile_js_1.profile.uart.characteristics.tx.id);
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;AAMxC,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,OAAO,EAAE,+BAA+B;oBACxC,KAAK,EAAE,CAAC;iBACT,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,IAAuB;QAC7C,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;YACxB,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;QACJ,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;AArDD,kCAqDC"}
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"}
@@ -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
- * Specific identified error types.
12
+ * Error codes identifying specific failure modes.
14
13
  *
15
- * New members may be added over time.
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
- * Operation was aborted via an AbortSignal.
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
- * Device not selected, e.g. because the user cancelled the dialog.
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
- * Device not found, perhaps because it doesn't have new enough firmware (for V1).
28
- */
29
- | "update-req"
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
- | "clear-connect"
39
+ | "unsupported"
34
40
  /**
35
- * The device was found to be disconnected.
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
- | "device-disconnected"
45
+ | "disabled"
38
46
  /**
39
- * A communication timeout occurred.
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
- | "timeout-error"
52
+ | "permission-denied"
42
53
  /**
43
- * This is the fallback error case suggesting that the user physically reconnects their device.
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
- | "reconnect-microbit"
59
+ | "location-disabled"
46
60
  /**
47
- * An operation was attempted that requires an active connection.
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
- * Error occured during serial or bluetooth communication.
52
- */
53
- | "background-comms-error"
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
- | "bluetooth-connection-failed"
71
+ | "device-in-use"
62
72
  /**
63
- * Pairing information lost on micro:bit.
73
+ * **USB, BLE.** The device disconnected during an operation.
74
+ * The physical USB or Bluetooth connection was lost.
64
75
  */
65
- | "pairing-information-lost"
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
- * Connection type is not supported on this platform/browser.
80
- * Aligns with ConnectionAvailabilityStatus "unsupported".
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
- | "unsupported"
82
+ | "timeout"
83
83
  /**
84
- * Connection is disabled (e.g., Bluetooth turned off).
85
- * Aligns with ConnectionAvailabilityStatus "disabled".
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
- | "disabled"
88
+ | "connection-error"
88
89
  /**
89
- * Required permissions were denied.
90
- * Aligns with ConnectionAvailabilityStatus "permission-denied".
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
- | "permission-denied"
94
+ | "firmware-update-required"
93
95
  /**
94
- * Location services are disabled (Android < 12 only).
95
- * Aligns with ConnectionAvailabilityStatus "location-disabled".
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
- | "location-disabled";
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
- message: string;
241
- error?: unknown;
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<M> extends TypedEventTarget<DeviceConnectionEventMap & M> {
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.
@@ -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,
@@ -1 +1 @@
1
- {"version":3,"file":"device.js","sourceRoot":"","sources":["../../src/device.ts"],"names":[],"mappings":";;;AA2KA,0CAMC;AAxED;;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,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;;;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"}
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"}
@@ -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 {};