@microbit/microbit-connection 0.0.0-tab.change.177 → 0.9.0-apps.alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (292) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +94 -5
  3. package/build/cjs/accelerometer-service.d.ts +18 -0
  4. package/build/cjs/accelerometer-service.js +105 -0
  5. package/build/cjs/accelerometer-service.js.map +1 -0
  6. package/build/cjs/accelerometer.js +16 -0
  7. package/build/cjs/accelerometer.js.map +1 -0
  8. package/build/{async-util.d.ts → cjs/async-util.d.ts} +9 -0
  9. package/build/cjs/async-util.js +47 -0
  10. package/build/cjs/async-util.js.map +1 -0
  11. package/build/cjs/bluetooth-device-wrapper.d.ts +97 -0
  12. package/build/cjs/bluetooth-device-wrapper.js +486 -0
  13. package/build/cjs/bluetooth-device-wrapper.js.map +1 -0
  14. package/build/{bluetooth-profile.d.ts → cjs/bluetooth-profile.d.ts} +43 -35
  15. package/build/cjs/bluetooth-profile.js +92 -0
  16. package/build/cjs/bluetooth-profile.js.map +1 -0
  17. package/build/cjs/bluetooth.d.ts +112 -0
  18. package/build/cjs/bluetooth.js +458 -0
  19. package/build/cjs/bluetooth.js.map +1 -0
  20. package/build/cjs/board-id.js +81 -0
  21. package/build/cjs/board-id.js.map +1 -0
  22. package/build/cjs/board-serial-info.js +51 -0
  23. package/build/cjs/board-serial-info.js.map +1 -0
  24. package/build/cjs/button-service.d.ts +13 -0
  25. package/build/cjs/button-service.js +66 -0
  26. package/build/cjs/button-service.js.map +1 -0
  27. package/build/cjs/buttons.js +22 -0
  28. package/build/cjs/buttons.js.map +1 -0
  29. package/build/cjs/constants.js +73 -0
  30. package/build/cjs/constants.js.map +1 -0
  31. package/build/cjs/device-information-service.d.ts +6 -0
  32. package/build/cjs/device-information-service.js +34 -0
  33. package/build/cjs/device-information-service.js.map +1 -0
  34. package/build/{device.d.ts → cjs/device.d.ts} +71 -39
  35. package/build/cjs/device.js +147 -0
  36. package/build/cjs/device.js.map +1 -0
  37. package/build/cjs/dfu-service.d.ts +9 -0
  38. package/build/cjs/dfu-service.js +26 -0
  39. package/build/cjs/dfu-service.js.map +1 -0
  40. package/build/{events.d.ts → cjs/events.d.ts} +1 -2
  41. package/build/cjs/events.js +109 -0
  42. package/build/cjs/events.js.map +1 -0
  43. package/build/cjs/flashing/flashing-full.d.ts +14 -0
  44. package/build/cjs/flashing/flashing-full.js +87 -0
  45. package/build/cjs/flashing/flashing-full.js.map +1 -0
  46. package/build/cjs/flashing/flashing-makecode.d.ts +6 -0
  47. package/build/cjs/flashing/flashing-makecode.js +48 -0
  48. package/build/cjs/flashing/flashing-makecode.js.map +1 -0
  49. package/build/cjs/flashing/flashing-partial.d.ts +9 -0
  50. package/build/cjs/flashing/flashing-partial.js +98 -0
  51. package/build/cjs/flashing/flashing-partial.js.map +1 -0
  52. package/build/cjs/flashing/flashing-v1.d.ts +11 -0
  53. package/build/cjs/flashing/flashing-v1.js +24 -0
  54. package/build/cjs/flashing/flashing-v1.js.map +1 -0
  55. package/build/cjs/flashing/nordic-dfu.d.ts +3 -0
  56. package/build/cjs/flashing/nordic-dfu.js +214 -0
  57. package/build/cjs/flashing/nordic-dfu.js.map +1 -0
  58. package/build/cjs/flashing/zip.d.ts +12 -0
  59. package/build/cjs/flashing/zip.js +177 -0
  60. package/build/cjs/flashing/zip.js.map +1 -0
  61. package/build/cjs/hex-flash-data-source.js +26 -0
  62. package/build/cjs/hex-flash-data-source.js.map +1 -0
  63. package/build/cjs/index.d.ts +17 -0
  64. package/build/cjs/index.js +37 -0
  65. package/build/cjs/index.js.map +1 -0
  66. package/build/cjs/led-service.d.ts +18 -0
  67. package/build/cjs/led-service.js +89 -0
  68. package/build/cjs/led-service.js.map +1 -0
  69. package/build/cjs/led.js +3 -0
  70. package/build/cjs/led.js.map +1 -0
  71. package/build/{logging.d.ts → cjs/logging.d.ts} +4 -4
  72. package/build/cjs/logging.js +16 -0
  73. package/build/cjs/logging.js.map +1 -0
  74. package/build/cjs/magnetometer-service.d.ts +18 -0
  75. package/build/cjs/magnetometer-service.js +94 -0
  76. package/build/cjs/magnetometer-service.js.map +1 -0
  77. package/build/cjs/magnetometer.d.ts +9 -0
  78. package/build/cjs/magnetometer.js +16 -0
  79. package/build/cjs/magnetometer.js.map +1 -0
  80. package/build/cjs/package.json +1 -0
  81. package/build/cjs/partial-flashing-service.d.ts +45 -0
  82. package/build/cjs/partial-flashing-service.js +110 -0
  83. package/build/cjs/partial-flashing-service.js.map +1 -0
  84. package/build/cjs/promise-queue.js +78 -0
  85. package/build/cjs/promise-queue.js.map +1 -0
  86. package/build/cjs/serial-events.d.ts +20 -0
  87. package/build/cjs/serial-events.js +69 -0
  88. package/build/cjs/serial-events.js.map +1 -0
  89. package/build/{service-events.d.ts → cjs/service-events.d.ts} +4 -0
  90. package/build/cjs/service-events.js +39 -0
  91. package/build/cjs/service-events.js.map +1 -0
  92. package/build/cjs/setupTests.js.map +1 -0
  93. package/build/cjs/uart-service.d.ts +12 -0
  94. package/build/cjs/uart-service.js +55 -0
  95. package/build/cjs/uart-service.js.map +1 -0
  96. package/build/cjs/uart.d.ts +4 -0
  97. package/build/cjs/uart.js +16 -0
  98. package/build/cjs/uart.js.map +1 -0
  99. package/build/{usb-device-wrapper.d.ts → cjs/usb-device-wrapper.d.ts} +1 -6
  100. package/build/cjs/usb-device-wrapper.js +437 -0
  101. package/build/cjs/usb-device-wrapper.js.map +1 -0
  102. package/build/cjs/usb-partial-flashing-utils.js +133 -0
  103. package/build/cjs/usb-partial-flashing-utils.js.map +1 -0
  104. package/build/{usb-partial-flashing.d.ts → cjs/usb-partial-flashing.d.ts} +3 -5
  105. package/build/cjs/usb-partial-flashing.js +342 -0
  106. package/build/cjs/usb-partial-flashing.js.map +1 -0
  107. package/build/cjs/usb-radio-bridge.d.ts +24 -0
  108. package/build/cjs/usb-radio-bridge.js +515 -0
  109. package/build/cjs/usb-radio-bridge.js.map +1 -0
  110. package/build/cjs/usb-serial-protocol.js +183 -0
  111. package/build/cjs/usb-serial-protocol.js.map +1 -0
  112. package/build/cjs/usb.d.ts +66 -0
  113. package/build/cjs/usb.js +662 -0
  114. package/build/cjs/usb.js.map +1 -0
  115. package/build/esm/accelerometer-service.d.ts +18 -0
  116. package/build/esm/accelerometer-service.js +101 -0
  117. package/build/esm/accelerometer-service.js.map +1 -0
  118. package/build/esm/accelerometer.d.ts +9 -0
  119. package/build/esm/accelerometer.js.map +1 -0
  120. package/build/esm/async-util.d.ts +22 -0
  121. package/build/esm/async-util.js +38 -0
  122. package/build/esm/async-util.js.map +1 -0
  123. package/build/esm/bluetooth-device-wrapper.d.ts +97 -0
  124. package/build/esm/bluetooth-device-wrapper.js +481 -0
  125. package/build/esm/bluetooth-device-wrapper.js.map +1 -0
  126. package/build/esm/bluetooth-profile.d.ts +147 -0
  127. package/build/{bluetooth-profile.js → esm/bluetooth-profile.js} +35 -29
  128. package/build/esm/bluetooth-profile.js.map +1 -0
  129. package/build/esm/bluetooth.d.ts +112 -0
  130. package/build/esm/bluetooth.js +428 -0
  131. package/build/esm/bluetooth.js.map +1 -0
  132. package/build/esm/board-id.d.ts +36 -0
  133. package/build/esm/board-id.js.map +1 -0
  134. package/build/esm/board-serial-info.d.ts +14 -0
  135. package/build/esm/board-serial-info.js.map +1 -0
  136. package/build/esm/button-service.d.ts +13 -0
  137. package/build/esm/button-service.js +62 -0
  138. package/build/esm/button-service.js.map +1 -0
  139. package/build/esm/buttons.d.ts +10 -0
  140. package/build/esm/buttons.js.map +1 -0
  141. package/build/esm/constants.d.ts +48 -0
  142. package/build/esm/constants.js.map +1 -0
  143. package/build/esm/device-information-service.d.ts +6 -0
  144. package/build/esm/device-information-service.js +30 -0
  145. package/build/esm/device-information-service.js.map +1 -0
  146. package/build/esm/device.d.ts +238 -0
  147. package/build/{device.js → esm/device.js} +16 -58
  148. package/build/esm/device.js.map +1 -0
  149. package/build/esm/dfu-service.d.ts +9 -0
  150. package/build/esm/dfu-service.js +22 -0
  151. package/build/esm/dfu-service.js.map +1 -0
  152. package/build/esm/events.d.ts +110 -0
  153. package/build/esm/events.js.map +1 -0
  154. package/build/esm/flashing/flashing-full.d.ts +14 -0
  155. package/build/esm/flashing/flashing-full.js +84 -0
  156. package/build/esm/flashing/flashing-full.js.map +1 -0
  157. package/build/esm/flashing/flashing-makecode.d.ts +6 -0
  158. package/build/esm/flashing/flashing-makecode.js +44 -0
  159. package/build/esm/flashing/flashing-makecode.js.map +1 -0
  160. package/build/esm/flashing/flashing-partial.d.ts +9 -0
  161. package/build/esm/flashing/flashing-partial.js +95 -0
  162. package/build/esm/flashing/flashing-partial.js.map +1 -0
  163. package/build/esm/flashing/flashing-v1.d.ts +11 -0
  164. package/build/esm/flashing/flashing-v1.js +20 -0
  165. package/build/esm/flashing/flashing-v1.js.map +1 -0
  166. package/build/esm/flashing/nordic-dfu.d.ts +3 -0
  167. package/build/esm/flashing/nordic-dfu.js +211 -0
  168. package/build/esm/flashing/nordic-dfu.js.map +1 -0
  169. package/build/esm/flashing/zip.d.ts +12 -0
  170. package/build/esm/flashing/zip.js +174 -0
  171. package/build/esm/flashing/zip.js.map +1 -0
  172. package/build/esm/hex-flash-data-source.d.ts +7 -0
  173. package/build/esm/hex-flash-data-source.js.map +1 -0
  174. package/build/esm/index.d.ts +17 -0
  175. package/build/esm/index.js +12 -0
  176. package/build/esm/index.js.map +1 -0
  177. package/build/esm/led-service.d.ts +18 -0
  178. package/build/esm/led-service.js +85 -0
  179. package/build/esm/led-service.js.map +1 -0
  180. package/build/esm/led.d.ts +6 -0
  181. package/build/esm/led.js.map +1 -0
  182. package/build/esm/logging.d.ts +21 -0
  183. package/build/{logging.js → esm/logging.js} +1 -1
  184. package/build/esm/logging.js.map +1 -0
  185. package/build/esm/magnetometer-service.d.ts +18 -0
  186. package/build/esm/magnetometer-service.js +90 -0
  187. package/build/esm/magnetometer-service.js.map +1 -0
  188. package/build/esm/magnetometer.d.ts +9 -0
  189. package/build/esm/magnetometer.js +12 -0
  190. package/build/esm/magnetometer.js.map +1 -0
  191. package/build/esm/package.json +1 -0
  192. package/build/esm/partial-flashing-service.d.ts +45 -0
  193. package/build/esm/partial-flashing-service.js +106 -0
  194. package/build/esm/partial-flashing-service.js.map +1 -0
  195. package/build/esm/promise-queue.d.ts +27 -0
  196. package/build/esm/promise-queue.js.map +1 -0
  197. package/build/esm/serial-events.d.ts +20 -0
  198. package/build/esm/serial-events.js +61 -0
  199. package/build/esm/serial-events.js.map +1 -0
  200. package/build/esm/service-events.d.ts +17 -0
  201. package/build/{service-events.js → esm/service-events.js} +12 -0
  202. package/build/esm/service-events.js.map +1 -0
  203. package/build/esm/setupTests.d.ts +6 -0
  204. package/build/{setupTests.js.map → esm/setupTests.js.map} +1 -1
  205. package/build/esm/uart-service.d.ts +12 -0
  206. package/build/esm/uart-service.js +51 -0
  207. package/build/esm/uart-service.js.map +1 -0
  208. package/build/esm/uart.d.ts +4 -0
  209. package/build/esm/uart.js +12 -0
  210. package/build/esm/uart.js.map +1 -0
  211. package/build/esm/usb-device-wrapper.d.ts +47 -0
  212. package/build/{usb-device-wrapper.js → esm/usb-device-wrapper.js} +43 -17
  213. package/build/esm/usb-device-wrapper.js.map +1 -0
  214. package/build/esm/usb-partial-flashing-utils.d.ts +17 -0
  215. package/build/esm/usb-partial-flashing-utils.js.map +1 -0
  216. package/build/esm/usb-partial-flashing.d.ts +67 -0
  217. package/build/{usb-partial-flashing.js → esm/usb-partial-flashing.js} +12 -13
  218. package/build/esm/usb-partial-flashing.js.map +1 -0
  219. package/build/esm/usb-radio-bridge.d.ts +24 -0
  220. package/build/{usb-radio-bridge.js → esm/usb-radio-bridge.js} +13 -7
  221. package/build/esm/usb-radio-bridge.js.map +1 -0
  222. package/build/esm/usb-serial-protocol.d.ts +66 -0
  223. package/build/esm/usb-serial-protocol.js.map +1 -0
  224. package/build/esm/usb.d.ts +66 -0
  225. package/build/{usb.js → esm/usb.js} +257 -49
  226. package/build/esm/usb.js.map +1 -0
  227. package/package.json +25 -8
  228. package/typedoc.json +14 -0
  229. package/build/accelerometer-service.d.ts +0 -18
  230. package/build/accelerometer-service.js +0 -102
  231. package/build/accelerometer-service.js.map +0 -1
  232. package/build/accelerometer.js.map +0 -1
  233. package/build/async-util.js +0 -22
  234. package/build/async-util.js.map +0 -1
  235. package/build/bluetooth-device-wrapper.d.ts +0 -57
  236. package/build/bluetooth-device-wrapper.js +0 -433
  237. package/build/bluetooth-device-wrapper.js.map +0 -1
  238. package/build/bluetooth-profile.js.map +0 -1
  239. package/build/bluetooth.d.ts +0 -54
  240. package/build/bluetooth.js +0 -243
  241. package/build/bluetooth.js.map +0 -1
  242. package/build/board-id.js.map +0 -1
  243. package/build/board-serial-info.js.map +0 -1
  244. package/build/button-service.d.ts +0 -13
  245. package/build/button-service.js +0 -76
  246. package/build/button-service.js.map +0 -1
  247. package/build/buttons.js.map +0 -1
  248. package/build/constants.js.map +0 -1
  249. package/build/device.js.map +0 -1
  250. package/build/events.js.map +0 -1
  251. package/build/hex-flash-data-source.js.map +0 -1
  252. package/build/index.d.ts +0 -10
  253. package/build/index.js +0 -8
  254. package/build/index.js.map +0 -1
  255. package/build/led-service.d.ts +0 -20
  256. package/build/led-service.js +0 -116
  257. package/build/led-service.js.map +0 -1
  258. package/build/led.js.map +0 -1
  259. package/build/logging.js.map +0 -1
  260. package/build/promise-queue.js.map +0 -1
  261. package/build/service-events.js.map +0 -1
  262. package/build/usb-device-wrapper.js.map +0 -1
  263. package/build/usb-partial-flashing-utils.js.map +0 -1
  264. package/build/usb-partial-flashing.js.map +0 -1
  265. package/build/usb-radio-bridge.d.ts +0 -41
  266. package/build/usb-radio-bridge.js.map +0 -1
  267. package/build/usb-serial-protocol.js.map +0 -1
  268. package/build/usb.d.ts +0 -54
  269. package/build/usb.js.map +0 -1
  270. package/vite.config.ts +0 -34
  271. /package/build/{accelerometer.d.ts → cjs/accelerometer.d.ts} +0 -0
  272. /package/build/{board-id.d.ts → cjs/board-id.d.ts} +0 -0
  273. /package/build/{board-serial-info.d.ts → cjs/board-serial-info.d.ts} +0 -0
  274. /package/build/{buttons.d.ts → cjs/buttons.d.ts} +0 -0
  275. /package/build/{constants.d.ts → cjs/constants.d.ts} +0 -0
  276. /package/build/{hex-flash-data-source.d.ts → cjs/hex-flash-data-source.d.ts} +0 -0
  277. /package/build/{led.d.ts → cjs/led.d.ts} +0 -0
  278. /package/build/{promise-queue.d.ts → cjs/promise-queue.d.ts} +0 -0
  279. /package/build/{setupTests.d.ts → cjs/setupTests.d.ts} +0 -0
  280. /package/build/{usb-partial-flashing-utils.d.ts → cjs/usb-partial-flashing-utils.d.ts} +0 -0
  281. /package/build/{usb-serial-protocol.d.ts → cjs/usb-serial-protocol.d.ts} +0 -0
  282. /package/build/{accelerometer.js → esm/accelerometer.js} +0 -0
  283. /package/build/{board-id.js → esm/board-id.js} +0 -0
  284. /package/build/{board-serial-info.js → esm/board-serial-info.js} +0 -0
  285. /package/build/{buttons.js → esm/buttons.js} +0 -0
  286. /package/build/{constants.js → esm/constants.js} +0 -0
  287. /package/build/{events.js → esm/events.js} +0 -0
  288. /package/build/{hex-flash-data-source.js → esm/hex-flash-data-source.js} +0 -0
  289. /package/build/{led.js → esm/led.js} +0 -0
  290. /package/build/{promise-queue.js → esm/promise-queue.js} +0 -0
  291. /package/build/{usb-partial-flashing-utils.js → esm/usb-partial-flashing-utils.js} +0 -0
  292. /package/build/{usb-serial-protocol.js → esm/usb-serial-protocol.js} +0 -0
@@ -0,0 +1,486 @@
1
+ "use strict";
2
+ /**
3
+ * (c) 2023, Center for Computational Thinking and Design at Aarhus University and contributors
4
+ *
5
+ * SPDX-License-Identifier: MIT
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.BluetoothDeviceWrapper = exports.isAndroid = exports.scanningTimeoutInMs = exports.connectTimeoutInMs = exports.bondingTimeoutInMs = void 0;
9
+ const bluetooth_le_1 = require("@capacitor-community/bluetooth-le");
10
+ const core_1 = require("@capacitor/core");
11
+ const accelerometer_service_js_1 = require("./accelerometer-service.js");
12
+ const async_util_js_1 = require("./async-util.js");
13
+ const button_service_js_1 = require("./button-service.js");
14
+ const device_information_service_js_1 = require("./device-information-service.js");
15
+ const device_js_1 = require("./device.js");
16
+ const led_service_js_1 = require("./led-service.js");
17
+ const logging_js_1 = require("./logging.js");
18
+ const magnetometer_service_js_1 = require("./magnetometer-service.js");
19
+ const partial_flashing_service_js_1 = require("./partial-flashing-service.js");
20
+ const uart_service_js_1 = require("./uart-service.js");
21
+ exports.bondingTimeoutInMs = 40_000;
22
+ exports.connectTimeoutInMs = 10_000;
23
+ exports.scanningTimeoutInMs = 10_000;
24
+ const isAndroid = () => core_1.Capacitor.getPlatform() === "android";
25
+ exports.isAndroid = isAndroid;
26
+ // TODO: We've removed the support for these behaviours as we need to
27
+ // re-evaluate how best to support then via capacitor-ble (or reinstate
28
+ // the direct Web Bluetooth connection code.
29
+ //
30
+ // On ChromeOS and Mac there's no timeout and no clear way to abort
31
+ // device.gatt.connect(), so we accept that sometimes we'll still
32
+ // be trying to connect when we'd rather not be. If it succeeds when
33
+ // we no longer intend to be connected then we disconnect at that
34
+ // point. If we try to connect when a previous connection attempt is
35
+ // still around then we wait for it for our timeout period.
36
+ //
37
+ // On Windows it times out after 7s.
38
+ // https://bugs.chromium.org/p/chromium/issues/detail?id=684073
39
+ //
40
+ // Additionally we've remove the delay before trying to connect again
41
+ // on Windows.
42
+ //
43
+ // We also used to have a timeout around requestDevice that reloaded the page.
44
+ //
45
+ // > In some situations the Chrome device prompt simply doesn't appear so we time
46
+ // > this out after 30 seconds and reload the page
47
+ class BluetoothDeviceWrapper {
48
+ constructor(device, logging = new logging_js_1.ConsoleLogging(), dispatchTypedEvent, currentEvents, callbacks) {
49
+ Object.defineProperty(this, "device", {
50
+ enumerable: true,
51
+ configurable: true,
52
+ writable: true,
53
+ value: device
54
+ });
55
+ Object.defineProperty(this, "logging", {
56
+ enumerable: true,
57
+ configurable: true,
58
+ writable: true,
59
+ value: logging
60
+ });
61
+ Object.defineProperty(this, "currentEvents", {
62
+ enumerable: true,
63
+ configurable: true,
64
+ writable: true,
65
+ value: currentEvents
66
+ });
67
+ Object.defineProperty(this, "callbacks", {
68
+ enumerable: true,
69
+ configurable: true,
70
+ writable: true,
71
+ value: callbacks
72
+ });
73
+ // Used to avoid automatic reconnection during user triggered connect/disconnect
74
+ // or reconnection itself.
75
+ Object.defineProperty(this, "duringExplicitConnectDisconnect", {
76
+ enumerable: true,
77
+ configurable: true,
78
+ writable: true,
79
+ value: 0
80
+ });
81
+ Object.defineProperty(this, "connected", {
82
+ enumerable: true,
83
+ configurable: true,
84
+ writable: true,
85
+ value: false
86
+ });
87
+ Object.defineProperty(this, "isReconnect", {
88
+ enumerable: true,
89
+ configurable: true,
90
+ writable: true,
91
+ value: false
92
+ });
93
+ // Only updated after the full connection flow completes not during bond handling.
94
+ Object.defineProperty(this, "serviceIds", {
95
+ enumerable: true,
96
+ configurable: true,
97
+ writable: true,
98
+ value: new Set()
99
+ });
100
+ Object.defineProperty(this, "accelerometer", {
101
+ enumerable: true,
102
+ configurable: true,
103
+ writable: true,
104
+ value: void 0
105
+ });
106
+ Object.defineProperty(this, "buttons", {
107
+ enumerable: true,
108
+ configurable: true,
109
+ writable: true,
110
+ value: void 0
111
+ });
112
+ Object.defineProperty(this, "deviceInformation", {
113
+ enumerable: true,
114
+ configurable: true,
115
+ writable: true,
116
+ value: void 0
117
+ });
118
+ Object.defineProperty(this, "led", {
119
+ enumerable: true,
120
+ configurable: true,
121
+ writable: true,
122
+ value: void 0
123
+ });
124
+ Object.defineProperty(this, "magnetometer", {
125
+ enumerable: true,
126
+ configurable: true,
127
+ writable: true,
128
+ value: void 0
129
+ });
130
+ Object.defineProperty(this, "uart", {
131
+ enumerable: true,
132
+ configurable: true,
133
+ writable: true,
134
+ value: void 0
135
+ });
136
+ /**
137
+ * Only defined after connection.
138
+ */
139
+ Object.defineProperty(this, "boardVersion", {
140
+ enumerable: true,
141
+ configurable: true,
142
+ writable: true,
143
+ value: void 0
144
+ });
145
+ Object.defineProperty(this, "services", {
146
+ enumerable: true,
147
+ configurable: true,
148
+ writable: true,
149
+ value: void 0
150
+ });
151
+ Object.defineProperty(this, "waitingForDisconnectEventCallbacks", {
152
+ enumerable: true,
153
+ configurable: true,
154
+ writable: true,
155
+ value: []
156
+ });
157
+ Object.defineProperty(this, "internalNotificationListeners", {
158
+ enumerable: true,
159
+ configurable: true,
160
+ writable: true,
161
+ value: new Map()
162
+ });
163
+ Object.defineProperty(this, "handleDisconnectEvent", {
164
+ enumerable: true,
165
+ configurable: true,
166
+ writable: true,
167
+ value: async () => {
168
+ this.waitingForDisconnectEventCallbacks.forEach((cb) => cb());
169
+ this.waitingForDisconnectEventCallbacks.length = 0;
170
+ this.connected = false;
171
+ try {
172
+ if (!this.duringExplicitConnectDisconnect) {
173
+ this.logging.log("Bluetooth disconnected... automatically trying reconnect");
174
+ await this.reconnect();
175
+ }
176
+ else {
177
+ this.logging.log("Bluetooth disconnect ignored during explicit disconnect");
178
+ }
179
+ }
180
+ catch (e) {
181
+ this.logging.error("Bluetooth connect triggered by disconnect listener failed", e);
182
+ }
183
+ }
184
+ });
185
+ this.accelerometer = new accelerometer_service_js_1.AccelerometerService(device.deviceId, dispatchTypedEvent);
186
+ this.buttons = new button_service_js_1.ButtonService(device.deviceId, dispatchTypedEvent);
187
+ this.deviceInformation = new device_information_service_js_1.DeviceInformationService(device.deviceId);
188
+ this.led = new led_service_js_1.LedService(device.deviceId);
189
+ this.magnetometer = new magnetometer_service_js_1.MagnetometerService(device.deviceId, dispatchTypedEvent);
190
+ this.uart = new uart_service_js_1.UARTService(device.deviceId, dispatchTypedEvent);
191
+ this.services = [
192
+ this.accelerometer,
193
+ this.buttons,
194
+ this.led,
195
+ this.magnetometer,
196
+ this.uart,
197
+ ];
198
+ }
199
+ async connect() {
200
+ this.logging.event({
201
+ type: this.isReconnect ? "Reconnect" : "Connect",
202
+ message: "Bluetooth connect start",
203
+ });
204
+ if (this.isReconnect) {
205
+ this.callbacks.onReconnecting();
206
+ }
207
+ else {
208
+ this.callbacks.onConnecting();
209
+ }
210
+ this.duringExplicitConnectDisconnect++;
211
+ try {
212
+ if (core_1.Capacitor.isNativePlatform()) {
213
+ await this.connectHandlingBond();
214
+ }
215
+ else {
216
+ await this.connectInternal();
217
+ }
218
+ await this.getBoardVersion();
219
+ const events = this.currentEvents();
220
+ const services = await bluetooth_le_1.BleClient.getServices(this.device.deviceId);
221
+ this.serviceIds = new Set(services.map((s) => s.uuid));
222
+ this.logging.log(`Starting notifications for current events ${events}`);
223
+ events.forEach((e) => this.startNotifications(e));
224
+ this.logging.event({
225
+ type: this.isReconnect ? "Reconnect" : "Connect",
226
+ message: "Bluetooth connect success",
227
+ });
228
+ this.callbacks.onSuccess();
229
+ }
230
+ catch (e) {
231
+ this.logging.error("Bluetooth connect error", e);
232
+ this.logging.event({
233
+ type: this.isReconnect ? "Reconnect" : "Connect",
234
+ message: "Bluetooth connect failed",
235
+ });
236
+ await this.disconnectInternal(false);
237
+ this.callbacks.onFail();
238
+ if (e instanceof device_js_1.DeviceError) {
239
+ throw e;
240
+ }
241
+ if (e instanceof async_util_js_1.TimeoutError) {
242
+ throw new device_js_1.DeviceError({
243
+ code: "timeout-error",
244
+ message: e instanceof Error ? e.message : String(e),
245
+ });
246
+ }
247
+ throw new device_js_1.DeviceError({
248
+ code: "bluetooth-connection-failed",
249
+ message: e instanceof Error ? e.message : String(e),
250
+ });
251
+ }
252
+ finally {
253
+ this.duringExplicitConnectDisconnect--;
254
+ // Reset isReconnect for next time
255
+ this.isReconnect = false;
256
+ }
257
+ }
258
+ async connectInternal() {
259
+ this.waitingForDisconnectEventCallbacks.length = 0;
260
+ await bluetooth_le_1.BleClient.connect(this.device.deviceId, this.handleDisconnectEvent, {
261
+ timeout: exports.connectTimeoutInMs,
262
+ });
263
+ this.connected = true;
264
+ }
265
+ async disconnect() {
266
+ return this.disconnectInternal(true);
267
+ }
268
+ async disconnectInternal(userTriggered) {
269
+ this.logging.log(`Bluetooth disconnect ${userTriggered ? "(user triggered)" : "(programmatic)"}`);
270
+ this.duringExplicitConnectDisconnect++;
271
+ try {
272
+ if (this.connected) {
273
+ await bluetooth_le_1.BleClient.disconnect(this.device.deviceId);
274
+ }
275
+ }
276
+ catch (e) {
277
+ this.logging.error("Bluetooth GATT disconnect error (ignored)", e);
278
+ // We might have already lost the connection.
279
+ }
280
+ finally {
281
+ this.duringExplicitConnectDisconnect--;
282
+ }
283
+ }
284
+ async reconnect() {
285
+ this.logging.log("Bluetooth reconnect");
286
+ this.isReconnect = true;
287
+ await this.connect();
288
+ }
289
+ async getBoardVersion() {
290
+ // We read this when we connect and it won't change.
291
+ if (this.boardVersion) {
292
+ return this.boardVersion;
293
+ }
294
+ this.boardVersion = await this.deviceInformation.getBoardVersion();
295
+ return this.boardVersion;
296
+ }
297
+ async startNotifications(type) {
298
+ await this.getServicesForEvent(type)?.startNotifications(type);
299
+ }
300
+ async stopNotifications(type) {
301
+ await this.getServicesForEvent(type)?.stopNotifications(type);
302
+ }
303
+ getServicesForEvent(type) {
304
+ return this.services.find((s) => this.serviceIds.has(s.uuid) && s.getRelevantEvents().includes(type));
305
+ }
306
+ async startInternalNotifications(serviceId, characteristicId, options) {
307
+ const key = this.getNotificationKey(serviceId, characteristicId);
308
+ await this.raceDisconnectAndTimeout(bluetooth_le_1.BleClient.startNotifications(this.device.deviceId, serviceId, characteristicId, (value) => {
309
+ const bytes = new Uint8Array(value.buffer);
310
+ // Notify all registered callbacks.
311
+ this.internalNotificationListeners
312
+ .get(key)
313
+ ?.forEach((cb) => cb(bytes));
314
+ }, options), { actionName: "start notifications" });
315
+ }
316
+ subscribe(serviceId, characteristicId, callback) {
317
+ const key = this.getNotificationKey(serviceId, characteristicId);
318
+ if (!this.internalNotificationListeners.has(key)) {
319
+ this.internalNotificationListeners.set(key, new Set());
320
+ }
321
+ this.internalNotificationListeners.get(key).add(callback);
322
+ }
323
+ unsubscribe(serviceId, characteristicId, callback) {
324
+ const key = this.getNotificationKey(serviceId, characteristicId);
325
+ this.internalNotificationListeners.get(key)?.delete(callback);
326
+ }
327
+ async stopInternalNotifications(serviceId, characteristicId) {
328
+ await bluetooth_le_1.BleClient.stopNotifications(this.device.deviceId, serviceId, characteristicId);
329
+ const key = this.getNotificationKey(serviceId, characteristicId);
330
+ this.internalNotificationListeners.delete(key);
331
+ }
332
+ /**
333
+ * Write to characteristic and wait for a notification response.
334
+ *
335
+ * It is the responsibility of the caller to have started notifications
336
+ * for the characteristic.
337
+ */
338
+ async writeForNotification(serviceId, characteristicId, value, notificationId, isFinalNotification = () => true) {
339
+ let notificationListener;
340
+ const notificationPromise = new Promise((resolve) => {
341
+ notificationListener = (bytes) => {
342
+ if (bytes[0] === notificationId && isFinalNotification(bytes)) {
343
+ resolve(bytes);
344
+ }
345
+ };
346
+ this.subscribe(serviceId, characteristicId, notificationListener);
347
+ });
348
+ try {
349
+ await bluetooth_le_1.BleClient.writeWithoutResponse(this.device.deviceId, serviceId, characteristicId, value);
350
+ return await this.raceDisconnectAndTimeout(notificationPromise, {
351
+ timeout: 3_000,
352
+ actionName: "flash notification wait",
353
+ });
354
+ }
355
+ finally {
356
+ if (notificationListener) {
357
+ this.unsubscribe(serviceId, characteristicId, notificationListener);
358
+ }
359
+ }
360
+ }
361
+ async waitForDisconnect(timeout) {
362
+ if (!this.connected) {
363
+ this.log("Waiting for disconnect but not connected");
364
+ return;
365
+ }
366
+ this.log(`Waiting for disconnect (timeout ${timeout})`);
367
+ try {
368
+ await Promise.race([
369
+ this.disconnectErrorPromise("wait"),
370
+ (0, async_util_js_1.timeoutErrorAfter)(timeout),
371
+ ]);
372
+ }
373
+ catch (e) {
374
+ if (e instanceof async_util_js_1.TimeoutError) {
375
+ this.error("Timeout waiting for disconnect");
376
+ }
377
+ if (!(e instanceof async_util_js_1.DisconnectError)) {
378
+ throw e;
379
+ }
380
+ }
381
+ }
382
+ /**
383
+ * Suitable for running a series of BLE interactions with an overall timeout
384
+ * and general disconnection
385
+ */
386
+ async raceDisconnectAndTimeout(promise, options = {}) {
387
+ if (!this.connected) {
388
+ throw new async_util_js_1.DisconnectError();
389
+ }
390
+ const actionName = options.actionName ?? "action";
391
+ const errorOnDisconnectPromise = this.disconnectErrorPromise(actionName);
392
+ return await Promise.race([
393
+ promise,
394
+ errorOnDisconnectPromise,
395
+ ...(options.timeout ? [(0, async_util_js_1.timeoutErrorAfter)(options.timeout)] : []),
396
+ ]);
397
+ }
398
+ disconnectErrorPromise(actionName) {
399
+ const { promise, callback } = (0, async_util_js_1.disconnectErrorCallback)(`Disconnected during ${actionName}`);
400
+ this.waitingForDisconnectEventCallbacks.push(callback);
401
+ return promise;
402
+ }
403
+ event(event) {
404
+ this.logging.event(event);
405
+ }
406
+ log(message) {
407
+ this.logging.log(message);
408
+ }
409
+ error(message, e) {
410
+ this.logging.error(message, e);
411
+ }
412
+ getNotificationKey(serviceId, characteristicId) {
413
+ return `${serviceId}:${characteristicId}`;
414
+ }
415
+ /**
416
+ * Bonds with device and handles the post-bond device state only returning
417
+ * when we can reattempt a connection with the device.
418
+ */
419
+ async connectHandlingBond() {
420
+ const startTime = Date.now();
421
+ const maybeJustBonded = await this.bondConnectDeviceInternal();
422
+ if (maybeJustBonded) {
423
+ // If we did just bond then the device disconnects after 2_000 and then
424
+ // resets after a further 13_000 In future we'd like a firmware change
425
+ // that means it doesn't reset when partial flashing is in progress.
426
+ this.log((0, exports.isAndroid)() ? "New bond" : "Potential new bond");
427
+ // On Android with micro:bit V1 we don't see this disconnect (just the 15s
428
+ // reboot) so we hit the timeout and then continue to reset into pairing
429
+ // mode.
430
+ // TODO: document what happens with iOS micro:bit V1 in the new bond case.
431
+ try {
432
+ await this.waitForDisconnect(3000);
433
+ }
434
+ catch (e) {
435
+ if (e instanceof async_util_js_1.TimeoutError) {
436
+ this.log("No disconnect after bond, assuming connection is stable");
437
+ if (!(0, exports.isAndroid)()) {
438
+ // We never knew for sure whether this was a new bond. Assume we
439
+ // were already bonded on the basis we didn't get disconnected.
440
+ return;
441
+ }
442
+ }
443
+ else {
444
+ throw e;
445
+ }
446
+ }
447
+ await this.connectInternal();
448
+ // TODO: check this is needed, potentially inline into connect if always needed
449
+ await (0, async_util_js_1.delay)(500);
450
+ this.log("Resetting to pairing mode");
451
+ const pf = new partial_flashing_service_js_1.PartialFlashingService(this);
452
+ await pf.resetToMode(partial_flashing_service_js_1.MicroBitMode.Pairing);
453
+ await this.waitForDisconnect(10_000);
454
+ await this.connectInternal();
455
+ this.log(`Connection ready; took ${Date.now() - startTime}`);
456
+ }
457
+ }
458
+ async bondConnectDeviceInternal() {
459
+ const { deviceId } = this.device;
460
+ if ((0, exports.isAndroid)()) {
461
+ let justBonded = false;
462
+ // This gets us a nicer pairing dialog than just going straight for the characteristic.
463
+ if (!(await bluetooth_le_1.BleClient.isBonded(deviceId))) {
464
+ await bluetooth_le_1.BleClient.createBond(deviceId, { timeout: exports.bondingTimeoutInMs });
465
+ justBonded = true;
466
+ }
467
+ await this.connectInternal();
468
+ return justBonded;
469
+ }
470
+ else {
471
+ // Long timeout as this is the point that the pairing dialog will show.
472
+ // If this responds very quickly maybe we could assume there was a bond?
473
+ // At the moment we always do the disconnect dance so subsequent code will
474
+ // need to call startNotifications again. We need to be connected to
475
+ // startNotifications.
476
+ await this.connectInternal();
477
+ const pf = new partial_flashing_service_js_1.PartialFlashingService(this);
478
+ await pf.startNotifications({ timeout: exports.bondingTimeoutInMs });
479
+ // We just did it now to trigger pairing at a well defined point.
480
+ await pf.stopNotifications();
481
+ return true;
482
+ }
483
+ }
484
+ }
485
+ exports.BluetoothDeviceWrapper = BluetoothDeviceWrapper;
486
+ //# sourceMappingURL=bluetooth-device-wrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bluetooth-device-wrapper.js","sourceRoot":"","sources":["../../lib/bluetooth-device-wrapper.ts"],"names":[],"mappings":"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"}
@@ -1,22 +1,22 @@
1
1
  export declare const profile: {
2
- uart: {
2
+ accelerometer: {
3
3
  id: string;
4
4
  characteristics: {
5
- tx: {
5
+ data: {
6
6
  id: string;
7
7
  };
8
- rx: {
8
+ period: {
9
9
  id: string;
10
10
  };
11
11
  };
12
12
  };
13
- accelerometer: {
13
+ button: {
14
14
  id: string;
15
15
  characteristics: {
16
- data: {
16
+ a: {
17
17
  id: string;
18
18
  };
19
- period: {
19
+ b: {
20
20
  id: string;
21
21
  };
22
22
  };
@@ -24,19 +24,19 @@ export declare const profile: {
24
24
  deviceInformation: {
25
25
  id: string;
26
26
  characteristics: {
27
- modelNumber: {
27
+ firmwareRevision: {
28
28
  id: string;
29
29
  };
30
- serialNumber: {
30
+ hardwareRevision: {
31
31
  id: string;
32
32
  };
33
- firmwareRevision: {
33
+ manufacturer: {
34
34
  id: string;
35
35
  };
36
- hardwareRevision: {
36
+ modelNumber: {
37
37
  id: string;
38
38
  };
39
- manufacturer: {
39
+ serialNumber: {
40
40
  id: string;
41
41
  };
42
42
  };
@@ -49,16 +49,19 @@ export declare const profile: {
49
49
  };
50
50
  };
51
51
  };
52
- led: {
52
+ event: {
53
53
  id: string;
54
54
  characteristics: {
55
- matrixState: {
55
+ clientEvent: {
56
56
  id: string;
57
57
  };
58
- text: {
58
+ clientRequirements: {
59
59
  id: string;
60
60
  };
61
- scrollingDelay: {
61
+ microBitEvent: {
62
+ id: string;
63
+ };
64
+ microBitRequirements: {
62
65
  id: string;
63
66
  };
64
67
  };
@@ -66,10 +69,10 @@ export declare const profile: {
66
69
  ioPin: {
67
70
  id: string;
68
71
  characteristics: {
69
- pinData: {
72
+ pinAdConfiguration: {
70
73
  id: string;
71
74
  };
72
- pinAdConfiguration: {
75
+ pinData: {
73
76
  id: string;
74
77
  };
75
78
  pinIoConfiguration: {
@@ -80,30 +83,16 @@ export declare const profile: {
80
83
  };
81
84
  };
82
85
  };
83
- button: {
84
- id: string;
85
- characteristics: {
86
- a: {
87
- id: string;
88
- };
89
- b: {
90
- id: string;
91
- };
92
- };
93
- };
94
- event: {
86
+ led: {
95
87
  id: string;
96
88
  characteristics: {
97
- microBitRequirements: {
98
- id: string;
99
- };
100
- microBitEvent: {
89
+ matrixState: {
101
90
  id: string;
102
91
  };
103
- clientRequirements: {
92
+ scrollingDelay: {
104
93
  id: string;
105
94
  };
106
- clientEvent: {
95
+ text: {
107
96
  id: string;
108
97
  };
109
98
  };
@@ -125,6 +114,14 @@ export declare const profile: {
125
114
  };
126
115
  };
127
116
  };
117
+ partialFlashing: {
118
+ id: string;
119
+ characteristics: {
120
+ partialFlash: {
121
+ id: string;
122
+ };
123
+ };
124
+ };
128
125
  temperature: {
129
126
  id: string;
130
127
  characteristics: {
@@ -136,4 +133,15 @@ export declare const profile: {
136
133
  };
137
134
  };
138
135
  };
136
+ uart: {
137
+ id: string;
138
+ characteristics: {
139
+ rx: {
140
+ id: string;
141
+ };
142
+ tx: {
143
+ id: string;
144
+ };
145
+ };
146
+ };
139
147
  };