@microbit/microbit-connection 0.9.0-apps.alpha.2 → 0.9.0-apps.alpha.20

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