@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.
- package/README.md +106 -27
- package/build/cjs/async-util.d.ts +3 -1
- package/build/cjs/async-util.js +5 -1
- package/build/cjs/async-util.js.map +1 -1
- package/build/cjs/availability.js.map +1 -1
- package/build/cjs/bluetooth/ble-error.d.ts +10 -0
- package/build/cjs/bluetooth/ble-error.js +47 -0
- package/build/cjs/bluetooth/ble-error.js.map +1 -0
- package/build/cjs/bluetooth/connection.d.ts +378 -0
- package/build/cjs/bluetooth/connection.js +623 -0
- package/build/cjs/bluetooth/connection.js.map +1 -0
- package/build/cjs/bluetooth/device-bond-state.d.ts +14 -0
- package/build/cjs/bluetooth/device-bond-state.js +26 -0
- package/build/cjs/bluetooth/device-bond-state.js.map +1 -0
- package/build/cjs/{bluetooth-device-wrapper.d.ts → bluetooth/device-wrapper.d.ts} +36 -21
- package/build/cjs/{bluetooth-device-wrapper.js → bluetooth/device-wrapper.js} +174 -147
- package/build/cjs/bluetooth/device-wrapper.js.map +1 -0
- package/build/{esm → cjs/bluetooth}/flashing/flashing-full.d.ts +2 -2
- package/build/cjs/{flashing → bluetooth/flashing}/flashing-full.js +6 -5
- package/build/cjs/bluetooth/flashing/flashing-full.js.map +1 -0
- package/build/cjs/bluetooth/flashing/flashing-makecode.d.ts +10 -0
- package/build/cjs/{flashing → bluetooth/flashing}/flashing-makecode.js +5 -2
- package/build/cjs/bluetooth/flashing/flashing-makecode.js.map +1 -0
- package/build/cjs/bluetooth/flashing/flashing-partial.d.ts +10 -0
- package/build/cjs/bluetooth/flashing/flashing-partial.js +145 -0
- package/build/cjs/bluetooth/flashing/flashing-partial.js.map +1 -0
- package/build/cjs/bluetooth/flashing/flashing-v1.js.map +1 -0
- package/build/cjs/{flashing → bluetooth/flashing}/nordic-dfu.d.ts +2 -2
- package/build/cjs/{flashing → bluetooth/flashing}/nordic-dfu.js +41 -15
- package/build/cjs/bluetooth/flashing/nordic-dfu.js.map +1 -0
- package/build/cjs/bluetooth/flashing/zip.js.map +1 -0
- package/build/cjs/bluetooth/index.d.ts +5 -0
- package/build/cjs/bluetooth/index.js +9 -0
- package/build/cjs/bluetooth/index.js.map +1 -0
- package/build/cjs/{bluetooth-profile.d.ts → bluetooth/profile.d.ts} +8 -0
- package/build/cjs/{bluetooth-profile.js → bluetooth/profile.js} +7 -1
- package/build/cjs/bluetooth/profile.js.map +1 -0
- package/build/cjs/{accelerometer-service.d.ts → bluetooth/services/accelerometer-service.d.ts} +2 -3
- package/build/cjs/{accelerometer-service.js → bluetooth/services/accelerometer-service.js} +17 -12
- package/build/cjs/bluetooth/services/accelerometer-service.js.map +1 -0
- package/build/{esm → cjs/bluetooth/services}/button-service.d.ts +2 -3
- package/build/cjs/{button-service.js → bluetooth/services/button-service.js} +24 -14
- package/build/cjs/bluetooth/services/button-service.js.map +1 -0
- package/build/{esm → cjs/bluetooth/services}/device-information-service.d.ts +1 -1
- package/build/cjs/bluetooth/services/device-information-service.js +29 -0
- package/build/cjs/bluetooth/services/device-information-service.js.map +1 -0
- package/build/cjs/{dfu-service.js → bluetooth/services/dfu-service.js} +2 -2
- package/build/cjs/bluetooth/services/dfu-service.js.map +1 -0
- package/build/cjs/bluetooth/services/event-service.d.ts +48 -0
- package/build/cjs/bluetooth/services/event-service.js +273 -0
- package/build/cjs/bluetooth/services/event-service.js.map +1 -0
- package/build/cjs/bluetooth/services/io-pin-service.d.ts +65 -0
- package/build/cjs/bluetooth/services/io-pin-service.js +173 -0
- package/build/cjs/bluetooth/services/io-pin-service.js.map +1 -0
- package/build/{esm → cjs/bluetooth/services}/led-service.d.ts +2 -3
- package/build/cjs/{led-service.js → bluetooth/services/led-service.js} +10 -7
- package/build/cjs/bluetooth/services/led-service.js.map +1 -0
- package/build/cjs/{magnetometer-service.d.ts → bluetooth/services/magnetometer-service.d.ts} +2 -3
- package/build/cjs/{magnetometer-service.js → bluetooth/services/magnetometer-service.js} +19 -14
- package/build/cjs/bluetooth/services/magnetometer-service.js.map +1 -0
- package/build/{esm → cjs/bluetooth/services}/partial-flashing-service.d.ts +1 -1
- package/build/cjs/{partial-flashing-service.js → bluetooth/services/partial-flashing-service.js} +8 -8
- package/build/cjs/bluetooth/services/partial-flashing-service.js.map +1 -0
- package/build/cjs/bluetooth/services/temperature-service.d.ts +14 -0
- package/build/cjs/bluetooth/services/temperature-service.js +80 -0
- package/build/cjs/bluetooth/services/temperature-service.js.map +1 -0
- package/build/cjs/{uart-service.d.ts → bluetooth/services/uart-service.d.ts} +2 -2
- package/build/cjs/{uart-service.js → bluetooth/services/uart-service.js} +21 -9
- package/build/cjs/bluetooth/services/uart-service.js.map +1 -0
- package/build/cjs/board-id.d.ts +1 -1
- package/build/cjs/board-id.js.map +1 -1
- package/build/cjs/device.d.ts +191 -101
- package/build/cjs/device.js +47 -110
- package/build/cjs/device.js.map +1 -1
- package/build/cjs/events.d.ts +8 -108
- package/build/cjs/events.js +27 -88
- package/build/cjs/events.js.map +1 -1
- package/build/cjs/hex-util.d.ts +1 -0
- package/build/cjs/hex-util.js +15 -0
- package/build/cjs/hex-util.js.map +1 -0
- package/build/cjs/index.d.ts +8 -16
- package/build/cjs/index.js +9 -28
- package/build/cjs/index.js.map +1 -1
- package/build/cjs/logging.js.map +1 -1
- package/build/cjs/microbit-events.d.ts +67 -0
- package/build/cjs/microbit-events.js +55 -0
- package/build/cjs/microbit-events.js.map +1 -0
- package/build/cjs/radio-bridge/connection.d.ts +52 -0
- package/build/cjs/{usb-radio-bridge.js → radio-bridge/connection.js} +84 -96
- package/build/cjs/radio-bridge/connection.js.map +1 -0
- package/build/cjs/radio-bridge/index.d.ts +4 -0
- package/build/cjs/radio-bridge/index.js +9 -0
- package/build/cjs/radio-bridge/index.js.map +1 -0
- package/build/cjs/{usb-serial-protocol.js → radio-bridge/serial-protocol.js} +1 -1
- package/build/cjs/radio-bridge/serial-protocol.js.map +1 -0
- package/build/cjs/service-events.d.ts +92 -15
- package/build/cjs/service-events.js +6 -36
- package/build/cjs/service-events.js.map +1 -1
- package/build/{esm/hex-flash-data-source.d.ts → cjs/universal-hex/flash-data-source.d.ts} +1 -1
- package/build/cjs/{hex-flash-data-source.js → universal-hex/flash-data-source.js} +6 -3
- package/build/cjs/universal-hex/flash-data-source.js.map +1 -0
- package/build/cjs/universal-hex/index.d.ts +4 -0
- package/build/cjs/universal-hex/index.js +9 -0
- package/build/cjs/universal-hex/index.js.map +1 -0
- package/build/cjs/usb/arm-debug.d.ts +137 -0
- package/build/cjs/usb/arm-debug.js +414 -0
- package/build/cjs/usb/arm-debug.js.map +1 -0
- package/build/{esm → cjs/usb}/board-serial-info.d.ts +2 -1
- package/build/cjs/{board-serial-info.js → usb/board-serial-info.js} +10 -7
- package/build/cjs/usb/board-serial-info.js.map +1 -0
- package/build/cjs/usb/cdc-saturation.d.ts +36 -0
- package/build/cjs/usb/cdc-saturation.js +151 -0
- package/build/cjs/usb/cdc-saturation.js.map +1 -0
- package/build/cjs/usb/cmsis-dap.d.ts +113 -0
- package/build/cjs/usb/cmsis-dap.js +349 -0
- package/build/cjs/usb/cmsis-dap.js.map +1 -0
- package/build/cjs/usb/connection.d.ts +96 -0
- package/build/cjs/{usb.js → usb/connection.js} +257 -173
- package/build/cjs/usb/connection.js.map +1 -0
- package/build/cjs/usb/cortex-m.d.ts +72 -0
- package/build/cjs/usb/cortex-m.js +165 -0
- package/build/cjs/usb/cortex-m.js.map +1 -0
- package/build/cjs/usb/daplink.d.ts +69 -0
- package/build/cjs/usb/daplink.js +238 -0
- package/build/cjs/usb/daplink.js.map +1 -0
- package/build/cjs/usb/device-wrapper.d.ts +34 -0
- package/build/cjs/usb/device-wrapper.js +102 -0
- package/build/cjs/usb/device-wrapper.js.map +1 -0
- package/build/cjs/usb/index.d.ts +5 -0
- package/build/cjs/usb/index.js +10 -0
- package/build/cjs/usb/index.js.map +1 -0
- package/build/{esm/usb-partial-flashing-utils.d.ts → cjs/usb/partial-flashing-utils.d.ts} +6 -9
- package/build/cjs/{usb-partial-flashing-utils.js → usb/partial-flashing-utils.js} +6 -49
- package/build/cjs/usb/partial-flashing-utils.js.map +1 -0
- package/build/{esm/usb-partial-flashing.d.ts → cjs/usb/partial-flashing.d.ts} +37 -11
- package/build/cjs/{usb-partial-flashing.js → usb/partial-flashing.js} +170 -134
- package/build/cjs/usb/partial-flashing.js.map +1 -0
- package/build/cjs/usb/promise-queue.js.map +1 -0
- package/build/cjs/usb/serial-events.d.ts +16 -0
- package/build/cjs/{led.js → usb/serial-events.js} +1 -1
- package/build/cjs/usb/serial-events.js.map +1 -0
- package/build/cjs/usb/transport.d.ts +42 -0
- package/build/cjs/usb/transport.js +155 -0
- package/build/cjs/usb/transport.js.map +1 -0
- package/build/esm/async-util.d.ts +3 -1
- package/build/esm/async-util.js +5 -1
- package/build/esm/async-util.js.map +1 -1
- package/build/esm/availability.js.map +1 -1
- package/build/esm/bluetooth/ble-error.d.ts +10 -0
- package/build/esm/bluetooth/ble-error.js +42 -0
- package/build/esm/bluetooth/ble-error.js.map +1 -0
- package/build/esm/bluetooth/connection.d.ts +378 -0
- package/build/esm/bluetooth/connection.js +593 -0
- package/build/esm/bluetooth/connection.js.map +1 -0
- package/build/esm/bluetooth/device-bond-state.d.ts +14 -0
- package/build/esm/bluetooth/device-bond-state.js +22 -0
- package/build/esm/bluetooth/device-bond-state.js.map +1 -0
- package/build/esm/{bluetooth-device-wrapper.d.ts → bluetooth/device-wrapper.d.ts} +36 -21
- package/build/esm/{bluetooth-device-wrapper.js → bluetooth/device-wrapper.js} +172 -146
- package/build/esm/bluetooth/device-wrapper.js.map +1 -0
- package/build/{cjs → esm/bluetooth}/flashing/flashing-full.d.ts +2 -2
- package/build/esm/{flashing → bluetooth/flashing}/flashing-full.js +6 -5
- package/build/esm/bluetooth/flashing/flashing-full.js.map +1 -0
- package/build/esm/bluetooth/flashing/flashing-makecode.d.ts +10 -0
- package/build/esm/{flashing → bluetooth/flashing}/flashing-makecode.js +5 -2
- package/build/esm/bluetooth/flashing/flashing-makecode.js.map +1 -0
- package/build/esm/bluetooth/flashing/flashing-partial.d.ts +10 -0
- package/build/esm/bluetooth/flashing/flashing-partial.js +142 -0
- package/build/esm/bluetooth/flashing/flashing-partial.js.map +1 -0
- package/build/esm/bluetooth/flashing/flashing-v1.js.map +1 -0
- package/build/esm/{flashing → bluetooth/flashing}/nordic-dfu.d.ts +2 -2
- package/build/esm/{flashing → bluetooth/flashing}/nordic-dfu.js +41 -15
- package/build/esm/bluetooth/flashing/nordic-dfu.js.map +1 -0
- package/build/esm/bluetooth/flashing/zip.js.map +1 -0
- package/build/esm/bluetooth/index.d.ts +5 -0
- package/build/esm/bluetooth/index.js +5 -0
- package/build/esm/bluetooth/index.js.map +1 -0
- package/build/esm/{bluetooth-profile.d.ts → bluetooth/profile.d.ts} +8 -0
- package/build/esm/{bluetooth-profile.js → bluetooth/profile.js} +7 -1
- package/build/{cjs/bluetooth-profile.js.map → esm/bluetooth/profile.js.map} +1 -1
- package/build/esm/{accelerometer-service.d.ts → bluetooth/services/accelerometer-service.d.ts} +2 -3
- package/build/esm/{accelerometer-service.js → bluetooth/services/accelerometer-service.js} +11 -6
- package/build/esm/bluetooth/services/accelerometer-service.js.map +1 -0
- package/build/{cjs → esm/bluetooth/services}/button-service.d.ts +2 -3
- package/build/esm/{button-service.js → bluetooth/services/button-service.js} +20 -10
- package/build/esm/bluetooth/services/button-service.js.map +1 -0
- package/build/{cjs → esm/bluetooth/services}/device-information-service.d.ts +1 -1
- package/build/esm/bluetooth/services/device-information-service.js +25 -0
- package/build/esm/bluetooth/services/device-information-service.js.map +1 -0
- package/build/esm/{dfu-service.js → bluetooth/services/dfu-service.js} +1 -1
- package/build/esm/bluetooth/services/dfu-service.js.map +1 -0
- package/build/esm/bluetooth/services/event-service.d.ts +48 -0
- package/build/esm/bluetooth/services/event-service.js +269 -0
- package/build/esm/bluetooth/services/event-service.js.map +1 -0
- package/build/esm/bluetooth/services/io-pin-service.d.ts +65 -0
- package/build/esm/bluetooth/services/io-pin-service.js +169 -0
- package/build/esm/bluetooth/services/io-pin-service.js.map +1 -0
- package/build/{cjs → esm/bluetooth/services}/led-service.d.ts +2 -3
- package/build/esm/{led-service.js → bluetooth/services/led-service.js} +4 -1
- package/build/esm/bluetooth/services/led-service.js.map +1 -0
- package/build/esm/{magnetometer-service.d.ts → bluetooth/services/magnetometer-service.d.ts} +2 -3
- package/build/esm/{magnetometer-service.js → bluetooth/services/magnetometer-service.js} +11 -6
- package/build/esm/bluetooth/services/magnetometer-service.js.map +1 -0
- package/build/{cjs → esm/bluetooth/services}/partial-flashing-service.d.ts +1 -1
- package/build/esm/{partial-flashing-service.js → bluetooth/services/partial-flashing-service.js} +4 -4
- package/build/esm/bluetooth/services/partial-flashing-service.js.map +1 -0
- package/build/esm/bluetooth/services/temperature-service.d.ts +14 -0
- package/build/esm/bluetooth/services/temperature-service.js +76 -0
- package/build/esm/bluetooth/services/temperature-service.js.map +1 -0
- package/build/esm/{uart-service.d.ts → bluetooth/services/uart-service.d.ts} +2 -2
- package/build/esm/{uart-service.js → bluetooth/services/uart-service.js} +18 -6
- package/build/esm/bluetooth/services/uart-service.js.map +1 -0
- package/build/esm/board-id.d.ts +1 -1
- package/build/esm/board-id.js.map +1 -1
- package/build/esm/device.d.ts +191 -101
- package/build/esm/device.js +45 -104
- package/build/esm/device.js.map +1 -1
- package/build/esm/events.d.ts +8 -108
- package/build/esm/events.js +26 -86
- package/build/esm/events.js.map +1 -1
- package/build/esm/hex-util.d.ts +1 -0
- package/build/esm/hex-util.js +11 -0
- package/build/esm/hex-util.js.map +1 -0
- package/build/esm/index.d.ts +8 -16
- package/build/esm/index.js +7 -11
- package/build/esm/index.js.map +1 -1
- package/build/esm/logging.js.map +1 -1
- package/build/esm/microbit-events.d.ts +67 -0
- package/build/esm/microbit-events.js +52 -0
- package/build/esm/microbit-events.js.map +1 -0
- package/build/esm/radio-bridge/connection.d.ts +52 -0
- package/build/esm/{usb-radio-bridge.js → radio-bridge/connection.js} +84 -96
- package/build/esm/radio-bridge/connection.js.map +1 -0
- package/build/esm/radio-bridge/index.d.ts +4 -0
- package/build/esm/radio-bridge/index.js +5 -0
- package/build/esm/radio-bridge/index.js.map +1 -0
- package/build/esm/{usb-serial-protocol.js → radio-bridge/serial-protocol.js} +1 -1
- package/build/esm/radio-bridge/serial-protocol.js.map +1 -0
- package/build/esm/service-events.d.ts +92 -15
- package/build/esm/service-events.js +5 -34
- package/build/esm/service-events.js.map +1 -1
- package/build/{cjs/hex-flash-data-source.d.ts → esm/universal-hex/flash-data-source.d.ts} +1 -1
- package/build/esm/{hex-flash-data-source.js → universal-hex/flash-data-source.js} +6 -3
- package/build/esm/universal-hex/flash-data-source.js.map +1 -0
- package/build/esm/universal-hex/index.d.ts +4 -0
- package/build/esm/universal-hex/index.js +5 -0
- package/build/esm/universal-hex/index.js.map +1 -0
- package/build/esm/usb/arm-debug.d.ts +137 -0
- package/build/esm/usb/arm-debug.js +409 -0
- package/build/esm/usb/arm-debug.js.map +1 -0
- package/build/{cjs → esm/usb}/board-serial-info.d.ts +2 -1
- package/build/esm/{board-serial-info.js → usb/board-serial-info.js} +10 -7
- package/build/esm/usb/board-serial-info.js.map +1 -0
- package/build/esm/usb/cdc-saturation.d.ts +36 -0
- package/build/esm/usb/cdc-saturation.js +148 -0
- package/build/esm/usb/cdc-saturation.js.map +1 -0
- package/build/esm/usb/cmsis-dap.d.ts +113 -0
- package/build/esm/usb/cmsis-dap.js +342 -0
- package/build/esm/usb/cmsis-dap.js.map +1 -0
- package/build/esm/usb/connection.d.ts +96 -0
- package/build/esm/{usb.js → usb/connection.js} +253 -168
- package/build/esm/usb/connection.js.map +1 -0
- package/build/esm/usb/cortex-m.d.ts +72 -0
- package/build/esm/usb/cortex-m.js +161 -0
- package/build/esm/usb/cortex-m.js.map +1 -0
- package/build/esm/usb/daplink.d.ts +69 -0
- package/build/esm/usb/daplink.js +231 -0
- package/build/esm/usb/daplink.js.map +1 -0
- package/build/esm/usb/device-wrapper.d.ts +34 -0
- package/build/esm/usb/device-wrapper.js +98 -0
- package/build/esm/usb/device-wrapper.js.map +1 -0
- package/build/esm/usb/index.d.ts +5 -0
- package/build/esm/usb/index.js +5 -0
- package/build/esm/usb/index.js.map +1 -0
- package/build/{cjs/usb-partial-flashing-utils.d.ts → esm/usb/partial-flashing-utils.d.ts} +6 -9
- package/build/esm/{usb-partial-flashing-utils.js → usb/partial-flashing-utils.js} +4 -44
- package/build/esm/usb/partial-flashing-utils.js.map +1 -0
- package/build/{cjs/usb-partial-flashing.d.ts → esm/usb/partial-flashing.d.ts} +37 -11
- package/build/esm/{usb-partial-flashing.js → usb/partial-flashing.js} +169 -110
- package/build/esm/usb/partial-flashing.js.map +1 -0
- package/build/esm/usb/promise-queue.js.map +1 -0
- package/build/esm/usb/serial-events.d.ts +16 -0
- package/build/esm/usb/serial-events.js +2 -0
- package/build/esm/usb/serial-events.js.map +1 -0
- package/build/esm/usb/transport.d.ts +42 -0
- package/build/esm/usb/transport.js +151 -0
- package/build/esm/usb/transport.js.map +1 -0
- package/package.json +61 -14
- package/build/cjs/accelerometer-service.js.map +0 -1
- package/build/cjs/accelerometer.d.ts +0 -9
- package/build/cjs/accelerometer.js +0 -16
- package/build/cjs/accelerometer.js.map +0 -1
- package/build/cjs/bluetooth-device-wrapper.js.map +0 -1
- package/build/cjs/bluetooth.d.ts +0 -112
- package/build/cjs/bluetooth.js +0 -457
- package/build/cjs/bluetooth.js.map +0 -1
- package/build/cjs/board-serial-info.js.map +0 -1
- package/build/cjs/button-service.js.map +0 -1
- package/build/cjs/buttons.d.ts +0 -10
- package/build/cjs/buttons.js +0 -22
- package/build/cjs/buttons.js.map +0 -1
- package/build/cjs/constants.d.ts +0 -48
- package/build/cjs/constants.js +0 -73
- package/build/cjs/constants.js.map +0 -1
- package/build/cjs/device-information-service.js +0 -34
- package/build/cjs/device-information-service.js.map +0 -1
- package/build/cjs/dfu-service.js.map +0 -1
- package/build/cjs/flashing/flashing-full.js.map +0 -1
- package/build/cjs/flashing/flashing-makecode.d.ts +0 -6
- package/build/cjs/flashing/flashing-makecode.js.map +0 -1
- package/build/cjs/flashing/flashing-partial.d.ts +0 -9
- package/build/cjs/flashing/flashing-partial.js +0 -98
- package/build/cjs/flashing/flashing-partial.js.map +0 -1
- package/build/cjs/flashing/flashing-v1.js.map +0 -1
- package/build/cjs/flashing/nordic-dfu.js.map +0 -1
- package/build/cjs/flashing/zip.js.map +0 -1
- package/build/cjs/hex-flash-data-source.js.map +0 -1
- package/build/cjs/led-service.js.map +0 -1
- package/build/cjs/led.d.ts +0 -6
- package/build/cjs/led.js.map +0 -1
- package/build/cjs/magnetometer-service.js.map +0 -1
- package/build/cjs/magnetometer.d.ts +0 -9
- package/build/cjs/magnetometer.js +0 -16
- package/build/cjs/magnetometer.js.map +0 -1
- package/build/cjs/partial-flashing-service.js.map +0 -1
- package/build/cjs/promise-queue.js.map +0 -1
- package/build/cjs/serial-events.d.ts +0 -20
- package/build/cjs/serial-events.js +0 -69
- package/build/cjs/serial-events.js.map +0 -1
- package/build/cjs/setupTests.d.ts +0 -6
- package/build/cjs/setupTests.js.map +0 -1
- package/build/cjs/uart-service.js.map +0 -1
- package/build/cjs/uart.d.ts +0 -4
- package/build/cjs/uart.js +0 -16
- package/build/cjs/uart.js.map +0 -1
- package/build/cjs/usb-device-wrapper.d.ts +0 -47
- package/build/cjs/usb-device-wrapper.js +0 -437
- package/build/cjs/usb-device-wrapper.js.map +0 -1
- package/build/cjs/usb-partial-flashing-utils.js.map +0 -1
- package/build/cjs/usb-partial-flashing.js.map +0 -1
- package/build/cjs/usb-radio-bridge.d.ts +0 -24
- package/build/cjs/usb-radio-bridge.js.map +0 -1
- package/build/cjs/usb-serial-protocol.js.map +0 -1
- package/build/cjs/usb.d.ts +0 -66
- package/build/cjs/usb.js.map +0 -1
- package/build/esm/accelerometer-service.js.map +0 -1
- package/build/esm/accelerometer.d.ts +0 -9
- package/build/esm/accelerometer.js +0 -12
- package/build/esm/accelerometer.js.map +0 -1
- package/build/esm/bluetooth-device-wrapper.js.map +0 -1
- package/build/esm/bluetooth-profile.js.map +0 -1
- package/build/esm/bluetooth.d.ts +0 -112
- package/build/esm/bluetooth.js +0 -427
- package/build/esm/bluetooth.js.map +0 -1
- package/build/esm/board-serial-info.js.map +0 -1
- package/build/esm/button-service.js.map +0 -1
- package/build/esm/buttons.d.ts +0 -10
- package/build/esm/buttons.js +0 -18
- package/build/esm/buttons.js.map +0 -1
- package/build/esm/constants.d.ts +0 -48
- package/build/esm/constants.js +0 -70
- package/build/esm/constants.js.map +0 -1
- package/build/esm/device-information-service.js +0 -30
- package/build/esm/device-information-service.js.map +0 -1
- package/build/esm/dfu-service.js.map +0 -1
- package/build/esm/flashing/flashing-full.js.map +0 -1
- package/build/esm/flashing/flashing-makecode.d.ts +0 -6
- package/build/esm/flashing/flashing-makecode.js.map +0 -1
- package/build/esm/flashing/flashing-partial.d.ts +0 -9
- package/build/esm/flashing/flashing-partial.js +0 -95
- package/build/esm/flashing/flashing-partial.js.map +0 -1
- package/build/esm/flashing/flashing-v1.js.map +0 -1
- package/build/esm/flashing/nordic-dfu.js.map +0 -1
- package/build/esm/flashing/zip.js.map +0 -1
- package/build/esm/hex-flash-data-source.js.map +0 -1
- package/build/esm/led-service.js.map +0 -1
- package/build/esm/led.d.ts +0 -6
- package/build/esm/led.js +0 -2
- package/build/esm/led.js.map +0 -1
- package/build/esm/magnetometer-service.js.map +0 -1
- package/build/esm/magnetometer.d.ts +0 -9
- package/build/esm/magnetometer.js +0 -12
- package/build/esm/magnetometer.js.map +0 -1
- package/build/esm/partial-flashing-service.js.map +0 -1
- package/build/esm/promise-queue.js.map +0 -1
- package/build/esm/serial-events.d.ts +0 -20
- package/build/esm/serial-events.js +0 -61
- package/build/esm/serial-events.js.map +0 -1
- package/build/esm/setupTests.d.ts +0 -6
- package/build/esm/setupTests.js.map +0 -1
- package/build/esm/uart-service.js.map +0 -1
- package/build/esm/uart.d.ts +0 -4
- package/build/esm/uart.js +0 -12
- package/build/esm/uart.js.map +0 -1
- package/build/esm/usb-device-wrapper.d.ts +0 -47
- package/build/esm/usb-device-wrapper.js +0 -410
- package/build/esm/usb-device-wrapper.js.map +0 -1
- package/build/esm/usb-partial-flashing-utils.js.map +0 -1
- package/build/esm/usb-partial-flashing.js.map +0 -1
- package/build/esm/usb-radio-bridge.d.ts +0 -24
- package/build/esm/usb-radio-bridge.js.map +0 -1
- package/build/esm/usb-serial-protocol.js.map +0 -1
- package/build/esm/usb.d.ts +0 -66
- package/build/esm/usb.js.map +0 -1
- package/typedoc.json +0 -14
- /package/build/cjs/{flashing → bluetooth/flashing}/flashing-v1.d.ts +0 -0
- /package/build/cjs/{flashing → bluetooth/flashing}/flashing-v1.js +0 -0
- /package/build/cjs/{flashing → bluetooth/flashing}/zip.d.ts +0 -0
- /package/build/cjs/{flashing → bluetooth/flashing}/zip.js +0 -0
- /package/build/cjs/{dfu-service.d.ts → bluetooth/services/dfu-service.d.ts} +0 -0
- /package/build/cjs/{usb-serial-protocol.d.ts → radio-bridge/serial-protocol.d.ts} +0 -0
- /package/build/cjs/{promise-queue.d.ts → usb/promise-queue.d.ts} +0 -0
- /package/build/cjs/{promise-queue.js → usb/promise-queue.js} +0 -0
- /package/build/esm/{flashing → bluetooth/flashing}/flashing-v1.d.ts +0 -0
- /package/build/esm/{flashing → bluetooth/flashing}/flashing-v1.js +0 -0
- /package/build/esm/{flashing → bluetooth/flashing}/zip.d.ts +0 -0
- /package/build/esm/{flashing → bluetooth/flashing}/zip.js +0 -0
- /package/build/esm/{dfu-service.d.ts → bluetooth/services/dfu-service.d.ts} +0 -0
- /package/build/esm/{usb-serial-protocol.d.ts → radio-bridge/serial-protocol.d.ts} +0 -0
- /package/build/esm/{promise-queue.d.ts → usb/promise-queue.d.ts} +0 -0
- /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
|
+
}
|