@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.
- 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/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 +137 -0
- package/build/cjs/{bluetooth.js → bluetooth/connection.js} +158 -106
- package/build/cjs/bluetooth/connection.js.map +1 -0
- package/build/cjs/{bluetooth.test.js → bluetooth/connection.test.js} +9 -9
- package/build/cjs/bluetooth/connection.test.js.map +1 -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} +11 -11
- package/build/cjs/{bluetooth-device-wrapper.js → bluetooth/device-wrapper.js} +38 -42
- package/build/cjs/bluetooth/device-wrapper.js.map +1 -0
- package/build/cjs/{flashing → 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/{flashing → bluetooth/flashing}/flashing-makecode.d.ts +1 -1
- package/build/cjs/bluetooth/flashing/flashing-makecode.js.map +1 -0
- package/build/cjs/{flashing → bluetooth/flashing}/flashing-makecode.test.js +3 -3
- package/build/cjs/bluetooth/flashing/flashing-makecode.test.js.map +1 -0
- package/build/cjs/{flashing → bluetooth/flashing}/flashing-partial.d.ts +2 -2
- package/build/cjs/{flashing → bluetooth/flashing}/flashing-partial.js +7 -6
- 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 +15 -11
- 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/flashing/zip.test.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.js → bluetooth/profile.js} +1 -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/{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/{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 +145 -123
- package/build/cjs/device.js +47 -128
- 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/events.test.js +54 -48
- package/build/cjs/events.test.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 +7 -17
- package/build/cjs/index.js +6 -28
- package/build/cjs/index.js.map +1 -1
- package/build/cjs/radio-bridge/connection.d.ts +52 -0
- package/build/cjs/{usb-radio-bridge.js → radio-bridge/connection.js} +69 -37
- 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 +43 -14
- 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 -2
- package/build/cjs/{hex-flash-data-source.js → universal-hex/flash-data-source.js} +7 -15
- 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/cjs/usb/arm-debug.test.js +333 -0
- package/build/cjs/usb/arm-debug.test.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/{board-serial-info.test.js → usb/board-serial-info.test.js} +2 -4
- package/build/cjs/usb/board-serial-info.test.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/cmsis-dap.test.js +350 -0
- package/build/cjs/usb/cmsis-dap.test.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.test.js → usb/connection.test.js} +52 -42
- package/build/cjs/usb/connection.test.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/cortex-m.test.js +217 -0
- package/build/cjs/usb/cortex-m.test.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/daplink.test.js +290 -0
- package/build/cjs/usb/daplink.test.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 -135
- package/build/cjs/usb/partial-flashing.js.map +1 -0
- package/build/cjs/usb/promise-queue.js.map +1 -0
- package/build/cjs/usb/promise-queue.test.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/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 +137 -0
- package/build/esm/{bluetooth.js → bluetooth/connection.js} +152 -100
- package/build/esm/bluetooth/connection.js.map +1 -0
- package/build/esm/{bluetooth.test.js → bluetooth/connection.test.js} +9 -9
- package/build/esm/bluetooth/connection.test.js.map +1 -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} +11 -11
- package/build/esm/{bluetooth-device-wrapper.js → bluetooth/device-wrapper.js} +35 -39
- package/build/esm/bluetooth/device-wrapper.js.map +1 -0
- package/build/esm/{flashing → 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/{flashing → bluetooth/flashing}/flashing-makecode.d.ts +1 -1
- package/build/esm/bluetooth/flashing/flashing-makecode.js.map +1 -0
- package/build/esm/{flashing → bluetooth/flashing}/flashing-makecode.test.js +2 -2
- package/build/esm/bluetooth/flashing/flashing-makecode.test.js.map +1 -0
- package/build/esm/{flashing → bluetooth/flashing}/flashing-partial.d.ts +2 -2
- package/build/esm/{flashing → bluetooth/flashing}/flashing-partial.js +6 -5
- 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 +15 -11
- 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/flashing/zip.test.d.ts +1 -0
- package/build/esm/bluetooth/flashing/zip.test.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.js → bluetooth/profile.js} +1 -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/{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/{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 +145 -123
- package/build/esm/device.js +45 -122
- 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/events.test.js +55 -49
- package/build/esm/events.test.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 +7 -17
- package/build/esm/index.js +6 -11
- package/build/esm/index.js.map +1 -1
- package/build/esm/radio-bridge/connection.d.ts +52 -0
- package/build/esm/{usb-radio-bridge.js → radio-bridge/connection.js} +69 -37
- 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 +43 -14
- 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 -2
- package/build/esm/{hex-flash-data-source.js → universal-hex/flash-data-source.js} +6 -13
- 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/esm/usb/arm-debug.test.d.ts +1 -0
- package/build/esm/usb/arm-debug.test.js +331 -0
- package/build/esm/usb/arm-debug.test.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/board-serial-info.test.d.ts +1 -0
- package/build/esm/{board-serial-info.test.js → usb/board-serial-info.test.js} +2 -4
- package/build/esm/usb/board-serial-info.test.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/cmsis-dap.test.d.ts +1 -0
- package/build/esm/usb/cmsis-dap.test.js +348 -0
- package/build/esm/usb/cmsis-dap.test.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/connection.test.d.ts +1 -0
- package/build/esm/{usb.test.js → usb/connection.test.js} +47 -37
- package/build/esm/usb/connection.test.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/cortex-m.test.d.ts +1 -0
- package/build/esm/usb/cortex-m.test.js +215 -0
- package/build/esm/usb/cortex-m.test.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/daplink.test.d.ts +1 -0
- package/build/esm/usb/daplink.test.js +288 -0
- package/build/esm/usb/daplink.test.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 -111
- package/build/esm/usb/partial-flashing.js.map +1 -0
- package/build/esm/usb/promise-queue.js.map +1 -0
- package/build/esm/usb/promise-queue.test.d.ts +1 -0
- package/build/esm/usb/promise-queue.test.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 +43 -2
- 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 -114
- package/build/cjs/bluetooth.js.map +0 -1
- package/build/cjs/bluetooth.test.js.map +0 -1
- package/build/cjs/board-serial-info.js.map +0 -1
- package/build/cjs/board-serial-info.test.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-bond-state.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.js.map +0 -1
- package/build/cjs/flashing/flashing-makecode.test.js.map +0 -1
- 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/flashing/zip.test.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/promise-queue.test.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/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/cjs/usb.test.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 -114
- package/build/esm/bluetooth.js.map +0 -1
- package/build/esm/bluetooth.test.js.map +0 -1
- package/build/esm/board-serial-info.js.map +0 -1
- package/build/esm/board-serial-info.test.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-bond-state.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.js.map +0 -1
- package/build/esm/flashing/flashing-makecode.test.js.map +0 -1
- 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/flashing/zip.test.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/promise-queue.test.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/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/build/esm/usb.test.js.map +0 -1
- /package/build/cjs/{bluetooth.test.d.ts → bluetooth/connection.test.d.ts} +0 -0
- /package/build/cjs/{device-bond-state.d.ts → bluetooth/device-bond-state.d.ts} +0 -0
- /package/build/cjs/{device-bond-state.js → bluetooth/device-bond-state.js} +0 -0
- /package/build/cjs/{flashing → bluetooth/flashing}/flashing-makecode.js +0 -0
- /package/build/cjs/{flashing → bluetooth/flashing}/flashing-makecode.test.d.ts +0 -0
- /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/{flashing → bluetooth/flashing}/zip.test.d.ts +0 -0
- /package/build/cjs/{flashing → bluetooth/flashing}/zip.test.js +0 -0
- /package/build/cjs/{bluetooth-profile.d.ts → bluetooth/profile.d.ts} +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/{board-serial-info.test.d.ts → usb/arm-debug.test.d.ts} +0 -0
- /package/build/{esm → cjs/usb}/board-serial-info.test.d.ts +0 -0
- /package/build/cjs/{promise-queue.test.d.ts → usb/cmsis-dap.test.d.ts} +0 -0
- /package/build/cjs/{usb.test.d.ts → usb/connection.test.d.ts} +0 -0
- /package/build/{esm/bluetooth.test.d.ts → cjs/usb/cortex-m.test.d.ts} +0 -0
- /package/build/{esm/flashing/flashing-makecode.test.d.ts → cjs/usb/daplink.test.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 → cjs/usb}/promise-queue.test.d.ts +0 -0
- /package/build/cjs/{promise-queue.test.js → usb/promise-queue.test.js} +0 -0
- /package/build/esm/{flashing/zip.test.d.ts → bluetooth/connection.test.d.ts} +0 -0
- /package/build/esm/{device-bond-state.d.ts → bluetooth/device-bond-state.d.ts} +0 -0
- /package/build/esm/{device-bond-state.js → bluetooth/device-bond-state.js} +0 -0
- /package/build/esm/{flashing → bluetooth/flashing}/flashing-makecode.js +0 -0
- /package/build/esm/{usb.test.d.ts → bluetooth/flashing/flashing-makecode.test.d.ts} +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/{flashing → bluetooth/flashing}/zip.test.js +0 -0
- /package/build/esm/{bluetooth-profile.d.ts → bluetooth/profile.d.ts} +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
- /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
|
|
33
|
-
const
|
|
34
|
-
const
|
|
35
|
-
const
|
|
36
|
-
const
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
|
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.
|
|
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.
|
|
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.
|
|
182
|
-
this.setStatus(device_js_1.ConnectionStatus.
|
|
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.
|
|
187
|
-
this.setStatus(device_js_1.ConnectionStatus.
|
|
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.
|
|
231
|
+
this.dispatchEvent("status", {
|
|
232
|
+
status: newStatus,
|
|
233
|
+
previousStatus,
|
|
234
|
+
});
|
|
226
235
|
}
|
|
227
236
|
statusFromDelegate() {
|
|
228
|
-
return this.delegate.status == device_js_1.ConnectionStatus.
|
|
229
|
-
? device_js_1.ConnectionStatus.
|
|
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,
|
|
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, "
|
|
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",
|
|
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("
|
|
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
|
|
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
|
|
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("
|
|
427
|
+
this.delegate.removeEventListener("backgrounderror", this.backgroundErrorListener);
|
|
407
428
|
if (disconnect) {
|
|
408
429
|
await this.delegate.disconnect();
|
|
409
430
|
}
|
|
410
|
-
|
|
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.
|
|
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
|
|
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
|
|
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=
|
|
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,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=
|
|
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
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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
|
|
14
|
-
|
|
7
|
+
export declare const ButtonState: {
|
|
8
|
+
readonly NotPressed: 0;
|
|
9
|
+
readonly ShortPress: 1;
|
|
10
|
+
readonly LongPress: 2;
|
|
15
11
|
};
|
|
16
|
-
export type
|
|
17
|
-
export type
|
|
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.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
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":";;;
|
|
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,20 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createUniversalHexFlashDataSource =
|
|
4
|
-
|
|
5
|
-
|
|
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=
|
|
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,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
|
+
}
|