@microbit/microbit-connection 0.9.0-apps.alpha.16 → 0.9.0-apps.alpha.18

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 (457) hide show
  1. package/build/cjs/async-util.d.ts +3 -1
  2. package/build/cjs/async-util.js +5 -1
  3. package/build/cjs/async-util.js.map +1 -1
  4. package/build/cjs/bluetooth/ble-error.d.ts +10 -0
  5. package/build/cjs/bluetooth/ble-error.js +47 -0
  6. package/build/cjs/bluetooth/ble-error.js.map +1 -0
  7. package/build/cjs/bluetooth/connection.d.ts +137 -0
  8. package/build/cjs/{bluetooth.js → bluetooth/connection.js} +158 -106
  9. package/build/cjs/bluetooth/connection.js.map +1 -0
  10. package/build/cjs/{bluetooth.test.js → bluetooth/connection.test.js} +9 -9
  11. package/build/cjs/bluetooth/connection.test.js.map +1 -0
  12. package/build/cjs/bluetooth/device-bond-state.js.map +1 -0
  13. package/build/cjs/{bluetooth-device-wrapper.d.ts → bluetooth/device-wrapper.d.ts} +11 -11
  14. package/build/cjs/{bluetooth-device-wrapper.js → bluetooth/device-wrapper.js} +38 -42
  15. package/build/cjs/bluetooth/device-wrapper.js.map +1 -0
  16. package/build/cjs/{flashing → bluetooth/flashing}/flashing-full.d.ts +2 -2
  17. package/build/cjs/{flashing → bluetooth/flashing}/flashing-full.js +6 -5
  18. package/build/cjs/bluetooth/flashing/flashing-full.js.map +1 -0
  19. package/build/cjs/{flashing → bluetooth/flashing}/flashing-makecode.d.ts +1 -1
  20. package/build/cjs/bluetooth/flashing/flashing-makecode.js.map +1 -0
  21. package/build/cjs/{flashing → bluetooth/flashing}/flashing-makecode.test.js +3 -3
  22. package/build/cjs/bluetooth/flashing/flashing-makecode.test.js.map +1 -0
  23. package/build/cjs/{flashing → bluetooth/flashing}/flashing-partial.d.ts +2 -2
  24. package/build/cjs/{flashing → bluetooth/flashing}/flashing-partial.js +7 -6
  25. package/build/cjs/bluetooth/flashing/flashing-partial.js.map +1 -0
  26. package/build/cjs/bluetooth/flashing/flashing-v1.js.map +1 -0
  27. package/build/cjs/{flashing → bluetooth/flashing}/nordic-dfu.d.ts +2 -2
  28. package/build/cjs/{flashing → bluetooth/flashing}/nordic-dfu.js +15 -11
  29. package/build/cjs/bluetooth/flashing/nordic-dfu.js.map +1 -0
  30. package/build/cjs/bluetooth/flashing/zip.js.map +1 -0
  31. package/build/cjs/bluetooth/flashing/zip.test.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.js → bluetooth/profile.js} +1 -1
  36. package/build/cjs/bluetooth/profile.js.map +1 -0
  37. package/build/cjs/{accelerometer-service.d.ts → bluetooth/services/accelerometer-service.d.ts} +2 -3
  38. package/build/cjs/{accelerometer-service.js → bluetooth/services/accelerometer-service.js} +17 -12
  39. package/build/cjs/bluetooth/services/accelerometer-service.js.map +1 -0
  40. package/build/{esm → cjs/bluetooth/services}/button-service.d.ts +2 -3
  41. package/build/cjs/{button-service.js → bluetooth/services/button-service.js} +24 -14
  42. package/build/cjs/bluetooth/services/button-service.js.map +1 -0
  43. package/build/{esm → cjs/bluetooth/services}/device-information-service.d.ts +1 -1
  44. package/build/cjs/bluetooth/services/device-information-service.js +29 -0
  45. package/build/cjs/bluetooth/services/device-information-service.js.map +1 -0
  46. package/build/cjs/{dfu-service.js → bluetooth/services/dfu-service.js} +2 -2
  47. package/build/cjs/bluetooth/services/dfu-service.js.map +1 -0
  48. package/build/{esm → cjs/bluetooth/services}/led-service.d.ts +2 -3
  49. package/build/cjs/{led-service.js → bluetooth/services/led-service.js} +10 -7
  50. package/build/cjs/bluetooth/services/led-service.js.map +1 -0
  51. package/build/cjs/{magnetometer-service.d.ts → bluetooth/services/magnetometer-service.d.ts} +2 -3
  52. package/build/cjs/{magnetometer-service.js → bluetooth/services/magnetometer-service.js} +19 -14
  53. package/build/cjs/bluetooth/services/magnetometer-service.js.map +1 -0
  54. package/build/{esm → cjs/bluetooth/services}/partial-flashing-service.d.ts +1 -1
  55. package/build/cjs/{partial-flashing-service.js → bluetooth/services/partial-flashing-service.js} +8 -8
  56. package/build/cjs/bluetooth/services/partial-flashing-service.js.map +1 -0
  57. package/build/cjs/{uart-service.d.ts → bluetooth/services/uart-service.d.ts} +2 -2
  58. package/build/cjs/{uart-service.js → bluetooth/services/uart-service.js} +21 -9
  59. package/build/cjs/bluetooth/services/uart-service.js.map +1 -0
  60. package/build/cjs/board-id.d.ts +1 -1
  61. package/build/cjs/board-id.js.map +1 -1
  62. package/build/cjs/device.d.ts +145 -123
  63. package/build/cjs/device.js +47 -128
  64. package/build/cjs/device.js.map +1 -1
  65. package/build/cjs/events.d.ts +8 -108
  66. package/build/cjs/events.js +27 -88
  67. package/build/cjs/events.js.map +1 -1
  68. package/build/cjs/events.test.js +54 -48
  69. package/build/cjs/events.test.js.map +1 -1
  70. package/build/cjs/hex-util.d.ts +1 -0
  71. package/build/cjs/hex-util.js +15 -0
  72. package/build/cjs/hex-util.js.map +1 -0
  73. package/build/cjs/index.d.ts +7 -17
  74. package/build/cjs/index.js +6 -28
  75. package/build/cjs/index.js.map +1 -1
  76. package/build/cjs/radio-bridge/connection.d.ts +52 -0
  77. package/build/cjs/{usb-radio-bridge.js → radio-bridge/connection.js} +69 -37
  78. package/build/cjs/radio-bridge/connection.js.map +1 -0
  79. package/build/cjs/radio-bridge/index.d.ts +4 -0
  80. package/build/cjs/radio-bridge/index.js +9 -0
  81. package/build/cjs/radio-bridge/index.js.map +1 -0
  82. package/build/cjs/{usb-serial-protocol.js → radio-bridge/serial-protocol.js} +1 -1
  83. package/build/cjs/radio-bridge/serial-protocol.js.map +1 -0
  84. package/build/cjs/service-events.d.ts +43 -14
  85. package/build/cjs/service-events.js +6 -36
  86. package/build/cjs/service-events.js.map +1 -1
  87. package/build/{esm/hex-flash-data-source.d.ts → cjs/universal-hex/flash-data-source.d.ts} +1 -2
  88. package/build/cjs/{hex-flash-data-source.js → universal-hex/flash-data-source.js} +7 -15
  89. package/build/cjs/universal-hex/flash-data-source.js.map +1 -0
  90. package/build/cjs/universal-hex/index.d.ts +4 -0
  91. package/build/cjs/universal-hex/index.js +9 -0
  92. package/build/cjs/universal-hex/index.js.map +1 -0
  93. package/build/cjs/usb/arm-debug.d.ts +137 -0
  94. package/build/cjs/usb/arm-debug.js +414 -0
  95. package/build/cjs/usb/arm-debug.js.map +1 -0
  96. package/build/cjs/usb/arm-debug.test.js +333 -0
  97. package/build/cjs/usb/arm-debug.test.js.map +1 -0
  98. package/build/{esm → cjs/usb}/board-serial-info.d.ts +2 -1
  99. package/build/cjs/{board-serial-info.js → usb/board-serial-info.js} +10 -7
  100. package/build/cjs/usb/board-serial-info.js.map +1 -0
  101. package/build/cjs/{board-serial-info.test.js → usb/board-serial-info.test.js} +2 -4
  102. package/build/cjs/usb/board-serial-info.test.js.map +1 -0
  103. package/build/cjs/usb/cdc-saturation.d.ts +36 -0
  104. package/build/cjs/usb/cdc-saturation.js +151 -0
  105. package/build/cjs/usb/cdc-saturation.js.map +1 -0
  106. package/build/cjs/usb/cmsis-dap.d.ts +113 -0
  107. package/build/cjs/usb/cmsis-dap.js +349 -0
  108. package/build/cjs/usb/cmsis-dap.js.map +1 -0
  109. package/build/cjs/usb/cmsis-dap.test.js +350 -0
  110. package/build/cjs/usb/cmsis-dap.test.js.map +1 -0
  111. package/build/cjs/usb/connection.d.ts +96 -0
  112. package/build/cjs/{usb.js → usb/connection.js} +257 -173
  113. package/build/cjs/usb/connection.js.map +1 -0
  114. package/build/cjs/{usb.test.js → usb/connection.test.js} +52 -42
  115. package/build/cjs/usb/connection.test.js.map +1 -0
  116. package/build/cjs/usb/cortex-m.d.ts +72 -0
  117. package/build/cjs/usb/cortex-m.js +165 -0
  118. package/build/cjs/usb/cortex-m.js.map +1 -0
  119. package/build/cjs/usb/cortex-m.test.js +217 -0
  120. package/build/cjs/usb/cortex-m.test.js.map +1 -0
  121. package/build/cjs/usb/daplink.d.ts +69 -0
  122. package/build/cjs/usb/daplink.js +238 -0
  123. package/build/cjs/usb/daplink.js.map +1 -0
  124. package/build/cjs/usb/daplink.test.js +290 -0
  125. package/build/cjs/usb/daplink.test.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 -135
  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/promise-queue.test.js.map +1 -0
  140. package/build/cjs/usb/serial-events.d.ts +16 -0
  141. package/build/cjs/{led.js → usb/serial-events.js} +1 -1
  142. package/build/cjs/usb/serial-events.js.map +1 -0
  143. package/build/cjs/usb/transport.d.ts +42 -0
  144. package/build/cjs/usb/transport.js +155 -0
  145. package/build/cjs/usb/transport.js.map +1 -0
  146. package/build/esm/async-util.d.ts +3 -1
  147. package/build/esm/async-util.js +5 -1
  148. package/build/esm/async-util.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 +137 -0
  153. package/build/esm/{bluetooth.js → bluetooth/connection.js} +152 -100
  154. package/build/esm/bluetooth/connection.js.map +1 -0
  155. package/build/esm/{bluetooth.test.js → bluetooth/connection.test.js} +9 -9
  156. package/build/esm/bluetooth/connection.test.js.map +1 -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} +11 -11
  159. package/build/esm/{bluetooth-device-wrapper.js → bluetooth/device-wrapper.js} +35 -39
  160. package/build/esm/bluetooth/device-wrapper.js.map +1 -0
  161. package/build/esm/{flashing → 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/{flashing → bluetooth/flashing}/flashing-makecode.d.ts +1 -1
  165. package/build/esm/bluetooth/flashing/flashing-makecode.js.map +1 -0
  166. package/build/esm/{flashing → bluetooth/flashing}/flashing-makecode.test.js +2 -2
  167. package/build/esm/bluetooth/flashing/flashing-makecode.test.js.map +1 -0
  168. package/build/esm/{flashing → bluetooth/flashing}/flashing-partial.d.ts +2 -2
  169. package/build/esm/{flashing → bluetooth/flashing}/flashing-partial.js +6 -5
  170. package/build/esm/bluetooth/flashing/flashing-partial.js.map +1 -0
  171. package/build/esm/bluetooth/flashing/flashing-v1.js.map +1 -0
  172. package/build/esm/{flashing → bluetooth/flashing}/nordic-dfu.d.ts +2 -2
  173. package/build/esm/{flashing → bluetooth/flashing}/nordic-dfu.js +15 -11
  174. package/build/esm/bluetooth/flashing/nordic-dfu.js.map +1 -0
  175. package/build/esm/bluetooth/flashing/zip.js.map +1 -0
  176. package/build/esm/bluetooth/flashing/zip.test.d.ts +1 -0
  177. package/build/esm/bluetooth/flashing/zip.test.js.map +1 -0
  178. package/build/esm/bluetooth/index.d.ts +5 -0
  179. package/build/esm/bluetooth/index.js +5 -0
  180. package/build/esm/bluetooth/index.js.map +1 -0
  181. package/build/esm/{bluetooth-profile.js → bluetooth/profile.js} +1 -1
  182. package/build/{cjs/bluetooth-profile.js.map → esm/bluetooth/profile.js.map} +1 -1
  183. package/build/esm/{accelerometer-service.d.ts → bluetooth/services/accelerometer-service.d.ts} +2 -3
  184. package/build/esm/{accelerometer-service.js → bluetooth/services/accelerometer-service.js} +11 -6
  185. package/build/esm/bluetooth/services/accelerometer-service.js.map +1 -0
  186. package/build/{cjs → esm/bluetooth/services}/button-service.d.ts +2 -3
  187. package/build/esm/{button-service.js → bluetooth/services/button-service.js} +20 -10
  188. package/build/esm/bluetooth/services/button-service.js.map +1 -0
  189. package/build/{cjs → esm/bluetooth/services}/device-information-service.d.ts +1 -1
  190. package/build/esm/bluetooth/services/device-information-service.js +25 -0
  191. package/build/esm/bluetooth/services/device-information-service.js.map +1 -0
  192. package/build/esm/{dfu-service.js → bluetooth/services/dfu-service.js} +1 -1
  193. package/build/esm/bluetooth/services/dfu-service.js.map +1 -0
  194. package/build/{cjs → esm/bluetooth/services}/led-service.d.ts +2 -3
  195. package/build/esm/{led-service.js → bluetooth/services/led-service.js} +4 -1
  196. package/build/esm/bluetooth/services/led-service.js.map +1 -0
  197. package/build/esm/{magnetometer-service.d.ts → bluetooth/services/magnetometer-service.d.ts} +2 -3
  198. package/build/esm/{magnetometer-service.js → bluetooth/services/magnetometer-service.js} +11 -6
  199. package/build/esm/bluetooth/services/magnetometer-service.js.map +1 -0
  200. package/build/{cjs → esm/bluetooth/services}/partial-flashing-service.d.ts +1 -1
  201. package/build/esm/{partial-flashing-service.js → bluetooth/services/partial-flashing-service.js} +4 -4
  202. package/build/esm/bluetooth/services/partial-flashing-service.js.map +1 -0
  203. package/build/esm/{uart-service.d.ts → bluetooth/services/uart-service.d.ts} +2 -2
  204. package/build/esm/{uart-service.js → bluetooth/services/uart-service.js} +18 -6
  205. package/build/esm/bluetooth/services/uart-service.js.map +1 -0
  206. package/build/esm/board-id.d.ts +1 -1
  207. package/build/esm/board-id.js.map +1 -1
  208. package/build/esm/device.d.ts +145 -123
  209. package/build/esm/device.js +45 -122
  210. package/build/esm/device.js.map +1 -1
  211. package/build/esm/events.d.ts +8 -108
  212. package/build/esm/events.js +26 -86
  213. package/build/esm/events.js.map +1 -1
  214. package/build/esm/events.test.js +55 -49
  215. package/build/esm/events.test.js.map +1 -1
  216. package/build/esm/hex-util.d.ts +1 -0
  217. package/build/esm/hex-util.js +11 -0
  218. package/build/esm/hex-util.js.map +1 -0
  219. package/build/esm/index.d.ts +7 -17
  220. package/build/esm/index.js +6 -11
  221. package/build/esm/index.js.map +1 -1
  222. package/build/esm/radio-bridge/connection.d.ts +52 -0
  223. package/build/esm/{usb-radio-bridge.js → radio-bridge/connection.js} +69 -37
  224. package/build/esm/radio-bridge/connection.js.map +1 -0
  225. package/build/esm/radio-bridge/index.d.ts +4 -0
  226. package/build/esm/radio-bridge/index.js +5 -0
  227. package/build/esm/radio-bridge/index.js.map +1 -0
  228. package/build/esm/{usb-serial-protocol.js → radio-bridge/serial-protocol.js} +1 -1
  229. package/build/esm/radio-bridge/serial-protocol.js.map +1 -0
  230. package/build/esm/service-events.d.ts +43 -14
  231. package/build/esm/service-events.js +5 -34
  232. package/build/esm/service-events.js.map +1 -1
  233. package/build/{cjs/hex-flash-data-source.d.ts → esm/universal-hex/flash-data-source.d.ts} +1 -2
  234. package/build/esm/{hex-flash-data-source.js → universal-hex/flash-data-source.js} +6 -13
  235. package/build/esm/universal-hex/flash-data-source.js.map +1 -0
  236. package/build/esm/universal-hex/index.d.ts +4 -0
  237. package/build/esm/universal-hex/index.js +5 -0
  238. package/build/esm/universal-hex/index.js.map +1 -0
  239. package/build/esm/usb/arm-debug.d.ts +137 -0
  240. package/build/esm/usb/arm-debug.js +409 -0
  241. package/build/esm/usb/arm-debug.js.map +1 -0
  242. package/build/esm/usb/arm-debug.test.d.ts +1 -0
  243. package/build/esm/usb/arm-debug.test.js +331 -0
  244. package/build/esm/usb/arm-debug.test.js.map +1 -0
  245. package/build/{cjs → esm/usb}/board-serial-info.d.ts +2 -1
  246. package/build/esm/{board-serial-info.js → usb/board-serial-info.js} +10 -7
  247. package/build/esm/usb/board-serial-info.js.map +1 -0
  248. package/build/esm/usb/board-serial-info.test.d.ts +1 -0
  249. package/build/esm/{board-serial-info.test.js → usb/board-serial-info.test.js} +2 -4
  250. package/build/esm/usb/board-serial-info.test.js.map +1 -0
  251. package/build/esm/usb/cdc-saturation.d.ts +36 -0
  252. package/build/esm/usb/cdc-saturation.js +148 -0
  253. package/build/esm/usb/cdc-saturation.js.map +1 -0
  254. package/build/esm/usb/cmsis-dap.d.ts +113 -0
  255. package/build/esm/usb/cmsis-dap.js +342 -0
  256. package/build/esm/usb/cmsis-dap.js.map +1 -0
  257. package/build/esm/usb/cmsis-dap.test.d.ts +1 -0
  258. package/build/esm/usb/cmsis-dap.test.js +348 -0
  259. package/build/esm/usb/cmsis-dap.test.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/connection.test.d.ts +1 -0
  264. package/build/esm/{usb.test.js → usb/connection.test.js} +47 -37
  265. package/build/esm/usb/connection.test.js.map +1 -0
  266. package/build/esm/usb/cortex-m.d.ts +72 -0
  267. package/build/esm/usb/cortex-m.js +161 -0
  268. package/build/esm/usb/cortex-m.js.map +1 -0
  269. package/build/esm/usb/cortex-m.test.d.ts +1 -0
  270. package/build/esm/usb/cortex-m.test.js +215 -0
  271. package/build/esm/usb/cortex-m.test.js.map +1 -0
  272. package/build/esm/usb/daplink.d.ts +69 -0
  273. package/build/esm/usb/daplink.js +231 -0
  274. package/build/esm/usb/daplink.js.map +1 -0
  275. package/build/esm/usb/daplink.test.d.ts +1 -0
  276. package/build/esm/usb/daplink.test.js +288 -0
  277. package/build/esm/usb/daplink.test.js.map +1 -0
  278. package/build/esm/usb/device-wrapper.d.ts +34 -0
  279. package/build/esm/usb/device-wrapper.js +98 -0
  280. package/build/esm/usb/device-wrapper.js.map +1 -0
  281. package/build/esm/usb/index.d.ts +5 -0
  282. package/build/esm/usb/index.js +5 -0
  283. package/build/esm/usb/index.js.map +1 -0
  284. package/build/{cjs/usb-partial-flashing-utils.d.ts → esm/usb/partial-flashing-utils.d.ts} +6 -9
  285. package/build/esm/{usb-partial-flashing-utils.js → usb/partial-flashing-utils.js} +4 -44
  286. package/build/esm/usb/partial-flashing-utils.js.map +1 -0
  287. package/build/{cjs/usb-partial-flashing.d.ts → esm/usb/partial-flashing.d.ts} +37 -11
  288. package/build/esm/{usb-partial-flashing.js → usb/partial-flashing.js} +169 -111
  289. package/build/esm/usb/partial-flashing.js.map +1 -0
  290. package/build/esm/usb/promise-queue.js.map +1 -0
  291. package/build/esm/usb/promise-queue.test.d.ts +1 -0
  292. package/build/esm/usb/promise-queue.test.js.map +1 -0
  293. package/build/esm/usb/serial-events.d.ts +16 -0
  294. package/build/esm/usb/serial-events.js +2 -0
  295. package/build/esm/usb/serial-events.js.map +1 -0
  296. package/build/esm/usb/transport.d.ts +42 -0
  297. package/build/esm/usb/transport.js +151 -0
  298. package/build/esm/usb/transport.js.map +1 -0
  299. package/package.json +43 -2
  300. package/build/cjs/accelerometer-service.js.map +0 -1
  301. package/build/cjs/accelerometer.d.ts +0 -9
  302. package/build/cjs/accelerometer.js +0 -16
  303. package/build/cjs/accelerometer.js.map +0 -1
  304. package/build/cjs/bluetooth-device-wrapper.js.map +0 -1
  305. package/build/cjs/bluetooth.d.ts +0 -114
  306. package/build/cjs/bluetooth.js.map +0 -1
  307. package/build/cjs/bluetooth.test.js.map +0 -1
  308. package/build/cjs/board-serial-info.js.map +0 -1
  309. package/build/cjs/board-serial-info.test.js.map +0 -1
  310. package/build/cjs/button-service.js.map +0 -1
  311. package/build/cjs/buttons.d.ts +0 -10
  312. package/build/cjs/buttons.js +0 -22
  313. package/build/cjs/buttons.js.map +0 -1
  314. package/build/cjs/constants.d.ts +0 -48
  315. package/build/cjs/constants.js +0 -73
  316. package/build/cjs/constants.js.map +0 -1
  317. package/build/cjs/device-bond-state.js.map +0 -1
  318. package/build/cjs/device-information-service.js +0 -34
  319. package/build/cjs/device-information-service.js.map +0 -1
  320. package/build/cjs/dfu-service.js.map +0 -1
  321. package/build/cjs/flashing/flashing-full.js.map +0 -1
  322. package/build/cjs/flashing/flashing-makecode.js.map +0 -1
  323. package/build/cjs/flashing/flashing-makecode.test.js.map +0 -1
  324. package/build/cjs/flashing/flashing-partial.js.map +0 -1
  325. package/build/cjs/flashing/flashing-v1.js.map +0 -1
  326. package/build/cjs/flashing/nordic-dfu.js.map +0 -1
  327. package/build/cjs/flashing/zip.js.map +0 -1
  328. package/build/cjs/flashing/zip.test.js.map +0 -1
  329. package/build/cjs/hex-flash-data-source.js.map +0 -1
  330. package/build/cjs/led-service.js.map +0 -1
  331. package/build/cjs/led.d.ts +0 -6
  332. package/build/cjs/led.js.map +0 -1
  333. package/build/cjs/magnetometer-service.js.map +0 -1
  334. package/build/cjs/magnetometer.d.ts +0 -9
  335. package/build/cjs/magnetometer.js +0 -16
  336. package/build/cjs/magnetometer.js.map +0 -1
  337. package/build/cjs/partial-flashing-service.js.map +0 -1
  338. package/build/cjs/promise-queue.js.map +0 -1
  339. package/build/cjs/promise-queue.test.js.map +0 -1
  340. package/build/cjs/serial-events.d.ts +0 -20
  341. package/build/cjs/serial-events.js +0 -69
  342. package/build/cjs/serial-events.js.map +0 -1
  343. package/build/cjs/uart-service.js.map +0 -1
  344. package/build/cjs/uart.d.ts +0 -4
  345. package/build/cjs/uart.js +0 -16
  346. package/build/cjs/uart.js.map +0 -1
  347. package/build/cjs/usb-device-wrapper.d.ts +0 -47
  348. package/build/cjs/usb-device-wrapper.js +0 -437
  349. package/build/cjs/usb-device-wrapper.js.map +0 -1
  350. package/build/cjs/usb-partial-flashing-utils.js.map +0 -1
  351. package/build/cjs/usb-partial-flashing.js.map +0 -1
  352. package/build/cjs/usb-radio-bridge.d.ts +0 -24
  353. package/build/cjs/usb-radio-bridge.js.map +0 -1
  354. package/build/cjs/usb-serial-protocol.js.map +0 -1
  355. package/build/cjs/usb.d.ts +0 -66
  356. package/build/cjs/usb.js.map +0 -1
  357. package/build/cjs/usb.test.js.map +0 -1
  358. package/build/esm/accelerometer-service.js.map +0 -1
  359. package/build/esm/accelerometer.d.ts +0 -9
  360. package/build/esm/accelerometer.js +0 -12
  361. package/build/esm/accelerometer.js.map +0 -1
  362. package/build/esm/bluetooth-device-wrapper.js.map +0 -1
  363. package/build/esm/bluetooth-profile.js.map +0 -1
  364. package/build/esm/bluetooth.d.ts +0 -114
  365. package/build/esm/bluetooth.js.map +0 -1
  366. package/build/esm/bluetooth.test.js.map +0 -1
  367. package/build/esm/board-serial-info.js.map +0 -1
  368. package/build/esm/board-serial-info.test.js.map +0 -1
  369. package/build/esm/button-service.js.map +0 -1
  370. package/build/esm/buttons.d.ts +0 -10
  371. package/build/esm/buttons.js +0 -18
  372. package/build/esm/buttons.js.map +0 -1
  373. package/build/esm/constants.d.ts +0 -48
  374. package/build/esm/constants.js +0 -70
  375. package/build/esm/constants.js.map +0 -1
  376. package/build/esm/device-bond-state.js.map +0 -1
  377. package/build/esm/device-information-service.js +0 -30
  378. package/build/esm/device-information-service.js.map +0 -1
  379. package/build/esm/dfu-service.js.map +0 -1
  380. package/build/esm/flashing/flashing-full.js.map +0 -1
  381. package/build/esm/flashing/flashing-makecode.js.map +0 -1
  382. package/build/esm/flashing/flashing-makecode.test.js.map +0 -1
  383. package/build/esm/flashing/flashing-partial.js.map +0 -1
  384. package/build/esm/flashing/flashing-v1.js.map +0 -1
  385. package/build/esm/flashing/nordic-dfu.js.map +0 -1
  386. package/build/esm/flashing/zip.js.map +0 -1
  387. package/build/esm/flashing/zip.test.js.map +0 -1
  388. package/build/esm/hex-flash-data-source.js.map +0 -1
  389. package/build/esm/led-service.js.map +0 -1
  390. package/build/esm/led.d.ts +0 -6
  391. package/build/esm/led.js +0 -2
  392. package/build/esm/led.js.map +0 -1
  393. package/build/esm/magnetometer-service.js.map +0 -1
  394. package/build/esm/magnetometer.d.ts +0 -9
  395. package/build/esm/magnetometer.js +0 -12
  396. package/build/esm/magnetometer.js.map +0 -1
  397. package/build/esm/partial-flashing-service.js.map +0 -1
  398. package/build/esm/promise-queue.js.map +0 -1
  399. package/build/esm/promise-queue.test.js.map +0 -1
  400. package/build/esm/serial-events.d.ts +0 -20
  401. package/build/esm/serial-events.js +0 -61
  402. package/build/esm/serial-events.js.map +0 -1
  403. package/build/esm/uart-service.js.map +0 -1
  404. package/build/esm/uart.d.ts +0 -4
  405. package/build/esm/uart.js +0 -12
  406. package/build/esm/uart.js.map +0 -1
  407. package/build/esm/usb-device-wrapper.d.ts +0 -47
  408. package/build/esm/usb-device-wrapper.js +0 -410
  409. package/build/esm/usb-device-wrapper.js.map +0 -1
  410. package/build/esm/usb-partial-flashing-utils.js.map +0 -1
  411. package/build/esm/usb-partial-flashing.js.map +0 -1
  412. package/build/esm/usb-radio-bridge.d.ts +0 -24
  413. package/build/esm/usb-radio-bridge.js.map +0 -1
  414. package/build/esm/usb-serial-protocol.js.map +0 -1
  415. package/build/esm/usb.d.ts +0 -66
  416. package/build/esm/usb.js.map +0 -1
  417. package/build/esm/usb.test.js.map +0 -1
  418. /package/build/cjs/{bluetooth.test.d.ts → bluetooth/connection.test.d.ts} +0 -0
  419. /package/build/cjs/{device-bond-state.d.ts → bluetooth/device-bond-state.d.ts} +0 -0
  420. /package/build/cjs/{device-bond-state.js → bluetooth/device-bond-state.js} +0 -0
  421. /package/build/cjs/{flashing → bluetooth/flashing}/flashing-makecode.js +0 -0
  422. /package/build/cjs/{flashing → bluetooth/flashing}/flashing-makecode.test.d.ts +0 -0
  423. /package/build/cjs/{flashing → bluetooth/flashing}/flashing-v1.d.ts +0 -0
  424. /package/build/cjs/{flashing → bluetooth/flashing}/flashing-v1.js +0 -0
  425. /package/build/cjs/{flashing → bluetooth/flashing}/zip.d.ts +0 -0
  426. /package/build/cjs/{flashing → bluetooth/flashing}/zip.js +0 -0
  427. /package/build/cjs/{flashing → bluetooth/flashing}/zip.test.d.ts +0 -0
  428. /package/build/cjs/{flashing → bluetooth/flashing}/zip.test.js +0 -0
  429. /package/build/cjs/{bluetooth-profile.d.ts → bluetooth/profile.d.ts} +0 -0
  430. /package/build/cjs/{dfu-service.d.ts → bluetooth/services/dfu-service.d.ts} +0 -0
  431. /package/build/cjs/{usb-serial-protocol.d.ts → radio-bridge/serial-protocol.d.ts} +0 -0
  432. /package/build/cjs/{board-serial-info.test.d.ts → usb/arm-debug.test.d.ts} +0 -0
  433. /package/build/{esm → cjs/usb}/board-serial-info.test.d.ts +0 -0
  434. /package/build/cjs/{promise-queue.test.d.ts → usb/cmsis-dap.test.d.ts} +0 -0
  435. /package/build/cjs/{usb.test.d.ts → usb/connection.test.d.ts} +0 -0
  436. /package/build/{esm/bluetooth.test.d.ts → cjs/usb/cortex-m.test.d.ts} +0 -0
  437. /package/build/{esm/flashing/flashing-makecode.test.d.ts → cjs/usb/daplink.test.d.ts} +0 -0
  438. /package/build/cjs/{promise-queue.d.ts → usb/promise-queue.d.ts} +0 -0
  439. /package/build/cjs/{promise-queue.js → usb/promise-queue.js} +0 -0
  440. /package/build/{esm → cjs/usb}/promise-queue.test.d.ts +0 -0
  441. /package/build/cjs/{promise-queue.test.js → usb/promise-queue.test.js} +0 -0
  442. /package/build/esm/{flashing/zip.test.d.ts → bluetooth/connection.test.d.ts} +0 -0
  443. /package/build/esm/{device-bond-state.d.ts → bluetooth/device-bond-state.d.ts} +0 -0
  444. /package/build/esm/{device-bond-state.js → bluetooth/device-bond-state.js} +0 -0
  445. /package/build/esm/{flashing → bluetooth/flashing}/flashing-makecode.js +0 -0
  446. /package/build/esm/{usb.test.d.ts → bluetooth/flashing/flashing-makecode.test.d.ts} +0 -0
  447. /package/build/esm/{flashing → bluetooth/flashing}/flashing-v1.d.ts +0 -0
  448. /package/build/esm/{flashing → bluetooth/flashing}/flashing-v1.js +0 -0
  449. /package/build/esm/{flashing → bluetooth/flashing}/zip.d.ts +0 -0
  450. /package/build/esm/{flashing → bluetooth/flashing}/zip.js +0 -0
  451. /package/build/esm/{flashing → bluetooth/flashing}/zip.test.js +0 -0
  452. /package/build/esm/{bluetooth-profile.d.ts → bluetooth/profile.d.ts} +0 -0
  453. /package/build/esm/{dfu-service.d.ts → bluetooth/services/dfu-service.d.ts} +0 -0
  454. /package/build/esm/{usb-serial-protocol.d.ts → radio-bridge/serial-protocol.d.ts} +0 -0
  455. /package/build/esm/{promise-queue.d.ts → usb/promise-queue.d.ts} +0 -0
  456. /package/build/esm/{promise-queue.js → usb/promise-queue.js} +0 -0
  457. /package/build/esm/{promise-queue.test.js → usb/promise-queue.test.js} +0 -0
@@ -29,19 +29,16 @@ var __importStar = (this && this.__importStar) || function (mod) {
29
29
  };
30
30
  Object.defineProperty(exports, "__esModule", { value: true });
31
31
  exports.createRadioBridgeConnection = void 0;
32
- const accelerometer_js_1 = require("./accelerometer.js");
33
- const buttons_js_1 = require("./buttons.js");
34
- const device_js_1 = require("./device.js");
35
- const events_js_1 = require("./events.js");
36
- const logging_js_1 = require("./logging.js");
37
- const protocol = __importStar(require("./usb-serial-protocol.js"));
32
+ const device_js_1 = require("../device.js");
33
+ const events_js_1 = require("../events.js");
34
+ const logging_js_1 = require("../logging.js");
35
+ const service_events_js_1 = require("../service-events.js");
36
+ const protocol = __importStar(require("./serial-protocol.js"));
38
37
  const connectTimeoutDuration = 10_000;
39
- class BridgeError extends Error {
40
- }
41
- class RemoteError extends Error {
42
- }
43
38
  /**
44
39
  * A radio bridge connection factory.
40
+ *
41
+ * @experimental See {@link MicrobitRadioBridgeConnection} for limitations.
45
42
  */
46
43
  const createRadioBridgeConnection = (delegate, options) => new MicrobitRadioBridgeConnectionImpl(delegate, options);
47
44
  exports.createRadioBridgeConnection = createRadioBridgeConnection;
@@ -59,6 +56,12 @@ class MicrobitRadioBridgeConnectionImpl extends events_js_1.TypedEventTarget {
59
56
  writable: true,
60
57
  value: delegate
61
58
  });
59
+ Object.defineProperty(this, "type", {
60
+ enumerable: true,
61
+ configurable: true,
62
+ writable: true,
63
+ value: "radio-bridge"
64
+ });
62
65
  Object.defineProperty(this, "status", {
63
66
  enumerable: true,
64
67
  configurable: true,
@@ -101,12 +104,12 @@ class MicrobitRadioBridgeConnectionImpl extends events_js_1.TypedEventTarget {
101
104
  writable: true,
102
105
  value: (e) => {
103
106
  const currentStatus = this.status;
104
- if (e.status !== device_js_1.ConnectionStatus.CONNECTED) {
107
+ if (e.status !== device_js_1.ConnectionStatus.Connected) {
105
108
  this.setStatus(e.status);
106
109
  // Don't dispose the serial session when PAUSED - USB is temporarily
107
110
  // unavailable due to tab visibility, but we'll reconnect when visible.
108
111
  // Attempting dispose would fail anyway since USB is disconnected.
109
- if (e.status === device_js_1.ConnectionStatus.PAUSED) {
112
+ if (e.status === device_js_1.ConnectionStatus.Paused) {
110
113
  // Clear timestamp so stale values don't trigger reconnection when resuming.
111
114
  this.serialSession?.clearLastReceivedTimestamp();
112
115
  }
@@ -116,11 +119,11 @@ class MicrobitRadioBridgeConnectionImpl extends events_js_1.TypedEventTarget {
116
119
  }
117
120
  }
118
121
  else {
119
- this.status = device_js_1.ConnectionStatus.DISCONNECTED;
122
+ this.status = device_js_1.ConnectionStatus.Disconnected;
120
123
  // Reconnect the serial session if we were previously paused.
121
124
  // PAUSED means the USB connection was temporarily suspended due to tab
122
125
  // visibility, and now the tab is visible again so we should reconnect.
123
- const shouldReconnect = currentStatus === device_js_1.ConnectionStatus.PAUSED;
126
+ const shouldReconnect = currentStatus === device_js_1.ConnectionStatus.Paused;
124
127
  if (shouldReconnect && this.serialSessionOpen) {
125
128
  this.serialSession?.connect();
126
129
  }
@@ -161,7 +164,10 @@ class MicrobitRadioBridgeConnectionImpl extends events_js_1.TypedEventTarget {
161
164
  // TODO: previously this skipped overlapping connect attempts but that seems awkward
162
165
  // can we... just not do that? or wait?
163
166
  if (this.remoteDeviceId === undefined) {
164
- throw new BridgeError(`Missing remote micro:bit ID`);
167
+ throw new device_js_1.DeviceError({
168
+ code: "connection-error",
169
+ message: "Missing remote micro:bit ID",
170
+ });
165
171
  }
166
172
  this.logging.event({
167
173
  type: "Connect",
@@ -169,22 +175,22 @@ class MicrobitRadioBridgeConnectionImpl extends events_js_1.TypedEventTarget {
169
175
  });
170
176
  await this.delegate.connect();
171
177
  try {
172
- this.serialSession = new RadioBridgeSerialSession(this.logging, this.remoteDeviceId, this.delegate, this.dispatchTypedEvent.bind(this), {
178
+ this.serialSession = new RadioBridgeSerialSession(this.logging, this.remoteDeviceId, this.delegate, this.dispatchEvent.bind(this), {
173
179
  onConnecting: () => {
174
- this.setStatus(device_js_1.ConnectionStatus.CONNECTING);
180
+ this.setStatus(device_js_1.ConnectionStatus.Connecting);
175
181
  this.serialSessionOpen = true;
176
182
  },
177
183
  onFailPreDispose: () => {
178
184
  this.serialSessionOpen = false;
179
185
  },
180
186
  onFailPostDispose: () => {
181
- if (this.status !== device_js_1.ConnectionStatus.DISCONNECTED) {
182
- this.setStatus(device_js_1.ConnectionStatus.DISCONNECTED);
187
+ if (this.status !== device_js_1.ConnectionStatus.Disconnected) {
188
+ this.setStatus(device_js_1.ConnectionStatus.Disconnected);
183
189
  }
184
190
  },
185
191
  onSuccess: () => {
186
- if (this.status !== device_js_1.ConnectionStatus.CONNECTED) {
187
- this.setStatus(device_js_1.ConnectionStatus.CONNECTED);
192
+ if (this.status !== device_js_1.ConnectionStatus.Connected) {
193
+ this.setStatus(device_js_1.ConnectionStatus.Connected);
188
194
  }
189
195
  this.serialSessionOpen = true;
190
196
  },
@@ -222,11 +228,14 @@ class MicrobitRadioBridgeConnectionImpl extends events_js_1.TypedEventTarget {
222
228
  const previousStatus = this.status;
223
229
  this.status = newStatus;
224
230
  this.log("Radio connection status " + newStatus);
225
- this.dispatchTypedEvent("status", new device_js_1.ConnectionStatusEvent(newStatus, previousStatus));
231
+ this.dispatchEvent("status", {
232
+ status: newStatus,
233
+ previousStatus,
234
+ });
226
235
  }
227
236
  statusFromDelegate() {
228
- return this.delegate.status == device_js_1.ConnectionStatus.CONNECTED
229
- ? device_js_1.ConnectionStatus.DISCONNECTED
237
+ return this.delegate.status == device_js_1.ConnectionStatus.Connected
238
+ ? device_js_1.ConnectionStatus.Disconnected
230
239
  : this.delegate.status;
231
240
  }
232
241
  }
@@ -237,7 +246,12 @@ class RadioBridgeSerialSession {
237
246
  processButton(button, type, sensorData) {
238
247
  if (sensorData[button] !== this.previousButtonState[button]) {
239
248
  this.previousButtonState[button] = sensorData[button];
240
- this.dispatchTypedEvent(type, new buttons_js_1.ButtonEvent(type, sensorData[button] ? buttons_js_1.ButtonState.ShortPress : buttons_js_1.ButtonState.NotPressed));
249
+ this.dispatchTypedEvent(type, {
250
+ button: type === "buttonachanged" ? "A" : "B",
251
+ state: sensorData[button]
252
+ ? service_events_js_1.ButtonState.ShortPress
253
+ : service_events_js_1.ButtonState.NotPressed,
254
+ });
241
255
  }
242
256
  }
243
257
  constructor(logging, remoteDeviceId, delegate, dispatchTypedEvent, callbacks) {
@@ -301,7 +315,7 @@ class RadioBridgeSerialSession {
301
315
  writable: true,
302
316
  value: void 0
303
317
  });
304
- Object.defineProperty(this, "serialErrorListener", {
318
+ Object.defineProperty(this, "backgroundErrorListener", {
305
319
  enumerable: true,
306
320
  configurable: true,
307
321
  writable: true,
@@ -324,11 +338,11 @@ class RadioBridgeSerialSession {
324
338
  const sensorData = protocol.processPeriodicMessage(msg);
325
339
  if (sensorData) {
326
340
  this.onPeriodicMessageReceived?.();
327
- this.dispatchTypedEvent("accelerometerdatachanged", new accelerometer_js_1.AccelerometerDataEvent({
341
+ this.dispatchTypedEvent("accelerometerdatachanged", {
328
342
  x: sensorData.accelerometerX,
329
343
  y: sensorData.accelerometerY,
330
344
  z: sensorData.accelerometerZ,
331
- }));
345
+ });
332
346
  this.processButton("buttonA", "buttonachanged", sensorData);
333
347
  this.processButton("buttonB", "buttonbchanged", sensorData);
334
348
  }
@@ -355,7 +369,7 @@ class RadioBridgeSerialSession {
355
369
  }
356
370
  async connect() {
357
371
  this.delegate.addEventListener("serialdata", this.serialDataListener);
358
- this.delegate.addEventListener("serialerror", this.serialErrorListener);
372
+ this.delegate.addEventListener("backgrounderror", this.backgroundErrorListener);
359
373
  try {
360
374
  this.callbacks.onConnecting();
361
375
  await this.handshake();
@@ -364,7 +378,10 @@ class RadioBridgeSerialSession {
364
378
  const remoteMbIdResponse = await this.sendCmdWaitResponse(remoteMbIdCommand);
365
379
  if (remoteMbIdResponse.type === protocol.ResponseTypes.Error ||
366
380
  remoteMbIdResponse.value !== this.remoteDeviceId) {
367
- throw new BridgeError(`Failed to set remote micro:bit ID. Expected ${this.remoteDeviceId}, got ${remoteMbIdResponse.value}`);
381
+ throw new device_js_1.DeviceError({
382
+ code: "connection-error",
383
+ message: `Failed to set remote micro:bit ID. Expected ${this.remoteDeviceId}, got ${remoteMbIdResponse.value}`,
384
+ });
368
385
  }
369
386
  // Request the micro:bit to start sending the periodic messages
370
387
  const startCmd = protocol.generateCmdStart({
@@ -380,7 +397,10 @@ class RadioBridgeSerialSession {
380
397
  });
381
398
  const startCmdResponse = await this.sendCmdWaitResponse(startCmd);
382
399
  if (startCmdResponse.type === protocol.ResponseTypes.Error) {
383
- throw new RemoteError(`Failed to start streaming sensors data. Error response received: ${startCmdResponse.message}`);
400
+ throw new device_js_1.DeviceError({
401
+ code: "connection-error",
402
+ message: `Failed to start streaming sensors data. Error response received: ${startCmdResponse.message}`,
403
+ });
384
404
  }
385
405
  // TODO: in the first-time connection case we used to move the error/disconnect to the background here, why? timing?
386
406
  await periodicMessagePromise;
@@ -391,6 +411,7 @@ class RadioBridgeSerialSession {
391
411
  this.callbacks.onFailPreDispose();
392
412
  await this.dispose();
393
413
  this.callbacks.onFailPostDispose();
414
+ throw e;
394
415
  }
395
416
  }
396
417
  async dispose(disconnect = false) {
@@ -403,11 +424,16 @@ class RadioBridgeSerialSession {
403
424
  }
404
425
  this.responseMap.clear();
405
426
  this.delegate.removeEventListener("serialdata", this.serialDataListener);
406
- this.delegate.removeEventListener("serialerror", this.serialErrorListener);
427
+ this.delegate.removeEventListener("backgrounderror", this.backgroundErrorListener);
407
428
  if (disconnect) {
408
429
  await this.delegate.disconnect();
409
430
  }
410
- await this.delegate.softwareReset();
431
+ try {
432
+ await this.delegate.softwareReset();
433
+ }
434
+ catch {
435
+ // May already be disconnected.
436
+ }
411
437
  }
412
438
  async sendCmdWaitResponse(cmd) {
413
439
  const responsePromise = new Promise((resolve, reject) => {
@@ -426,7 +452,7 @@ class RadioBridgeSerialSession {
426
452
  this.connectionCheckIntervalId = setInterval(async () => {
427
453
  // Don't check connection while USB is paused/disconnected.
428
454
  // The check will resume when USB reconnects.
429
- if (this.delegate.status !== device_js_1.ConnectionStatus.CONNECTED) {
455
+ if (this.delegate.status !== device_js_1.ConnectionStatus.Connected) {
430
456
  return;
431
457
  }
432
458
  if (this.lastReceivedMessageTimestamp &&
@@ -479,7 +505,10 @@ class RadioBridgeSerialSession {
479
505
  // We expect some to time out, likely well after the handshake is completed.
480
506
  if (!resolved) {
481
507
  if (++failureCounter === attempts) {
482
- reject(new BridgeError("Handshake not completed"));
508
+ reject(new device_js_1.DeviceError({
509
+ code: "timeout",
510
+ message: "Handshake not completed",
511
+ }));
483
512
  }
484
513
  }
485
514
  });
@@ -487,8 +516,11 @@ class RadioBridgeSerialSession {
487
516
  }
488
517
  });
489
518
  if (handshakeResult.value !== protocol.version) {
490
- throw new BridgeError(`Handshake failed. Unexpected protocol version ${protocol.version}`);
519
+ throw new device_js_1.DeviceError({
520
+ code: "connection-error",
521
+ message: `Handshake failed. Unexpected protocol version ${protocol.version}`,
522
+ });
491
523
  }
492
524
  }
493
525
  }
494
- //# sourceMappingURL=usb-radio-bridge.js.map
526
+ //# sourceMappingURL=connection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection.js","sourceRoot":"","sources":["../../../src/radio-bridge/connection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ /**
2
+ * @module @microbit/microbit-connection/radio-bridge
3
+ */
4
+ export { createRadioBridgeConnection, type MicrobitRadioBridgeConnection, type MicrobitRadioBridgeConnectionOptions, } from "./connection.js";
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createRadioBridgeConnection = void 0;
4
+ /**
5
+ * @module @microbit/microbit-connection/radio-bridge
6
+ */
7
+ var connection_js_1 = require("./connection.js");
8
+ Object.defineProperty(exports, "createRadioBridgeConnection", { enumerable: true, get: function () { return connection_js_1.createRadioBridgeConnection; } });
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/radio-bridge/index.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,iDAIyB;AAHvB,4HAAA,2BAA2B,OAAA"}
@@ -180,4 +180,4 @@ const generateRandomRadioFrequency = () => {
180
180
  return Math.floor(Math.random() * 84);
181
181
  };
182
182
  exports.generateRandomRadioFrequency = generateRandomRadioFrequency;
183
- //# sourceMappingURL=usb-serial-protocol.js.map
183
+ //# sourceMappingURL=serial-protocol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serial-protocol.js","sourceRoot":"","sources":["../../../src/radio-bridge/serial-protocol.ts"],"names":[],"mappings":"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"}
@@ -1,17 +1,46 @@
1
- import { AccelerometerDataEvent } from "./accelerometer.js";
2
- import { ButtonEvent } from "./buttons.js";
3
1
  import { DeviceConnectionEventMap } from "./device.js";
4
- import { MagnetometerDataEvent } from "./magnetometer.js";
5
- import { UARTDataEvent } from "./uart.js";
6
- export declare class ServiceConnectionEventMap {
7
- "accelerometerdatachanged": AccelerometerDataEvent;
8
- "buttonachanged": ButtonEvent;
9
- "buttonbchanged": ButtonEvent;
10
- "magnetometerdatachanged": MagnetometerDataEvent;
11
- "uartdata": UARTDataEvent;
2
+ export interface AccelerometerData {
3
+ x: number;
4
+ y: number;
5
+ z: number;
12
6
  }
13
- export type CharacteristicDataTarget = EventTarget & {
14
- value: DataView;
7
+ export declare const ButtonState: {
8
+ readonly NotPressed: 0;
9
+ readonly ShortPress: 1;
10
+ readonly LongPress: 2;
15
11
  };
16
- export type TypedServiceEvent = keyof (ServiceConnectionEventMap & DeviceConnectionEventMap);
17
- export type TypedServiceEventDispatcher = (_type: TypedServiceEvent, event: (ServiceConnectionEventMap & DeviceConnectionEventMap)[TypedServiceEvent]) => boolean;
12
+ export type ButtonState = (typeof ButtonState)[keyof typeof ButtonState];
13
+ export type ButtonEventType = "buttonachanged" | "buttonbchanged";
14
+ export interface ButtonData {
15
+ button: "A" | "B";
16
+ state: ButtonState;
17
+ }
18
+ /**
19
+ * A 5x5 boolean matrix representing the micro:bit LED display.
20
+ * Each inner array is a row of 5 booleans (left to right),
21
+ * and there are 5 rows (top to bottom).
22
+ */
23
+ export type LedMatrix = boolean[][];
24
+ export interface MagnetometerData {
25
+ x: number;
26
+ y: number;
27
+ z: number;
28
+ }
29
+ export interface UartData {
30
+ value: Uint8Array;
31
+ }
32
+ /**
33
+ * Events from BLE GATT service notifications (accelerometer, buttons,
34
+ * magnetometer, UART). Used by Bluetooth and radio bridge connections.
35
+ */
36
+ export interface ServiceConnectionEventMap {
37
+ accelerometerdatachanged: AccelerometerData;
38
+ buttonachanged: ButtonData;
39
+ buttonbchanged: ButtonData;
40
+ magnetometerdatachanged: MagnetometerData;
41
+ uartdata: UartData;
42
+ }
43
+ type AllEventMap = ServiceConnectionEventMap & DeviceConnectionEventMap;
44
+ export type TypedServiceEvent = keyof AllEventMap;
45
+ export type TypedServiceEventDispatcher = <K extends TypedServiceEvent>(type: K, ...[data]: AllEventMap[K] extends void ? [] : [data: AllEventMap[K]]) => void;
46
+ export {};
@@ -1,39 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ServiceConnectionEventMap = void 0;
4
- class ServiceConnectionEventMap {
5
- constructor() {
6
- Object.defineProperty(this, "accelerometerdatachanged", {
7
- enumerable: true,
8
- configurable: true,
9
- writable: true,
10
- value: void 0
11
- });
12
- Object.defineProperty(this, "buttonachanged", {
13
- enumerable: true,
14
- configurable: true,
15
- writable: true,
16
- value: void 0
17
- });
18
- Object.defineProperty(this, "buttonbchanged", {
19
- enumerable: true,
20
- configurable: true,
21
- writable: true,
22
- value: void 0
23
- });
24
- Object.defineProperty(this, "magnetometerdatachanged", {
25
- enumerable: true,
26
- configurable: true,
27
- writable: true,
28
- value: void 0
29
- });
30
- Object.defineProperty(this, "uartdata", {
31
- enumerable: true,
32
- configurable: true,
33
- writable: true,
34
- value: void 0
35
- });
36
- }
37
- }
38
- exports.ServiceConnectionEventMap = ServiceConnectionEventMap;
3
+ exports.ButtonState = void 0;
4
+ exports.ButtonState = {
5
+ NotPressed: 0,
6
+ ShortPress: 1,
7
+ LongPress: 2,
8
+ };
39
9
  //# sourceMappingURL=service-events.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"service-events.js","sourceRoot":"","sources":["../../src/service-events.ts"],"names":[],"mappings":";;;AAMA,MAAa,yBAAyB;IAAtC;QACE,4BAAA,0BAA0B;;;;;WAAyB;QACnD,4BAAA,gBAAgB;;;;;WAAc;QAC9B,4BAAA,gBAAgB;;;;;WAAc;QAC9B,4BAAA,yBAAyB;;;;;WAAwB;QACjD,4BAAA,UAAU;;;;;WAAgB;IAC5B,CAAC;CAAA;AAND,8DAMC"}
1
+ {"version":3,"file":"service-events.js","sourceRoot":"","sources":["../../src/service-events.ts"],"names":[],"mappings":";;;AAQa,QAAA,WAAW,GAAG;IACzB,UAAU,EAAE,CAAC;IACb,UAAU,EAAE,CAAC;IACb,SAAS,EAAE,CAAC;CACJ,CAAC"}
@@ -1,5 +1,4 @@
1
- import { FlashDataSource } from "./device.js";
2
- export declare const truncateHexAfterEof: (hex: string) => string;
1
+ import { FlashDataSource } from "../device.js";
3
2
  /**
4
3
  * A flash data source that converts universal hex files as needed.
5
4
  *
@@ -1,20 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createUniversalHexFlashDataSource = exports.truncateHexAfterEof = void 0;
4
- const board_id_js_1 = require("./board-id.js");
5
- const device_js_1 = require("./device.js");
3
+ exports.createUniversalHexFlashDataSource = void 0;
4
+ // This module is deliberately kept separate so that
5
+ // @microbit/microbit-universal-hex can be tree-shaken by bundlers
6
+ // when consumers don't use createUniversalHexFlashDataSource.
7
+ const board_id_js_1 = require("../board-id.js");
8
+ const device_js_1 = require("../device.js");
6
9
  const microbit_universal_hex_1 = require("@microbit/microbit-universal-hex");
7
- // MakeCode hex files may contain embedded source in custom record types
8
- // (type 0x0E) after the EOF record, and older files may have trailing blank
9
- // lines. The nrf-intel-hex parser rejects any data after EOF, so we truncate.
10
- const truncateHexAfterEof = (hex) => {
11
- // The EOF record is :00000001FF (case-insensitive per the Intel HEX spec).
12
- const eofIdx = hex.search(/:00000001FF/i);
13
- if (eofIdx < 0)
14
- return hex;
15
- return hex.slice(0, eofIdx + ":00000001FF".length) + "\n";
16
- };
17
- exports.truncateHexAfterEof = truncateHexAfterEof;
18
10
  /**
19
11
  * A flash data source that converts universal hex files as needed.
20
12
  *
@@ -34,4 +26,4 @@ const createUniversalHexFlashDataSource = (universalHex) => {
34
26
  };
35
27
  };
36
28
  exports.createUniversalHexFlashDataSource = createUniversalHexFlashDataSource;
37
- //# sourceMappingURL=hex-flash-data-source.js.map
29
+ //# sourceMappingURL=flash-data-source.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flash-data-source.js","sourceRoot":"","sources":["../../../src/universal-hex/flash-data-source.ts"],"names":[],"mappings":";;;AAAA,oDAAoD;AACpD,kEAAkE;AAClE,8DAA8D;AAC9D,gDAAyC;AACzC,4CAIsB;AACtB,6EAG0C;AAE1C;;;;GAIG;AACI,MAAM,iCAAiC,GAAG,CAC/C,YAAoB,EACH,EAAE;IACnB,OAAO,CAAC,YAA0B,EAAE,EAAE;QACpC,IAAI,IAAA,uCAAc,EAAC,YAAY,CAAC,EAAE,CAAC;YACjC,MAAM,KAAK,GAAG,IAAA,6CAAoB,EAAC,YAAY,CAAC,CAAC;YACjD,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CACzB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,qBAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,EAAE,CACxD,CAAC;YACF,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,MAAM,IAAI,0BAAc,CAAC,kBAAkB,CAAC,CAAC;YAC/C,CAAC;YACD,OAAO,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACvC,CAAC;QACD,OAAO,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IACvC,CAAC,CAAC;AACJ,CAAC,CAAC;AAhBW,QAAA,iCAAiC,qCAgB5C"}
@@ -0,0 +1,4 @@
1
+ /**
2
+ * @module @microbit/microbit-connection/universal-hex
3
+ */
4
+ export { createUniversalHexFlashDataSource } from "./flash-data-source.js";
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createUniversalHexFlashDataSource = void 0;
4
+ /**
5
+ * @module @microbit/microbit-connection/universal-hex
6
+ */
7
+ var flash_data_source_js_1 = require("./flash-data-source.js");
8
+ Object.defineProperty(exports, "createUniversalHexFlashDataSource", { enumerable: true, get: function () { return flash_data_source_js_1.createUniversalHexFlashDataSource; } });
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/universal-hex/index.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,+DAA2E;AAAlE,yIAAA,iCAAiC,OAAA"}
@@ -0,0 +1,137 @@
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
+ * ARM Debug Interface (ADI) layer for SWD access to a Cortex-M target,
11
+ * derived from dapjs (https://github.com/ARMmbed/dapjs). This file and
12
+ * its siblings (transport.ts, cmsis-dap.ts, cortex-m.ts, daplink.ts)
13
+ * are a minimal reimplementation covering only the features needed for
14
+ * micro:bit.
15
+ *
16
+ * ArmDebugSwd manages the SWD connection lifecycle and provides
17
+ * register-level access to the Debug Port (DP) and Access Port (AP).
18
+ * It sits between CmsisDapUsb (command framing) and higher-level consumers
19
+ * like CortexM (processor control) and DAPLink (flash/serial).
20
+ *
21
+ * Key responsibilities:
22
+ * - SWD initialisation sequence (JTAG-to-SWD switch, power-up, ID read)
23
+ * - Automatic drain-and-retry on stale USB responses after page reload
24
+ * - DP_SELECT and AP_CSW register caching to reduce redundant writes
25
+ * - Memory read/write via AP_TAR + AP_DRW, handling page boundaries
26
+ * and block-transfer size limits
27
+ *
28
+ * Protocol references:
29
+ * - ARM ADI: https://developer.arm.com/documentation/ihi0031/a/
30
+ * - DAPLink: https://github.com/ARMmbed/DAPLink
31
+ *
32
+ * The dapjs license is included below:
33
+ *
34
+ * DAPjs
35
+ * Copyright (c) Arm Limited 2018
36
+ * Copyright (c) Microsoft Corporation
37
+ *
38
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
39
+ * of this software and associated documentation files (the "Software"), to deal
40
+ * in the Software without restriction, including without limitation the rights
41
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
42
+ * copies of the Software, and to permit persons to whom the Software is
43
+ * furnished to do so, subject to the following conditions:
44
+ *
45
+ * The above copyright notice and this permission notice shall be included in
46
+ * all copies or substantial portions of the Software.
47
+ *
48
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
49
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
50
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
51
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
52
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
53
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
54
+ * IN THE SOFTWARE.
55
+ */
56
+ import { Logging } from "../logging.js";
57
+ import { type CmsisDap, DapOperation } from "./cmsis-dap.js";
58
+ export declare function waitFor(fn: () => Promise<boolean>, timeout?: number, delay?: number): Promise<void>;
59
+ export interface ArmDebug {
60
+ readonly dap: CmsisDap;
61
+ readonly isOpen: boolean;
62
+ /** Read a 32-bit word from a memory-mapped address. */
63
+ readMem32(address: number): Promise<number>;
64
+ /** Write a 32-bit word to a memory-mapped address. */
65
+ writeMem32(address: number, value: number): Promise<void>;
66
+ /** Build DAP operations for reading a 32-bit word (for use with transferSequence). */
67
+ readMem32Ops(address: number): DapOperation[];
68
+ /** Build DAP operations for writing a 32-bit word (for use with transferSequence). */
69
+ writeMem32Ops(address: number, value: number): DapOperation[];
70
+ /**
71
+ * Read a block of 32-bit words from memory.
72
+ * Handles TAR auto-increment page boundaries and block size limits.
73
+ */
74
+ readBlock(address: number, count: number): Promise<Uint32Array>;
75
+ /**
76
+ * Write a block of 32-bit words to memory.
77
+ * Handles TAR auto-increment page boundaries and block size limits.
78
+ */
79
+ writeBlock(address: number, values: Uint32Array): Promise<void>;
80
+ /**
81
+ * Execute a sequence of operation groups as individual transfers.
82
+ * Each group is sent as a separate DAP_TRANSFER to guarantee that
83
+ * all operations within a group execute atomically on the wire.
84
+ */
85
+ transferSequence(groups: DapOperation[][]): Promise<Uint32Array>;
86
+ /**
87
+ * Reset cached protocol state without closing the transport.
88
+ * Call after operations that reset the target (e.g. DAPLink flash reset).
89
+ */
90
+ resetState(): void;
91
+ /**
92
+ * Connect to the target with automatic drain-and-retry on stale responses.
93
+ */
94
+ connect(maxRetries?: number): Promise<void>;
95
+ disconnect(): Promise<void>;
96
+ /**
97
+ * Reset cached state and reconnect without closing the transport.
98
+ * Use after operations like DAPLink flash that leave the protocol state
99
+ * stale but don't require full re-enumeration.
100
+ */
101
+ reinit(): Promise<void>;
102
+ }
103
+ export declare class ArmDebugSwd implements ArmDebug {
104
+ readonly dap: CmsisDap;
105
+ private logging;
106
+ private swdConnected;
107
+ private selectedAddress?;
108
+ private cswValue?;
109
+ constructor(dap: CmsisDap, logging: Logging);
110
+ get isOpen(): boolean;
111
+ /**
112
+ * Initialize SWD: connect to the target, set up the debug port,
113
+ * and power up the debug and system domains.
114
+ */
115
+ private connectOnce;
116
+ connect(maxRetries?: number): Promise<void>;
117
+ resetState(): void;
118
+ disconnect(): Promise<void>;
119
+ reinit(): Promise<void>;
120
+ private readDPOps;
121
+ private writeDPOps;
122
+ private readAPOps;
123
+ private writeAPOps;
124
+ readMem32Ops(address: number): DapOperation[];
125
+ writeMem32Ops(address: number, value: number): DapOperation[];
126
+ /**
127
+ * Execute a batch of DAP transfer operations, deduplicating writes
128
+ * to DP_SELECT and AP_CSW that match cached state.
129
+ */
130
+ private transfer;
131
+ transferSequence(groups: DapOperation[][]): Promise<Uint32Array>;
132
+ private readDP;
133
+ readMem32(address: number): Promise<number>;
134
+ writeMem32(address: number, value: number): Promise<void>;
135
+ readBlock(address: number, count: number): Promise<Uint32Array>;
136
+ writeBlock(address: number, values: Uint32Array): Promise<void>;
137
+ }