@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
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ /**
3
+ * (c) 2026, Micro:bit Educational Foundation and contributors
4
+ *
5
+ * SPDX-License-Identifier: MIT
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.DefaultDeviceBondState = void 0;
9
+ class DefaultDeviceBondState {
10
+ constructor() {
11
+ Object.defineProperty(this, "bondStates", {
12
+ enumerable: true,
13
+ configurable: true,
14
+ writable: true,
15
+ value: {}
16
+ });
17
+ }
18
+ setBonded(id, isBonded) {
19
+ this.bondStates[id] = isBonded;
20
+ }
21
+ isBonded(id) {
22
+ return this.bondStates[id] ?? false;
23
+ }
24
+ }
25
+ exports.DefaultDeviceBondState = DefaultDeviceBondState;
26
+ //# sourceMappingURL=device-bond-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device-bond-state.js","sourceRoot":"","sources":["../../../src/bluetooth/device-bond-state.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAOH,MAAa,sBAAsB;IAAnC;QACU;;;;mBAAsC,EAAE;WAAC;IAOnD,CAAC;IANC,SAAS,CAAC,EAAU,EAAE,QAAiB;QACrC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC;IACjC,CAAC;IACD,QAAQ,CAAC,EAAU;QACjB,OAAO,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC;IACtC,CAAC;CACF;AARD,wDAQC"}
@@ -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,52 +5,42 @@
5
5
  * SPDX-License-Identifier: MIT
6
6
  */
7
7
  Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.BluetoothDeviceWrapper = exports.isAndroid = exports.scanningTimeoutInMs = exports.connectTimeoutInMs = exports.bondingTimeoutInMs = void 0;
8
+ exports.BluetoothDeviceWrapper = exports.isAndroid = exports.scanningTimeoutInMs = exports.connectTimeoutInMs = exports.bondingTimeoutInMs = exports.isCharacteristicNotFoundError = void 0;
9
9
  const bluetooth_le_1 = require("@capacitor-community/bluetooth-le");
10
10
  const core_1 = require("@capacitor/core");
11
- const accelerometer_service_js_1 = require("./accelerometer-service.js");
12
- const async_util_js_1 = require("./async-util.js");
13
- const button_service_js_1 = require("./button-service.js");
14
- const device_information_service_js_1 = require("./device-information-service.js");
15
- const device_js_1 = require("./device.js");
16
- const led_service_js_1 = require("./led-service.js");
17
- const logging_js_1 = require("./logging.js");
18
- const magnetometer_service_js_1 = require("./magnetometer-service.js");
19
- const partial_flashing_service_js_1 = require("./partial-flashing-service.js");
20
- const uart_service_js_1 = require("./uart-service.js");
11
+ const async_util_js_1 = require("../async-util.js");
12
+ const device_js_1 = require("../device.js");
13
+ const logging_js_1 = require("../logging.js");
14
+ const device_bond_state_js_1 = require("./device-bond-state.js");
15
+ const profile_js_1 = require("./profile.js");
16
+ const accelerometer_service_js_1 = require("./services/accelerometer-service.js");
17
+ const button_service_js_1 = require("./services/button-service.js");
18
+ const device_information_service_js_1 = require("./services/device-information-service.js");
19
+ const event_service_js_1 = require("./services/event-service.js");
20
+ const io_pin_service_js_1 = require("./services/io-pin-service.js");
21
+ const led_service_js_1 = require("./services/led-service.js");
22
+ const magnetometer_service_js_1 = require("./services/magnetometer-service.js");
23
+ const partial_flashing_service_js_1 = require("./services/partial-flashing-service.js");
24
+ const temperature_service_js_1 = require("./services/temperature-service.js");
25
+ const uart_service_js_1 = require("./services/uart-service.js");
26
+ /**
27
+ * The @capacitor-community/bluetooth-le plugin throws this message when
28
+ * a characteristic UUID is not found in the device's GATT table.
29
+ */
30
+ const isCharacteristicNotFoundError = (e) => e instanceof Error && e.message === "Characteristic not found.";
31
+ exports.isCharacteristicNotFoundError = isCharacteristicNotFoundError;
21
32
  exports.bondingTimeoutInMs = 40_000;
22
33
  exports.connectTimeoutInMs = 10_000;
23
34
  exports.scanningTimeoutInMs = 10_000;
24
35
  const isAndroid = () => core_1.Capacitor.getPlatform() === "android";
25
36
  exports.isAndroid = isAndroid;
26
- // TODO: We've removed the support for these behaviours as we need to
27
- // re-evaluate how best to support then via capacitor-ble (or reinstate
28
- // the direct Web Bluetooth connection code.
29
- //
30
- // On ChromeOS and Mac there's no timeout and no clear way to abort
31
- // device.gatt.connect(), so we accept that sometimes we'll still
32
- // be trying to connect when we'd rather not be. If it succeeds when
33
- // we no longer intend to be connected then we disconnect at that
34
- // point. If we try to connect when a previous connection attempt is
35
- // still around then we wait for it for our timeout period.
36
- //
37
- // On Windows it times out after 7s.
38
- // https://bugs.chromium.org/p/chromium/issues/detail?id=684073
39
- //
40
- // Additionally we've remove the delay before trying to connect again
41
- // on Windows.
42
- //
43
- // We also used to have a timeout around requestDevice that reloaded the page.
44
- //
45
- // > In some situations the Chrome device prompt simply doesn't appear so we time
46
- // > this out after 30 seconds and reload the page
47
37
  class BluetoothDeviceWrapper {
48
- constructor(device, logging = new logging_js_1.ConsoleLogging(), dispatchTypedEvent, currentEvents, callbacks) {
49
- Object.defineProperty(this, "device", {
38
+ constructor(bleDevice, logging = new logging_js_1.ConsoleLogging(), deviceBondState = new device_bond_state_js_1.DefaultDeviceBondState(), dispatchTypedEvent, currentEvents, callbacks) {
39
+ Object.defineProperty(this, "bleDevice", {
50
40
  enumerable: true,
51
41
  configurable: true,
52
42
  writable: true,
53
- value: device
43
+ value: bleDevice
54
44
  });
55
45
  Object.defineProperty(this, "logging", {
56
46
  enumerable: true,
@@ -58,25 +48,23 @@ class BluetoothDeviceWrapper {
58
48
  writable: true,
59
49
  value: logging
60
50
  });
61
- Object.defineProperty(this, "currentEvents", {
51
+ Object.defineProperty(this, "deviceBondState", {
62
52
  enumerable: true,
63
53
  configurable: true,
64
54
  writable: true,
65
- value: currentEvents
55
+ value: deviceBondState
66
56
  });
67
- Object.defineProperty(this, "callbacks", {
57
+ Object.defineProperty(this, "currentEvents", {
68
58
  enumerable: true,
69
59
  configurable: true,
70
60
  writable: true,
71
- value: callbacks
61
+ value: currentEvents
72
62
  });
73
- // Used to avoid automatic reconnection during user triggered connect/disconnect
74
- // or reconnection itself.
75
- Object.defineProperty(this, "duringExplicitConnectDisconnect", {
63
+ Object.defineProperty(this, "callbacks", {
76
64
  enumerable: true,
77
65
  configurable: true,
78
66
  writable: true,
79
- value: 0
67
+ value: callbacks
80
68
  });
81
69
  Object.defineProperty(this, "connected", {
82
70
  enumerable: true,
@@ -84,12 +72,6 @@ class BluetoothDeviceWrapper {
84
72
  writable: true,
85
73
  value: false
86
74
  });
87
- Object.defineProperty(this, "isReconnect", {
88
- enumerable: true,
89
- configurable: true,
90
- writable: true,
91
- value: false
92
- });
93
75
  // Only updated after the full connection flow completes not during bond handling.
94
76
  Object.defineProperty(this, "serviceIds", {
95
77
  enumerable: true,
@@ -115,6 +97,18 @@ class BluetoothDeviceWrapper {
115
97
  writable: true,
116
98
  value: void 0
117
99
  });
100
+ Object.defineProperty(this, "events", {
101
+ enumerable: true,
102
+ configurable: true,
103
+ writable: true,
104
+ value: void 0
105
+ });
106
+ Object.defineProperty(this, "ioPin", {
107
+ enumerable: true,
108
+ configurable: true,
109
+ writable: true,
110
+ value: void 0
111
+ });
118
112
  Object.defineProperty(this, "led", {
119
113
  enumerable: true,
120
114
  configurable: true,
@@ -127,6 +121,12 @@ class BluetoothDeviceWrapper {
127
121
  writable: true,
128
122
  value: void 0
129
123
  });
124
+ Object.defineProperty(this, "temperature", {
125
+ enumerable: true,
126
+ configurable: true,
127
+ writable: true,
128
+ value: void 0
129
+ });
130
130
  Object.defineProperty(this, "uart", {
131
131
  enumerable: true,
132
132
  configurable: true,
@@ -164,65 +164,64 @@ class BluetoothDeviceWrapper {
164
164
  enumerable: true,
165
165
  configurable: true,
166
166
  writable: true,
167
- value: async () => {
167
+ value: () => {
168
168
  this.waitingForDisconnectEventCallbacks.forEach((cb) => cb());
169
169
  this.waitingForDisconnectEventCallbacks.length = 0;
170
170
  this.connected = false;
171
- try {
172
- if (!this.duringExplicitConnectDisconnect) {
173
- this.logging.log("Bluetooth disconnected... automatically trying reconnect");
174
- await this.reconnect();
175
- }
176
- else {
177
- this.logging.log("Bluetooth disconnect ignored during explicit disconnect");
178
- }
179
- }
180
- catch (e) {
181
- this.logging.error("Bluetooth connect triggered by disconnect listener failed", e);
182
- }
171
+ this.callbacks.onDisconnect();
183
172
  }
184
173
  });
185
- this.accelerometer = new accelerometer_service_js_1.AccelerometerService(device.deviceId, dispatchTypedEvent);
186
- this.buttons = new button_service_js_1.ButtonService(device.deviceId, dispatchTypedEvent);
187
- this.deviceInformation = new device_information_service_js_1.DeviceInformationService(device.deviceId);
188
- this.led = new led_service_js_1.LedService(device.deviceId);
189
- this.magnetometer = new magnetometer_service_js_1.MagnetometerService(device.deviceId, dispatchTypedEvent);
190
- this.uart = new uart_service_js_1.UARTService(device.deviceId, dispatchTypedEvent);
174
+ this.accelerometer = new accelerometer_service_js_1.AccelerometerService(bleDevice.deviceId, dispatchTypedEvent);
175
+ this.buttons = new button_service_js_1.ButtonService(bleDevice.deviceId, dispatchTypedEvent);
176
+ this.deviceInformation = new device_information_service_js_1.DeviceInformationService(bleDevice.deviceId);
177
+ this.events = new event_service_js_1.EventService(bleDevice.deviceId, dispatchTypedEvent, () => this.boardVersion);
178
+ this.ioPin = new io_pin_service_js_1.IoPinService(bleDevice.deviceId, dispatchTypedEvent);
179
+ this.led = new led_service_js_1.LedService(bleDevice.deviceId);
180
+ this.magnetometer = new magnetometer_service_js_1.MagnetometerService(bleDevice.deviceId, dispatchTypedEvent);
181
+ this.temperature = new temperature_service_js_1.TemperatureService(bleDevice.deviceId, dispatchTypedEvent);
182
+ this.uart = new uart_service_js_1.UARTService(bleDevice.deviceId, dispatchTypedEvent);
191
183
  this.services = [
192
184
  this.accelerometer,
193
185
  this.buttons,
186
+ this.events,
187
+ this.ioPin,
194
188
  this.led,
195
189
  this.magnetometer,
190
+ this.temperature,
196
191
  this.uart,
197
192
  ];
198
193
  }
199
- async connect() {
194
+ setBonded(isBonded) {
195
+ this.deviceBondState.setBonded(this.bleDevice.deviceId, isBonded);
196
+ }
197
+ async connect(options) {
198
+ const progress = options?.progress ?? (() => { });
200
199
  this.logging.event({
201
- type: this.isReconnect ? "Reconnect" : "Connect",
200
+ type: "Connect",
202
201
  message: "Bluetooth connect start",
203
202
  });
204
- if (this.isReconnect) {
205
- this.callbacks.onReconnecting();
206
- }
207
- else {
208
- this.callbacks.onConnecting();
209
- }
210
- this.duringExplicitConnectDisconnect++;
203
+ this.callbacks.onConnecting();
204
+ const bondMode = options?.bondMode ?? "pairing";
211
205
  try {
212
- if (core_1.Capacitor.isNativePlatform()) {
213
- await this.connectHandlingBond();
206
+ if (core_1.Capacitor.isNativePlatform() && bondMode !== "none") {
207
+ const isBonded = this.deviceBondState.isBonded(this.bleDevice.deviceId);
208
+ await this.connectHandlingBond(progress, isBonded ?? false, bondMode);
209
+ this.setBonded(true);
210
+ // We need this on Android for reconnecting after DFU.
211
+ await bluetooth_le_1.BleClient.discoverServices(this.bleDevice.deviceId);
214
212
  }
215
213
  else {
214
+ progress(device_js_1.ProgressStage.Connecting);
216
215
  await this.connectInternal();
217
216
  }
218
217
  await this.getBoardVersion();
219
218
  const events = this.currentEvents();
220
- const services = await bluetooth_le_1.BleClient.getServices(this.device.deviceId);
219
+ const services = await bluetooth_le_1.BleClient.getServices(this.bleDevice.deviceId);
221
220
  this.serviceIds = new Set(services.map((s) => s.uuid));
222
221
  this.logging.log(`Starting notifications for current events ${events}`);
223
222
  events.forEach((e) => this.startNotifications(e));
224
223
  this.logging.event({
225
- type: this.isReconnect ? "Reconnect" : "Connect",
224
+ type: "Connect",
226
225
  message: "Bluetooth connect success",
227
226
  });
228
227
  this.callbacks.onSuccess();
@@ -230,34 +229,35 @@ class BluetoothDeviceWrapper {
230
229
  catch (e) {
231
230
  this.logging.error("Bluetooth connect error", e);
232
231
  this.logging.event({
233
- type: this.isReconnect ? "Reconnect" : "Connect",
232
+ type: "Connect",
234
233
  message: "Bluetooth connect failed",
235
234
  });
236
235
  await this.disconnectInternal(false);
237
- this.callbacks.onFail();
236
+ this.callbacks.onDisconnect();
238
237
  if (e instanceof device_js_1.DeviceError) {
239
238
  throw e;
240
239
  }
241
- if (e instanceof async_util_js_1.TimeoutError) {
240
+ this.setBonded(false);
241
+ if (
242
+ // Error thrown in iOS only.
243
+ e instanceof Error &&
244
+ e.message === "Peer removed pairing information") {
242
245
  throw new device_js_1.DeviceError({
243
- code: "timeout-error",
244
- message: e instanceof Error ? e.message : String(e),
246
+ code: "pairing-information-lost",
247
+ message: e.message,
248
+ cause: e,
245
249
  });
246
250
  }
247
251
  throw new device_js_1.DeviceError({
248
- code: "bluetooth-connection-failed",
252
+ code: "connection-error",
249
253
  message: e instanceof Error ? e.message : String(e),
254
+ cause: e,
250
255
  });
251
256
  }
252
- finally {
253
- this.duringExplicitConnectDisconnect--;
254
- // Reset isReconnect for next time
255
- this.isReconnect = false;
256
- }
257
257
  }
258
258
  async connectInternal() {
259
259
  this.waitingForDisconnectEventCallbacks.length = 0;
260
- await bluetooth_le_1.BleClient.connect(this.device.deviceId, this.handleDisconnectEvent, {
260
+ await bluetooth_le_1.BleClient.connect(this.bleDevice.deviceId, this.handleDisconnectEvent, {
261
261
  timeout: exports.connectTimeoutInMs,
262
262
  });
263
263
  this.connected = true;
@@ -267,24 +267,15 @@ class BluetoothDeviceWrapper {
267
267
  }
268
268
  async disconnectInternal(userTriggered) {
269
269
  this.logging.log(`Bluetooth disconnect ${userTriggered ? "(user triggered)" : "(programmatic)"}`);
270
- this.duringExplicitConnectDisconnect++;
271
270
  try {
272
271
  if (this.connected) {
273
- await bluetooth_le_1.BleClient.disconnect(this.device.deviceId);
272
+ await bluetooth_le_1.BleClient.disconnect(this.bleDevice.deviceId);
274
273
  }
275
274
  }
276
275
  catch (e) {
277
276
  this.logging.error("Bluetooth GATT disconnect error (ignored)", e);
278
277
  // We might have already lost the connection.
279
278
  }
280
- finally {
281
- this.duringExplicitConnectDisconnect--;
282
- }
283
- }
284
- async reconnect() {
285
- this.logging.log("Bluetooth reconnect");
286
- this.isReconnect = true;
287
- await this.connect();
288
279
  }
289
280
  async getBoardVersion() {
290
281
  // We read this when we connect and it won't change.
@@ -305,7 +296,7 @@ class BluetoothDeviceWrapper {
305
296
  }
306
297
  async startInternalNotifications(serviceId, characteristicId, options) {
307
298
  const key = this.getNotificationKey(serviceId, characteristicId);
308
- await this.raceDisconnectAndTimeout(bluetooth_le_1.BleClient.startNotifications(this.device.deviceId, serviceId, characteristicId, (value) => {
299
+ await this.raceDisconnectAndTimeout(bluetooth_le_1.BleClient.startNotifications(this.bleDevice.deviceId, serviceId, characteristicId, (value) => {
309
300
  const bytes = new Uint8Array(value.buffer);
310
301
  // Notify all registered callbacks.
311
302
  this.internalNotificationListeners
@@ -325,7 +316,7 @@ class BluetoothDeviceWrapper {
325
316
  this.internalNotificationListeners.get(key)?.delete(callback);
326
317
  }
327
318
  async stopInternalNotifications(serviceId, characteristicId) {
328
- await bluetooth_le_1.BleClient.stopNotifications(this.device.deviceId, serviceId, characteristicId);
319
+ await bluetooth_le_1.BleClient.stopNotifications(this.bleDevice.deviceId, serviceId, characteristicId);
329
320
  const key = this.getNotificationKey(serviceId, characteristicId);
330
321
  this.internalNotificationListeners.delete(key);
331
322
  }
@@ -346,7 +337,7 @@ class BluetoothDeviceWrapper {
346
337
  this.subscribe(serviceId, characteristicId, notificationListener);
347
338
  });
348
339
  try {
349
- await bluetooth_le_1.BleClient.writeWithoutResponse(this.device.deviceId, serviceId, characteristicId, value);
340
+ await bluetooth_le_1.BleClient.writeWithoutResponse(this.bleDevice.deviceId, serviceId, characteristicId, value);
350
341
  return await this.raceDisconnectAndTimeout(notificationPromise, {
351
342
  timeout: 3_000,
352
343
  actionName: "flash notification wait",
@@ -416,9 +407,10 @@ class BluetoothDeviceWrapper {
416
407
  * Bonds with device and handles the post-bond device state only returning
417
408
  * when we can reattempt a connection with the device.
418
409
  */
419
- async connectHandlingBond() {
410
+ async connectHandlingBond(progress, isAlreadyIosBonded, bondMode) {
411
+ progress(device_js_1.ProgressStage.CheckingBond);
420
412
  const startTime = Date.now();
421
- const maybeJustBonded = await this.bondConnectDeviceInternal();
413
+ const maybeJustBonded = await this.bondConnectDeviceInternal(isAlreadyIosBonded);
422
414
  if (maybeJustBonded) {
423
415
  // If we did just bond then the device disconnects after 2_000 and then
424
416
  // resets after a further 13_000 In future we'd like a firmware change
@@ -445,18 +437,31 @@ class BluetoothDeviceWrapper {
445
437
  }
446
438
  }
447
439
  await this.connectInternal();
448
- // TODO: check this is needed, potentially inline into connect if always needed
449
- await (0, async_util_js_1.delay)(500);
450
- this.log("Resetting to pairing mode");
451
- const pf = new partial_flashing_service_js_1.PartialFlashingService(this);
452
- await pf.resetToMode(partial_flashing_service_js_1.MicroBitMode.Pairing);
453
- await this.waitForDisconnect(10_000);
454
- await this.connectInternal();
455
- this.log(`Connection ready; took ${Date.now() - startTime}`);
440
+ try {
441
+ const targetMode = bondMode === "pairing"
442
+ ? partial_flashing_service_js_1.MicroBitMode.Pairing
443
+ : partial_flashing_service_js_1.MicroBitMode.Application;
444
+ progress(device_js_1.ProgressStage.ResettingDevice);
445
+ this.log(`Resetting to ${bondMode} mode`);
446
+ const pf = new partial_flashing_service_js_1.PartialFlashingService(this);
447
+ await pf.resetToMode(targetMode);
448
+ await this.waitForDisconnect(10_000);
449
+ progress(device_js_1.ProgressStage.Connecting);
450
+ await this.connectInternal();
451
+ }
452
+ catch (e) {
453
+ if ((0, exports.isCharacteristicNotFoundError)(e)) {
454
+ this.log("Partial flashing characteristic not found, skipping reset.");
455
+ }
456
+ else {
457
+ throw e;
458
+ }
459
+ }
456
460
  }
461
+ this.log(`Connection ready; took ${Date.now() - startTime}`);
457
462
  }
458
- async bondConnectDeviceInternal() {
459
- const { deviceId } = this.device;
463
+ async bondConnectDeviceInternal(isAlreadyIosBonded) {
464
+ const { deviceId } = this.bleDevice;
460
465
  if ((0, exports.isAndroid)()) {
461
466
  let justBonded = false;
462
467
  // This gets us a nicer pairing dialog than just going straight for the characteristic.
@@ -474,13 +479,55 @@ class BluetoothDeviceWrapper {
474
479
  // need to call startNotifications again. We need to be connected to
475
480
  // startNotifications.
476
481
  await this.connectInternal();
482
+ if (!isAlreadyIosBonded) {
483
+ await this.triggerIosPairing({ timeout: exports.bondingTimeoutInMs });
484
+ }
485
+ return !isAlreadyIosBonded;
486
+ }
487
+ }
488
+ /**
489
+ * On iOS, accessing an encrypted characteristic triggers the pairing dialog.
490
+ * Try each candidate characteristic in turn until one succeeds. The error is
491
+ * fast (local GATT cache lookup) so there's no meaningful delay from retries.
492
+ */
493
+ async triggerIosPairing(options) {
494
+ const { deviceId } = this.bleDevice;
495
+ // 1. Partial flashing notifications (most common case)
496
+ try {
477
497
  const pf = new partial_flashing_service_js_1.PartialFlashingService(this);
478
- await pf.startNotifications({ timeout: exports.bondingTimeoutInMs });
479
- // We just did it now to trigger pairing at a well defined point.
498
+ await pf.startNotifications(options);
480
499
  await pf.stopNotifications();
481
- return true;
500
+ return;
501
+ }
502
+ catch (e) {
503
+ if (!(0, exports.isCharacteristicNotFoundError)(e)) {
504
+ throw e;
505
+ }
506
+ this.log("PF characteristic not found for pairing trigger, trying Secure DFU");
507
+ }
508
+ // 2. Nordic Secure DFU buttonless notifications (V2 without PF)
509
+ try {
510
+ await bluetooth_le_1.BleClient.startNotifications(deviceId, profile_js_1.profile.nordicSecureDfu.id, profile_js_1.profile.nordicSecureDfu.characteristics.buttonless.id, () => { }, options);
511
+ await bluetooth_le_1.BleClient.stopNotifications(deviceId, profile_js_1.profile.nordicSecureDfu.id, profile_js_1.profile.nordicSecureDfu.characteristics.buttonless.id);
512
+ return;
513
+ }
514
+ catch (e) {
515
+ if (!(0, exports.isCharacteristicNotFoundError)(e)) {
516
+ throw e;
517
+ }
518
+ this.log("Secure DFU characteristic not found for pairing trigger, trying DFU control");
519
+ }
520
+ // 3. micro:bit DFU control read (V1 without PF)
521
+ try {
522
+ await bluetooth_le_1.BleClient.read(deviceId, profile_js_1.profile.dfuControl.id, profile_js_1.profile.dfuControl.characteristics.control.id, options);
523
+ }
524
+ catch (e) {
525
+ if (!(0, exports.isCharacteristicNotFoundError)(e)) {
526
+ throw e;
527
+ }
528
+ this.log("No suitable characteristic found to trigger pairing");
482
529
  }
483
530
  }
484
531
  }
485
532
  exports.BluetoothDeviceWrapper = BluetoothDeviceWrapper;
486
- //# sourceMappingURL=bluetooth-device-wrapper.js.map
533
+ //# 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
  *