@microbit/microbit-connection 0.9.0-apps.alpha.8 → 1.0.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (421) hide show
  1. package/README.md +106 -27
  2. package/build/cjs/async-util.d.ts +3 -1
  3. package/build/cjs/async-util.js +5 -1
  4. package/build/cjs/async-util.js.map +1 -1
  5. package/build/cjs/availability.js.map +1 -1
  6. package/build/cjs/bluetooth/ble-error.d.ts +10 -0
  7. package/build/cjs/bluetooth/ble-error.js +47 -0
  8. package/build/cjs/bluetooth/ble-error.js.map +1 -0
  9. package/build/cjs/bluetooth/connection.d.ts +378 -0
  10. package/build/cjs/bluetooth/connection.js +623 -0
  11. package/build/cjs/bluetooth/connection.js.map +1 -0
  12. package/build/cjs/bluetooth/device-bond-state.d.ts +14 -0
  13. package/build/cjs/bluetooth/device-bond-state.js +26 -0
  14. package/build/cjs/bluetooth/device-bond-state.js.map +1 -0
  15. package/build/cjs/{bluetooth-device-wrapper.d.ts → bluetooth/device-wrapper.d.ts} +35 -19
  16. package/build/cjs/{bluetooth-device-wrapper.js → bluetooth/device-wrapper.js} +169 -122
  17. package/build/cjs/bluetooth/device-wrapper.js.map +1 -0
  18. package/build/{esm → cjs/bluetooth}/flashing/flashing-full.d.ts +2 -2
  19. package/build/cjs/{flashing → bluetooth/flashing}/flashing-full.js +6 -5
  20. package/build/cjs/bluetooth/flashing/flashing-full.js.map +1 -0
  21. package/build/cjs/bluetooth/flashing/flashing-makecode.d.ts +10 -0
  22. package/build/cjs/{flashing → bluetooth/flashing}/flashing-makecode.js +5 -2
  23. package/build/cjs/bluetooth/flashing/flashing-makecode.js.map +1 -0
  24. package/build/cjs/bluetooth/flashing/flashing-partial.d.ts +10 -0
  25. package/build/cjs/bluetooth/flashing/flashing-partial.js +145 -0
  26. package/build/cjs/bluetooth/flashing/flashing-partial.js.map +1 -0
  27. package/build/cjs/bluetooth/flashing/flashing-v1.js.map +1 -0
  28. package/build/cjs/{flashing → bluetooth/flashing}/nordic-dfu.d.ts +2 -2
  29. package/build/cjs/{flashing → bluetooth/flashing}/nordic-dfu.js +40 -14
  30. package/build/cjs/bluetooth/flashing/nordic-dfu.js.map +1 -0
  31. package/build/cjs/bluetooth/flashing/zip.js.map +1 -0
  32. package/build/cjs/bluetooth/index.d.ts +5 -0
  33. package/build/cjs/bluetooth/index.js +9 -0
  34. package/build/cjs/bluetooth/index.js.map +1 -0
  35. package/build/cjs/{bluetooth-profile.d.ts → bluetooth/profile.d.ts} +8 -0
  36. package/build/cjs/{bluetooth-profile.js → bluetooth/profile.js} +7 -1
  37. package/build/cjs/bluetooth/profile.js.map +1 -0
  38. package/build/cjs/{accelerometer-service.d.ts → bluetooth/services/accelerometer-service.d.ts} +2 -3
  39. package/build/cjs/{accelerometer-service.js → bluetooth/services/accelerometer-service.js} +17 -12
  40. package/build/cjs/bluetooth/services/accelerometer-service.js.map +1 -0
  41. package/build/{esm → cjs/bluetooth/services}/button-service.d.ts +2 -3
  42. package/build/cjs/{button-service.js → bluetooth/services/button-service.js} +24 -14
  43. package/build/cjs/bluetooth/services/button-service.js.map +1 -0
  44. package/build/{esm → cjs/bluetooth/services}/device-information-service.d.ts +1 -1
  45. package/build/cjs/bluetooth/services/device-information-service.js +29 -0
  46. package/build/cjs/bluetooth/services/device-information-service.js.map +1 -0
  47. package/build/cjs/{dfu-service.js → bluetooth/services/dfu-service.js} +2 -2
  48. package/build/cjs/bluetooth/services/dfu-service.js.map +1 -0
  49. package/build/cjs/bluetooth/services/event-service.d.ts +48 -0
  50. package/build/cjs/bluetooth/services/event-service.js +273 -0
  51. package/build/cjs/bluetooth/services/event-service.js.map +1 -0
  52. package/build/cjs/bluetooth/services/io-pin-service.d.ts +65 -0
  53. package/build/cjs/bluetooth/services/io-pin-service.js +173 -0
  54. package/build/cjs/bluetooth/services/io-pin-service.js.map +1 -0
  55. package/build/{esm → cjs/bluetooth/services}/led-service.d.ts +2 -3
  56. package/build/cjs/{led-service.js → bluetooth/services/led-service.js} +10 -7
  57. package/build/cjs/bluetooth/services/led-service.js.map +1 -0
  58. package/build/cjs/{magnetometer-service.d.ts → bluetooth/services/magnetometer-service.d.ts} +2 -3
  59. package/build/cjs/{magnetometer-service.js → bluetooth/services/magnetometer-service.js} +19 -14
  60. package/build/cjs/bluetooth/services/magnetometer-service.js.map +1 -0
  61. package/build/{esm → cjs/bluetooth/services}/partial-flashing-service.d.ts +1 -1
  62. package/build/cjs/{partial-flashing-service.js → bluetooth/services/partial-flashing-service.js} +8 -8
  63. package/build/cjs/bluetooth/services/partial-flashing-service.js.map +1 -0
  64. package/build/cjs/bluetooth/services/temperature-service.d.ts +14 -0
  65. package/build/cjs/bluetooth/services/temperature-service.js +80 -0
  66. package/build/cjs/bluetooth/services/temperature-service.js.map +1 -0
  67. package/build/cjs/{uart-service.d.ts → bluetooth/services/uart-service.d.ts} +2 -2
  68. package/build/cjs/{uart-service.js → bluetooth/services/uart-service.js} +21 -9
  69. package/build/cjs/bluetooth/services/uart-service.js.map +1 -0
  70. package/build/cjs/board-id.d.ts +1 -1
  71. package/build/cjs/board-id.js.map +1 -1
  72. package/build/cjs/device.d.ts +191 -101
  73. package/build/cjs/device.js +47 -110
  74. package/build/cjs/device.js.map +1 -1
  75. package/build/cjs/events.d.ts +8 -108
  76. package/build/cjs/events.js +27 -88
  77. package/build/cjs/events.js.map +1 -1
  78. package/build/cjs/hex-util.d.ts +1 -0
  79. package/build/cjs/hex-util.js +15 -0
  80. package/build/cjs/hex-util.js.map +1 -0
  81. package/build/cjs/index.d.ts +8 -16
  82. package/build/cjs/index.js +9 -28
  83. package/build/cjs/index.js.map +1 -1
  84. package/build/cjs/logging.js.map +1 -1
  85. package/build/cjs/microbit-events.d.ts +67 -0
  86. package/build/cjs/microbit-events.js +55 -0
  87. package/build/cjs/microbit-events.js.map +1 -0
  88. package/build/cjs/radio-bridge/connection.d.ts +52 -0
  89. package/build/cjs/{usb-radio-bridge.js → radio-bridge/connection.js} +84 -96
  90. package/build/cjs/radio-bridge/connection.js.map +1 -0
  91. package/build/cjs/radio-bridge/index.d.ts +4 -0
  92. package/build/cjs/radio-bridge/index.js +9 -0
  93. package/build/cjs/radio-bridge/index.js.map +1 -0
  94. package/build/cjs/{usb-serial-protocol.js → radio-bridge/serial-protocol.js} +1 -1
  95. package/build/cjs/radio-bridge/serial-protocol.js.map +1 -0
  96. package/build/cjs/service-events.d.ts +92 -15
  97. package/build/cjs/service-events.js +6 -36
  98. package/build/cjs/service-events.js.map +1 -1
  99. package/build/{esm/hex-flash-data-source.d.ts → cjs/universal-hex/flash-data-source.d.ts} +1 -1
  100. package/build/cjs/{hex-flash-data-source.js → universal-hex/flash-data-source.js} +6 -3
  101. package/build/cjs/universal-hex/flash-data-source.js.map +1 -0
  102. package/build/cjs/universal-hex/index.d.ts +4 -0
  103. package/build/cjs/universal-hex/index.js +9 -0
  104. package/build/cjs/universal-hex/index.js.map +1 -0
  105. package/build/cjs/usb/arm-debug.d.ts +137 -0
  106. package/build/cjs/usb/arm-debug.js +414 -0
  107. package/build/cjs/usb/arm-debug.js.map +1 -0
  108. package/build/{esm → cjs/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/cdc-saturation.d.ts +36 -0
  112. package/build/cjs/usb/cdc-saturation.js +151 -0
  113. package/build/cjs/usb/cdc-saturation.js.map +1 -0
  114. package/build/cjs/usb/cmsis-dap.d.ts +113 -0
  115. package/build/cjs/usb/cmsis-dap.js +349 -0
  116. package/build/cjs/usb/cmsis-dap.js.map +1 -0
  117. package/build/cjs/usb/connection.d.ts +96 -0
  118. package/build/cjs/{usb.js → usb/connection.js} +257 -173
  119. package/build/cjs/usb/connection.js.map +1 -0
  120. package/build/cjs/usb/cortex-m.d.ts +72 -0
  121. package/build/cjs/usb/cortex-m.js +165 -0
  122. package/build/cjs/usb/cortex-m.js.map +1 -0
  123. package/build/cjs/usb/daplink.d.ts +69 -0
  124. package/build/cjs/usb/daplink.js +238 -0
  125. package/build/cjs/usb/daplink.js.map +1 -0
  126. package/build/cjs/usb/device-wrapper.d.ts +34 -0
  127. package/build/cjs/usb/device-wrapper.js +102 -0
  128. package/build/cjs/usb/device-wrapper.js.map +1 -0
  129. package/build/cjs/usb/index.d.ts +5 -0
  130. package/build/cjs/usb/index.js +10 -0
  131. package/build/cjs/usb/index.js.map +1 -0
  132. package/build/{esm/usb-partial-flashing-utils.d.ts → cjs/usb/partial-flashing-utils.d.ts} +6 -9
  133. package/build/cjs/{usb-partial-flashing-utils.js → usb/partial-flashing-utils.js} +6 -49
  134. package/build/cjs/usb/partial-flashing-utils.js.map +1 -0
  135. package/build/{esm/usb-partial-flashing.d.ts → cjs/usb/partial-flashing.d.ts} +37 -11
  136. package/build/cjs/{usb-partial-flashing.js → usb/partial-flashing.js} +170 -134
  137. package/build/cjs/usb/partial-flashing.js.map +1 -0
  138. package/build/cjs/usb/promise-queue.js.map +1 -0
  139. package/build/cjs/usb/serial-events.d.ts +16 -0
  140. package/build/cjs/{led.js → usb/serial-events.js} +1 -1
  141. package/build/cjs/usb/serial-events.js.map +1 -0
  142. package/build/cjs/usb/transport.d.ts +42 -0
  143. package/build/cjs/usb/transport.js +155 -0
  144. package/build/cjs/usb/transport.js.map +1 -0
  145. package/build/esm/async-util.d.ts +3 -1
  146. package/build/esm/async-util.js +5 -1
  147. package/build/esm/async-util.js.map +1 -1
  148. package/build/esm/availability.js.map +1 -1
  149. package/build/esm/bluetooth/ble-error.d.ts +10 -0
  150. package/build/esm/bluetooth/ble-error.js +42 -0
  151. package/build/esm/bluetooth/ble-error.js.map +1 -0
  152. package/build/esm/bluetooth/connection.d.ts +378 -0
  153. package/build/esm/bluetooth/connection.js +593 -0
  154. package/build/esm/bluetooth/connection.js.map +1 -0
  155. package/build/esm/bluetooth/device-bond-state.d.ts +14 -0
  156. package/build/esm/bluetooth/device-bond-state.js +22 -0
  157. package/build/esm/bluetooth/device-bond-state.js.map +1 -0
  158. package/build/esm/{bluetooth-device-wrapper.d.ts → bluetooth/device-wrapper.d.ts} +35 -19
  159. package/build/esm/{bluetooth-device-wrapper.js → bluetooth/device-wrapper.js} +167 -121
  160. package/build/esm/bluetooth/device-wrapper.js.map +1 -0
  161. package/build/{cjs → esm/bluetooth}/flashing/flashing-full.d.ts +2 -2
  162. package/build/esm/{flashing → bluetooth/flashing}/flashing-full.js +6 -5
  163. package/build/esm/bluetooth/flashing/flashing-full.js.map +1 -0
  164. package/build/esm/bluetooth/flashing/flashing-makecode.d.ts +10 -0
  165. package/build/esm/{flashing → bluetooth/flashing}/flashing-makecode.js +5 -2
  166. package/build/esm/bluetooth/flashing/flashing-makecode.js.map +1 -0
  167. package/build/esm/bluetooth/flashing/flashing-partial.d.ts +10 -0
  168. package/build/esm/bluetooth/flashing/flashing-partial.js +142 -0
  169. package/build/esm/bluetooth/flashing/flashing-partial.js.map +1 -0
  170. package/build/esm/bluetooth/flashing/flashing-v1.js.map +1 -0
  171. package/build/esm/{flashing → bluetooth/flashing}/nordic-dfu.d.ts +2 -2
  172. package/build/esm/{flashing → bluetooth/flashing}/nordic-dfu.js +40 -14
  173. package/build/esm/bluetooth/flashing/nordic-dfu.js.map +1 -0
  174. package/build/esm/bluetooth/flashing/zip.js.map +1 -0
  175. package/build/esm/bluetooth/index.d.ts +5 -0
  176. package/build/esm/bluetooth/index.js +5 -0
  177. package/build/esm/bluetooth/index.js.map +1 -0
  178. package/build/esm/{bluetooth-profile.d.ts → bluetooth/profile.d.ts} +8 -0
  179. package/build/esm/{bluetooth-profile.js → bluetooth/profile.js} +7 -1
  180. package/build/{cjs/bluetooth-profile.js.map → esm/bluetooth/profile.js.map} +1 -1
  181. package/build/esm/{accelerometer-service.d.ts → bluetooth/services/accelerometer-service.d.ts} +2 -3
  182. package/build/esm/{accelerometer-service.js → bluetooth/services/accelerometer-service.js} +11 -6
  183. package/build/esm/bluetooth/services/accelerometer-service.js.map +1 -0
  184. package/build/{cjs → esm/bluetooth/services}/button-service.d.ts +2 -3
  185. package/build/esm/{button-service.js → bluetooth/services/button-service.js} +20 -10
  186. package/build/esm/bluetooth/services/button-service.js.map +1 -0
  187. package/build/{cjs → esm/bluetooth/services}/device-information-service.d.ts +1 -1
  188. package/build/esm/bluetooth/services/device-information-service.js +25 -0
  189. package/build/esm/bluetooth/services/device-information-service.js.map +1 -0
  190. package/build/esm/{dfu-service.js → bluetooth/services/dfu-service.js} +1 -1
  191. package/build/esm/bluetooth/services/dfu-service.js.map +1 -0
  192. package/build/esm/bluetooth/services/event-service.d.ts +48 -0
  193. package/build/esm/bluetooth/services/event-service.js +269 -0
  194. package/build/esm/bluetooth/services/event-service.js.map +1 -0
  195. package/build/esm/bluetooth/services/io-pin-service.d.ts +65 -0
  196. package/build/esm/bluetooth/services/io-pin-service.js +169 -0
  197. package/build/esm/bluetooth/services/io-pin-service.js.map +1 -0
  198. package/build/{cjs → esm/bluetooth/services}/led-service.d.ts +2 -3
  199. package/build/esm/{led-service.js → bluetooth/services/led-service.js} +4 -1
  200. package/build/esm/bluetooth/services/led-service.js.map +1 -0
  201. package/build/esm/{magnetometer-service.d.ts → bluetooth/services/magnetometer-service.d.ts} +2 -3
  202. package/build/esm/{magnetometer-service.js → bluetooth/services/magnetometer-service.js} +11 -6
  203. package/build/esm/bluetooth/services/magnetometer-service.js.map +1 -0
  204. package/build/{cjs → esm/bluetooth/services}/partial-flashing-service.d.ts +1 -1
  205. package/build/esm/{partial-flashing-service.js → bluetooth/services/partial-flashing-service.js} +4 -4
  206. package/build/esm/bluetooth/services/partial-flashing-service.js.map +1 -0
  207. package/build/esm/bluetooth/services/temperature-service.d.ts +14 -0
  208. package/build/esm/bluetooth/services/temperature-service.js +76 -0
  209. package/build/esm/bluetooth/services/temperature-service.js.map +1 -0
  210. package/build/esm/{uart-service.d.ts → bluetooth/services/uart-service.d.ts} +2 -2
  211. package/build/esm/{uart-service.js → bluetooth/services/uart-service.js} +18 -6
  212. package/build/esm/bluetooth/services/uart-service.js.map +1 -0
  213. package/build/esm/board-id.d.ts +1 -1
  214. package/build/esm/board-id.js.map +1 -1
  215. package/build/esm/device.d.ts +191 -101
  216. package/build/esm/device.js +45 -104
  217. package/build/esm/device.js.map +1 -1
  218. package/build/esm/events.d.ts +8 -108
  219. package/build/esm/events.js +26 -86
  220. package/build/esm/events.js.map +1 -1
  221. package/build/esm/hex-util.d.ts +1 -0
  222. package/build/esm/hex-util.js +11 -0
  223. package/build/esm/hex-util.js.map +1 -0
  224. package/build/esm/index.d.ts +8 -16
  225. package/build/esm/index.js +7 -11
  226. package/build/esm/index.js.map +1 -1
  227. package/build/esm/logging.js.map +1 -1
  228. package/build/esm/microbit-events.d.ts +67 -0
  229. package/build/esm/microbit-events.js +52 -0
  230. package/build/esm/microbit-events.js.map +1 -0
  231. package/build/esm/radio-bridge/connection.d.ts +52 -0
  232. package/build/esm/{usb-radio-bridge.js → radio-bridge/connection.js} +84 -96
  233. package/build/esm/radio-bridge/connection.js.map +1 -0
  234. package/build/esm/radio-bridge/index.d.ts +4 -0
  235. package/build/esm/radio-bridge/index.js +5 -0
  236. package/build/esm/radio-bridge/index.js.map +1 -0
  237. package/build/esm/{usb-serial-protocol.js → radio-bridge/serial-protocol.js} +1 -1
  238. package/build/esm/radio-bridge/serial-protocol.js.map +1 -0
  239. package/build/esm/service-events.d.ts +92 -15
  240. package/build/esm/service-events.js +5 -34
  241. package/build/esm/service-events.js.map +1 -1
  242. package/build/{cjs/hex-flash-data-source.d.ts → esm/universal-hex/flash-data-source.d.ts} +1 -1
  243. package/build/esm/{hex-flash-data-source.js → universal-hex/flash-data-source.js} +6 -3
  244. package/build/esm/universal-hex/flash-data-source.js.map +1 -0
  245. package/build/esm/universal-hex/index.d.ts +4 -0
  246. package/build/esm/universal-hex/index.js +5 -0
  247. package/build/esm/universal-hex/index.js.map +1 -0
  248. package/build/esm/usb/arm-debug.d.ts +137 -0
  249. package/build/esm/usb/arm-debug.js +409 -0
  250. package/build/esm/usb/arm-debug.js.map +1 -0
  251. package/build/{cjs → esm/usb}/board-serial-info.d.ts +2 -1
  252. package/build/esm/{board-serial-info.js → usb/board-serial-info.js} +10 -7
  253. package/build/esm/usb/board-serial-info.js.map +1 -0
  254. package/build/esm/usb/cdc-saturation.d.ts +36 -0
  255. package/build/esm/usb/cdc-saturation.js +148 -0
  256. package/build/esm/usb/cdc-saturation.js.map +1 -0
  257. package/build/esm/usb/cmsis-dap.d.ts +113 -0
  258. package/build/esm/usb/cmsis-dap.js +342 -0
  259. package/build/esm/usb/cmsis-dap.js.map +1 -0
  260. package/build/esm/usb/connection.d.ts +96 -0
  261. package/build/esm/{usb.js → usb/connection.js} +253 -168
  262. package/build/esm/usb/connection.js.map +1 -0
  263. package/build/esm/usb/cortex-m.d.ts +72 -0
  264. package/build/esm/usb/cortex-m.js +161 -0
  265. package/build/esm/usb/cortex-m.js.map +1 -0
  266. package/build/esm/usb/daplink.d.ts +69 -0
  267. package/build/esm/usb/daplink.js +231 -0
  268. package/build/esm/usb/daplink.js.map +1 -0
  269. package/build/esm/usb/device-wrapper.d.ts +34 -0
  270. package/build/esm/usb/device-wrapper.js +98 -0
  271. package/build/esm/usb/device-wrapper.js.map +1 -0
  272. package/build/esm/usb/index.d.ts +5 -0
  273. package/build/esm/usb/index.js +5 -0
  274. package/build/esm/usb/index.js.map +1 -0
  275. package/build/{cjs/usb-partial-flashing-utils.d.ts → esm/usb/partial-flashing-utils.d.ts} +6 -9
  276. package/build/esm/{usb-partial-flashing-utils.js → usb/partial-flashing-utils.js} +4 -44
  277. package/build/esm/usb/partial-flashing-utils.js.map +1 -0
  278. package/build/{cjs/usb-partial-flashing.d.ts → esm/usb/partial-flashing.d.ts} +37 -11
  279. package/build/esm/{usb-partial-flashing.js → usb/partial-flashing.js} +169 -110
  280. package/build/esm/usb/partial-flashing.js.map +1 -0
  281. package/build/esm/usb/promise-queue.js.map +1 -0
  282. package/build/esm/usb/serial-events.d.ts +16 -0
  283. package/build/esm/usb/serial-events.js +2 -0
  284. package/build/esm/usb/serial-events.js.map +1 -0
  285. package/build/esm/usb/transport.d.ts +42 -0
  286. package/build/esm/usb/transport.js +151 -0
  287. package/build/esm/usb/transport.js.map +1 -0
  288. package/package.json +61 -14
  289. package/build/cjs/accelerometer-service.js.map +0 -1
  290. package/build/cjs/accelerometer.d.ts +0 -9
  291. package/build/cjs/accelerometer.js +0 -16
  292. package/build/cjs/accelerometer.js.map +0 -1
  293. package/build/cjs/bluetooth-device-wrapper.js.map +0 -1
  294. package/build/cjs/bluetooth.d.ts +0 -112
  295. package/build/cjs/bluetooth.js +0 -457
  296. package/build/cjs/bluetooth.js.map +0 -1
  297. package/build/cjs/board-serial-info.js.map +0 -1
  298. package/build/cjs/button-service.js.map +0 -1
  299. package/build/cjs/buttons.d.ts +0 -10
  300. package/build/cjs/buttons.js +0 -22
  301. package/build/cjs/buttons.js.map +0 -1
  302. package/build/cjs/constants.d.ts +0 -48
  303. package/build/cjs/constants.js +0 -73
  304. package/build/cjs/constants.js.map +0 -1
  305. package/build/cjs/device-information-service.js +0 -34
  306. package/build/cjs/device-information-service.js.map +0 -1
  307. package/build/cjs/dfu-service.js.map +0 -1
  308. package/build/cjs/flashing/flashing-full.js.map +0 -1
  309. package/build/cjs/flashing/flashing-makecode.d.ts +0 -6
  310. package/build/cjs/flashing/flashing-makecode.js.map +0 -1
  311. package/build/cjs/flashing/flashing-partial.d.ts +0 -9
  312. package/build/cjs/flashing/flashing-partial.js +0 -98
  313. package/build/cjs/flashing/flashing-partial.js.map +0 -1
  314. package/build/cjs/flashing/flashing-v1.js.map +0 -1
  315. package/build/cjs/flashing/nordic-dfu.js.map +0 -1
  316. package/build/cjs/flashing/zip.js.map +0 -1
  317. package/build/cjs/hex-flash-data-source.js.map +0 -1
  318. package/build/cjs/led-service.js.map +0 -1
  319. package/build/cjs/led.d.ts +0 -6
  320. package/build/cjs/led.js.map +0 -1
  321. package/build/cjs/magnetometer-service.js.map +0 -1
  322. package/build/cjs/magnetometer.d.ts +0 -9
  323. package/build/cjs/magnetometer.js +0 -16
  324. package/build/cjs/magnetometer.js.map +0 -1
  325. package/build/cjs/partial-flashing-service.js.map +0 -1
  326. package/build/cjs/promise-queue.js.map +0 -1
  327. package/build/cjs/serial-events.d.ts +0 -20
  328. package/build/cjs/serial-events.js +0 -69
  329. package/build/cjs/serial-events.js.map +0 -1
  330. package/build/cjs/setupTests.d.ts +0 -6
  331. package/build/cjs/setupTests.js.map +0 -1
  332. package/build/cjs/uart-service.js.map +0 -1
  333. package/build/cjs/uart.d.ts +0 -4
  334. package/build/cjs/uart.js +0 -16
  335. package/build/cjs/uart.js.map +0 -1
  336. package/build/cjs/usb-device-wrapper.d.ts +0 -47
  337. package/build/cjs/usb-device-wrapper.js +0 -437
  338. package/build/cjs/usb-device-wrapper.js.map +0 -1
  339. package/build/cjs/usb-partial-flashing-utils.js.map +0 -1
  340. package/build/cjs/usb-partial-flashing.js.map +0 -1
  341. package/build/cjs/usb-radio-bridge.d.ts +0 -24
  342. package/build/cjs/usb-radio-bridge.js.map +0 -1
  343. package/build/cjs/usb-serial-protocol.js.map +0 -1
  344. package/build/cjs/usb.d.ts +0 -66
  345. package/build/cjs/usb.js.map +0 -1
  346. package/build/esm/accelerometer-service.js.map +0 -1
  347. package/build/esm/accelerometer.d.ts +0 -9
  348. package/build/esm/accelerometer.js +0 -12
  349. package/build/esm/accelerometer.js.map +0 -1
  350. package/build/esm/bluetooth-device-wrapper.js.map +0 -1
  351. package/build/esm/bluetooth-profile.js.map +0 -1
  352. package/build/esm/bluetooth.d.ts +0 -112
  353. package/build/esm/bluetooth.js +0 -427
  354. package/build/esm/bluetooth.js.map +0 -1
  355. package/build/esm/board-serial-info.js.map +0 -1
  356. package/build/esm/button-service.js.map +0 -1
  357. package/build/esm/buttons.d.ts +0 -10
  358. package/build/esm/buttons.js +0 -18
  359. package/build/esm/buttons.js.map +0 -1
  360. package/build/esm/constants.d.ts +0 -48
  361. package/build/esm/constants.js +0 -70
  362. package/build/esm/constants.js.map +0 -1
  363. package/build/esm/device-information-service.js +0 -30
  364. package/build/esm/device-information-service.js.map +0 -1
  365. package/build/esm/dfu-service.js.map +0 -1
  366. package/build/esm/flashing/flashing-full.js.map +0 -1
  367. package/build/esm/flashing/flashing-makecode.d.ts +0 -6
  368. package/build/esm/flashing/flashing-makecode.js.map +0 -1
  369. package/build/esm/flashing/flashing-partial.d.ts +0 -9
  370. package/build/esm/flashing/flashing-partial.js +0 -95
  371. package/build/esm/flashing/flashing-partial.js.map +0 -1
  372. package/build/esm/flashing/flashing-v1.js.map +0 -1
  373. package/build/esm/flashing/nordic-dfu.js.map +0 -1
  374. package/build/esm/flashing/zip.js.map +0 -1
  375. package/build/esm/hex-flash-data-source.js.map +0 -1
  376. package/build/esm/led-service.js.map +0 -1
  377. package/build/esm/led.d.ts +0 -6
  378. package/build/esm/led.js +0 -2
  379. package/build/esm/led.js.map +0 -1
  380. package/build/esm/magnetometer-service.js.map +0 -1
  381. package/build/esm/magnetometer.d.ts +0 -9
  382. package/build/esm/magnetometer.js +0 -12
  383. package/build/esm/magnetometer.js.map +0 -1
  384. package/build/esm/partial-flashing-service.js.map +0 -1
  385. package/build/esm/promise-queue.js.map +0 -1
  386. package/build/esm/serial-events.d.ts +0 -20
  387. package/build/esm/serial-events.js +0 -61
  388. package/build/esm/serial-events.js.map +0 -1
  389. package/build/esm/setupTests.d.ts +0 -6
  390. package/build/esm/setupTests.js.map +0 -1
  391. package/build/esm/uart-service.js.map +0 -1
  392. package/build/esm/uart.d.ts +0 -4
  393. package/build/esm/uart.js +0 -12
  394. package/build/esm/uart.js.map +0 -1
  395. package/build/esm/usb-device-wrapper.d.ts +0 -47
  396. package/build/esm/usb-device-wrapper.js +0 -410
  397. package/build/esm/usb-device-wrapper.js.map +0 -1
  398. package/build/esm/usb-partial-flashing-utils.js.map +0 -1
  399. package/build/esm/usb-partial-flashing.js.map +0 -1
  400. package/build/esm/usb-radio-bridge.d.ts +0 -24
  401. package/build/esm/usb-radio-bridge.js.map +0 -1
  402. package/build/esm/usb-serial-protocol.js.map +0 -1
  403. package/build/esm/usb.d.ts +0 -66
  404. package/build/esm/usb.js.map +0 -1
  405. package/typedoc.json +0 -14
  406. /package/build/cjs/{flashing → bluetooth/flashing}/flashing-v1.d.ts +0 -0
  407. /package/build/cjs/{flashing → bluetooth/flashing}/flashing-v1.js +0 -0
  408. /package/build/cjs/{flashing → bluetooth/flashing}/zip.d.ts +0 -0
  409. /package/build/cjs/{flashing → bluetooth/flashing}/zip.js +0 -0
  410. /package/build/cjs/{dfu-service.d.ts → bluetooth/services/dfu-service.d.ts} +0 -0
  411. /package/build/cjs/{usb-serial-protocol.d.ts → radio-bridge/serial-protocol.d.ts} +0 -0
  412. /package/build/cjs/{promise-queue.d.ts → usb/promise-queue.d.ts} +0 -0
  413. /package/build/cjs/{promise-queue.js → usb/promise-queue.js} +0 -0
  414. /package/build/esm/{flashing → bluetooth/flashing}/flashing-v1.d.ts +0 -0
  415. /package/build/esm/{flashing → bluetooth/flashing}/flashing-v1.js +0 -0
  416. /package/build/esm/{flashing → bluetooth/flashing}/zip.d.ts +0 -0
  417. /package/build/esm/{flashing → bluetooth/flashing}/zip.js +0 -0
  418. /package/build/esm/{dfu-service.d.ts → bluetooth/services/dfu-service.d.ts} +0 -0
  419. /package/build/esm/{usb-serial-protocol.d.ts → radio-bridge/serial-protocol.d.ts} +0 -0
  420. /package/build/esm/{promise-queue.d.ts → usb/promise-queue.d.ts} +0 -0
  421. /package/build/esm/{promise-queue.js → usb/promise-queue.js} +0 -0
@@ -4,15 +4,24 @@
4
4
  * SPDX-License-Identifier: MIT
5
5
  */
6
6
  import { BleDevice, TimeoutOptions } from "@capacitor-community/bluetooth-le";
7
- import { AccelerometerService } from "./accelerometer-service.js";
8
- import { ButtonService } from "./button-service.js";
9
- import { DeviceInformationService } from "./device-information-service.js";
10
- import { BoardVersion } from "./device.js";
11
- import { LedService } from "./led-service.js";
12
- import { Logging, LoggingEvent } from "./logging.js";
13
- import { MagnetometerService } from "./magnetometer-service.js";
14
- import { ServiceConnectionEventMap, TypedServiceEvent, TypedServiceEventDispatcher } from "./service-events.js";
15
- import { UARTService } from "./uart-service.js";
7
+ import { BoardVersion, ConnectOptions } from "../device.js";
8
+ import { Logging, LoggingEvent } from "../logging.js";
9
+ import { ServiceConnectionEventMap, TypedServiceEvent, TypedServiceEventDispatcher } from "../service-events.js";
10
+ import { DeviceBondState } from "./device-bond-state.js";
11
+ import { AccelerometerService } from "./services/accelerometer-service.js";
12
+ import { ButtonService } from "./services/button-service.js";
13
+ import { DeviceInformationService } from "./services/device-information-service.js";
14
+ import { EventService } from "./services/event-service.js";
15
+ import { IoPinService } from "./services/io-pin-service.js";
16
+ import { LedService } from "./services/led-service.js";
17
+ import { MagnetometerService } from "./services/magnetometer-service.js";
18
+ import { TemperatureService } from "./services/temperature-service.js";
19
+ import { UARTService } from "./services/uart-service.js";
20
+ /**
21
+ * The @capacitor-community/bluetooth-le plugin throws this message when
22
+ * a characteristic UUID is not found in the device's GATT table.
23
+ */
24
+ export declare const isCharacteristicNotFoundError: (e: unknown) => boolean;
16
25
  export declare const bondingTimeoutInMs = 40000;
17
26
  export declare const connectTimeoutInMs = 10000;
18
27
  export declare const scanningTimeoutInMs = 10000;
@@ -25,24 +34,25 @@ export interface Service {
25
34
  }
26
35
  interface ConnectCallbacks {
27
36
  onConnecting: () => void;
28
- onReconnecting: () => void;
29
- onFail: () => void;
37
+ onDisconnect: () => void;
30
38
  onSuccess: () => void;
31
39
  }
32
40
  export declare class BluetoothDeviceWrapper implements Logging {
33
- readonly device: BleDevice;
41
+ readonly bleDevice: BleDevice;
34
42
  private logging;
43
+ private deviceBondState;
35
44
  private currentEvents;
36
45
  private callbacks;
37
- private duringExplicitConnectDisconnect;
38
- private connected;
39
- private isReconnect;
46
+ connected: boolean;
40
47
  private serviceIds;
41
48
  accelerometer: AccelerometerService;
42
49
  buttons: ButtonService;
43
50
  deviceInformation: DeviceInformationService;
51
+ events: EventService;
52
+ ioPin: IoPinService;
44
53
  led: LedService;
45
54
  magnetometer: MagnetometerService;
55
+ temperature: TemperatureService;
46
56
  uart: UARTService;
47
57
  /**
48
58
  * Only defined after connection.
@@ -51,13 +61,13 @@ export declare class BluetoothDeviceWrapper implements Logging {
51
61
  private services;
52
62
  private waitingForDisconnectEventCallbacks;
53
63
  private internalNotificationListeners;
54
- constructor(device: BleDevice, logging: Logging, dispatchTypedEvent: TypedServiceEventDispatcher, currentEvents: () => Array<keyof ServiceConnectionEventMap>, callbacks: ConnectCallbacks);
55
- connect(): Promise<void>;
64
+ constructor(bleDevice: BleDevice, logging: Logging | undefined, deviceBondState: DeviceBondState | undefined, dispatchTypedEvent: TypedServiceEventDispatcher, currentEvents: () => Array<keyof ServiceConnectionEventMap>, callbacks: ConnectCallbacks);
65
+ setBonded(isBonded: boolean): void;
66
+ connect(options?: ConnectOptions): Promise<void>;
56
67
  private connectInternal;
57
68
  disconnect(): Promise<void>;
58
69
  private disconnectInternal;
59
- reconnect(): Promise<void>;
60
- handleDisconnectEvent: () => Promise<void>;
70
+ handleDisconnectEvent: () => void;
61
71
  getBoardVersion(): Promise<BoardVersion>;
62
72
  startNotifications(type: TypedServiceEvent): Promise<void>;
63
73
  stopNotifications(type: TypedServiceEvent): Promise<void>;
@@ -93,5 +103,11 @@ export declare class BluetoothDeviceWrapper implements Logging {
93
103
  */
94
104
  private connectHandlingBond;
95
105
  private bondConnectDeviceInternal;
106
+ /**
107
+ * On iOS, accessing an encrypted characteristic triggers the pairing dialog.
108
+ * Try each candidate characteristic in turn until one succeeds. The error is
109
+ * fast (local GATT cache lookup) so there's no meaningful delay from retries.
110
+ */
111
+ private triggerIosPairing;
96
112
  }
97
113
  export {};
@@ -5,48 +5,37 @@
5
5
  */
6
6
  import { BleClient, } from "@capacitor-community/bluetooth-le";
7
7
  import { Capacitor } from "@capacitor/core";
8
- import { AccelerometerService } from "./accelerometer-service.js";
9
- import { delay, DisconnectError, disconnectErrorCallback, TimeoutError, timeoutErrorAfter, } from "./async-util.js";
10
- import { ButtonService } from "./button-service.js";
11
- import { DeviceInformationService } from "./device-information-service.js";
12
- import { DeviceError } from "./device.js";
13
- import { LedService } from "./led-service.js";
14
- import { ConsoleLogging } from "./logging.js";
15
- import { MagnetometerService } from "./magnetometer-service.js";
16
- import { MicroBitMode, PartialFlashingService, } from "./partial-flashing-service.js";
17
- import { UARTService } from "./uart-service.js";
8
+ import { DisconnectError, disconnectErrorCallback, TimeoutError, timeoutErrorAfter, } from "../async-util.js";
9
+ import { DeviceError, ProgressStage, } from "../device.js";
10
+ import { ConsoleLogging } from "../logging.js";
11
+ import { DefaultDeviceBondState, } from "./device-bond-state.js";
12
+ import { profile } from "./profile.js";
13
+ import { AccelerometerService } from "./services/accelerometer-service.js";
14
+ import { ButtonService } from "./services/button-service.js";
15
+ import { DeviceInformationService } from "./services/device-information-service.js";
16
+ import { EventService } from "./services/event-service.js";
17
+ import { IoPinService } from "./services/io-pin-service.js";
18
+ import { LedService } from "./services/led-service.js";
19
+ import { MagnetometerService } from "./services/magnetometer-service.js";
20
+ import { MicroBitMode, PartialFlashingService, } from "./services/partial-flashing-service.js";
21
+ import { TemperatureService } from "./services/temperature-service.js";
22
+ import { UARTService } from "./services/uart-service.js";
23
+ /**
24
+ * The @capacitor-community/bluetooth-le plugin throws this message when
25
+ * a characteristic UUID is not found in the device's GATT table.
26
+ */
27
+ export const isCharacteristicNotFoundError = (e) => e instanceof Error && e.message === "Characteristic not found.";
18
28
  export const bondingTimeoutInMs = 40_000;
19
29
  export const connectTimeoutInMs = 10_000;
20
30
  export const scanningTimeoutInMs = 10_000;
21
31
  export const isAndroid = () => Capacitor.getPlatform() === "android";
22
- // TODO: We've removed the support for these behaviours as we need to
23
- // re-evaluate how best to support then via capacitor-ble (or reinstate
24
- // the direct Web Bluetooth connection code.
25
- //
26
- // On ChromeOS and Mac there's no timeout and no clear way to abort
27
- // device.gatt.connect(), so we accept that sometimes we'll still
28
- // be trying to connect when we'd rather not be. If it succeeds when
29
- // we no longer intend to be connected then we disconnect at that
30
- // point. If we try to connect when a previous connection attempt is
31
- // still around then we wait for it for our timeout period.
32
- //
33
- // On Windows it times out after 7s.
34
- // https://bugs.chromium.org/p/chromium/issues/detail?id=684073
35
- //
36
- // Additionally we've remove the delay before trying to connect again
37
- // on Windows.
38
- //
39
- // We also used to have a timeout around requestDevice that reloaded the page.
40
- //
41
- // > In some situations the Chrome device prompt simply doesn't appear so we time
42
- // > this out after 30 seconds and reload the page
43
32
  export class BluetoothDeviceWrapper {
44
- constructor(device, logging = new ConsoleLogging(), dispatchTypedEvent, currentEvents, callbacks) {
45
- Object.defineProperty(this, "device", {
33
+ constructor(bleDevice, logging = new ConsoleLogging(), deviceBondState = new DefaultDeviceBondState(), dispatchTypedEvent, currentEvents, callbacks) {
34
+ Object.defineProperty(this, "bleDevice", {
46
35
  enumerable: true,
47
36
  configurable: true,
48
37
  writable: true,
49
- value: device
38
+ value: bleDevice
50
39
  });
51
40
  Object.defineProperty(this, "logging", {
52
41
  enumerable: true,
@@ -54,25 +43,23 @@ export class BluetoothDeviceWrapper {
54
43
  writable: true,
55
44
  value: logging
56
45
  });
57
- Object.defineProperty(this, "currentEvents", {
46
+ Object.defineProperty(this, "deviceBondState", {
58
47
  enumerable: true,
59
48
  configurable: true,
60
49
  writable: true,
61
- value: currentEvents
50
+ value: deviceBondState
62
51
  });
63
- Object.defineProperty(this, "callbacks", {
52
+ Object.defineProperty(this, "currentEvents", {
64
53
  enumerable: true,
65
54
  configurable: true,
66
55
  writable: true,
67
- value: callbacks
56
+ value: currentEvents
68
57
  });
69
- // Used to avoid automatic reconnection during user triggered connect/disconnect
70
- // or reconnection itself.
71
- Object.defineProperty(this, "duringExplicitConnectDisconnect", {
58
+ Object.defineProperty(this, "callbacks", {
72
59
  enumerable: true,
73
60
  configurable: true,
74
61
  writable: true,
75
- value: 0
62
+ value: callbacks
76
63
  });
77
64
  Object.defineProperty(this, "connected", {
78
65
  enumerable: true,
@@ -80,12 +67,6 @@ export class BluetoothDeviceWrapper {
80
67
  writable: true,
81
68
  value: false
82
69
  });
83
- Object.defineProperty(this, "isReconnect", {
84
- enumerable: true,
85
- configurable: true,
86
- writable: true,
87
- value: false
88
- });
89
70
  // Only updated after the full connection flow completes not during bond handling.
90
71
  Object.defineProperty(this, "serviceIds", {
91
72
  enumerable: true,
@@ -111,6 +92,18 @@ export class BluetoothDeviceWrapper {
111
92
  writable: true,
112
93
  value: void 0
113
94
  });
95
+ Object.defineProperty(this, "events", {
96
+ enumerable: true,
97
+ configurable: true,
98
+ writable: true,
99
+ value: void 0
100
+ });
101
+ Object.defineProperty(this, "ioPin", {
102
+ enumerable: true,
103
+ configurable: true,
104
+ writable: true,
105
+ value: void 0
106
+ });
114
107
  Object.defineProperty(this, "led", {
115
108
  enumerable: true,
116
109
  configurable: true,
@@ -123,6 +116,12 @@ export class BluetoothDeviceWrapper {
123
116
  writable: true,
124
117
  value: void 0
125
118
  });
119
+ Object.defineProperty(this, "temperature", {
120
+ enumerable: true,
121
+ configurable: true,
122
+ writable: true,
123
+ value: void 0
124
+ });
126
125
  Object.defineProperty(this, "uart", {
127
126
  enumerable: true,
128
127
  configurable: true,
@@ -160,65 +159,64 @@ export class BluetoothDeviceWrapper {
160
159
  enumerable: true,
161
160
  configurable: true,
162
161
  writable: true,
163
- value: async () => {
162
+ value: () => {
164
163
  this.waitingForDisconnectEventCallbacks.forEach((cb) => cb());
165
164
  this.waitingForDisconnectEventCallbacks.length = 0;
166
165
  this.connected = false;
167
- try {
168
- if (!this.duringExplicitConnectDisconnect) {
169
- this.logging.log("Bluetooth disconnected... automatically trying reconnect");
170
- await this.reconnect();
171
- }
172
- else {
173
- this.logging.log("Bluetooth disconnect ignored during explicit disconnect");
174
- }
175
- }
176
- catch (e) {
177
- this.logging.error("Bluetooth connect triggered by disconnect listener failed", e);
178
- }
166
+ this.callbacks.onDisconnect();
179
167
  }
180
168
  });
181
- this.accelerometer = new AccelerometerService(device.deviceId, dispatchTypedEvent);
182
- this.buttons = new ButtonService(device.deviceId, dispatchTypedEvent);
183
- this.deviceInformation = new DeviceInformationService(device.deviceId);
184
- this.led = new LedService(device.deviceId);
185
- this.magnetometer = new MagnetometerService(device.deviceId, dispatchTypedEvent);
186
- this.uart = new UARTService(device.deviceId, dispatchTypedEvent);
169
+ this.accelerometer = new AccelerometerService(bleDevice.deviceId, dispatchTypedEvent);
170
+ this.buttons = new ButtonService(bleDevice.deviceId, dispatchTypedEvent);
171
+ this.deviceInformation = new DeviceInformationService(bleDevice.deviceId);
172
+ this.events = new EventService(bleDevice.deviceId, dispatchTypedEvent, () => this.boardVersion);
173
+ this.ioPin = new IoPinService(bleDevice.deviceId, dispatchTypedEvent);
174
+ this.led = new LedService(bleDevice.deviceId);
175
+ this.magnetometer = new MagnetometerService(bleDevice.deviceId, dispatchTypedEvent);
176
+ this.temperature = new TemperatureService(bleDevice.deviceId, dispatchTypedEvent);
177
+ this.uart = new UARTService(bleDevice.deviceId, dispatchTypedEvent);
187
178
  this.services = [
188
179
  this.accelerometer,
189
180
  this.buttons,
181
+ this.events,
182
+ this.ioPin,
190
183
  this.led,
191
184
  this.magnetometer,
185
+ this.temperature,
192
186
  this.uart,
193
187
  ];
194
188
  }
195
- async connect() {
189
+ setBonded(isBonded) {
190
+ this.deviceBondState.setBonded(this.bleDevice.deviceId, isBonded);
191
+ }
192
+ async connect(options) {
193
+ const progress = options?.progress ?? (() => { });
196
194
  this.logging.event({
197
- type: this.isReconnect ? "Reconnect" : "Connect",
195
+ type: "Connect",
198
196
  message: "Bluetooth connect start",
199
197
  });
200
- if (this.isReconnect) {
201
- this.callbacks.onReconnecting();
202
- }
203
- else {
204
- this.callbacks.onConnecting();
205
- }
206
- this.duringExplicitConnectDisconnect++;
198
+ this.callbacks.onConnecting();
199
+ const bondMode = options?.bondMode ?? "pairing";
207
200
  try {
208
- if (Capacitor.isNativePlatform()) {
209
- await this.connectHandlingBond();
201
+ if (Capacitor.isNativePlatform() && bondMode !== "none") {
202
+ const isBonded = this.deviceBondState.isBonded(this.bleDevice.deviceId);
203
+ await this.connectHandlingBond(progress, isBonded ?? false, bondMode);
204
+ this.setBonded(true);
205
+ // We need this on Android for reconnecting after DFU.
206
+ await BleClient.discoverServices(this.bleDevice.deviceId);
210
207
  }
211
208
  else {
209
+ progress(ProgressStage.Connecting);
212
210
  await this.connectInternal();
213
211
  }
214
212
  await this.getBoardVersion();
215
213
  const events = this.currentEvents();
216
- const services = await BleClient.getServices(this.device.deviceId);
214
+ const services = await BleClient.getServices(this.bleDevice.deviceId);
217
215
  this.serviceIds = new Set(services.map((s) => s.uuid));
218
216
  this.logging.log(`Starting notifications for current events ${events}`);
219
217
  events.forEach((e) => this.startNotifications(e));
220
218
  this.logging.event({
221
- type: this.isReconnect ? "Reconnect" : "Connect",
219
+ type: "Connect",
222
220
  message: "Bluetooth connect success",
223
221
  });
224
222
  this.callbacks.onSuccess();
@@ -226,34 +224,35 @@ export class BluetoothDeviceWrapper {
226
224
  catch (e) {
227
225
  this.logging.error("Bluetooth connect error", e);
228
226
  this.logging.event({
229
- type: this.isReconnect ? "Reconnect" : "Connect",
227
+ type: "Connect",
230
228
  message: "Bluetooth connect failed",
231
229
  });
232
230
  await this.disconnectInternal(false);
233
- this.callbacks.onFail();
231
+ this.callbacks.onDisconnect();
234
232
  if (e instanceof DeviceError) {
235
233
  throw e;
236
234
  }
237
- if (e instanceof TimeoutError) {
235
+ this.setBonded(false);
236
+ if (
237
+ // Error thrown in iOS only.
238
+ e instanceof Error &&
239
+ e.message === "Peer removed pairing information") {
238
240
  throw new DeviceError({
239
- code: "timeout-error",
240
- message: e instanceof Error ? e.message : String(e),
241
+ code: "pairing-information-lost",
242
+ message: e.message,
243
+ cause: e,
241
244
  });
242
245
  }
243
246
  throw new DeviceError({
244
- code: "bluetooth-connection-failed",
247
+ code: "connection-error",
245
248
  message: e instanceof Error ? e.message : String(e),
249
+ cause: e,
246
250
  });
247
251
  }
248
- finally {
249
- this.duringExplicitConnectDisconnect--;
250
- // Reset isReconnect for next time
251
- this.isReconnect = false;
252
- }
253
252
  }
254
253
  async connectInternal() {
255
254
  this.waitingForDisconnectEventCallbacks.length = 0;
256
- await BleClient.connect(this.device.deviceId, this.handleDisconnectEvent, {
255
+ await BleClient.connect(this.bleDevice.deviceId, this.handleDisconnectEvent, {
257
256
  timeout: connectTimeoutInMs,
258
257
  });
259
258
  this.connected = true;
@@ -263,24 +262,15 @@ export class BluetoothDeviceWrapper {
263
262
  }
264
263
  async disconnectInternal(userTriggered) {
265
264
  this.logging.log(`Bluetooth disconnect ${userTriggered ? "(user triggered)" : "(programmatic)"}`);
266
- this.duringExplicitConnectDisconnect++;
267
265
  try {
268
266
  if (this.connected) {
269
- await BleClient.disconnect(this.device.deviceId);
267
+ await BleClient.disconnect(this.bleDevice.deviceId);
270
268
  }
271
269
  }
272
270
  catch (e) {
273
271
  this.logging.error("Bluetooth GATT disconnect error (ignored)", e);
274
272
  // We might have already lost the connection.
275
273
  }
276
- finally {
277
- this.duringExplicitConnectDisconnect--;
278
- }
279
- }
280
- async reconnect() {
281
- this.logging.log("Bluetooth reconnect");
282
- this.isReconnect = true;
283
- await this.connect();
284
274
  }
285
275
  async getBoardVersion() {
286
276
  // We read this when we connect and it won't change.
@@ -301,7 +291,7 @@ export class BluetoothDeviceWrapper {
301
291
  }
302
292
  async startInternalNotifications(serviceId, characteristicId, options) {
303
293
  const key = this.getNotificationKey(serviceId, characteristicId);
304
- await this.raceDisconnectAndTimeout(BleClient.startNotifications(this.device.deviceId, serviceId, characteristicId, (value) => {
294
+ await this.raceDisconnectAndTimeout(BleClient.startNotifications(this.bleDevice.deviceId, serviceId, characteristicId, (value) => {
305
295
  const bytes = new Uint8Array(value.buffer);
306
296
  // Notify all registered callbacks.
307
297
  this.internalNotificationListeners
@@ -321,7 +311,7 @@ export class BluetoothDeviceWrapper {
321
311
  this.internalNotificationListeners.get(key)?.delete(callback);
322
312
  }
323
313
  async stopInternalNotifications(serviceId, characteristicId) {
324
- await BleClient.stopNotifications(this.device.deviceId, serviceId, characteristicId);
314
+ await BleClient.stopNotifications(this.bleDevice.deviceId, serviceId, characteristicId);
325
315
  const key = this.getNotificationKey(serviceId, characteristicId);
326
316
  this.internalNotificationListeners.delete(key);
327
317
  }
@@ -342,7 +332,7 @@ export class BluetoothDeviceWrapper {
342
332
  this.subscribe(serviceId, characteristicId, notificationListener);
343
333
  });
344
334
  try {
345
- await BleClient.writeWithoutResponse(this.device.deviceId, serviceId, characteristicId, value);
335
+ await BleClient.writeWithoutResponse(this.bleDevice.deviceId, serviceId, characteristicId, value);
346
336
  return await this.raceDisconnectAndTimeout(notificationPromise, {
347
337
  timeout: 3_000,
348
338
  actionName: "flash notification wait",
@@ -412,9 +402,10 @@ export class BluetoothDeviceWrapper {
412
402
  * Bonds with device and handles the post-bond device state only returning
413
403
  * when we can reattempt a connection with the device.
414
404
  */
415
- async connectHandlingBond() {
405
+ async connectHandlingBond(progress, isAlreadyIosBonded, bondMode) {
406
+ progress(ProgressStage.CheckingBond);
416
407
  const startTime = Date.now();
417
- const maybeJustBonded = await this.bondConnectDeviceInternal();
408
+ const maybeJustBonded = await this.bondConnectDeviceInternal(isAlreadyIosBonded);
418
409
  if (maybeJustBonded) {
419
410
  // If we did just bond then the device disconnects after 2_000 and then
420
411
  // resets after a further 13_000 In future we'd like a firmware change
@@ -441,18 +432,31 @@ export class BluetoothDeviceWrapper {
441
432
  }
442
433
  }
443
434
  await this.connectInternal();
444
- // TODO: check this is needed, potentially inline into connect if always needed
445
- await delay(500);
446
- this.log("Resetting to pairing mode");
447
- const pf = new PartialFlashingService(this);
448
- await pf.resetToMode(MicroBitMode.Pairing);
449
- await this.waitForDisconnect(10_000);
450
- await this.connectInternal();
451
- this.log(`Connection ready; took ${Date.now() - startTime}`);
435
+ try {
436
+ const targetMode = bondMode === "pairing"
437
+ ? MicroBitMode.Pairing
438
+ : MicroBitMode.Application;
439
+ progress(ProgressStage.ResettingDevice);
440
+ this.log(`Resetting to ${bondMode} mode`);
441
+ const pf = new PartialFlashingService(this);
442
+ await pf.resetToMode(targetMode);
443
+ await this.waitForDisconnect(10_000);
444
+ progress(ProgressStage.Connecting);
445
+ await this.connectInternal();
446
+ }
447
+ catch (e) {
448
+ if (isCharacteristicNotFoundError(e)) {
449
+ this.log("Partial flashing characteristic not found, skipping reset.");
450
+ }
451
+ else {
452
+ throw e;
453
+ }
454
+ }
452
455
  }
456
+ this.log(`Connection ready; took ${Date.now() - startTime}`);
453
457
  }
454
- async bondConnectDeviceInternal() {
455
- const { deviceId } = this.device;
458
+ async bondConnectDeviceInternal(isAlreadyIosBonded) {
459
+ const { deviceId } = this.bleDevice;
456
460
  if (isAndroid()) {
457
461
  let justBonded = false;
458
462
  // This gets us a nicer pairing dialog than just going straight for the characteristic.
@@ -470,12 +474,54 @@ export class BluetoothDeviceWrapper {
470
474
  // need to call startNotifications again. We need to be connected to
471
475
  // startNotifications.
472
476
  await this.connectInternal();
477
+ if (!isAlreadyIosBonded) {
478
+ await this.triggerIosPairing({ timeout: bondingTimeoutInMs });
479
+ }
480
+ return !isAlreadyIosBonded;
481
+ }
482
+ }
483
+ /**
484
+ * On iOS, accessing an encrypted characteristic triggers the pairing dialog.
485
+ * Try each candidate characteristic in turn until one succeeds. The error is
486
+ * fast (local GATT cache lookup) so there's no meaningful delay from retries.
487
+ */
488
+ async triggerIosPairing(options) {
489
+ const { deviceId } = this.bleDevice;
490
+ // 1. Partial flashing notifications (most common case)
491
+ try {
473
492
  const pf = new PartialFlashingService(this);
474
- await pf.startNotifications({ timeout: bondingTimeoutInMs });
475
- // We just did it now to trigger pairing at a well defined point.
493
+ await pf.startNotifications(options);
476
494
  await pf.stopNotifications();
477
- return true;
495
+ return;
496
+ }
497
+ catch (e) {
498
+ if (!isCharacteristicNotFoundError(e)) {
499
+ throw e;
500
+ }
501
+ this.log("PF characteristic not found for pairing trigger, trying Secure DFU");
502
+ }
503
+ // 2. Nordic Secure DFU buttonless notifications (V2 without PF)
504
+ try {
505
+ await BleClient.startNotifications(deviceId, profile.nordicSecureDfu.id, profile.nordicSecureDfu.characteristics.buttonless.id, () => { }, options);
506
+ await BleClient.stopNotifications(deviceId, profile.nordicSecureDfu.id, profile.nordicSecureDfu.characteristics.buttonless.id);
507
+ return;
508
+ }
509
+ catch (e) {
510
+ if (!isCharacteristicNotFoundError(e)) {
511
+ throw e;
512
+ }
513
+ this.log("Secure DFU characteristic not found for pairing trigger, trying DFU control");
514
+ }
515
+ // 3. micro:bit DFU control read (V1 without PF)
516
+ try {
517
+ await BleClient.read(deviceId, profile.dfuControl.id, profile.dfuControl.characteristics.control.id, options);
518
+ }
519
+ catch (e) {
520
+ if (!isCharacteristicNotFoundError(e)) {
521
+ throw e;
522
+ }
523
+ this.log("No suitable characteristic found to trigger pairing");
478
524
  }
479
525
  }
480
526
  }
481
- //# sourceMappingURL=bluetooth-device-wrapper.js.map
527
+ //# sourceMappingURL=device-wrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device-wrapper.js","sourceRoot":"","sources":["../../../src/bluetooth/device-wrapper.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import MemoryMap from "nrf-intel-hex";
2
- import { BoardVersion, ProgressCallback } from "../device.js";
3
- import { BluetoothDeviceWrapper } from "../bluetooth-device-wrapper.js";
2
+ import { BoardVersion, ProgressCallback } from "../../device.js";
3
+ import { BluetoothDeviceWrapper } from "../device-wrapper.js";
4
4
  /**
5
5
  * Perform a full flash via Nordic's DFU service.
6
6
  *
@@ -1,8 +1,8 @@
1
- import { DeviceError, FlashDataError, ProgressStage, } from "../device.js";
2
- import { DfuService, NORDIC_DFU_SERVICE } from "../dfu-service.js";
1
+ import { DeviceError, FlashDataError, ProgressStage, } from "../../device.js";
2
+ import { DfuService, NORDIC_DFU_SERVICE } from "../services/dfu-service.js";
3
3
  import { refreshServicesForV1IfDesiredServiceMissing } from "./flashing-v1.js";
4
4
  import { flashDfu } from "./nordic-dfu.js";
5
- import { delay } from "../async-util.js";
5
+ import { delay } from "../../async-util.js";
6
6
  /**
7
7
  * Perform a full flash via Nordic's DFU service.
8
8
  *
@@ -16,7 +16,7 @@ import { delay } from "../async-util.js";
16
16
  export async function fullFlash(connection, boardVersion, memoryMap, progress) {
17
17
  connection.log("Full flash");
18
18
  progress(ProgressStage.FullFlashing);
19
- const { deviceId } = connection.device;
19
+ const { deviceId } = connection.bleDevice;
20
20
  try {
21
21
  if (boardVersion === "V1") {
22
22
  connection.log("Rebooting V1 to bootloader");
@@ -27,8 +27,9 @@ export async function fullFlash(connection, boardVersion, memoryMap, progress) {
27
27
  catch (e) {
28
28
  connection.error("Failed to request reboot to bootloader", e);
29
29
  throw new DeviceError({
30
- code: "flash-full-failed",
30
+ code: "connection-error",
31
31
  message: e instanceof Error ? e.message : "Failed to reboot to bootloader",
32
+ cause: e,
32
33
  });
33
34
  }
34
35
  // Wait for device to automatically disconnect as it reboots into bootloader
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flashing-full.js","sourceRoot":"","sources":["../../../../src/bluetooth/flashing/flashing-full.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import MemoryMap from "nrf-intel-hex";
2
+ import { RegionInfo } from "../services/partial-flashing-service.js";
3
+ export interface MakeCodeRegionInfo extends RegionInfo {
4
+ /** SHA-256 (truncated to 8 bytes) of the compiled program binary. */
5
+ appHash: string;
6
+ }
7
+ /**
8
+ * Find the MakeCode code region in a MemoryMap (typically from a hex file).
9
+ */
10
+ export declare const findMakeCodeRegionInMemoryMap: (memoryMap: MemoryMap, deviceCodeRegion: RegionInfo) => MakeCodeRegionInfo | null;