@microbit/microbit-connection 0.9.0-apps.alpha.15 → 0.9.0-apps.alpha.17

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 (452) hide show
  1. package/build/cjs/async-util.js.map +1 -1
  2. package/build/cjs/async-util.test.d.ts +1 -0
  3. package/build/cjs/async-util.test.js +20 -0
  4. package/build/cjs/async-util.test.js.map +1 -0
  5. package/build/cjs/availability.js.map +1 -1
  6. package/build/{esm/bluetooth.d.ts → cjs/bluetooth/connection.d.ts} +30 -26
  7. package/build/cjs/{bluetooth.js → bluetooth/connection.js} +183 -106
  8. package/build/cjs/bluetooth/connection.js.map +1 -0
  9. package/build/cjs/bluetooth/connection.test.d.ts +1 -0
  10. package/build/cjs/bluetooth/connection.test.js +88 -0
  11. package/build/cjs/bluetooth/connection.test.js.map +1 -0
  12. package/build/cjs/bluetooth/device-bond-state.js.map +1 -0
  13. package/build/cjs/{bluetooth-device-wrapper.d.ts → bluetooth/device-wrapper.d.ts} +22 -11
  14. package/build/cjs/{bluetooth-device-wrapper.js → bluetooth/device-wrapper.js} +99 -42
  15. package/build/cjs/bluetooth/device-wrapper.js.map +1 -0
  16. package/build/cjs/{flashing → bluetooth/flashing}/flashing-full.d.ts +2 -2
  17. package/build/cjs/{flashing → bluetooth/flashing}/flashing-full.js +4 -4
  18. package/build/cjs/bluetooth/flashing/flashing-full.js.map +1 -0
  19. package/build/cjs/bluetooth/flashing/flashing-makecode.d.ts +10 -0
  20. package/build/cjs/{flashing → bluetooth/flashing}/flashing-makecode.js +5 -2
  21. package/build/cjs/bluetooth/flashing/flashing-makecode.js.map +1 -0
  22. package/build/cjs/bluetooth/flashing/flashing-makecode.test.d.ts +1 -0
  23. package/build/cjs/bluetooth/flashing/flashing-makecode.test.js +253 -0
  24. package/build/cjs/bluetooth/flashing/flashing-makecode.test.js.map +1 -0
  25. package/build/cjs/{flashing → bluetooth/flashing}/flashing-partial.d.ts +3 -2
  26. package/build/cjs/{flashing → bluetooth/flashing}/flashing-partial.js +17 -3
  27. package/build/cjs/bluetooth/flashing/flashing-partial.js.map +1 -0
  28. package/build/cjs/bluetooth/flashing/flashing-v1.js.map +1 -0
  29. package/build/cjs/{flashing → bluetooth/flashing}/nordic-dfu.d.ts +2 -2
  30. package/build/cjs/{flashing → bluetooth/flashing}/nordic-dfu.js +25 -11
  31. package/build/cjs/bluetooth/flashing/nordic-dfu.js.map +1 -0
  32. package/build/cjs/bluetooth/flashing/zip.js.map +1 -0
  33. package/build/cjs/bluetooth/flashing/zip.test.d.ts +1 -0
  34. package/build/cjs/bluetooth/flashing/zip.test.js +96 -0
  35. package/build/cjs/bluetooth/flashing/zip.test.js.map +1 -0
  36. package/build/cjs/bluetooth/index.d.ts +5 -0
  37. package/build/cjs/bluetooth/index.js +9 -0
  38. package/build/cjs/bluetooth/index.js.map +1 -0
  39. package/build/cjs/{bluetooth-profile.d.ts → bluetooth/profile.d.ts} +8 -0
  40. package/build/cjs/{bluetooth-profile.js → bluetooth/profile.js} +7 -1
  41. package/build/cjs/bluetooth/profile.js.map +1 -0
  42. package/build/{esm → cjs/bluetooth/services}/accelerometer-service.d.ts +2 -3
  43. package/build/cjs/{accelerometer-service.js → bluetooth/services/accelerometer-service.js} +16 -12
  44. package/build/cjs/bluetooth/services/accelerometer-service.js.map +1 -0
  45. package/build/{esm → cjs/bluetooth/services}/button-service.d.ts +2 -3
  46. package/build/cjs/{button-service.js → bluetooth/services/button-service.js} +15 -14
  47. package/build/cjs/bluetooth/services/button-service.js.map +1 -0
  48. package/build/{esm → cjs/bluetooth/services}/device-information-service.d.ts +1 -1
  49. package/build/cjs/{device-information-service.js → bluetooth/services/device-information-service.js} +2 -2
  50. package/build/cjs/bluetooth/services/device-information-service.js.map +1 -0
  51. package/build/cjs/{dfu-service.js → bluetooth/services/dfu-service.js} +2 -2
  52. package/build/cjs/bluetooth/services/dfu-service.js.map +1 -0
  53. package/build/cjs/{led-service.d.ts → bluetooth/services/led-service.d.ts} +2 -3
  54. package/build/cjs/{led-service.js → bluetooth/services/led-service.js} +7 -7
  55. package/build/cjs/bluetooth/services/led-service.js.map +1 -0
  56. package/build/cjs/{magnetometer-service.d.ts → bluetooth/services/magnetometer-service.d.ts} +2 -3
  57. package/build/cjs/{magnetometer-service.js → bluetooth/services/magnetometer-service.js} +18 -14
  58. package/build/cjs/bluetooth/services/magnetometer-service.js.map +1 -0
  59. package/build/{esm → cjs/bluetooth/services}/partial-flashing-service.d.ts +1 -1
  60. package/build/cjs/{partial-flashing-service.js → bluetooth/services/partial-flashing-service.js} +8 -8
  61. package/build/cjs/bluetooth/services/partial-flashing-service.js.map +1 -0
  62. package/build/cjs/{uart-service.d.ts → bluetooth/services/uart-service.d.ts} +2 -2
  63. package/build/cjs/{uart-service.js → bluetooth/services/uart-service.js} +12 -9
  64. package/build/cjs/bluetooth/services/uart-service.js.map +1 -0
  65. package/build/cjs/board-id.d.ts +1 -1
  66. package/build/cjs/board-id.js.map +1 -1
  67. package/build/cjs/device.d.ts +82 -75
  68. package/build/cjs/device.js +40 -126
  69. package/build/cjs/device.js.map +1 -1
  70. package/build/cjs/events.d.ts +9 -108
  71. package/build/cjs/events.js +27 -88
  72. package/build/cjs/events.js.map +1 -1
  73. package/build/cjs/events.test.d.ts +1 -0
  74. package/build/cjs/events.test.js +115 -0
  75. package/build/cjs/events.test.js.map +1 -0
  76. package/build/cjs/hex-util.d.ts +1 -0
  77. package/build/cjs/hex-util.js +15 -0
  78. package/build/cjs/hex-util.js.map +1 -0
  79. package/build/cjs/index.d.ts +7 -16
  80. package/build/cjs/index.js +6 -26
  81. package/build/cjs/index.js.map +1 -1
  82. package/build/cjs/logging.js.map +1 -1
  83. package/build/cjs/radio-bridge/connection.d.ts +39 -0
  84. package/build/cjs/{usb-radio-bridge.js → radio-bridge/connection.js} +39 -25
  85. package/build/cjs/radio-bridge/connection.js.map +1 -0
  86. package/build/cjs/radio-bridge/index.d.ts +4 -0
  87. package/build/cjs/radio-bridge/index.js +9 -0
  88. package/build/cjs/radio-bridge/index.js.map +1 -0
  89. package/build/cjs/{usb-serial-protocol.js → radio-bridge/serial-protocol.js} +1 -1
  90. package/build/cjs/radio-bridge/serial-protocol.js.map +1 -0
  91. package/build/cjs/service-events.d.ts +42 -14
  92. package/build/cjs/service-events.js +6 -36
  93. package/build/cjs/service-events.js.map +1 -1
  94. package/build/cjs/setupTests.js +8 -0
  95. package/build/cjs/setupTests.js.map +1 -1
  96. package/build/{esm/hex-flash-data-source.d.ts → cjs/universal-hex/flash-data-source.d.ts} +1 -2
  97. package/build/cjs/{hex-flash-data-source.js → universal-hex/flash-data-source.js} +7 -15
  98. package/build/cjs/universal-hex/flash-data-source.js.map +1 -0
  99. package/build/cjs/universal-hex/index.d.ts +4 -0
  100. package/build/cjs/universal-hex/index.js +9 -0
  101. package/build/cjs/universal-hex/index.js.map +1 -0
  102. package/build/cjs/usb/arm-debug.d.ts +137 -0
  103. package/build/cjs/usb/arm-debug.js +414 -0
  104. package/build/cjs/usb/arm-debug.js.map +1 -0
  105. package/build/cjs/usb/arm-debug.test.d.ts +1 -0
  106. package/build/cjs/usb/arm-debug.test.js +333 -0
  107. package/build/cjs/usb/arm-debug.test.js.map +1 -0
  108. package/build/cjs/{board-serial-info.d.ts → usb/board-serial-info.d.ts} +2 -1
  109. package/build/cjs/{board-serial-info.js → usb/board-serial-info.js} +10 -7
  110. package/build/cjs/usb/board-serial-info.js.map +1 -0
  111. package/build/cjs/usb/board-serial-info.test.d.ts +1 -0
  112. package/build/cjs/usb/board-serial-info.test.js +46 -0
  113. package/build/cjs/usb/board-serial-info.test.js.map +1 -0
  114. package/build/cjs/usb/cdc-saturation.d.ts +36 -0
  115. package/build/cjs/usb/cdc-saturation.js +151 -0
  116. package/build/cjs/usb/cdc-saturation.js.map +1 -0
  117. package/build/cjs/usb/cmsis-dap.d.ts +113 -0
  118. package/build/cjs/usb/cmsis-dap.js +349 -0
  119. package/build/cjs/usb/cmsis-dap.js.map +1 -0
  120. package/build/cjs/usb/cmsis-dap.test.d.ts +1 -0
  121. package/build/cjs/usb/cmsis-dap.test.js +350 -0
  122. package/build/cjs/usb/cmsis-dap.test.js.map +1 -0
  123. package/build/cjs/usb/connection.d.ts +81 -0
  124. package/build/cjs/{usb.js → usb/connection.js} +243 -166
  125. package/build/cjs/usb/connection.js.map +1 -0
  126. package/build/cjs/usb/connection.test.d.ts +1 -0
  127. package/build/cjs/usb/connection.test.js +266 -0
  128. package/build/cjs/usb/connection.test.js.map +1 -0
  129. package/build/cjs/usb/cortex-m.d.ts +72 -0
  130. package/build/cjs/usb/cortex-m.js +165 -0
  131. package/build/cjs/usb/cortex-m.js.map +1 -0
  132. package/build/cjs/usb/cortex-m.test.d.ts +1 -0
  133. package/build/cjs/usb/cortex-m.test.js +217 -0
  134. package/build/cjs/usb/cortex-m.test.js.map +1 -0
  135. package/build/cjs/usb/daplink.d.ts +69 -0
  136. package/build/cjs/usb/daplink.js +238 -0
  137. package/build/cjs/usb/daplink.js.map +1 -0
  138. package/build/cjs/usb/daplink.test.d.ts +1 -0
  139. package/build/cjs/usb/daplink.test.js +290 -0
  140. package/build/cjs/usb/daplink.test.js.map +1 -0
  141. package/build/cjs/usb/device-wrapper.d.ts +34 -0
  142. package/build/cjs/usb/device-wrapper.js +102 -0
  143. package/build/cjs/usb/device-wrapper.js.map +1 -0
  144. package/build/cjs/usb/index.d.ts +5 -0
  145. package/build/cjs/usb/index.js +10 -0
  146. package/build/cjs/usb/index.js.map +1 -0
  147. package/build/{esm/usb-partial-flashing-utils.d.ts → cjs/usb/partial-flashing-utils.d.ts} +6 -9
  148. package/build/cjs/{usb-partial-flashing-utils.js → usb/partial-flashing-utils.js} +6 -49
  149. package/build/cjs/usb/partial-flashing-utils.js.map +1 -0
  150. package/build/cjs/{usb-partial-flashing.d.ts → usb/partial-flashing.d.ts} +15 -7
  151. package/build/cjs/{usb-partial-flashing.js → usb/partial-flashing.js} +64 -119
  152. package/build/cjs/usb/partial-flashing.js.map +1 -0
  153. package/build/cjs/usb/promise-queue.js.map +1 -0
  154. package/build/cjs/usb/promise-queue.test.d.ts +1 -0
  155. package/build/cjs/usb/promise-queue.test.js +68 -0
  156. package/build/cjs/usb/promise-queue.test.js.map +1 -0
  157. package/build/cjs/usb/serial-events.d.ts +21 -0
  158. package/build/cjs/{led.js → usb/serial-events.js} +1 -1
  159. package/build/cjs/usb/serial-events.js.map +1 -0
  160. package/build/cjs/usb/transport.d.ts +42 -0
  161. package/build/cjs/usb/transport.js +155 -0
  162. package/build/cjs/usb/transport.js.map +1 -0
  163. package/build/esm/async-util.js.map +1 -1
  164. package/build/esm/async-util.test.d.ts +1 -0
  165. package/build/esm/async-util.test.js +18 -0
  166. package/build/esm/async-util.test.js.map +1 -0
  167. package/build/esm/availability.js.map +1 -1
  168. package/build/{cjs/bluetooth.d.ts → esm/bluetooth/connection.d.ts} +30 -26
  169. package/build/esm/{bluetooth.js → bluetooth/connection.js} +177 -100
  170. package/build/esm/bluetooth/connection.js.map +1 -0
  171. package/build/esm/bluetooth/connection.test.d.ts +1 -0
  172. package/build/esm/bluetooth/connection.test.js +86 -0
  173. package/build/esm/bluetooth/connection.test.js.map +1 -0
  174. package/build/esm/bluetooth/device-bond-state.js.map +1 -0
  175. package/build/esm/{bluetooth-device-wrapper.d.ts → bluetooth/device-wrapper.d.ts} +22 -11
  176. package/build/esm/{bluetooth-device-wrapper.js → bluetooth/device-wrapper.js} +97 -41
  177. package/build/esm/bluetooth/device-wrapper.js.map +1 -0
  178. package/build/esm/{flashing → bluetooth/flashing}/flashing-full.d.ts +2 -2
  179. package/build/esm/{flashing → bluetooth/flashing}/flashing-full.js +4 -4
  180. package/build/esm/bluetooth/flashing/flashing-full.js.map +1 -0
  181. package/build/esm/bluetooth/flashing/flashing-makecode.d.ts +10 -0
  182. package/build/esm/{flashing → bluetooth/flashing}/flashing-makecode.js +5 -2
  183. package/build/esm/bluetooth/flashing/flashing-makecode.js.map +1 -0
  184. package/build/esm/bluetooth/flashing/flashing-makecode.test.d.ts +1 -0
  185. package/build/esm/bluetooth/flashing/flashing-makecode.test.js +248 -0
  186. package/build/esm/bluetooth/flashing/flashing-makecode.test.js.map +1 -0
  187. package/build/esm/{flashing → bluetooth/flashing}/flashing-partial.d.ts +3 -2
  188. package/build/esm/{flashing → bluetooth/flashing}/flashing-partial.js +17 -3
  189. package/build/esm/bluetooth/flashing/flashing-partial.js.map +1 -0
  190. package/build/esm/bluetooth/flashing/flashing-v1.js.map +1 -0
  191. package/build/esm/{flashing → bluetooth/flashing}/nordic-dfu.d.ts +2 -2
  192. package/build/esm/{flashing → bluetooth/flashing}/nordic-dfu.js +25 -11
  193. package/build/esm/bluetooth/flashing/nordic-dfu.js.map +1 -0
  194. package/build/esm/bluetooth/flashing/zip.js.map +1 -0
  195. package/build/esm/bluetooth/flashing/zip.test.d.ts +1 -0
  196. package/build/esm/bluetooth/flashing/zip.test.js +94 -0
  197. package/build/esm/bluetooth/flashing/zip.test.js.map +1 -0
  198. package/build/esm/bluetooth/index.d.ts +5 -0
  199. package/build/esm/bluetooth/index.js +5 -0
  200. package/build/esm/bluetooth/index.js.map +1 -0
  201. package/build/esm/{bluetooth-profile.d.ts → bluetooth/profile.d.ts} +8 -0
  202. package/build/esm/{bluetooth-profile.js → bluetooth/profile.js} +7 -1
  203. package/build/{cjs/bluetooth-profile.js.map → esm/bluetooth/profile.js.map} +1 -1
  204. package/build/{cjs → esm/bluetooth/services}/accelerometer-service.d.ts +2 -3
  205. package/build/esm/{accelerometer-service.js → bluetooth/services/accelerometer-service.js} +10 -6
  206. package/build/esm/bluetooth/services/accelerometer-service.js.map +1 -0
  207. package/build/{cjs → esm/bluetooth/services}/button-service.d.ts +2 -3
  208. package/build/esm/{button-service.js → bluetooth/services/button-service.js} +10 -9
  209. package/build/esm/bluetooth/services/button-service.js.map +1 -0
  210. package/build/{cjs → esm/bluetooth/services}/device-information-service.d.ts +1 -1
  211. package/build/esm/{device-information-service.js → bluetooth/services/device-information-service.js} +1 -1
  212. package/build/esm/bluetooth/services/device-information-service.js.map +1 -0
  213. package/build/esm/{dfu-service.js → bluetooth/services/dfu-service.js} +1 -1
  214. package/build/esm/bluetooth/services/dfu-service.js.map +1 -0
  215. package/build/esm/{led-service.d.ts → bluetooth/services/led-service.d.ts} +2 -3
  216. package/build/esm/{led-service.js → bluetooth/services/led-service.js} +1 -1
  217. package/build/esm/bluetooth/services/led-service.js.map +1 -0
  218. package/build/esm/{magnetometer-service.d.ts → bluetooth/services/magnetometer-service.d.ts} +2 -3
  219. package/build/esm/{magnetometer-service.js → bluetooth/services/magnetometer-service.js} +10 -6
  220. package/build/esm/bluetooth/services/magnetometer-service.js.map +1 -0
  221. package/build/{cjs → esm/bluetooth/services}/partial-flashing-service.d.ts +1 -1
  222. package/build/esm/{partial-flashing-service.js → bluetooth/services/partial-flashing-service.js} +4 -4
  223. package/build/esm/bluetooth/services/partial-flashing-service.js.map +1 -0
  224. package/build/esm/{uart-service.d.ts → bluetooth/services/uart-service.d.ts} +2 -2
  225. package/build/esm/{uart-service.js → bluetooth/services/uart-service.js} +8 -5
  226. package/build/esm/bluetooth/services/uart-service.js.map +1 -0
  227. package/build/esm/board-id.d.ts +1 -1
  228. package/build/esm/board-id.js.map +1 -1
  229. package/build/esm/device.d.ts +82 -75
  230. package/build/esm/device.js +38 -120
  231. package/build/esm/device.js.map +1 -1
  232. package/build/esm/events.d.ts +9 -108
  233. package/build/esm/events.js +26 -86
  234. package/build/esm/events.js.map +1 -1
  235. package/build/esm/events.test.d.ts +1 -0
  236. package/build/esm/events.test.js +113 -0
  237. package/build/esm/events.test.js.map +1 -0
  238. package/build/esm/hex-util.d.ts +1 -0
  239. package/build/esm/hex-util.js +11 -0
  240. package/build/esm/hex-util.js.map +1 -0
  241. package/build/esm/index.d.ts +7 -16
  242. package/build/esm/index.js +6 -10
  243. package/build/esm/index.js.map +1 -1
  244. package/build/esm/logging.js.map +1 -1
  245. package/build/esm/radio-bridge/connection.d.ts +39 -0
  246. package/build/esm/{usb-radio-bridge.js → radio-bridge/connection.js} +39 -25
  247. package/build/esm/radio-bridge/connection.js.map +1 -0
  248. package/build/esm/radio-bridge/index.d.ts +4 -0
  249. package/build/esm/radio-bridge/index.js +5 -0
  250. package/build/esm/radio-bridge/index.js.map +1 -0
  251. package/build/esm/{usb-serial-protocol.js → radio-bridge/serial-protocol.js} +1 -1
  252. package/build/esm/radio-bridge/serial-protocol.js.map +1 -0
  253. package/build/esm/service-events.d.ts +42 -14
  254. package/build/esm/service-events.js +5 -34
  255. package/build/esm/service-events.js.map +1 -1
  256. package/build/esm/setupTests.js +7 -0
  257. package/build/esm/setupTests.js.map +1 -1
  258. package/build/{cjs/hex-flash-data-source.d.ts → esm/universal-hex/flash-data-source.d.ts} +1 -2
  259. package/build/esm/{hex-flash-data-source.js → universal-hex/flash-data-source.js} +6 -13
  260. package/build/esm/universal-hex/flash-data-source.js.map +1 -0
  261. package/build/esm/universal-hex/index.d.ts +4 -0
  262. package/build/esm/universal-hex/index.js +5 -0
  263. package/build/esm/universal-hex/index.js.map +1 -0
  264. package/build/esm/usb/arm-debug.d.ts +137 -0
  265. package/build/esm/usb/arm-debug.js +409 -0
  266. package/build/esm/usb/arm-debug.js.map +1 -0
  267. package/build/esm/usb/arm-debug.test.d.ts +1 -0
  268. package/build/esm/usb/arm-debug.test.js +331 -0
  269. package/build/esm/usb/arm-debug.test.js.map +1 -0
  270. package/build/esm/{board-serial-info.d.ts → usb/board-serial-info.d.ts} +2 -1
  271. package/build/esm/{board-serial-info.js → usb/board-serial-info.js} +10 -7
  272. package/build/esm/usb/board-serial-info.js.map +1 -0
  273. package/build/esm/usb/board-serial-info.test.d.ts +1 -0
  274. package/build/esm/usb/board-serial-info.test.js +44 -0
  275. package/build/esm/usb/board-serial-info.test.js.map +1 -0
  276. package/build/esm/usb/cdc-saturation.d.ts +36 -0
  277. package/build/esm/usb/cdc-saturation.js +148 -0
  278. package/build/esm/usb/cdc-saturation.js.map +1 -0
  279. package/build/esm/usb/cmsis-dap.d.ts +113 -0
  280. package/build/esm/usb/cmsis-dap.js +342 -0
  281. package/build/esm/usb/cmsis-dap.js.map +1 -0
  282. package/build/esm/usb/cmsis-dap.test.d.ts +1 -0
  283. package/build/esm/usb/cmsis-dap.test.js +348 -0
  284. package/build/esm/usb/cmsis-dap.test.js.map +1 -0
  285. package/build/esm/usb/connection.d.ts +81 -0
  286. package/build/esm/{usb.js → usb/connection.js} +239 -161
  287. package/build/esm/usb/connection.js.map +1 -0
  288. package/build/esm/usb/connection.test.d.ts +1 -0
  289. package/build/esm/usb/connection.test.js +264 -0
  290. package/build/esm/usb/connection.test.js.map +1 -0
  291. package/build/esm/usb/cortex-m.d.ts +72 -0
  292. package/build/esm/usb/cortex-m.js +161 -0
  293. package/build/esm/usb/cortex-m.js.map +1 -0
  294. package/build/esm/usb/cortex-m.test.d.ts +1 -0
  295. package/build/esm/usb/cortex-m.test.js +215 -0
  296. package/build/esm/usb/cortex-m.test.js.map +1 -0
  297. package/build/esm/usb/daplink.d.ts +69 -0
  298. package/build/esm/usb/daplink.js +231 -0
  299. package/build/esm/usb/daplink.js.map +1 -0
  300. package/build/esm/usb/daplink.test.d.ts +1 -0
  301. package/build/esm/usb/daplink.test.js +288 -0
  302. package/build/esm/usb/daplink.test.js.map +1 -0
  303. package/build/esm/usb/device-wrapper.d.ts +34 -0
  304. package/build/esm/usb/device-wrapper.js +98 -0
  305. package/build/esm/usb/device-wrapper.js.map +1 -0
  306. package/build/esm/usb/index.d.ts +5 -0
  307. package/build/esm/usb/index.js +5 -0
  308. package/build/esm/usb/index.js.map +1 -0
  309. package/build/{cjs/usb-partial-flashing-utils.d.ts → esm/usb/partial-flashing-utils.d.ts} +6 -9
  310. package/build/esm/{usb-partial-flashing-utils.js → usb/partial-flashing-utils.js} +4 -44
  311. package/build/esm/usb/partial-flashing-utils.js.map +1 -0
  312. package/build/esm/{usb-partial-flashing.d.ts → usb/partial-flashing.d.ts} +15 -7
  313. package/build/esm/{usb-partial-flashing.js → usb/partial-flashing.js} +62 -94
  314. package/build/esm/usb/partial-flashing.js.map +1 -0
  315. package/build/esm/usb/promise-queue.js.map +1 -0
  316. package/build/esm/usb/promise-queue.test.d.ts +1 -0
  317. package/build/esm/usb/promise-queue.test.js +66 -0
  318. package/build/esm/usb/promise-queue.test.js.map +1 -0
  319. package/build/esm/usb/serial-events.d.ts +21 -0
  320. package/build/esm/usb/serial-events.js +2 -0
  321. package/build/esm/usb/serial-events.js.map +1 -0
  322. package/build/esm/usb/transport.d.ts +42 -0
  323. package/build/esm/usb/transport.js +151 -0
  324. package/build/esm/usb/transport.js.map +1 -0
  325. package/package.json +55 -15
  326. package/LICENSE.md +0 -21
  327. package/README.md +0 -125
  328. package/build/cjs/accelerometer-service.js.map +0 -1
  329. package/build/cjs/accelerometer.d.ts +0 -9
  330. package/build/cjs/accelerometer.js +0 -16
  331. package/build/cjs/accelerometer.js.map +0 -1
  332. package/build/cjs/bluetooth-device-wrapper.js.map +0 -1
  333. package/build/cjs/bluetooth.js.map +0 -1
  334. package/build/cjs/board-serial-info.js.map +0 -1
  335. package/build/cjs/button-service.js.map +0 -1
  336. package/build/cjs/buttons.d.ts +0 -10
  337. package/build/cjs/buttons.js +0 -22
  338. package/build/cjs/buttons.js.map +0 -1
  339. package/build/cjs/constants.d.ts +0 -48
  340. package/build/cjs/constants.js +0 -73
  341. package/build/cjs/constants.js.map +0 -1
  342. package/build/cjs/device-bond-state.js.map +0 -1
  343. package/build/cjs/device-information-service.js.map +0 -1
  344. package/build/cjs/dfu-service.js.map +0 -1
  345. package/build/cjs/flashing/flashing-full.js.map +0 -1
  346. package/build/cjs/flashing/flashing-makecode.d.ts +0 -6
  347. package/build/cjs/flashing/flashing-makecode.js.map +0 -1
  348. package/build/cjs/flashing/flashing-partial.js.map +0 -1
  349. package/build/cjs/flashing/flashing-v1.js.map +0 -1
  350. package/build/cjs/flashing/nordic-dfu.js.map +0 -1
  351. package/build/cjs/flashing/zip.js.map +0 -1
  352. package/build/cjs/hex-flash-data-source.js.map +0 -1
  353. package/build/cjs/led-service.js.map +0 -1
  354. package/build/cjs/led.d.ts +0 -6
  355. package/build/cjs/led.js.map +0 -1
  356. package/build/cjs/magnetometer-service.js.map +0 -1
  357. package/build/cjs/magnetometer.d.ts +0 -9
  358. package/build/cjs/magnetometer.js +0 -16
  359. package/build/cjs/magnetometer.js.map +0 -1
  360. package/build/cjs/partial-flashing-service.js.map +0 -1
  361. package/build/cjs/promise-queue.js.map +0 -1
  362. package/build/cjs/serial-events.d.ts +0 -20
  363. package/build/cjs/serial-events.js +0 -69
  364. package/build/cjs/serial-events.js.map +0 -1
  365. package/build/cjs/uart-service.js.map +0 -1
  366. package/build/cjs/uart.d.ts +0 -4
  367. package/build/cjs/uart.js +0 -16
  368. package/build/cjs/uart.js.map +0 -1
  369. package/build/cjs/usb-device-wrapper.d.ts +0 -47
  370. package/build/cjs/usb-device-wrapper.js +0 -437
  371. package/build/cjs/usb-device-wrapper.js.map +0 -1
  372. package/build/cjs/usb-partial-flashing-utils.js.map +0 -1
  373. package/build/cjs/usb-partial-flashing.js.map +0 -1
  374. package/build/cjs/usb-radio-bridge.d.ts +0 -24
  375. package/build/cjs/usb-radio-bridge.js.map +0 -1
  376. package/build/cjs/usb-serial-protocol.js.map +0 -1
  377. package/build/cjs/usb.d.ts +0 -66
  378. package/build/cjs/usb.js.map +0 -1
  379. package/build/esm/accelerometer-service.js.map +0 -1
  380. package/build/esm/accelerometer.d.ts +0 -9
  381. package/build/esm/accelerometer.js +0 -12
  382. package/build/esm/accelerometer.js.map +0 -1
  383. package/build/esm/bluetooth-device-wrapper.js.map +0 -1
  384. package/build/esm/bluetooth-profile.js.map +0 -1
  385. package/build/esm/bluetooth.js.map +0 -1
  386. package/build/esm/board-serial-info.js.map +0 -1
  387. package/build/esm/button-service.js.map +0 -1
  388. package/build/esm/buttons.d.ts +0 -10
  389. package/build/esm/buttons.js +0 -18
  390. package/build/esm/buttons.js.map +0 -1
  391. package/build/esm/constants.d.ts +0 -48
  392. package/build/esm/constants.js +0 -70
  393. package/build/esm/constants.js.map +0 -1
  394. package/build/esm/device-bond-state.js.map +0 -1
  395. package/build/esm/device-information-service.js.map +0 -1
  396. package/build/esm/dfu-service.js.map +0 -1
  397. package/build/esm/flashing/flashing-full.js.map +0 -1
  398. package/build/esm/flashing/flashing-makecode.d.ts +0 -6
  399. package/build/esm/flashing/flashing-makecode.js.map +0 -1
  400. package/build/esm/flashing/flashing-partial.js.map +0 -1
  401. package/build/esm/flashing/flashing-v1.js.map +0 -1
  402. package/build/esm/flashing/nordic-dfu.js.map +0 -1
  403. package/build/esm/flashing/zip.js.map +0 -1
  404. package/build/esm/hex-flash-data-source.js.map +0 -1
  405. package/build/esm/led-service.js.map +0 -1
  406. package/build/esm/led.d.ts +0 -6
  407. package/build/esm/led.js +0 -2
  408. package/build/esm/led.js.map +0 -1
  409. package/build/esm/magnetometer-service.js.map +0 -1
  410. package/build/esm/magnetometer.d.ts +0 -9
  411. package/build/esm/magnetometer.js +0 -12
  412. package/build/esm/magnetometer.js.map +0 -1
  413. package/build/esm/partial-flashing-service.js.map +0 -1
  414. package/build/esm/promise-queue.js.map +0 -1
  415. package/build/esm/serial-events.d.ts +0 -20
  416. package/build/esm/serial-events.js +0 -61
  417. package/build/esm/serial-events.js.map +0 -1
  418. package/build/esm/uart-service.js.map +0 -1
  419. package/build/esm/uart.d.ts +0 -4
  420. package/build/esm/uart.js +0 -12
  421. package/build/esm/uart.js.map +0 -1
  422. package/build/esm/usb-device-wrapper.d.ts +0 -47
  423. package/build/esm/usb-device-wrapper.js +0 -410
  424. package/build/esm/usb-device-wrapper.js.map +0 -1
  425. package/build/esm/usb-partial-flashing-utils.js.map +0 -1
  426. package/build/esm/usb-partial-flashing.js.map +0 -1
  427. package/build/esm/usb-radio-bridge.d.ts +0 -24
  428. package/build/esm/usb-radio-bridge.js.map +0 -1
  429. package/build/esm/usb-serial-protocol.js.map +0 -1
  430. package/build/esm/usb.d.ts +0 -66
  431. package/build/esm/usb.js.map +0 -1
  432. package/typedoc.json +0 -14
  433. /package/build/cjs/{device-bond-state.d.ts → bluetooth/device-bond-state.d.ts} +0 -0
  434. /package/build/cjs/{device-bond-state.js → bluetooth/device-bond-state.js} +0 -0
  435. /package/build/cjs/{flashing → bluetooth/flashing}/flashing-v1.d.ts +0 -0
  436. /package/build/cjs/{flashing → bluetooth/flashing}/flashing-v1.js +0 -0
  437. /package/build/cjs/{flashing → bluetooth/flashing}/zip.d.ts +0 -0
  438. /package/build/cjs/{flashing → bluetooth/flashing}/zip.js +0 -0
  439. /package/build/cjs/{dfu-service.d.ts → bluetooth/services/dfu-service.d.ts} +0 -0
  440. /package/build/cjs/{usb-serial-protocol.d.ts → radio-bridge/serial-protocol.d.ts} +0 -0
  441. /package/build/cjs/{promise-queue.d.ts → usb/promise-queue.d.ts} +0 -0
  442. /package/build/cjs/{promise-queue.js → usb/promise-queue.js} +0 -0
  443. /package/build/esm/{device-bond-state.d.ts → bluetooth/device-bond-state.d.ts} +0 -0
  444. /package/build/esm/{device-bond-state.js → bluetooth/device-bond-state.js} +0 -0
  445. /package/build/esm/{flashing → bluetooth/flashing}/flashing-v1.d.ts +0 -0
  446. /package/build/esm/{flashing → bluetooth/flashing}/flashing-v1.js +0 -0
  447. /package/build/esm/{flashing → bluetooth/flashing}/zip.d.ts +0 -0
  448. /package/build/esm/{flashing → bluetooth/flashing}/zip.js +0 -0
  449. /package/build/esm/{dfu-service.d.ts → bluetooth/services/dfu-service.d.ts} +0 -0
  450. /package/build/esm/{usb-serial-protocol.d.ts → radio-bridge/serial-protocol.d.ts} +0 -0
  451. /package/build/esm/{promise-queue.d.ts → usb/promise-queue.d.ts} +0 -0
  452. /package/build/esm/{promise-queue.js → usb/promise-queue.js} +0 -0
@@ -26,7 +26,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
26
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.createWebBluetoothConnection = void 0;
29
+ exports.createBluetoothConnection = void 0;
30
30
  /**
31
31
  * (c) 2021, Micro:bit Educational Foundation and contributors
32
32
  *
@@ -35,39 +35,40 @@ exports.createWebBluetoothConnection = void 0;
35
35
  const bluetooth_le_1 = require("@capacitor-community/bluetooth-le");
36
36
  const core_1 = require("@capacitor/core");
37
37
  const nrf_intel_hex_1 = __importDefault(require("nrf-intel-hex"));
38
- const bluetooth_device_wrapper_js_1 = require("./bluetooth-device-wrapper.js");
39
- const bluetooth_profile_js_1 = require("./bluetooth-profile.js");
40
- const device_js_1 = require("./device.js");
41
- const events_js_1 = require("./events.js");
42
- const logging_js_1 = require("./logging.js");
38
+ const device_wrapper_js_1 = require("./device-wrapper.js");
39
+ const profile_js_1 = require("./profile.js");
40
+ const device_js_1 = require("../device.js");
41
+ const events_js_1 = require("../events.js");
42
+ const logging_js_1 = require("../logging.js");
43
43
  const flashing_full_js_1 = require("./flashing/flashing-full.js");
44
44
  const flashing_partial_js_1 = __importStar(require("./flashing/flashing-partial.js"));
45
- const availability_js_1 = require("./availability.js");
46
- const hex_flash_data_source_js_1 = require("./hex-flash-data-source.js");
45
+ const availability_js_1 = require("../availability.js");
46
+ const hex_util_js_1 = require("../hex-util.js");
47
47
  const device_bond_state_js_1 = require("./device-bond-state.js");
48
+ const async_util_js_1 = require("../async-util.js");
48
49
  let bleClientInitialized = false;
49
50
  /**
50
51
  * A Bluetooth connection factory.
51
52
  */
52
- const createWebBluetoothConnection = (options) => new MicrobitWebBluetoothConnectionImpl(options);
53
- exports.createWebBluetoothConnection = createWebBluetoothConnection;
53
+ const createBluetoothConnection = (options) => new MicrobitBluetoothConnectionImpl(options);
54
+ exports.createBluetoothConnection = createBluetoothConnection;
54
55
  /**
55
56
  * A Bluetooth connection to a micro:bit device.
56
57
  */
57
- class MicrobitWebBluetoothConnectionImpl extends events_js_1.TypedEventTarget {
58
+ class MicrobitBluetoothConnectionImpl extends events_js_1.TypedEventTarget {
58
59
  constructor(options = {}) {
59
60
  super();
60
61
  Object.defineProperty(this, "status", {
61
62
  enumerable: true,
62
63
  configurable: true,
63
64
  writable: true,
64
- value: device_js_1.ConnectionStatus.NO_AUTHORIZED_DEVICE
65
+ value: device_js_1.ConnectionStatus.NoAuthorizedDevice
65
66
  });
66
67
  /**
67
- * The USB device we last connected to.
68
+ * The BLE device we last connected to.
68
69
  * Cleared if it is disconnected.
69
70
  */
70
- Object.defineProperty(this, "device", {
71
+ Object.defineProperty(this, "bleDevice", {
71
72
  enumerable: true,
72
73
  configurable: true,
73
74
  writable: true,
@@ -85,7 +86,19 @@ class MicrobitWebBluetoothConnectionImpl extends events_js_1.TypedEventTarget {
85
86
  writable: true,
86
87
  value: void 0
87
88
  });
88
- Object.defineProperty(this, "connection", {
89
+ /**
90
+ * Device-specific state. Created on connect, cleared on disconnect.
91
+ */
92
+ Object.defineProperty(this, "device", {
93
+ enumerable: true,
94
+ configurable: true,
95
+ writable: true,
96
+ value: void 0
97
+ });
98
+ /**
99
+ * Cached device property that persists across reconnections until clearDevice.
100
+ */
101
+ Object.defineProperty(this, "cachedBoardVersion", {
89
102
  enumerable: true,
90
103
  configurable: true,
91
104
  writable: true,
@@ -103,15 +116,21 @@ class MicrobitWebBluetoothConnectionImpl extends events_js_1.TypedEventTarget {
103
116
  writable: true,
104
117
  value: void 0
105
118
  });
119
+ Object.defineProperty(this, "waitForPostFlashDisconnectPromise", {
120
+ enumerable: true,
121
+ configurable: true,
122
+ writable: true,
123
+ value: void 0
124
+ });
106
125
  this.logging = options.logging || new logging_js_1.ConsoleLogging();
107
126
  this.deviceBondState =
108
127
  options.deviceBondState || new device_bond_state_js_1.DefaultDeviceBondState();
109
128
  }
110
129
  eventActivated(type) {
111
- this.connection?.startNotifications(type);
130
+ this.device?.startNotifications(type);
112
131
  }
113
132
  eventDeactivated(type) {
114
- this.connection?.stopNotifications(type);
133
+ this.device?.stopNotifications(type);
115
134
  }
116
135
  log(v) {
117
136
  this.logging.log(v);
@@ -144,7 +163,7 @@ class MicrobitWebBluetoothConnectionImpl extends events_js_1.TypedEventTarget {
144
163
  // On Android, check if location services are enabled. This is only
145
164
  // required on Android < 12 (API < 31), but isLocationEnabled() returns
146
165
  // true on newer Android, so we can always check it.
147
- if ((0, bluetooth_device_wrapper_js_1.isAndroid)()) {
166
+ if ((0, device_wrapper_js_1.isAndroid)()) {
148
167
  const isLocationEnabled = await bluetooth_le_1.BleClient.isLocationEnabled();
149
168
  if (!isLocationEnabled) {
150
169
  return "location-disabled";
@@ -179,7 +198,8 @@ class MicrobitWebBluetoothConnectionImpl extends events_js_1.TypedEventTarget {
179
198
  }
180
199
  }
181
200
  getBoardVersion() {
182
- return this.connection?.boardVersion;
201
+ (0, device_js_1.assertConnected)(this.cachedBoardVersion);
202
+ return this.cachedBoardVersion;
183
203
  }
184
204
  async connect(options) {
185
205
  const progress = options?.progress ?? (() => { });
@@ -187,21 +207,26 @@ class MicrobitWebBluetoothConnectionImpl extends events_js_1.TypedEventTarget {
187
207
  // because on Android/iOS that's the appropriate time to ask for permissions.
188
208
  progress(device_js_1.ProgressStage.Initializing);
189
209
  (0, availability_js_1.throwIfUnavailable)(await this.checkAvailability());
190
- if (!this.device || !this.connection) {
210
+ // After partial flashing, we will need to wait for connection to fully
211
+ // disconnect before attempting to connect.
212
+ this.waitForPostFlashDisconnectPromise &&
213
+ (await this.waitForPostFlashDisconnectPromise);
214
+ if (!this.bleDevice || !this.device) {
191
215
  progress(device_js_1.ProgressStage.FindingDevice);
192
216
  const device = await this.requestDevice(options?.signal);
193
- this.connection = new bluetooth_device_wrapper_js_1.BluetoothDeviceWrapper(device, this.logging, this.deviceBondState, this.dispatchTypedEvent.bind(this), () => this.getActiveEvents(), {
194
- onConnecting: () => this.setStatus(device_js_1.ConnectionStatus.CONNECTING),
195
- onSuccess: () => this.setStatus(device_js_1.ConnectionStatus.CONNECTED),
196
- onDisconnect: () => this.setStatus(device_js_1.ConnectionStatus.DISCONNECTED),
217
+ this.device = new device_wrapper_js_1.BluetoothDeviceWrapper(device, this.logging, this.deviceBondState, this.dispatchEvent.bind(this), () => this.getActiveEvents(), {
218
+ onConnecting: () => this.setStatus(device_js_1.ConnectionStatus.Connecting),
219
+ onSuccess: () => this.setStatus(device_js_1.ConnectionStatus.Connected),
220
+ onDisconnect: () => this.setStatus(device_js_1.ConnectionStatus.Disconnected),
197
221
  });
198
222
  }
199
- await this.connection.connect(options);
223
+ await this.device.connect(options);
224
+ this.cachedBoardVersion = this.device.boardVersion;
200
225
  }
201
226
  async disconnect() {
202
227
  try {
203
- if (this.connection) {
204
- await this.connection.disconnect();
228
+ if (this.device) {
229
+ await this.device.disconnect();
205
230
  }
206
231
  }
207
232
  catch (e) {
@@ -211,7 +236,7 @@ class MicrobitWebBluetoothConnectionImpl extends events_js_1.TypedEventTarget {
211
236
  });
212
237
  }
213
238
  finally {
214
- this.setStatus(device_js_1.ConnectionStatus.DISCONNECTED);
239
+ this.setStatus(device_js_1.ConnectionStatus.Disconnected);
215
240
  this.logging.event({
216
241
  type: "Bluetooth-info",
217
242
  message: "disconnected",
@@ -223,105 +248,118 @@ class MicrobitWebBluetoothConnectionImpl extends events_js_1.TypedEventTarget {
223
248
  this.status = newStatus;
224
249
  this.log("Bluetooth connection status " + newStatus);
225
250
  if (this.deferredUpdatesPreviousStatus === undefined) {
226
- this.dispatchTypedEvent("status", new device_js_1.ConnectionStatusEvent(newStatus, previousStatus));
227
- }
228
- }
229
- serialWrite(data) {
230
- if (this.connection) {
231
- // TODO
251
+ this.dispatchEvent("status", {
252
+ status: newStatus,
253
+ previousStatus,
254
+ });
232
255
  }
233
- return Promise.resolve();
234
256
  }
235
257
  async clearDevice() {
236
258
  await this.disconnect();
237
- this.device = undefined;
238
- this.setStatus(device_js_1.ConnectionStatus.NO_AUTHORIZED_DEVICE);
259
+ this.bleDevice = undefined;
260
+ this.cachedBoardVersion = undefined;
261
+ this.setStatus(device_js_1.ConnectionStatus.NoAuthorizedDevice);
239
262
  }
240
263
  setNameFilter(name) {
241
264
  this.nameFilter = name;
242
265
  }
243
266
  async requestDevice(signal) {
244
- // TODO: is this possible to reinstate?
267
+ // Support both the default "BBC micro:bit" name and the shorter "uBit"
268
+ // name used by some MakeCode extensions (e.g. bsiever/microbit-pxt-blehid).
245
269
  // See https://github.com/bsiever/microbit-pxt-blehid/issues/31
246
- // namePrefix: this.nameFilter
247
- // ? `uBit [${this.nameFilter}]`
248
- // : "uBit",
249
- const namePrefix = this.nameFilter
250
- ? `BBC micro:bit [${this.nameFilter}]`
251
- : "BBC micro:bit";
270
+ const namePrefixes = this.nameFilter
271
+ ? [`BBC micro:bit [${this.nameFilter}]`, `uBit [${this.nameFilter}]`]
272
+ : ["BBC micro:bit", "uBit"];
252
273
  // If we have a cached device, check if it still matches the current filter.
253
274
  // If not, clear it so we find a new device.
254
- if (this.device) {
255
- if (this.device.name?.startsWith(namePrefix)) {
256
- return this.device;
275
+ if (this.bleDevice) {
276
+ if (namePrefixes.some((p) => this.bleDevice.name?.startsWith(p))) {
277
+ return this.bleDevice;
257
278
  }
258
- this.log(`Cached device "${this.device.name}" doesn't match filter "${namePrefix}", clearing`);
279
+ this.log(`Cached device "${this.bleDevice.name}" doesn't match filters "${namePrefixes.join(", ")}", clearing`);
259
280
  await this.clearDevice();
260
281
  }
261
- this.dispatchTypedEvent("beforerequestdevice", new device_js_1.BeforeRequestDevice());
282
+ this.dispatchEvent("beforerequestdevice");
262
283
  try {
263
- this.device = core_1.Capacitor.isNativePlatform()
264
- ? await this.requestDeviceNative(namePrefix, signal)
265
- : await this.requestDeviceWeb(namePrefix);
266
- if (!this.device) {
267
- this.setStatus(device_js_1.ConnectionStatus.NO_AUTHORIZED_DEVICE);
284
+ this.bleDevice = core_1.Capacitor.isNativePlatform()
285
+ ? await this.requestDeviceNative(namePrefixes, signal)
286
+ : await this.requestDeviceWeb(namePrefixes);
287
+ if (!this.bleDevice) {
288
+ this.setStatus(device_js_1.ConnectionStatus.NoAuthorizedDevice);
268
289
  throw new device_js_1.DeviceError({
269
290
  code: "no-device-selected",
270
291
  message: "No device selected",
271
292
  });
272
293
  }
273
- return this.device;
294
+ return this.bleDevice;
274
295
  }
275
296
  finally {
276
- this.dispatchTypedEvent("afterrequestdevice", new device_js_1.AfterRequestDevice());
297
+ this.dispatchEvent("afterrequestdevice");
277
298
  }
278
299
  }
279
300
  async getAccelerometerData() {
280
- return this.connection?.accelerometer.getData();
301
+ (0, device_js_1.assertConnected)(this.device);
302
+ return this.device.accelerometer.getData();
281
303
  }
282
304
  async getAccelerometerPeriod() {
283
- return this.connection?.accelerometer.getPeriod();
305
+ (0, device_js_1.assertConnected)(this.device);
306
+ return this.device.accelerometer.getPeriod();
284
307
  }
285
308
  async setAccelerometerPeriod(value) {
286
- return this.connection?.accelerometer.setPeriod(value);
309
+ (0, device_js_1.assertConnected)(this.device);
310
+ return this.device.accelerometer.setPeriod(value);
287
311
  }
288
312
  async setLedText(text) {
289
- return this.connection?.led.setText(text);
313
+ (0, device_js_1.assertConnected)(this.device);
314
+ return this.device.led.setText(text);
290
315
  }
291
316
  async getLedScrollingDelay() {
292
- return this.connection?.led.getScrollingDelay();
317
+ (0, device_js_1.assertConnected)(this.device);
318
+ return this.device.led.getScrollingDelay();
293
319
  }
294
320
  async setLedScrollingDelay(delayInMillis) {
295
- await this.connection?.led.setScrollingDelay(delayInMillis);
321
+ (0, device_js_1.assertConnected)(this.device);
322
+ await this.device.led.setScrollingDelay(delayInMillis);
296
323
  }
297
324
  async getLedMatrix() {
298
- return await this.connection?.led.getLedMatrix();
325
+ (0, device_js_1.assertConnected)(this.device);
326
+ return await this.device.led.getLedMatrix();
299
327
  }
300
328
  async setLedMatrix(matrix) {
301
- await this.connection?.led.setLedMatrix(matrix);
329
+ (0, device_js_1.assertConnected)(this.device);
330
+ await this.device.led.setLedMatrix(matrix);
302
331
  }
303
332
  async getMagnetometerData() {
304
- return this.connection?.magnetometer.getData();
333
+ (0, device_js_1.assertConnected)(this.device);
334
+ return this.device.magnetometer.getData();
305
335
  }
306
336
  async getMagnetometerPeriod() {
307
- return this.connection?.magnetometer.getPeriod();
337
+ (0, device_js_1.assertConnected)(this.device);
338
+ return this.device.magnetometer.getPeriod();
308
339
  }
309
340
  async setMagnetometerPeriod(value) {
310
- return this.connection?.magnetometer.setPeriod(value);
341
+ (0, device_js_1.assertConnected)(this.device);
342
+ return this.device.magnetometer.setPeriod(value);
311
343
  }
312
344
  async getMagnetometerBearing() {
313
- return this.connection?.magnetometer.getBearing();
345
+ (0, device_js_1.assertConnected)(this.device);
346
+ return this.device.magnetometer.getBearing();
314
347
  }
315
348
  async triggerMagnetometerCalibration() {
316
- await this.connection?.magnetometer.triggerCalibration();
349
+ (0, device_js_1.assertConnected)(this.device);
350
+ await this.device.magnetometer.triggerCalibration();
317
351
  }
318
352
  async uartWrite(data) {
319
- await this.connection?.uart.writeData(data);
353
+ (0, device_js_1.assertConnected)(this.device);
354
+ await this.device.uart.writeData(data);
320
355
  }
321
356
  /**
322
357
  * Flash the micro:bit.
323
358
  *
324
- * Note that this will always leave the connection disconnected.
359
+ * Always leaves the connection in {@link ConnectionStatus.Disconnected} state.
360
+ * Bluetooth connects directly to the application processor, which reboots
361
+ * after flashing, so the connection is necessarily lost. Call {@link connect}
362
+ * again after flashing to reconnect.
325
363
  *
326
364
  * @param dataSource The data to use.
327
365
  * @param options Flash options and progress callback.
@@ -331,10 +369,10 @@ class MicrobitWebBluetoothConnectionImpl extends events_js_1.TypedEventTarget {
331
369
  try {
332
370
  // We'll disconnect/reconnect multiple times due to device resets, but reporting this is unhelpful.
333
371
  this.deferredUpdatesPreviousStatus = this.status;
334
- if (this.status !== device_js_1.ConnectionStatus.CONNECTED) {
372
+ if (this.status !== device_js_1.ConnectionStatus.Connected) {
335
373
  await this.connect({ progress, signal: options.signal });
336
374
  }
337
- const connection = this.connection;
375
+ const connection = this.device;
338
376
  try {
339
377
  const boardVersion = connection.boardVersion;
340
378
  if (!boardVersion) {
@@ -347,7 +385,7 @@ class MicrobitWebBluetoothConnectionImpl extends events_js_1.TypedEventTarget {
347
385
  if (!memoryMap) {
348
386
  throw new device_js_1.FlashDataError("Could not convert hex to memory map");
349
387
  }
350
- if (!this.device) {
388
+ if (!this.bleDevice) {
351
389
  throw new device_js_1.DeviceError({
352
390
  code: "device-disconnected",
353
391
  message: "No device",
@@ -358,10 +396,32 @@ class MicrobitWebBluetoothConnectionImpl extends events_js_1.TypedEventTarget {
358
396
  if (partialFlashResult === flashing_partial_js_1.PartialFlashResult.AttemptFullFlash) {
359
397
  await (0, flashing_full_js_1.fullFlash)(connection, boardVersion, memoryMap, progress);
360
398
  }
361
- else if (partialFlashResult === flashing_partial_js_1.PartialFlashResult.Success) {
362
- if (connection.connected) {
363
- await connection.waitForDisconnect(10_000);
364
- }
399
+ this.dispatchEvent("flash");
400
+ if (partialFlashResult === flashing_partial_js_1.PartialFlashResult.AlreadyUpToDate ||
401
+ partialFlashResult === flashing_partial_js_1.PartialFlashResult.Success) {
402
+ this.waitForPostFlashDisconnectPromise = (async () => {
403
+ try {
404
+ if (connection.connected) {
405
+ this.log("Wait for post partial flash disconnect...");
406
+ await connection.waitForDisconnect(10_000);
407
+ }
408
+ }
409
+ catch (e) {
410
+ if (e instanceof async_util_js_1.TimeoutError) {
411
+ this.log("Wait for post partial flash disconnect timed out.");
412
+ }
413
+ else {
414
+ this.error("Error waiting for post partial flash disconnect", e);
415
+ }
416
+ }
417
+ finally {
418
+ this.waitForPostFlashDisconnectPromise = undefined;
419
+ if (connection.connected) {
420
+ await this.disconnect();
421
+ }
422
+ }
423
+ })();
424
+ this.setStatus(device_js_1.ConnectionStatus.Disconnected);
365
425
  }
366
426
  }
367
427
  catch (e) {
@@ -369,13 +429,18 @@ class MicrobitWebBluetoothConnectionImpl extends events_js_1.TypedEventTarget {
369
429
  throw e;
370
430
  }
371
431
  finally {
372
- await this.disconnect();
432
+ if (!this.waitForPostFlashDisconnectPromise) {
433
+ await this.disconnect();
434
+ }
373
435
  }
374
436
  }
375
437
  finally {
376
438
  const previousStatus = this.deferredUpdatesPreviousStatus;
377
439
  this.deferredUpdatesPreviousStatus = undefined;
378
- this.dispatchTypedEvent("status", new device_js_1.ConnectionStatusEvent(this.status, previousStatus));
440
+ this.dispatchEvent("status", {
441
+ status: this.status,
442
+ previousStatus,
443
+ });
379
444
  }
380
445
  }
381
446
  /**
@@ -383,22 +448,33 @@ class MicrobitWebBluetoothConnectionImpl extends events_js_1.TypedEventTarget {
383
448
  *
384
449
  * @returns device or undefined if user cancels.
385
450
  */
386
- async requestDeviceWeb(namePrefix) {
451
+ async requestDeviceWeb(namePrefixes) {
452
+ const optionalServices = [
453
+ profile_js_1.profile.accelerometer.id,
454
+ profile_js_1.profile.button.id,
455
+ profile_js_1.profile.deviceInformation.id,
456
+ profile_js_1.profile.dfuControl.id,
457
+ profile_js_1.profile.event.id,
458
+ profile_js_1.profile.ioPin.id,
459
+ profile_js_1.profile.led.id,
460
+ profile_js_1.profile.magnetometer.id,
461
+ profile_js_1.profile.temperature.id,
462
+ profile_js_1.profile.uart.id,
463
+ ];
464
+ // Temporarily patch navigator.bluetooth.requestDevice to support multiple
465
+ // name prefix filters. The capacitor-ble plugin only supports a single
466
+ // namePrefix, but the Web Bluetooth API supports a filters array.
467
+ // By patching at this level the plugin's internal deviceMap is populated
468
+ // naturally when its own requestDevice completes.
469
+ const orig = navigator.bluetooth.requestDevice.bind(navigator.bluetooth);
387
470
  try {
471
+ navigator.bluetooth.requestDevice = (options) => orig({
472
+ ...options,
473
+ filters: namePrefixes.map((namePrefix) => ({ namePrefix })),
474
+ });
388
475
  return await bluetooth_le_1.BleClient.requestDevice({
389
- namePrefix,
390
- optionalServices: [
391
- bluetooth_profile_js_1.profile.accelerometer.id,
392
- bluetooth_profile_js_1.profile.button.id,
393
- bluetooth_profile_js_1.profile.deviceInformation.id,
394
- bluetooth_profile_js_1.profile.dfuControl.id,
395
- bluetooth_profile_js_1.profile.event.id,
396
- bluetooth_profile_js_1.profile.ioPin.id,
397
- bluetooth_profile_js_1.profile.led.id,
398
- bluetooth_profile_js_1.profile.magnetometer.id,
399
- bluetooth_profile_js_1.profile.temperature.id,
400
- bluetooth_profile_js_1.profile.uart.id,
401
- ],
476
+ namePrefix: namePrefixes[0],
477
+ optionalServices,
402
478
  });
403
479
  }
404
480
  catch (e) {
@@ -407,6 +483,9 @@ class MicrobitWebBluetoothConnectionImpl extends events_js_1.TypedEventTarget {
407
483
  }
408
484
  throw e;
409
485
  }
486
+ finally {
487
+ navigator.bluetooth.requestDevice = orig;
488
+ }
410
489
  }
411
490
  /**
412
491
  * Finds device with specified name prefix.
@@ -414,19 +493,17 @@ class MicrobitWebBluetoothConnectionImpl extends events_js_1.TypedEventTarget {
414
493
  * @returns device or undefined if none can be found.
415
494
  * @throws DeviceError with code "aborted" if signal is aborted.
416
495
  */
417
- async requestDeviceNative(namePrefix, signal) {
496
+ async requestDeviceNative(namePrefixes, signal) {
418
497
  if (signal?.aborted) {
419
498
  throw new device_js_1.DeviceError({ code: "aborted", message: "Connection aborted" });
420
499
  }
500
+ const matchesAnyPrefix = (name) => !!name && namePrefixes.some((p) => name.startsWith(p));
421
501
  // Check for existing bonded devices.
422
- const bonded = await this.checkBondedDevices((device) => {
423
- const name = device.name;
424
- return !!name && name.startsWith(namePrefix);
425
- });
502
+ const bonded = await this.checkBondedDevices((device) => matchesAnyPrefix(device.name));
426
503
  if (bonded) {
427
504
  return bonded;
428
505
  }
429
- this.log(`Scanning for device - ${namePrefix}`);
506
+ this.log(`Scanning for device - ${namePrefixes.join(", ")}`);
430
507
  let found = false;
431
508
  let aborted = false;
432
509
  const scanPromise = new Promise((resolve) =>
@@ -436,8 +513,8 @@ class MicrobitWebBluetoothConnectionImpl extends events_js_1.TypedEventTarget {
436
513
  // isn't matched by the name filter but the advertising name is in the
437
514
  // localName on the device. So we filter here instead. This happens on
438
515
  // iOS if DFU fails / is interrupted.
439
- if (result.device.name?.startsWith(namePrefix) ||
440
- result.localName?.startsWith(namePrefix)) {
516
+ if (matchesAnyPrefix(result.device.name) ||
517
+ matchesAnyPrefix(result.localName)) {
441
518
  found = true;
442
519
  await bluetooth_le_1.BleClient.stopLEScan();
443
520
  resolve(result.device);
@@ -457,11 +534,11 @@ class MicrobitWebBluetoothConnectionImpl extends events_js_1.TypedEventTarget {
457
534
  this.log("Timeout scanning for device");
458
535
  resolve(undefined);
459
536
  }
460
- }, bluetooth_device_wrapper_js_1.scanningTimeoutInMs));
537
+ }, device_wrapper_js_1.scanningTimeoutInMs));
461
538
  return await Promise.race([scanPromise, scanTimeoutPromise, abortPromise]);
462
539
  }
463
540
  async checkBondedDevices(predicate) {
464
- if (!(0, bluetooth_device_wrapper_js_1.isAndroid)()) {
541
+ if (!(0, device_wrapper_js_1.isAndroid)()) {
465
542
  // Not supported.
466
543
  return undefined;
467
544
  }
@@ -480,6 +557,6 @@ const convertDataToMemoryMap = (data) => {
480
557
  if (data instanceof Uint8Array) {
481
558
  return nrf_intel_hex_1.default.fromPaddedUint8Array(data);
482
559
  }
483
- return nrf_intel_hex_1.default.fromHex((0, hex_flash_data_source_js_1.truncateHexAfterEof)(data));
560
+ return nrf_intel_hex_1.default.fromHex((0, hex_util_js_1.truncateHexAfterEof)(data));
484
561
  };
485
- //# sourceMappingURL=bluetooth.js.map
562
+ //# sourceMappingURL=connection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection.js","sourceRoot":"","sources":["../../../src/bluetooth/connection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ /**
4
+ * (c) 2021, Micro:bit Educational Foundation and contributors
5
+ *
6
+ * SPDX-License-Identifier: MIT
7
+ */
8
+ const device_js_1 = require("../device.js");
9
+ const connection_js_1 = require("./connection.js");
10
+ const vitest_1 = require("vitest");
11
+ // Mock Capacitor
12
+ vitest_1.vi.mock("@capacitor/core", () => ({
13
+ Capacitor: {
14
+ isNativePlatform: () => false,
15
+ getPlatform: () => "web",
16
+ },
17
+ }));
18
+ // Mock BleClient
19
+ vitest_1.vi.mock("@capacitor-community/bluetooth-le", () => ({
20
+ BleClient: {
21
+ initialize: vitest_1.vi.fn().mockResolvedValue(undefined),
22
+ isEnabled: vitest_1.vi.fn().mockResolvedValue(true),
23
+ requestDevice: vitest_1.vi.fn(),
24
+ connect: vitest_1.vi.fn(),
25
+ disconnect: vitest_1.vi.fn().mockResolvedValue(undefined),
26
+ getServices: vitest_1.vi.fn().mockResolvedValue([]),
27
+ },
28
+ }));
29
+ // Mock flashing modules
30
+ vitest_1.vi.mock("./flashing/flashing-partial.js", () => ({
31
+ default: vitest_1.vi.fn(),
32
+ PartialFlashResult: { AttemptFullFlash: "AttemptFullFlash" },
33
+ }));
34
+ vitest_1.vi.mock("./flashing/flashing-full.js", () => ({
35
+ fullFlash: vitest_1.vi.fn(),
36
+ }));
37
+ const setupNavigatorMock = () => {
38
+ Object.defineProperty(globalThis, "navigator", {
39
+ value: {
40
+ bluetooth: {
41
+ getAvailability: vitest_1.vi.fn().mockResolvedValue(true),
42
+ addEventListener: vitest_1.vi.fn(),
43
+ removeEventListener: vitest_1.vi.fn(),
44
+ requestDevice: vitest_1.vi.fn(),
45
+ },
46
+ },
47
+ writable: true,
48
+ configurable: true,
49
+ });
50
+ };
51
+ (0, vitest_1.describe)("Bluetooth connection status events", () => {
52
+ (0, vitest_1.it)("emits status events with correct previousStatus", async () => {
53
+ setupNavigatorMock();
54
+ const connection = (0, connection_js_1.createBluetoothConnection)();
55
+ await connection.initialize();
56
+ (0, vitest_1.expect)(connection.status).toBe(device_js_1.ConnectionStatus.NoAuthorizedDevice);
57
+ const events = [];
58
+ connection.addEventListener("status", (e) => {
59
+ events.push(e);
60
+ });
61
+ await connection.disconnect();
62
+ (0, vitest_1.expect)(events).toHaveLength(1);
63
+ (0, vitest_1.expect)(events[0].status).toBe(device_js_1.ConnectionStatus.Disconnected);
64
+ (0, vitest_1.expect)(events[0].previousStatus).toBe(device_js_1.ConnectionStatus.NoAuthorizedDevice);
65
+ });
66
+ (0, vitest_1.it)("defers status updates during flash, emitting single catch-up event", async () => {
67
+ setupNavigatorMock();
68
+ const connection = (0, connection_js_1.createBluetoothConnection)();
69
+ await connection.initialize();
70
+ const statusBeforeFlash = connection.status;
71
+ (0, vitest_1.expect)(statusBeforeFlash).toBe(device_js_1.ConnectionStatus.NoAuthorizedDevice);
72
+ const events = [];
73
+ connection.addEventListener("status", (e) => {
74
+ events.push(e);
75
+ });
76
+ // flash() will fail but the finally block still emits a catch-up event
77
+ try {
78
+ await connection.flash(async () => "mock-hex-data", {});
79
+ }
80
+ catch {
81
+ // Expected to fail
82
+ }
83
+ // Should have exactly one catch-up event with correct previousStatus
84
+ (0, vitest_1.expect)(events).toHaveLength(1);
85
+ (0, vitest_1.expect)(events[0].previousStatus).toBe(statusBeforeFlash);
86
+ });
87
+ });
88
+ //# sourceMappingURL=connection.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection.test.js","sourceRoot":"","sources":["../../../src/bluetooth/connection.test.ts"],"names":[],"mappings":"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"}