@microbit/microbit-connection 0.9.0-apps.alpha.9 → 1.0.0-beta.1

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} +36 -21
  16. package/build/cjs/{bluetooth-device-wrapper.js → bluetooth/device-wrapper.js} +174 -147
  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 +41 -15
  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} +36 -21
  159. package/build/esm/{bluetooth-device-wrapper.js → bluetooth/device-wrapper.js} +172 -146
  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 +41 -15
  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 @@
1
+ {"version":3,"file":"connection.js","sourceRoot":"","sources":["../../../src/usb/connection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * (c) 2026, Micro:bit Educational Foundation and contributors
3
+ *
4
+ * Derived from dapjs (https://github.com/ARMmbed/dapjs) which is
5
+ * Copyright (c) Arm Limited 2018
6
+ * Copyright (c) Microsoft Corporation
7
+ *
8
+ * SPDX-License-Identifier: MIT
9
+ *
10
+ * See arm-debug.ts for the full dapjs license.
11
+ *
12
+ * Cortex-M processor control via the ARM Debug Interface.
13
+ *
14
+ * CortexM provides high-level operations for controlling an ARM Cortex-M
15
+ * core over SWD: halting, resuming, reading/writing core registers,
16
+ * executing code from RAM, and performing software resets.
17
+ *
18
+ * It communicates entirely through ArmDebug memory-mapped register
19
+ * access — the Cortex-M debug registers (DHCSR, DCRSR, DCRDR, etc.) are
20
+ * memory-mapped in the Private Peripheral Bus region starting at 0xE000_0000.
21
+ */
22
+ import { type ArmDebug } from "./arm-debug.js";
23
+ export declare const DFSR = 3758157104;
24
+ export declare const DHCSR = 3758157296;
25
+ export declare const DCRSR = 3758157300;
26
+ export declare const DCRDR = 3758157304;
27
+ export declare const C_DEBUGEN: number;
28
+ export declare const C_HALT: number;
29
+ export declare const S_REGRDY: number;
30
+ export declare const S_HALT: number;
31
+ export declare const DBGKEY: number;
32
+ export declare const DFSR_HALTED: number;
33
+ export declare const DFSR_BKPT: number;
34
+ export declare const DFSR_DWTTRAP: number;
35
+ export declare const REGWnR: number;
36
+ export declare const DEMCR = 3758157308;
37
+ export declare const DEMCR_VC_CORERESET: number;
38
+ export declare const NVIC_AIRCR = 3758157068;
39
+ export declare const NVIC_AIRCR_VECTKEY: number;
40
+ export declare const NVIC_AIRCR_SYSRESETREQ: number;
41
+ export declare const S_RESET_ST: number;
42
+ export declare const CoreRegister: {
43
+ readonly SP: 13;
44
+ readonly LR: 14;
45
+ readonly PC: 15;
46
+ readonly PSR: 16;
47
+ };
48
+ export declare class CortexM {
49
+ private adi;
50
+ constructor(adi: ArmDebug);
51
+ private enableDebug;
52
+ isHalted(): Promise<boolean>;
53
+ halt(wait?: boolean, timeout?: number): Promise<void>;
54
+ resume(wait?: boolean, timeout?: number): Promise<void>;
55
+ readCoreRegister(register: number): Promise<number>;
56
+ writeCoreRegister(register: number, value: number): Promise<void>;
57
+ waitForHalt(timeout?: number): Promise<void>;
58
+ /**
59
+ * Upload code to target RAM, set up registers, resume execution,
60
+ * and wait for the core to halt (typically on a BKPT instruction).
61
+ */
62
+ execute(address: number, code: Uint32Array, sp: number, pc: number, lr: number, ...registers: number[]): Promise<void>;
63
+ /**
64
+ * Software reset by writing to NVIC_AIRCR.
65
+ * Waits for the system to come out of reset.
66
+ */
67
+ softwareReset(): Promise<void>;
68
+ /**
69
+ * Reset the target, optionally halting the core on reset.
70
+ */
71
+ reset(halt?: boolean): Promise<void>;
72
+ }
@@ -0,0 +1,161 @@
1
+ /**
2
+ * (c) 2026, Micro:bit Educational Foundation and contributors
3
+ *
4
+ * Derived from dapjs (https://github.com/ARMmbed/dapjs) which is
5
+ * Copyright (c) Arm Limited 2018
6
+ * Copyright (c) Microsoft Corporation
7
+ *
8
+ * SPDX-License-Identifier: MIT
9
+ *
10
+ * See arm-debug.ts for the full dapjs license.
11
+ *
12
+ * Cortex-M processor control via the ARM Debug Interface.
13
+ *
14
+ * CortexM provides high-level operations for controlling an ARM Cortex-M
15
+ * core over SWD: halting, resuming, reading/writing core registers,
16
+ * executing code from RAM, and performing software resets.
17
+ *
18
+ * It communicates entirely through ArmDebug memory-mapped register
19
+ * access — the Cortex-M debug registers (DHCSR, DCRSR, DCRDR, etc.) are
20
+ * memory-mapped in the Private Peripheral Bus region starting at 0xE000_0000.
21
+ */
22
+ import { waitFor } from "./arm-debug.js";
23
+ import { DapError } from "./cmsis-dap.js";
24
+ // ---------------------------------------------------------------------------
25
+ // Constants
26
+ // ---------------------------------------------------------------------------
27
+ // Debug registers
28
+ export const DFSR = 0xe000ed30;
29
+ export const DHCSR = 0xe000edf0;
30
+ export const DCRSR = 0xe000edf4;
31
+ export const DCRDR = 0xe000edf8;
32
+ // DHCSR bits
33
+ export const C_DEBUGEN = 1 << 0;
34
+ export const C_HALT = 1 << 1;
35
+ export const S_REGRDY = 1 << 16;
36
+ export const S_HALT = 1 << 17;
37
+ export const DBGKEY = 0xa05f << 16;
38
+ // DFSR bits
39
+ export const DFSR_HALTED = 1 << 0;
40
+ export const DFSR_BKPT = 1 << 1;
41
+ export const DFSR_DWTTRAP = 1 << 2;
42
+ // DCRSR bits
43
+ export const REGWnR = 1 << 16;
44
+ // Debug registers — Cortex-M system control
45
+ export const DEMCR = 0xe000edfc;
46
+ export const DEMCR_VC_CORERESET = 1 << 0;
47
+ export const NVIC_AIRCR = 0xe000ed0c;
48
+ export const NVIC_AIRCR_VECTKEY = 0x5fa << 16;
49
+ export const NVIC_AIRCR_SYSRESETREQ = 1 << 2;
50
+ export const S_RESET_ST = 1 << 25;
51
+ // ---------------------------------------------------------------------------
52
+ // CortexM
53
+ // ---------------------------------------------------------------------------
54
+ // Cortex-M core register indices used with readCoreRegister/writeCoreRegister.
55
+ export const CoreRegister = { SP: 13, LR: 14, PC: 15, PSR: 16 };
56
+ export class CortexM {
57
+ constructor(adi) {
58
+ Object.defineProperty(this, "adi", {
59
+ enumerable: true,
60
+ configurable: true,
61
+ writable: true,
62
+ value: adi
63
+ });
64
+ }
65
+ enableDebug() {
66
+ return this.adi.writeMem32(DHCSR, DBGKEY | C_DEBUGEN);
67
+ }
68
+ async isHalted() {
69
+ const dhcsr = await this.adi.readMem32(DHCSR);
70
+ return !!(dhcsr & S_HALT);
71
+ }
72
+ async halt(wait = true, timeout = 0) {
73
+ if (await this.isHalted())
74
+ return;
75
+ await this.adi.writeMem32(DHCSR, DBGKEY | C_DEBUGEN | C_HALT);
76
+ if (wait) {
77
+ await waitFor(() => this.isHalted(), timeout);
78
+ }
79
+ }
80
+ async resume(wait = true, timeout = 0) {
81
+ if (!(await this.isHalted()))
82
+ return;
83
+ await this.adi.writeMem32(DFSR, DFSR_DWTTRAP | DFSR_BKPT | DFSR_HALTED);
84
+ await this.enableDebug();
85
+ if (wait) {
86
+ await waitFor(async () => !(await this.isHalted()), timeout);
87
+ }
88
+ }
89
+ async readCoreRegister(register) {
90
+ const results = await this.adi.transferSequence([
91
+ this.adi.writeMem32Ops(DCRSR, register),
92
+ this.adi.readMem32Ops(DHCSR),
93
+ this.adi.readMem32Ops(DCRDR),
94
+ ]);
95
+ if (!(results[0] & S_REGRDY)) {
96
+ throw new DapError("Register not ready");
97
+ }
98
+ return results[1];
99
+ }
100
+ async writeCoreRegister(register, value) {
101
+ const results = await this.adi.transferSequence([
102
+ this.adi.writeMem32Ops(DCRDR, value),
103
+ this.adi.writeMem32Ops(DCRSR, register | REGWnR),
104
+ this.adi.readMem32Ops(DHCSR),
105
+ ]);
106
+ if (!(results[0] & S_REGRDY)) {
107
+ throw new DapError("Register not ready");
108
+ }
109
+ }
110
+ async waitForHalt(timeout = 10_000) {
111
+ await waitFor(() => this.isHalted(), timeout);
112
+ }
113
+ /**
114
+ * Upload code to target RAM, set up registers, resume execution,
115
+ * and wait for the core to halt (typically on a BKPT instruction).
116
+ */
117
+ async execute(address, code, sp, pc, lr, ...registers) {
118
+ if (registers.length > 12) {
119
+ throw new DapError(`Only 12 general purpose registers but got ${registers.length} values`);
120
+ }
121
+ await this.halt(true);
122
+ await this.adi.writeBlock(address, code);
123
+ await this.writeCoreRegister(CoreRegister.PC, pc);
124
+ await this.writeCoreRegister(CoreRegister.LR, lr);
125
+ await this.writeCoreRegister(CoreRegister.SP, sp);
126
+ await this.writeCoreRegister(CoreRegister.PSR, 0x01000000);
127
+ for (let i = 0; i < registers.length; i++) {
128
+ await this.writeCoreRegister(i, registers[i]);
129
+ }
130
+ await this.resume(false);
131
+ await this.waitForHalt();
132
+ }
133
+ /**
134
+ * Software reset by writing to NVIC_AIRCR.
135
+ * Waits for the system to come out of reset.
136
+ */
137
+ async softwareReset() {
138
+ await this.adi.writeMem32(NVIC_AIRCR, NVIC_AIRCR_VECTKEY | NVIC_AIRCR_SYSRESETREQ);
139
+ await waitFor(async () => {
140
+ const dhcsr = await this.adi.readMem32(DHCSR);
141
+ return (dhcsr & S_RESET_ST) === 0;
142
+ }, 5000);
143
+ }
144
+ /**
145
+ * Reset the target, optionally halting the core on reset.
146
+ */
147
+ async reset(halt = false) {
148
+ if (halt) {
149
+ await this.halt(true);
150
+ const demcr = await this.adi.readMem32(DEMCR);
151
+ await this.adi.writeMem32(DEMCR, demcr | DEMCR_VC_CORERESET);
152
+ await this.softwareReset();
153
+ await waitFor(() => this.isHalted());
154
+ await this.adi.writeMem32(DEMCR, demcr);
155
+ }
156
+ else {
157
+ await this.softwareReset();
158
+ }
159
+ }
160
+ }
161
+ //# sourceMappingURL=cortex-m.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cortex-m.js","sourceRoot":"","sources":["../../../src/usb/cortex-m.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * (c) 2026, Micro:bit Educational Foundation and contributors
3
+ *
4
+ * Derived from dapjs (https://github.com/ARMmbed/dapjs) which is
5
+ * Copyright (c) Arm Limited 2018
6
+ * Copyright (c) Microsoft Corporation
7
+ *
8
+ * SPDX-License-Identifier: MIT
9
+ *
10
+ * See arm-debug.ts for the full dapjs license.
11
+ *
12
+ * DAPLink serial and flash access via CMSIS-DAP vendor commands.
13
+ *
14
+ * DAPLink is the interface firmware running on the micro:bit's debug chip
15
+ * (KL27). It extends the standard CMSIS-DAP protocol with vendor-specific
16
+ * commands (0x80+) for:
17
+ *
18
+ * - UART serial pass-through (DapLinkSerial): reading/writing serial data
19
+ * to the target micro:bit's UART, with configurable baud rate and
20
+ * polling-based read loop.
21
+ *
22
+ * - Hex-file flash streaming (dapLinkFlash): streaming Intel HEX data to
23
+ * DAPLink which handles erasing, programming, and verifying flash pages.
24
+ * This is the "full flash" path — as opposed to partial flashing which
25
+ * writes individual pages via SWD.
26
+ */
27
+ import { Logging } from "../logging.js";
28
+ import { type ArmDebug } from "./arm-debug.js";
29
+ import { type CmsisDap } from "./cmsis-dap.js";
30
+ /** Read the DAPLink unique ID (same string as USB serial number). */
31
+ export declare const DAPLINK_VENDOR_READ_UNIQUE_ID = 128;
32
+ export declare const DAPLINK_VENDOR_READ_SETTINGS = 129;
33
+ export declare const DAPLINK_VENDOR_WRITE_SETTINGS = 130;
34
+ export declare const DAPLINK_VENDOR_SERIAL_READ = 131;
35
+ export declare const DAPLINK_VENDOR_SERIAL_WRITE = 132;
36
+ export declare const DAPLINK_VENDOR_FLASH_RESET = 137;
37
+ export declare const DAPLINK_VENDOR_FLASH_OPEN = 138;
38
+ export declare const DAPLINK_VENDOR_FLASH_CLOSE = 139;
39
+ export declare const DAPLINK_VENDOR_FLASH_WRITE = 140;
40
+ export declare class DapLinkSerial {
41
+ private dap;
42
+ private logging;
43
+ private polling;
44
+ constructor(dap: CmsisDap, logging: Logging);
45
+ getBaudrate(): Promise<number>;
46
+ setBaudrate(baudrate: number): Promise<void>;
47
+ read(): Promise<string | undefined>;
48
+ write(data: string): Promise<void>;
49
+ startPolling(onData: (data: string) => void, serialDelay?: number): Promise<void>;
50
+ stopPolling(): void;
51
+ /**
52
+ * Drain any buffered serial data from DAPLink's UART ring buffer.
53
+ * Reads and discards until empty.
54
+ */
55
+ drain(): Promise<void>;
56
+ }
57
+ export declare function dapLinkFlash(adi: ArmDebug, buffer: Uint8Array, onProgress?: (progress: number) => void): Promise<void>;
58
+ /**
59
+ * Read the DAPLink unique ID via vendor command 0x80. Returns the same
60
+ * 48-char hex string as the USB serial number but isn't affected by
61
+ * browser anti-fingerprinting.
62
+ */
63
+ export declare function readDaplinkUniqueId(dap: CmsisDap, logging: Logging): Promise<string | undefined>;
64
+ /**
65
+ * Read a 32-bit word from memory, retrying on transfer errors.
66
+ * Useful for reads immediately after reset when the target may not
67
+ * be ready to respond.
68
+ */
69
+ export declare function readMem32WithRetry(adi: ArmDebug, address: number, logging: Logging, maxRetries?: number, delayMs?: number): Promise<number>;
@@ -0,0 +1,231 @@
1
+ /**
2
+ * (c) 2026, Micro:bit Educational Foundation and contributors
3
+ *
4
+ * Derived from dapjs (https://github.com/ARMmbed/dapjs) which is
5
+ * Copyright (c) Arm Limited 2018
6
+ * Copyright (c) Microsoft Corporation
7
+ *
8
+ * SPDX-License-Identifier: MIT
9
+ *
10
+ * See arm-debug.ts for the full dapjs license.
11
+ *
12
+ * DAPLink serial and flash access via CMSIS-DAP vendor commands.
13
+ *
14
+ * DAPLink is the interface firmware running on the micro:bit's debug chip
15
+ * (KL27). It extends the standard CMSIS-DAP protocol with vendor-specific
16
+ * commands (0x80+) for:
17
+ *
18
+ * - UART serial pass-through (DapLinkSerial): reading/writing serial data
19
+ * to the target micro:bit's UART, with configurable baud rate and
20
+ * polling-based read loop.
21
+ *
22
+ * - Hex-file flash streaming (dapLinkFlash): streaming Intel HEX data to
23
+ * DAPLink which handles erasing, programming, and verifying flash pages.
24
+ * This is the "full flash" path — as opposed to partial flashing which
25
+ * writes individual pages via SWD.
26
+ */
27
+ import { DapError, DapTransferError } from "./cmsis-dap.js";
28
+ // ---------------------------------------------------------------------------
29
+ // Constants
30
+ // ---------------------------------------------------------------------------
31
+ // DAPLink vendor commands
32
+ // https://github.com/ARMmbed/DAPLink/blob/main/source/daplink/cmsis-dap/daplink_vendor_commands.h
33
+ /** Read the DAPLink unique ID (same string as USB serial number). */
34
+ export const DAPLINK_VENDOR_READ_UNIQUE_ID = 0x80;
35
+ export const DAPLINK_VENDOR_READ_SETTINGS = 0x81;
36
+ export const DAPLINK_VENDOR_WRITE_SETTINGS = 0x82;
37
+ export const DAPLINK_VENDOR_SERIAL_READ = 0x83;
38
+ export const DAPLINK_VENDOR_SERIAL_WRITE = 0x84;
39
+ export const DAPLINK_VENDOR_FLASH_RESET = 0x89;
40
+ export const DAPLINK_VENDOR_FLASH_OPEN = 0x8a;
41
+ export const DAPLINK_VENDOR_FLASH_CLOSE = 0x8b;
42
+ export const DAPLINK_VENDOR_FLASH_WRITE = 0x8c;
43
+ // DAPLink stream error codes (error_t in DAPLink's error.h).
44
+ // stream_write returns these to indicate success variants.
45
+ const DAPLINK_ERROR_SUCCESS = 0;
46
+ const DAPLINK_ERROR_SUCCESS_DONE = 18;
47
+ // Default flash page size for DAPLink write chunks
48
+ const DAPLINK_FLASH_PAGE_SIZE = 62;
49
+ // ---------------------------------------------------------------------------
50
+ // DapLinkSerial — vendor commands for UART serial access
51
+ // ---------------------------------------------------------------------------
52
+ export class DapLinkSerial {
53
+ constructor(dap, logging) {
54
+ Object.defineProperty(this, "dap", {
55
+ enumerable: true,
56
+ configurable: true,
57
+ writable: true,
58
+ value: dap
59
+ });
60
+ Object.defineProperty(this, "logging", {
61
+ enumerable: true,
62
+ configurable: true,
63
+ writable: true,
64
+ value: logging
65
+ });
66
+ Object.defineProperty(this, "polling", {
67
+ enumerable: true,
68
+ configurable: true,
69
+ writable: true,
70
+ value: false
71
+ });
72
+ }
73
+ async getBaudrate() {
74
+ const result = await this.dap.send(DAPLINK_VENDOR_READ_SETTINGS);
75
+ return result.getUint32(1, true);
76
+ }
77
+ async setBaudrate(baudrate) {
78
+ await this.dap.send(DAPLINK_VENDOR_WRITE_SETTINGS, new Uint8Array(new Uint32Array([baudrate]).buffer));
79
+ }
80
+ async read() {
81
+ const result = await this.dap.send(DAPLINK_VENDOR_SERIAL_READ);
82
+ const length = result.getUint8(1);
83
+ if (length === 0)
84
+ return undefined;
85
+ const bytes = new Uint8Array(result.buffer, 2, length);
86
+ return new TextDecoder().decode(bytes);
87
+ }
88
+ async write(data) {
89
+ const encoded = new TextEncoder().encode(data);
90
+ const payload = new Uint8Array(encoded.length + 1);
91
+ payload[0] = encoded.length;
92
+ payload.set(encoded, 1);
93
+ await this.dap.send(DAPLINK_VENDOR_SERIAL_WRITE, payload);
94
+ }
95
+ async startPolling(onData, serialDelay = 100) {
96
+ this.polling = true;
97
+ try {
98
+ while (this.polling) {
99
+ const data = await this.read();
100
+ if (data !== undefined && this.polling) {
101
+ onData(data);
102
+ }
103
+ await new Promise((resolve) => setTimeout(resolve, serialDelay));
104
+ }
105
+ }
106
+ finally {
107
+ this.polling = false;
108
+ }
109
+ }
110
+ stopPolling() {
111
+ this.polling = false;
112
+ }
113
+ /**
114
+ * Drain any buffered serial data from DAPLink's UART ring buffer.
115
+ * Reads and discards until empty.
116
+ */
117
+ async drain() {
118
+ let totalDrained = 0;
119
+ while (true) {
120
+ const data = await this.read();
121
+ if (!data)
122
+ break;
123
+ totalDrained += data.length;
124
+ }
125
+ if (totalDrained > 0) {
126
+ this.logging.log(`Drained ${totalDrained} bytes of stale serial data`);
127
+ }
128
+ }
129
+ }
130
+ // ---------------------------------------------------------------------------
131
+ // dapLinkFlash — vendor commands for flash streaming
132
+ // ---------------------------------------------------------------------------
133
+ export async function dapLinkFlash(adi, buffer, onProgress) {
134
+ const { dap } = adi;
135
+ const arrayBuffer = buffer.buffer;
136
+ // Stream type 1 = Intel HEX (the only format we use).
137
+ // DAPLink vendor commands return an error_t status in byte 1:
138
+ // 0 = ERROR_SUCCESS, 18 = ERROR_SUCCESS_DONE, 19 = ERROR_SUCCESS_DONE_OR_CONTINUE
139
+ const openResult = await dap.send(DAPLINK_VENDOR_FLASH_OPEN, new Uint8Array(new Uint32Array([1]).buffer));
140
+ if (openResult.getUint8(1) !== DAPLINK_ERROR_SUCCESS) {
141
+ throw new DapError(`Flash open error (status=${openResult.getUint8(1)})`);
142
+ }
143
+ try {
144
+ // We intentionally don't check FLASH_WRITE status for errors. V1
145
+ // micro:bit DAPLink reports ERROR_ERASE_SECTOR (16) late in the
146
+ // flash but the write still succeeds. dapjs never checked these.
147
+ let offset = 0;
148
+ while (offset < arrayBuffer.byteLength) {
149
+ const end = Math.min(arrayBuffer.byteLength, offset + DAPLINK_FLASH_PAGE_SIZE);
150
+ const page = arrayBuffer.slice(offset, end);
151
+ const data = new Uint8Array(page.byteLength + 1);
152
+ data[0] = page.byteLength;
153
+ data.set(new Uint8Array(page), 1);
154
+ const writeResult = await dap.send(DAPLINK_VENDOR_FLASH_WRITE, data);
155
+ onProgress?.(offset / arrayBuffer.byteLength);
156
+ offset = end;
157
+ // DAPLink signals hex EOF with ERROR_SUCCESS_DONE (18).
158
+ if (writeResult.getUint8(1) === DAPLINK_ERROR_SUCCESS_DONE)
159
+ break;
160
+ }
161
+ onProgress?.(1.0);
162
+ const closeResult = await dap.send(DAPLINK_VENDOR_FLASH_CLOSE);
163
+ if (closeResult.getUint8(1) !== DAPLINK_ERROR_SUCCESS) {
164
+ throw new DapError(`Flash close error (status=${closeResult.getUint8(1)})`);
165
+ }
166
+ await dap.send(DAPLINK_VENDOR_FLASH_RESET);
167
+ }
168
+ catch (error) {
169
+ try {
170
+ await dap.send(DAPLINK_VENDOR_FLASH_CLOSE);
171
+ }
172
+ catch {
173
+ /* ignore */
174
+ }
175
+ throw error;
176
+ }
177
+ finally {
178
+ adi.resetState();
179
+ }
180
+ }
181
+ // ---------------------------------------------------------------------------
182
+ // DAPLink utilities
183
+ // ---------------------------------------------------------------------------
184
+ /**
185
+ * Read the DAPLink unique ID via vendor command 0x80. Returns the same
186
+ * 48-char hex string as the USB serial number but isn't affected by
187
+ * browser anti-fingerprinting.
188
+ */
189
+ export async function readDaplinkUniqueId(dap, logging) {
190
+ try {
191
+ const result = await dap.send(DAPLINK_VENDOR_READ_UNIQUE_ID);
192
+ const length = result.getUint8(1);
193
+ if (length === 0) {
194
+ return undefined;
195
+ }
196
+ const bytes = new Uint8Array(result.buffer, 2, length);
197
+ return new TextDecoder().decode(bytes);
198
+ }
199
+ catch (e) {
200
+ logging.log(`Error reading DAPLink unique ID: ${e instanceof Error ? e.message : e}`);
201
+ return undefined;
202
+ }
203
+ }
204
+ /**
205
+ * Read a 32-bit word from memory, retrying on transfer errors.
206
+ * Useful for reads immediately after reset when the target may not
207
+ * be ready to respond.
208
+ */
209
+ export async function readMem32WithRetry(adi, address, logging, maxRetries = 20, delayMs = 20) {
210
+ let lastError;
211
+ for (let attempt = 0; attempt < maxRetries; attempt++) {
212
+ try {
213
+ const value = await adi.readMem32(address);
214
+ if (attempt > 0) {
215
+ logging.log(`readMem32(0x${address.toString(16)}) succeeded after ${attempt + 1} attempts`);
216
+ }
217
+ return value;
218
+ }
219
+ catch (e) {
220
+ if (e instanceof DapTransferError) {
221
+ lastError = e;
222
+ await new Promise((resolve) => setTimeout(resolve, delayMs));
223
+ }
224
+ else {
225
+ throw e;
226
+ }
227
+ }
228
+ }
229
+ throw lastError;
230
+ }
231
+ //# sourceMappingURL=daplink.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daplink.js","sourceRoot":"","sources":["../../../src/usb/daplink.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * (c) 2021, Micro:bit Educational Foundation and contributors
3
+ *
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ import { BoardSerialInfo } from "./board-serial-info.js";
7
+ import { Logging } from "../logging.js";
8
+ import { ArmDebugSwd } from "./arm-debug.js";
9
+ import { CortexM } from "./cortex-m.js";
10
+ import { DapLinkSerial } from "./daplink.js";
11
+ export interface BoardConnectionInfo {
12
+ boardSerialInfo: BoardSerialInfo;
13
+ deviceId: number;
14
+ pageSize: number;
15
+ numPages: number;
16
+ }
17
+ export declare class USBDeviceWrapper {
18
+ readonly usbDevice: USBDevice;
19
+ private logging;
20
+ adi: ArmDebugSwd;
21
+ cortexM: CortexM;
22
+ serial: DapLinkSerial;
23
+ private initialConnectionComplete;
24
+ constructor(usbDevice: USBDevice, logging: Logging);
25
+ reconnect(): Promise<BoardConnectionInfo>;
26
+ /**
27
+ * Read the board serial info, preferring the DAPLink vendor command.
28
+ * Chrome may anonymize USBDevice.serialNumber for anti-fingerprinting
29
+ * (https://github.com/microbit-foundation/microbit-connection/issues/57)
30
+ * so we read it via the DAP protocol instead.
31
+ */
32
+ private readBoardSerialInfo;
33
+ disconnect(): Promise<void>;
34
+ }