@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
@@ -1,11 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.fullFlash = fullFlash;
4
- const device_js_1 = require("../device.js");
5
- const dfu_service_js_1 = require("../dfu-service.js");
4
+ const device_js_1 = require("../../device.js");
5
+ const dfu_service_js_1 = require("../services/dfu-service.js");
6
6
  const flashing_v1_js_1 = require("./flashing-v1.js");
7
7
  const nordic_dfu_js_1 = require("./nordic-dfu.js");
8
- const async_util_js_1 = require("../async-util.js");
8
+ const async_util_js_1 = require("../../async-util.js");
9
9
  /**
10
10
  * Perform a full flash via Nordic's DFU service.
11
11
  *
@@ -19,7 +19,7 @@ const async_util_js_1 = require("../async-util.js");
19
19
  async function fullFlash(connection, boardVersion, memoryMap, progress) {
20
20
  connection.log("Full flash");
21
21
  progress(device_js_1.ProgressStage.FullFlashing);
22
- const { deviceId } = connection.device;
22
+ const { deviceId } = connection.bleDevice;
23
23
  try {
24
24
  if (boardVersion === "V1") {
25
25
  connection.log("Rebooting V1 to bootloader");
@@ -30,8 +30,9 @@ async function fullFlash(connection, boardVersion, memoryMap, progress) {
30
30
  catch (e) {
31
31
  connection.error("Failed to request reboot to bootloader", e);
32
32
  throw new device_js_1.DeviceError({
33
- code: "flash-full-failed",
33
+ code: "connection-error",
34
34
  message: e instanceof Error ? e.message : "Failed to reboot to bootloader",
35
+ cause: e,
35
36
  });
36
37
  }
37
38
  // 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;
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.findMakeCodeRegionInMemoryMap = void 0;
4
4
  const PXT_MAGIC_HEX = "708E3B92C615A841C49866C975EE5197";
5
+ const PXT_MAGIC_BYTES = PXT_MAGIC_HEX.length / 2; // 16
5
6
  /**
6
7
  * Find the MakeCode code region in a MemoryMap (typically from a hex file).
7
8
  */
@@ -10,9 +11,11 @@ const findMakeCodeRegionInMemoryMap = (memoryMap, deviceCodeRegion) => {
10
11
  const offset = findByteSequence(block, PXT_MAGIC_HEX);
11
12
  if (offset >= 0) {
12
13
  const start = blockAddr + offset;
13
- const hashOffset = start + PXT_MAGIC_HEX.length / 2;
14
+ const hashOffset = start + PXT_MAGIC_BYTES;
14
15
  const hashBytes = memoryMap.slicePad(hashOffset, 8);
15
16
  const hash = bytesToHex(hashBytes);
17
+ const appHashBytes = memoryMap.slicePad(hashOffset + 8, 8);
18
+ const appHash = bytesToHex(appHashBytes);
16
19
  // Find the highest address with data in the memory map within the code region
17
20
  let end = start;
18
21
  for (const [blockAddr, block] of memoryMap) {
@@ -23,7 +26,7 @@ const findMakeCodeRegionInMemoryMap = (memoryMap, deviceCodeRegion) => {
23
26
  }
24
27
  // Round up to next 64-byte boundary
25
28
  end = Math.ceil(end / 64) * 64;
26
- return { start, end, hash };
29
+ return { start, end, hash, appHash };
27
30
  }
28
31
  }
29
32
  return null;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flashing-makecode.js","sourceRoot":"","sources":["../../../../src/bluetooth/flashing/flashing-makecode.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import MemoryMap from "nrf-intel-hex";
2
+ import { BluetoothDeviceWrapper } from "../device-wrapper.js";
3
+ import { BoardVersion, ProgressCallback } from "../../device.js";
4
+ export declare enum PartialFlashResult {
5
+ Success = "Success",
6
+ AlreadyUpToDate = "AlreadyUpToDate",
7
+ AttemptFullFlash = "AttemptFullFlash"
8
+ }
9
+ declare const partialFlash: (connection: BluetoothDeviceWrapper, boardVersion: BoardVersion, memoryMap: MemoryMap, progress: ProgressCallback) => Promise<PartialFlashResult>;
10
+ export default partialFlash;
@@ -0,0 +1,145 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PartialFlashResult = void 0;
4
+ const device_wrapper_js_1 = require("../device-wrapper.js");
5
+ const partial_flashing_service_js_1 = require("../services/partial-flashing-service.js");
6
+ const flashing_makecode_js_1 = require("./flashing-makecode.js");
7
+ const async_util_js_1 = require("../../async-util.js");
8
+ const device_js_1 = require("../../device.js");
9
+ const FLASH_PAGE_SIZE = {
10
+ V1: 0x400,
11
+ V2: 0x1000,
12
+ };
13
+ var PartialFlashResult;
14
+ (function (PartialFlashResult) {
15
+ PartialFlashResult["Success"] = "Success";
16
+ PartialFlashResult["AlreadyUpToDate"] = "AlreadyUpToDate";
17
+ PartialFlashResult["AttemptFullFlash"] = "AttemptFullFlash";
18
+ })(PartialFlashResult || (exports.PartialFlashResult = PartialFlashResult = {}));
19
+ const partialFlash = async (connection, boardVersion, memoryMap, progress) => {
20
+ const pf = new partial_flashing_service_js_1.PartialFlashingService(connection);
21
+ let result;
22
+ try {
23
+ // For iOS, starting notifications can throw error if user does not choose
24
+ // "Pair" in the pairing dialog. We cannot rely on connect to catch this
25
+ // because user can forget micro:bit before cancelling the pairing dialog.
26
+ await pf.startNotifications();
27
+ result = await connection.raceDisconnectAndTimeout(partialFlashInternal(connection, pf, boardVersion, memoryMap, progress), { timeout: 30_000, actionName: "partial flash" });
28
+ }
29
+ catch (e) {
30
+ connection.error("Partial flash failed", e);
31
+ if ((0, device_wrapper_js_1.isCharacteristicNotFoundError)(e)) {
32
+ return PartialFlashResult.AttemptFullFlash;
33
+ }
34
+ if (
35
+ // Error thrown in iOS only for when user cancels the pairing dialog.
36
+ e instanceof Error &&
37
+ e.message === "Encryption is insufficient.") {
38
+ connection.setBonded(false);
39
+ }
40
+ if (e instanceof device_js_1.DeviceError) {
41
+ throw e;
42
+ }
43
+ throw new device_js_1.DeviceError({
44
+ code: "connection-error",
45
+ message: e instanceof Error ? e.message : String(e),
46
+ cause: e,
47
+ });
48
+ }
49
+ try {
50
+ await pf.stopNotifications();
51
+ }
52
+ catch (e) {
53
+ // V1 disconnects quickly after a partial flash.
54
+ if (!(e instanceof async_util_js_1.DisconnectError)) {
55
+ connection.error("Error stopping notifications", e);
56
+ }
57
+ }
58
+ return result;
59
+ };
60
+ const partialFlashInternal = async (connection, pf, boardVersion, memoryMap, progress) => {
61
+ connection.log("Partial flash");
62
+ progress(device_js_1.ProgressStage.PartialFlashing);
63
+ const deviceCodeRegion = await pf.getRegionInfo(partial_flashing_service_js_1.RegionId.MakeCode);
64
+ if (deviceCodeRegion === null) {
65
+ connection.log("Could not read code region");
66
+ return PartialFlashResult.AttemptFullFlash;
67
+ }
68
+ const deviceDalRegion = await pf.getRegionInfo(partial_flashing_service_js_1.RegionId.Dal);
69
+ if (deviceDalRegion === null) {
70
+ connection.log("Could not read DAL region");
71
+ return PartialFlashResult.AttemptFullFlash;
72
+ }
73
+ if (/^0+$/.test(deviceDalRegion.hash) || /^0+$/.test(deviceCodeRegion.hash)) {
74
+ connection.log("Device reported zero hash, skipping partial flash");
75
+ return PartialFlashResult.AttemptFullFlash;
76
+ }
77
+ progress(device_js_1.ProgressStage.PartialFlashing);
78
+ const fileCodeRegion = (0, flashing_makecode_js_1.findMakeCodeRegionInMemoryMap)(memoryMap, deviceCodeRegion);
79
+ if (fileCodeRegion === null) {
80
+ connection.log("No partial flash data");
81
+ return PartialFlashResult.AttemptFullFlash;
82
+ }
83
+ if (fileCodeRegion.hash !== deviceDalRegion.hash) {
84
+ connection.log(`DAL hash comparison failed. Hex: ${fileCodeRegion.hash} vs device: ${deviceDalRegion.hash}`);
85
+ return PartialFlashResult.AttemptFullFlash;
86
+ }
87
+ if (deviceCodeRegion.start !== fileCodeRegion.start) {
88
+ connection.log("Code start address doesn't match");
89
+ return PartialFlashResult.AttemptFullFlash;
90
+ }
91
+ if (fileCodeRegion.appHash === deviceCodeRegion.hash) {
92
+ connection.log("Application hash matches, already up to date");
93
+ await pf.resetToMode(partial_flashing_service_js_1.MicroBitMode.Application);
94
+ return PartialFlashResult.AlreadyUpToDate;
95
+ }
96
+ // The device-side partial flash service erases each flash page when it
97
+ // receives a write at a page-aligned address. After erase, every byte
98
+ // in the page is 0xFF, so writing 0xFF within an already-erased page
99
+ // is redundant. We skip interior 0xFF blocks but always send at page
100
+ // boundaries to trigger the erase.
101
+ //
102
+ // See the page-erase logic:
103
+ // V1: https://github.com/lancaster-university/microbit-dal/blob/master/source/bluetooth/MicroBitPartialFlashingService.cpp
104
+ // V2: https://github.com/lancaster-university/codal-microbit-v2/blob/master/source/bluetooth/MicroBitPartialFlashingService.cpp
105
+ const flashPageSize = FLASH_PAGE_SIZE[boardVersion];
106
+ let nextPacketNumber = 0;
107
+ outer: for (let offset = fileCodeRegion.start; offset < fileCodeRegion.end;) {
108
+ // Skip 64-byte blocks that are entirely 0xFF, unless at a page boundary.
109
+ // At page boundaries we must always send data so the device erases the
110
+ // page (setting all bytes to 0xFF). Interior 0xFF blocks can be skipped
111
+ // because the page has already been erased by the boundary write.
112
+ if (offset % flashPageSize !== 0) {
113
+ if (memoryMap.slicePad(offset, 64).every((b) => b === 0xff)) {
114
+ offset += 64;
115
+ continue;
116
+ }
117
+ }
118
+ const batchStartAddress = offset;
119
+ for (let packetInBatch = 0; packetInBatch < 4; ++packetInBatch) {
120
+ const packetNumber = nextPacketNumber++;
121
+ const packetDataOffset = offset + packetInBatch * 16;
122
+ if (packetInBatch < 3) {
123
+ await pf.writeFlash(memoryMap, batchStartAddress, packetDataOffset, packetNumber, packetInBatch);
124
+ }
125
+ else {
126
+ const result = await pf.writeFlashForNotification(memoryMap, batchStartAddress, packetDataOffset, packetNumber, packetInBatch);
127
+ if (result === partial_flashing_service_js_1.PacketState.Retransmit) {
128
+ // Retry the whole 64 bytes.
129
+ connection.log(`Retransmit requested at offset ${offset}`);
130
+ continue outer;
131
+ }
132
+ else {
133
+ progress(device_js_1.ProgressStage.PartialFlashing, (offset - fileCodeRegion.start) /
134
+ (fileCodeRegion.end - fileCodeRegion.start));
135
+ }
136
+ }
137
+ }
138
+ offset += 64;
139
+ }
140
+ await pf.writeEndOfFlashPacket();
141
+ progress(device_js_1.ProgressStage.PartialFlashing, 1);
142
+ return PartialFlashResult.Success;
143
+ };
144
+ exports.default = partialFlash;
145
+ //# sourceMappingURL=flashing-partial.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flashing-partial.js","sourceRoot":"","sources":["../../../../src/bluetooth/flashing/flashing-partial.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flashing-v1.js","sourceRoot":"","sources":["../../../../src/bluetooth/flashing/flashing-v1.ts"],"names":[],"mappings":";;;AAAA,oEAA8D;AAE9D;;;;;;;;;GASG;AACI,MAAM,2CAA2C,GAAG,KAAK,EAC9D,QAAgB,EAChB,kBAA0B,EAC1B,EAAE;IACF,MAAM,QAAQ,GAAG,MAAM,wBAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IACvD,MAAM,gBAAgB,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,kBAAkB,CAAC,CAAC;IAC7E,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,wDAAwD;QACxD,MAAM,wBAAS,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC,CAAC;AAVW,QAAA,2CAA2C,+CAUtD"}
@@ -1,3 +1,3 @@
1
- import { BluetoothDeviceWrapper } from "../bluetooth-device-wrapper.js";
2
- import { BoardVersion, ProgressCallback } from "../device.js";
1
+ import { BluetoothDeviceWrapper } from "../device-wrapper.js";
2
+ import { BoardVersion, ProgressCallback } from "../../device.js";
3
3
  export declare function flashDfu(connection: BluetoothDeviceWrapper, boardVersion: BoardVersion, appBin: Uint8Array, progress: ProgressCallback): Promise<void>;
@@ -5,7 +5,7 @@ const core_1 = require("@capacitor/core");
5
5
  const filesystem_1 = require("@capacitor/filesystem");
6
6
  const capacitor_community_nordic_dfu_1 = require("@microbit/capacitor-community-nordic-dfu");
7
7
  const zip_js_1 = require("./zip.js");
8
- const device_js_1 = require("../device.js");
8
+ const device_js_1 = require("../../device.js");
9
9
  const appBinFilename = "application.bin";
10
10
  const appDatFilename = "application.dat";
11
11
  const manifestData = JSON.stringify({
@@ -33,7 +33,7 @@ async function createDfuZipFile(boardVersion, appBin) {
33
33
  const createInitPacket = boardVersion === "V1" ? createLegacyInitPacketV1 : createInitPacketV2;
34
34
  const encoder = new TextEncoder();
35
35
  const zipData = (0, zip_js_1.createZip)([
36
- { name: appDatFilename, data: createInitPacket(appBin) },
36
+ { name: appDatFilename, data: await createInitPacket(appBin) },
37
37
  { name: appBinFilename, data: appBin },
38
38
  { name: "manifest.json", data: encoder.encode(manifestData) },
39
39
  ]);
@@ -59,7 +59,7 @@ async function cleanupTemporaryFile(connection, filename) {
59
59
  }
60
60
  }
61
61
  async function flashDfu(connection, boardVersion, appBin, progress) {
62
- const { device } = connection;
62
+ const { bleDevice } = connection;
63
63
  const { uri: filePath, filename } = await getFilePath(boardVersion, appBin);
64
64
  let listener;
65
65
  try {
@@ -74,7 +74,7 @@ async function flashDfu(connection, boardVersion, appBin, progress) {
74
74
  }
75
75
  case capacitor_community_nordic_dfu_1.DfuState.DFU_ABORTED: {
76
76
  reject(new device_js_1.DeviceError({
77
- code: "flash-cancelled",
77
+ code: "aborted",
78
78
  message: "Flash operation was cancelled",
79
79
  }));
80
80
  break;
@@ -87,7 +87,7 @@ async function flashDfu(connection, boardVersion, appBin, progress) {
87
87
  }
88
88
  case capacitor_community_nordic_dfu_1.DfuState.DFU_FAILED: {
89
89
  reject(new device_js_1.DeviceError({
90
- code: "flash-full-failed",
90
+ code: "connection-error",
91
91
  message: "Full flash via DFU failed",
92
92
  }));
93
93
  break;
@@ -98,16 +98,16 @@ async function flashDfu(connection, boardVersion, appBin, progress) {
98
98
  }
99
99
  });
100
100
  // Note this doesn't await the whole DFU process, just its initialization
101
+ const isAndroid = core_1.Capacitor.getPlatform() === "android";
101
102
  const error = await capacitor_community_nordic_dfu_1.NordicDfu.startDFU({
102
- deviceName: device.name,
103
- deviceAddress: device.deviceId,
103
+ deviceName: bleDevice.name,
104
+ deviceAddress: bleDevice.deviceId,
104
105
  filePath,
105
- dfuOptions: core_1.Capacitor.getPlatform() === "android"
106
+ dfuOptions: isAndroid
106
107
  ? {
107
108
  ...{
108
109
  V1: { forceDfu: true },
109
110
  V2: {
110
- unsafeExperimentalButtonlessServiceInSecureDfuEnabled: true,
111
111
  disableNotification: true,
112
112
  restoreBond: true,
113
113
  },
@@ -116,13 +116,25 @@ async function flashDfu(connection, boardVersion, appBin, progress) {
116
116
  keepBond: true,
117
117
  packetReceiptNotificationsEnabled: true,
118
118
  }
119
- : {},
119
+ : {
120
+ // The micro:bit bootloader is built with
121
+ // NRF_DFU_BLE_REQUIRES_BONDS=1, which compiles out the code
122
+ // path that reads a custom advertising name from settings. The
123
+ // bootloader always advertises as "DfuTarg" regardless of any
124
+ // name sent via opcode 0x02. With alternativeAdvertisingNameEnabled
125
+ // left as true (the default), the DFU library scans for the
126
+ // wrong name and times out. With it disabled, the library scans
127
+ // by DFU service UUID instead.
128
+ // Android is unaffected as it reconnects by MAC address.
129
+ alternativeAdvertisingNameEnabled: false,
130
+ },
120
131
  });
121
132
  if (error) {
122
133
  connection.error(`DFU Error: ${error.message}`, error);
123
134
  reject(new device_js_1.DeviceError({
124
- code: "flash-full-failed",
135
+ code: "connection-error",
125
136
  message: error.message || "Full flash via DFU failed",
137
+ cause: error,
126
138
  }));
127
139
  }
128
140
  // Final resolution will come from listener callbacks.
@@ -176,7 +188,9 @@ const calculateCRC16 = (data) => {
176
188
  }
177
189
  return crc & 0xffff;
178
190
  };
179
- const createInitPacketV2 = (appBin) => {
191
+ // See microbit_dfu_app_t and fw_hash_ok in the V2 bootloader:
192
+ // https://github.com/microbit-foundation/v2-bootloader/blob/master/nRF5SDK_mods/components/libraries/bootloader/dfu/nrf_dfu_validation.c
193
+ const createInitPacketV2 = async (appBin) => {
180
194
  //typedef struct {
181
195
  // uint8_t magic[12]; // identify this struct "microbit_app"
182
196
  // uint32_t version; // version of this struct == 1
@@ -187,8 +201,20 @@ const createInitPacketV2 = (appBin) => {
187
201
  const appSize = appBin.length;
188
202
  const magic = "microbit_app";
189
203
  const version = 1;
190
- const hashSize = 0;
191
- const hash = new Uint8Array(32).fill(0);
204
+ // crypto.subtle requires a secure context (HTTPS). When unavailable (e.g.
205
+ // Capacitor dev server over plain HTTP) we skip the hash: the bootloader
206
+ // bypasses its integrity check when hash_size is 0.
207
+ let hash;
208
+ let hashSize;
209
+ if (typeof crypto !== "undefined" && crypto.subtle) {
210
+ hash = new Uint8Array(await crypto.subtle.digest("SHA-256", appBin));
211
+ hash.reverse(); // Bootloader reverses bytes before comparing (see nrf_dfu_validation_hash_ok)
212
+ hashSize = 32;
213
+ }
214
+ else {
215
+ hash = new Uint8Array(32);
216
+ hashSize = 0; // Tells the bootloader to skip the integrity check
217
+ }
192
218
  const buffer = new ArrayBuffer(12 + 4 + 4 + 4 + 32); // total: 56 bytes
193
219
  const view = new DataView(buffer);
194
220
  const uint8View = new Uint8Array(buffer);
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nordic-dfu.js","sourceRoot":"","sources":["../../../../src/bluetooth/flashing/nordic-dfu.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zip.js","sourceRoot":"","sources":["../../../../src/bluetooth/flashing/zip.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * @module @microbit/microbit-connection/bluetooth
3
+ */
4
+ export { createBluetoothConnection, type MicrobitBluetoothConnection, type MicrobitBluetoothConnectionOptions, } from "./connection.js";
5
+ export type { DeviceBondState } from "./device-bond-state.js";
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createBluetoothConnection = void 0;
4
+ /**
5
+ * @module @microbit/microbit-connection/bluetooth
6
+ */
7
+ var connection_js_1 = require("./connection.js");
8
+ Object.defineProperty(exports, "createBluetoothConnection", { enumerable: true, get: function () { return connection_js_1.createBluetoothConnection; } });
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/bluetooth/index.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,iDAIyB;AAHvB,0HAAA,yBAAyB,OAAA"}
@@ -114,6 +114,14 @@ export declare const profile: {
114
114
  };
115
115
  };
116
116
  };
117
+ nordicSecureDfu: {
118
+ id: string;
119
+ characteristics: {
120
+ buttonless: {
121
+ id: string;
122
+ };
123
+ };
124
+ };
117
125
  partialFlashing: {
118
126
  id: string;
119
127
  characteristics: {
@@ -68,6 +68,12 @@ exports.profile = {
68
68
  calibration: { id: "e95db358-251d-470a-a062-fa1922dfa9a8" },
69
69
  },
70
70
  },
71
+ nordicSecureDfu: {
72
+ id: "0000fe59-0000-1000-8000-00805f9b34fb",
73
+ characteristics: {
74
+ buttonless: { id: "8ec90003-f315-4f60-9fb8-838830daea50" },
75
+ },
76
+ },
71
77
  partialFlashing: {
72
78
  id: "e97dd91d-251d-470a-a062-fa1922dfa9a8",
73
79
  characteristics: {
@@ -89,4 +95,4 @@ exports.profile = {
89
95
  },
90
96
  },
91
97
  };
92
- //# sourceMappingURL=bluetooth-profile.js.map
98
+ //# sourceMappingURL=profile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile.js","sourceRoot":"","sources":["../../../src/bluetooth/profile.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,5 @@
1
- import { AccelerometerData } from "./accelerometer.js";
2
- import { Service } from "./bluetooth-device-wrapper.js";
3
- import { TypedServiceEvent, TypedServiceEventDispatcher } from "./service-events.js";
1
+ import { Service } from "../device-wrapper.js";
2
+ import { AccelerometerData, TypedServiceEvent, TypedServiceEventDispatcher } from "../../service-events.js";
4
3
  export declare class AccelerometerService implements Service {
5
4
  private deviceId;
6
5
  private dispatchTypedEvent;
@@ -2,9 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AccelerometerService = void 0;
4
4
  const bluetooth_le_1 = require("@capacitor-community/bluetooth-le");
5
- const accelerometer_js_1 = require("./accelerometer.js");
6
- const bluetooth_profile_js_1 = require("./bluetooth-profile.js");
7
- const device_js_1 = require("./device.js");
5
+ const profile_js_1 = require("../profile.js");
6
+ const ble_error_js_1 = require("../ble-error.js");
8
7
  class AccelerometerService {
9
8
  static createService(deviceId, dispatchTypedEvent) {
10
9
  return new AccelerometerService(deviceId, dispatchTypedEvent);
@@ -26,7 +25,7 @@ class AccelerometerService {
26
25
  enumerable: true,
27
26
  configurable: true,
28
27
  writable: true,
29
- value: bluetooth_profile_js_1.profile.accelerometer.id
28
+ value: profile_js_1.profile.accelerometer.id
30
29
  });
31
30
  }
32
31
  getRelevantEvents() {
@@ -40,11 +39,11 @@ class AccelerometerService {
40
39
  };
41
40
  }
42
41
  async getData() {
43
- const dataView = await bluetooth_le_1.BleClient.read(this.deviceId, bluetooth_profile_js_1.profile.accelerometer.id, bluetooth_profile_js_1.profile.accelerometer.characteristics.data.id);
42
+ const dataView = await bluetooth_le_1.BleClient.read(this.deviceId, profile_js_1.profile.accelerometer.id, profile_js_1.profile.accelerometer.characteristics.data.id);
44
43
  return this.dataViewToData(dataView);
45
44
  }
46
45
  async getPeriod() {
47
- const dataView = await bluetooth_le_1.BleClient.read(this.deviceId, bluetooth_profile_js_1.profile.accelerometer.id, bluetooth_profile_js_1.profile.accelerometer.characteristics.period.id);
46
+ const dataView = await bluetooth_le_1.BleClient.read(this.deviceId, profile_js_1.profile.accelerometer.id, profile_js_1.profile.accelerometer.characteristics.period.id);
48
47
  return dataView.getUint16(0, true);
49
48
  }
50
49
  async setPeriod(value) {
@@ -58,7 +57,7 @@ class AccelerometerService {
58
57
  // https://lancaster-university.github.io/microbit-docs/ble/profile/#about-the-accelerometer-service
59
58
  const dataView = new DataView(new ArrayBuffer(2));
60
59
  dataView.setUint16(0, value, true);
61
- await bluetooth_le_1.BleClient.write(this.deviceId, bluetooth_profile_js_1.profile.accelerometer.id, bluetooth_profile_js_1.profile.accelerometer.characteristics.period.id, dataView);
60
+ await bluetooth_le_1.BleClient.write(this.deviceId, profile_js_1.profile.accelerometer.id, profile_js_1.profile.accelerometer.characteristics.period.id, dataView);
62
61
  }
63
62
  async startNotifications(type) {
64
63
  const result = this.characteristicForEvent(type);
@@ -67,11 +66,14 @@ class AccelerometerService {
67
66
  try {
68
67
  await bluetooth_le_1.BleClient.startNotifications(this.deviceId, service, characteristic, (value) => {
69
68
  const data = this.dataViewToData(value);
70
- this.dispatchTypedEvent("accelerometerdatachanged", new accelerometer_js_1.AccelerometerDataEvent(data));
69
+ this.dispatchTypedEvent("accelerometerdatachanged", data);
71
70
  });
72
71
  }
73
72
  catch (e) {
74
- this.dispatchTypedEvent("backgrounderror", new device_js_1.BackgroundErrorEvent("Failed to start notifications", e));
73
+ this.dispatchTypedEvent("backgrounderror", {
74
+ error: (0, ble_error_js_1.mapBleError)(e),
75
+ event: type,
76
+ });
75
77
  }
76
78
  }
77
79
  }
@@ -83,7 +85,10 @@ class AccelerometerService {
83
85
  await bluetooth_le_1.BleClient.stopNotifications(this.deviceId, service, characteristic);
84
86
  }
85
87
  catch (e) {
86
- this.dispatchTypedEvent("backgrounderror", new device_js_1.BackgroundErrorEvent("Failed to stop notifications", e));
88
+ this.dispatchTypedEvent("backgrounderror", {
89
+ error: (0, ble_error_js_1.mapBleError)(e),
90
+ event: type,
91
+ });
87
92
  }
88
93
  }
89
94
  }
@@ -91,8 +96,8 @@ class AccelerometerService {
91
96
  switch (type) {
92
97
  case "accelerometerdatachanged": {
93
98
  return {
94
- service: bluetooth_profile_js_1.profile.accelerometer.id,
95
- characteristic: bluetooth_profile_js_1.profile.accelerometer.characteristics.data.id,
99
+ service: profile_js_1.profile.accelerometer.id,
100
+ characteristic: profile_js_1.profile.accelerometer.characteristics.data.id,
96
101
  };
97
102
  }
98
103
  default: {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accelerometer-service.js","sourceRoot":"","sources":["../../../../src/bluetooth/services/accelerometer-service.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,11 @@
1
- import { Service } from "./bluetooth-device-wrapper.js";
2
- import { TypedServiceEvent, TypedServiceEventDispatcher } from "./service-events.js";
1
+ import { Service } from "../device-wrapper.js";
2
+ import { TypedServiceEvent, TypedServiceEventDispatcher } from "../../service-events.js";
3
3
  export declare class ButtonService implements Service {
4
4
  private deviceId;
5
5
  private dispatchTypedEvent;
6
6
  uuid: string;
7
7
  constructor(deviceId: string, dispatchTypedEvent: TypedServiceEventDispatcher);
8
8
  getRelevantEvents(): TypedServiceEvent[];
9
- private dataViewToButtonState;
10
9
  startNotifications(type: TypedServiceEvent): Promise<void>;
11
10
  stopNotifications(type: TypedServiceEvent): Promise<void>;
12
11
  private characteristicForButtonEventType;