@microbit/microbit-connection 0.9.0-apps.alpha.16 → 0.9.0-apps.alpha.17
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/{esm/bluetooth.d.ts → cjs/bluetooth/connection.d.ts} +30 -26
- package/build/cjs/{bluetooth.js → bluetooth/connection.js} +147 -104
- 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} +35 -35
- 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 +4 -4
- 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 +5 -5
- 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 +11 -8
- 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} +16 -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} +15 -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/{device-information-service.js → bluetooth/services/device-information-service.js} +2 -2
- 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} +7 -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} +18 -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} +12 -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 +82 -75
- package/build/cjs/device.js +40 -126
- package/build/cjs/device.js.map +1 -1
- package/build/cjs/events.d.ts +9 -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 -16
- package/build/cjs/index.js +6 -26
- package/build/cjs/index.js.map +1 -1
- package/build/cjs/radio-bridge/connection.d.ts +39 -0
- package/build/cjs/{usb-radio-bridge.js → radio-bridge/connection.js} +39 -25
- 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 +42 -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 +81 -0
- package/build/cjs/{usb.js → usb/connection.js} +243 -166
- 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} +15 -7
- package/build/cjs/{usb-partial-flashing.js → usb/partial-flashing.js} +64 -119
- 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 +21 -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/{cjs/bluetooth.d.ts → esm/bluetooth/connection.d.ts} +30 -26
- package/build/esm/{bluetooth.js → bluetooth/connection.js} +141 -98
- 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} +32 -32
- 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 +4 -4
- 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 +4 -4
- 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 +11 -8
- 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} +10 -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} +10 -9
- 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/{device-information-service.js → bluetooth/services/device-information-service.js} +1 -1
- 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} +1 -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} +10 -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} +8 -5
- 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 +82 -75
- package/build/esm/device.js +38 -120
- package/build/esm/device.js.map +1 -1
- package/build/esm/events.d.ts +9 -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 -16
- package/build/esm/index.js +6 -10
- package/build/esm/index.js.map +1 -1
- package/build/esm/radio-bridge/connection.d.ts +39 -0
- package/build/esm/{usb-radio-bridge.js → radio-bridge/connection.js} +39 -25
- 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 +42 -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 +81 -0
- package/build/esm/{usb.js → usb/connection.js} +239 -161
- 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} +15 -7
- package/build/esm/{usb-partial-flashing.js → usb/partial-flashing.js} +62 -94
- 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 +21 -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.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.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.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.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
|
@@ -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): 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
|
+
}
|
|
@@ -0,0 +1,409 @@
|
|
|
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 { DeviceError } from "../device.js";
|
|
57
|
+
import { ABORT_ALL, AP, DapResponseMismatchError, DP, READ, WRITE, } from "./cmsis-dap.js";
|
|
58
|
+
// ---------------------------------------------------------------------------
|
|
59
|
+
// Constants
|
|
60
|
+
// ---------------------------------------------------------------------------
|
|
61
|
+
// DP registers
|
|
62
|
+
const DP_ABORT = 0x0;
|
|
63
|
+
const DP_DPIDR = 0x0;
|
|
64
|
+
const DP_CTRL_STAT = 0x4;
|
|
65
|
+
const DP_SELECT = 0x8;
|
|
66
|
+
// AP registers (values are byte addresses, pre-shifted to match the DAP
|
|
67
|
+
// transfer operation encoding where bits [3:2] carry A[3:2])
|
|
68
|
+
const AP_CSW = 0x00;
|
|
69
|
+
const AP_TAR = 0x04;
|
|
70
|
+
const AP_DRW = 0x0c;
|
|
71
|
+
// CSW mask values
|
|
72
|
+
const CSW_SIZE32 = 1 << 1;
|
|
73
|
+
const CSW_ADDRINC_SINGLE = 1 << 4;
|
|
74
|
+
const CSW_DBGSTATUS = 1 << 6;
|
|
75
|
+
const CSW_RESERVED = 1 << 24;
|
|
76
|
+
const CSW_HPROT1 = 1 << 25;
|
|
77
|
+
const CSW_MASTERTYPE = 1 << 29;
|
|
78
|
+
const CSW_VALUE = CSW_ADDRINC_SINGLE |
|
|
79
|
+
CSW_DBGSTATUS |
|
|
80
|
+
CSW_RESERVED |
|
|
81
|
+
CSW_HPROT1 |
|
|
82
|
+
CSW_MASTERTYPE;
|
|
83
|
+
// Bank select masks
|
|
84
|
+
const APSEL = 0xff000000;
|
|
85
|
+
const APBANKSEL = 0x000000f0;
|
|
86
|
+
// CTRL/STAT register bits
|
|
87
|
+
const CSYSPWRUPREQ = 1 << 30;
|
|
88
|
+
const CDBGPWRUPREQ = 1 << 28;
|
|
89
|
+
const CSYSPWRUPACK = 1 << 31;
|
|
90
|
+
const CDBGPWRUPACK = 1 << 29;
|
|
91
|
+
// TAR auto-increment page size (1KB, implementation-defined minimum)
|
|
92
|
+
const AUTOINC_PAGESIZE = 1 << 10;
|
|
93
|
+
// Clock frequency (10 MHz)
|
|
94
|
+
const CLOCK_FREQUENCY = 10_000_000;
|
|
95
|
+
// Wait delay for polling loops
|
|
96
|
+
const WAIT_DELAY = 100;
|
|
97
|
+
// ---------------------------------------------------------------------------
|
|
98
|
+
// Utilities
|
|
99
|
+
// ---------------------------------------------------------------------------
|
|
100
|
+
export async function waitFor(fn, timeout = 10_000) {
|
|
101
|
+
const deadline = timeout > 0 ? Date.now() + timeout : 0;
|
|
102
|
+
while (true) {
|
|
103
|
+
if (await fn())
|
|
104
|
+
return;
|
|
105
|
+
if (deadline && Date.now() > deadline) {
|
|
106
|
+
throw new DeviceError({
|
|
107
|
+
code: "timeout-error",
|
|
108
|
+
message: "Wait timed out",
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
await new Promise((resolve) => setTimeout(resolve, WAIT_DELAY));
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
function concatUint32Arrays(arrays) {
|
|
115
|
+
if (arrays.length === 1)
|
|
116
|
+
return arrays[0];
|
|
117
|
+
let length = 0;
|
|
118
|
+
for (const a of arrays)
|
|
119
|
+
length += a.length;
|
|
120
|
+
const result = new Uint32Array(length);
|
|
121
|
+
let offset = 0;
|
|
122
|
+
for (const a of arrays) {
|
|
123
|
+
result.set(a, offset);
|
|
124
|
+
offset += a.length;
|
|
125
|
+
}
|
|
126
|
+
return result;
|
|
127
|
+
}
|
|
128
|
+
export class ArmDebugSwd {
|
|
129
|
+
constructor(dap, logging) {
|
|
130
|
+
Object.defineProperty(this, "dap", {
|
|
131
|
+
enumerable: true,
|
|
132
|
+
configurable: true,
|
|
133
|
+
writable: true,
|
|
134
|
+
value: dap
|
|
135
|
+
});
|
|
136
|
+
Object.defineProperty(this, "logging", {
|
|
137
|
+
enumerable: true,
|
|
138
|
+
configurable: true,
|
|
139
|
+
writable: true,
|
|
140
|
+
value: logging
|
|
141
|
+
});
|
|
142
|
+
Object.defineProperty(this, "swdConnected", {
|
|
143
|
+
enumerable: true,
|
|
144
|
+
configurable: true,
|
|
145
|
+
writable: true,
|
|
146
|
+
value: false
|
|
147
|
+
});
|
|
148
|
+
// ADI state (register caching)
|
|
149
|
+
Object.defineProperty(this, "selectedAddress", {
|
|
150
|
+
enumerable: true,
|
|
151
|
+
configurable: true,
|
|
152
|
+
writable: true,
|
|
153
|
+
value: void 0
|
|
154
|
+
});
|
|
155
|
+
Object.defineProperty(this, "cswValue", {
|
|
156
|
+
enumerable: true,
|
|
157
|
+
configurable: true,
|
|
158
|
+
writable: true,
|
|
159
|
+
value: void 0
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
get isOpen() {
|
|
163
|
+
return this.dap.isOpen;
|
|
164
|
+
}
|
|
165
|
+
// ---- SWD lifecycle ----
|
|
166
|
+
/**
|
|
167
|
+
* Initialize SWD: connect to the target, set up the debug port,
|
|
168
|
+
* and power up the debug and system domains.
|
|
169
|
+
*/
|
|
170
|
+
async connectOnce() {
|
|
171
|
+
if (this.swdConnected)
|
|
172
|
+
return;
|
|
173
|
+
await this.dap.open();
|
|
174
|
+
// SWD protocol setup. On failure the transport is left open so the
|
|
175
|
+
// caller can drain stale responses and retry without re-opening.
|
|
176
|
+
try {
|
|
177
|
+
await this.dap.swjClock(CLOCK_FREQUENCY);
|
|
178
|
+
await this.dap.connect();
|
|
179
|
+
}
|
|
180
|
+
catch (error) {
|
|
181
|
+
try {
|
|
182
|
+
await this.dap.clearAbort();
|
|
183
|
+
}
|
|
184
|
+
catch {
|
|
185
|
+
/* ignore */
|
|
186
|
+
}
|
|
187
|
+
throw error;
|
|
188
|
+
}
|
|
189
|
+
await this.dap.configureTransfer(0, 100, 0);
|
|
190
|
+
// Select SWD protocol
|
|
191
|
+
await this.dap.swjSequence(new Uint8Array([0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff]));
|
|
192
|
+
await this.dap.swjSequence(new Uint8Array([0x9e, 0xe7]));
|
|
193
|
+
await this.dap.swjSequence(new Uint8Array([0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff]));
|
|
194
|
+
await this.dap.swjSequence(new Uint8Array([0x00]));
|
|
195
|
+
this.swdConnected = true;
|
|
196
|
+
// Initialize debug port and power up
|
|
197
|
+
try {
|
|
198
|
+
await this.readDP(DP_DPIDR);
|
|
199
|
+
await this.transferSequence([
|
|
200
|
+
this.writeDPOps(DP_ABORT, ABORT_ALL),
|
|
201
|
+
this.writeDPOps(DP_SELECT, AP_CSW),
|
|
202
|
+
this.writeDPOps(DP_CTRL_STAT, CSYSPWRUPREQ | CDBGPWRUPREQ),
|
|
203
|
+
]);
|
|
204
|
+
const mask = CDBGPWRUPACK | CSYSPWRUPACK;
|
|
205
|
+
await waitFor(async () => {
|
|
206
|
+
const status = await this.readDP(DP_CTRL_STAT);
|
|
207
|
+
return (status & mask) === mask;
|
|
208
|
+
}, 5000);
|
|
209
|
+
}
|
|
210
|
+
catch (error) {
|
|
211
|
+
await this.disconnect();
|
|
212
|
+
throw error;
|
|
213
|
+
}
|
|
214
|
+
this.logging.log("SWD connected");
|
|
215
|
+
}
|
|
216
|
+
async connect(maxRetries = 3) {
|
|
217
|
+
let lastError;
|
|
218
|
+
for (let attempt = 0; attempt < maxRetries; attempt++) {
|
|
219
|
+
try {
|
|
220
|
+
if (attempt > 0) {
|
|
221
|
+
this.logging.log(`Connection retry attempt ${attempt + 1}/${maxRetries}`);
|
|
222
|
+
await this.dap.drainStaleResponses();
|
|
223
|
+
}
|
|
224
|
+
await this.connectOnce();
|
|
225
|
+
return;
|
|
226
|
+
}
|
|
227
|
+
catch (e) {
|
|
228
|
+
if (e instanceof DapResponseMismatchError) {
|
|
229
|
+
lastError = e;
|
|
230
|
+
this.logging.log(`Stale response during connect: ${e.message}`);
|
|
231
|
+
continue;
|
|
232
|
+
}
|
|
233
|
+
throw e;
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
throw lastError || new Error("Connection failed after retries");
|
|
237
|
+
}
|
|
238
|
+
resetState() {
|
|
239
|
+
this.swdConnected = false;
|
|
240
|
+
this.selectedAddress = undefined;
|
|
241
|
+
this.cswValue = undefined;
|
|
242
|
+
}
|
|
243
|
+
async disconnect() {
|
|
244
|
+
if (!this.swdConnected)
|
|
245
|
+
return;
|
|
246
|
+
try {
|
|
247
|
+
await this.dap.disconnect();
|
|
248
|
+
}
|
|
249
|
+
catch {
|
|
250
|
+
this.logging.log("Disconnect failed, clearing abort");
|
|
251
|
+
try {
|
|
252
|
+
await this.dap.clearAbort();
|
|
253
|
+
}
|
|
254
|
+
catch {
|
|
255
|
+
/* ignore */
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
await this.dap.close();
|
|
259
|
+
this.resetState();
|
|
260
|
+
this.logging.log("SWD disconnected");
|
|
261
|
+
}
|
|
262
|
+
async reinit() {
|
|
263
|
+
this.logging.log("Reinitialising SWD");
|
|
264
|
+
this.resetState();
|
|
265
|
+
await this.connectOnce();
|
|
266
|
+
}
|
|
267
|
+
// ---- DP/AP register helpers ----
|
|
268
|
+
readDPOps(register) {
|
|
269
|
+
return [{ mode: READ, port: DP, register }];
|
|
270
|
+
}
|
|
271
|
+
writeDPOps(register, value) {
|
|
272
|
+
return [{ mode: WRITE, port: DP, register, value }];
|
|
273
|
+
}
|
|
274
|
+
readAPOps(register) {
|
|
275
|
+
const address = (register & APSEL) | (register & APBANKSEL);
|
|
276
|
+
return [
|
|
277
|
+
...this.writeDPOps(DP_SELECT, address),
|
|
278
|
+
{ mode: READ, port: AP, register },
|
|
279
|
+
];
|
|
280
|
+
}
|
|
281
|
+
writeAPOps(register, value) {
|
|
282
|
+
const address = (register & APSEL) | (register & APBANKSEL);
|
|
283
|
+
return [
|
|
284
|
+
...this.writeDPOps(DP_SELECT, address),
|
|
285
|
+
{ mode: WRITE, port: AP, register, value },
|
|
286
|
+
];
|
|
287
|
+
}
|
|
288
|
+
readMem32Ops(address) {
|
|
289
|
+
return [
|
|
290
|
+
...this.writeAPOps(AP_CSW, CSW_VALUE | CSW_SIZE32),
|
|
291
|
+
...this.writeAPOps(AP_TAR, address),
|
|
292
|
+
...this.readAPOps(AP_DRW),
|
|
293
|
+
];
|
|
294
|
+
}
|
|
295
|
+
writeMem32Ops(address, value) {
|
|
296
|
+
return [
|
|
297
|
+
...this.writeAPOps(AP_CSW, CSW_VALUE | CSW_SIZE32),
|
|
298
|
+
...this.writeAPOps(AP_TAR, address),
|
|
299
|
+
...this.writeAPOps(AP_DRW, value),
|
|
300
|
+
];
|
|
301
|
+
}
|
|
302
|
+
// ---- Transfer with register caching ----
|
|
303
|
+
/**
|
|
304
|
+
* Execute a batch of DAP transfer operations, deduplicating writes
|
|
305
|
+
* to DP_SELECT and AP_CSW that match cached state.
|
|
306
|
+
*/
|
|
307
|
+
async transfer(operations) {
|
|
308
|
+
const filtered = operations.filter((op) => {
|
|
309
|
+
if (op.mode !== WRITE)
|
|
310
|
+
return true;
|
|
311
|
+
if (op.port === DP && op.register === DP_SELECT) {
|
|
312
|
+
return op.value !== this.selectedAddress;
|
|
313
|
+
}
|
|
314
|
+
if (op.port === AP && op.register === AP_CSW) {
|
|
315
|
+
return op.value !== this.cswValue;
|
|
316
|
+
}
|
|
317
|
+
return true;
|
|
318
|
+
});
|
|
319
|
+
if (filtered.length === 0) {
|
|
320
|
+
return new Uint32Array(0);
|
|
321
|
+
}
|
|
322
|
+
try {
|
|
323
|
+
const result = await this.dap.transfer(filtered);
|
|
324
|
+
// Update cache on success
|
|
325
|
+
for (const op of filtered) {
|
|
326
|
+
if (op.mode !== WRITE)
|
|
327
|
+
continue;
|
|
328
|
+
if (op.port === DP && op.register === DP_SELECT) {
|
|
329
|
+
this.selectedAddress = op.value;
|
|
330
|
+
}
|
|
331
|
+
else if (op.port === AP && op.register === AP_CSW) {
|
|
332
|
+
this.cswValue = op.value;
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
return result;
|
|
336
|
+
}
|
|
337
|
+
catch (error) {
|
|
338
|
+
// Transfer failed — invalidate the cache
|
|
339
|
+
this.selectedAddress = undefined;
|
|
340
|
+
this.cswValue = undefined;
|
|
341
|
+
throw error;
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
async transferSequence(groups) {
|
|
345
|
+
const results = [];
|
|
346
|
+
for (const group of groups) {
|
|
347
|
+
const result = await this.transfer(group);
|
|
348
|
+
results.push(result);
|
|
349
|
+
}
|
|
350
|
+
return concatUint32Arrays(results);
|
|
351
|
+
}
|
|
352
|
+
// ---- Memory operations ----
|
|
353
|
+
async readDP(register) {
|
|
354
|
+
const result = await this.transfer(this.readDPOps(register));
|
|
355
|
+
return result[0];
|
|
356
|
+
}
|
|
357
|
+
async readMem32(address) {
|
|
358
|
+
const result = await this.transfer(this.readMem32Ops(address));
|
|
359
|
+
return result[0];
|
|
360
|
+
}
|
|
361
|
+
async writeMem32(address, value) {
|
|
362
|
+
await this.transfer(this.writeMem32Ops(address, value));
|
|
363
|
+
}
|
|
364
|
+
async readBlock(address, count) {
|
|
365
|
+
const results = [];
|
|
366
|
+
let remaining = count;
|
|
367
|
+
let addr = address;
|
|
368
|
+
while (remaining > 0) {
|
|
369
|
+
const nextPageOffset = AUTOINC_PAGESIZE - (addr % AUTOINC_PAGESIZE);
|
|
370
|
+
const chunkWords = Math.min(remaining, nextPageOffset / 4);
|
|
371
|
+
await this.transferSequence([
|
|
372
|
+
this.writeAPOps(AP_CSW, CSW_VALUE | CSW_SIZE32),
|
|
373
|
+
this.writeAPOps(AP_TAR, addr),
|
|
374
|
+
]);
|
|
375
|
+
let subRemaining = chunkWords;
|
|
376
|
+
while (subRemaining > 0) {
|
|
377
|
+
const subChunk = Math.min(subRemaining, Math.floor(this.dap.blockSize / 4));
|
|
378
|
+
const result = await this.dap.transferBlockRead(AP, AP_DRW, subChunk);
|
|
379
|
+
results.push(result);
|
|
380
|
+
subRemaining -= subChunk;
|
|
381
|
+
}
|
|
382
|
+
addr += chunkWords * 4;
|
|
383
|
+
remaining -= chunkWords;
|
|
384
|
+
}
|
|
385
|
+
return concatUint32Arrays(results);
|
|
386
|
+
}
|
|
387
|
+
async writeBlock(address, values) {
|
|
388
|
+
let index = 0;
|
|
389
|
+
let addr = address;
|
|
390
|
+
while (index < values.length) {
|
|
391
|
+
const nextPageOffset = AUTOINC_PAGESIZE - (addr % AUTOINC_PAGESIZE);
|
|
392
|
+
const chunkWords = Math.min(values.length - index, nextPageOffset / 4);
|
|
393
|
+
const chunk = values.slice(index, index + chunkWords);
|
|
394
|
+
await this.transferSequence([
|
|
395
|
+
this.writeAPOps(AP_CSW, CSW_VALUE | CSW_SIZE32),
|
|
396
|
+
this.writeAPOps(AP_TAR, addr),
|
|
397
|
+
]);
|
|
398
|
+
let subIndex = 0;
|
|
399
|
+
while (subIndex < chunk.length) {
|
|
400
|
+
const subChunk = chunk.slice(subIndex, subIndex + Math.floor(this.dap.blockSize / 4));
|
|
401
|
+
await this.dap.transferBlockWrite(AP, AP_DRW, subChunk);
|
|
402
|
+
subIndex += Math.floor(this.dap.blockSize / 4);
|
|
403
|
+
}
|
|
404
|
+
addr += chunkWords * 4;
|
|
405
|
+
index += chunkWords;
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
//# sourceMappingURL=arm-debug.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arm-debug.js","sourceRoot":"","sources":["../../../src/usb/arm-debug.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,EACL,SAAS,EACT,EAAE,EAGF,wBAAwB,EACxB,EAAE,EACF,IAAI,EACJ,KAAK,GACN,MAAM,gBAAgB,CAAC;AAExB,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E,eAAe;AACf,MAAM,QAAQ,GAAG,GAAG,CAAC;AACrB,MAAM,QAAQ,GAAG,GAAG,CAAC;AACrB,MAAM,YAAY,GAAG,GAAG,CAAC;AACzB,MAAM,SAAS,GAAG,GAAG,CAAC;AAEtB,wEAAwE;AACxE,6DAA6D;AAC7D,MAAM,MAAM,GAAG,IAAI,CAAC;AACpB,MAAM,MAAM,GAAG,IAAI,CAAC;AACpB,MAAM,MAAM,GAAG,IAAI,CAAC;AAEpB,kBAAkB;AAClB,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1B,MAAM,kBAAkB,GAAG,CAAC,IAAI,CAAC,CAAC;AAClC,MAAM,aAAa,GAAG,CAAC,IAAI,CAAC,CAAC;AAC7B,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,CAAC;AAC7B,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE,CAAC;AAC3B,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE,CAAC;AAC/B,MAAM,SAAS,GACb,kBAAkB;IAClB,aAAa;IACb,YAAY;IACZ,UAAU;IACV,cAAc,CAAC;AAEjB,oBAAoB;AACpB,MAAM,KAAK,GAAG,UAAU,CAAC;AACzB,MAAM,SAAS,GAAG,UAAU,CAAC;AAE7B,0BAA0B;AAC1B,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,CAAC;AAC7B,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,CAAC;AAC7B,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,CAAC;AAC7B,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,CAAC;AAE7B,qEAAqE;AACrE,MAAM,gBAAgB,GAAG,CAAC,IAAI,EAAE,CAAC;AAEjC,2BAA2B;AAC3B,MAAM,eAAe,GAAG,UAAU,CAAC;AAEnC,+BAA+B;AAC/B,MAAM,UAAU,GAAG,GAAG,CAAC;AAEvB,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,EAA0B,EAC1B,OAAO,GAAG,MAAM;IAEhB,MAAM,QAAQ,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACxD,OAAO,IAAI,EAAE,CAAC;QACZ,IAAI,MAAM,EAAE,EAAE;YAAE,OAAO;QACvB,IAAI,QAAQ,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;YACtC,MAAM,IAAI,WAAW,CAAC;gBACpB,IAAI,EAAE,eAAe;gBACrB,OAAO,EAAE,gBAAgB;aAC1B,CAAC,CAAC;QACL,CAAC;QACD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;IAClE,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAqB;IAC/C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;IAC1C,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,MAAM,CAAC,IAAI,MAAM;QAAE,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC;IAC3C,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC;IACvC,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QACtB,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC;IACrB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AA8DD,MAAM,OAAO,WAAW;IAOtB,YACW,GAAa,EACd,OAAgB;QADxB;;;;mBAAS,GAAG;WAAU;QACtB;;;;mBAAQ,OAAO;WAAS;QARlB;;;;mBAAe,KAAK;WAAC;QAE7B,+BAA+B;QACvB;;;;;WAAyB;QACzB;;;;;WAAkB;IAKvB,CAAC;IAEJ,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;IACzB,CAAC;IAED,0BAA0B;IAE1B;;;OAGG;IACK,KAAK,CAAC,WAAW;QACvB,IAAI,IAAI,CAAC,YAAY;YAAE,OAAO;QAE9B,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAEtB,mEAAmE;QACnE,iEAAiE;QACjE,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;YACzC,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QAC3B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;YAC9B,CAAC;YAAC,MAAM,CAAC;gBACP,YAAY;YACd,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;QAED,MAAM,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QAE5C,sBAAsB;QACtB,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CACxB,IAAI,UAAU,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAC3D,CAAC;QACF,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,UAAU,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QACzD,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CACxB,IAAI,UAAU,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAC3D,CAAC;QACF,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAEnD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QAEzB,qCAAqC;QACrC,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAE5B,MAAM,IAAI,CAAC,gBAAgB,CAAC;gBAC1B,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,SAAS,CAAC;gBACpC,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,CAAC;gBAClC,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,YAAY,GAAG,YAAY,CAAC;aAC3D,CAAC,CAAC;YAEH,MAAM,IAAI,GAAG,YAAY,GAAG,YAAY,CAAC;YACzC,MAAM,OAAO,CAAC,KAAK,IAAI,EAAE;gBACvB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;gBAC/C,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC;YAClC,CAAC,EAAE,IAAI,CAAC,CAAC;QACX,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;YACxB,MAAM,KAAK,CAAC;QACd,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC;QAC1B,IAAI,SAA4B,CAAC;QACjC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC;YACtD,IAAI,CAAC;gBACH,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;oBAChB,IAAI,CAAC,OAAO,CAAC,GAAG,CACd,4BAA4B,OAAO,GAAG,CAAC,IAAI,UAAU,EAAE,CACxD,CAAC;oBACF,MAAM,IAAI,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC;gBACvC,CAAC;gBACD,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;gBACzB,OAAO;YACT,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,IAAI,CAAC,YAAY,wBAAwB,EAAE,CAAC;oBAC1C,SAAS,GAAG,CAAC,CAAC;oBACd,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;oBAChE,SAAS;gBACX,CAAC;gBACD,MAAM,CAAC,CAAC;YACV,CAAC;QACH,CAAC;QACD,MAAM,SAAS,IAAI,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IAClE,CAAC;IAED,UAAU;QACR,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;QACjC,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,UAAU;QACd,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE,OAAO;QAC/B,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;QAC9B,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;YACtD,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;YAC9B,CAAC;YAAC,MAAM,CAAC;gBACP,YAAY;YACd,CAAC;QACH,CAAC;QACD,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;QACvB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,MAAM;QACV,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QACvC,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;IAC3B,CAAC;IAED,mCAAmC;IAE3B,SAAS,CAAC,QAAgB;QAChC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC9C,CAAC;IAEO,UAAU,CAAC,QAAgB,EAAE,KAAa;QAChD,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;IACtD,CAAC;IAEO,SAAS,CAAC,QAAgB;QAChC,MAAM,OAAO,GAAG,CAAC,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC;QAC5D,OAAO;YACL,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC;YACtC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE;SACnC,CAAC;IACJ,CAAC;IAEO,UAAU,CAAC,QAAgB,EAAE,KAAa;QAChD,MAAM,OAAO,GAAG,CAAC,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC;QAC5D,OAAO;YACL,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC;YACtC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE;SAC3C,CAAC;IACJ,CAAC;IAED,YAAY,CAAC,OAAe;QAC1B,OAAO;YACL,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,SAAS,GAAG,UAAU,CAAC;YAClD,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC;YACnC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;SAC1B,CAAC;IACJ,CAAC;IAED,aAAa,CAAC,OAAe,EAAE,KAAa;QAC1C,OAAO;YACL,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,SAAS,GAAG,UAAU,CAAC;YAClD,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC;YACnC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC;SAClC,CAAC;IACJ,CAAC;IAED,2CAA2C;IAE3C;;;OAGG;IACK,KAAK,CAAC,QAAQ,CAAC,UAA0B;QAC/C,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE;YACxC,IAAI,EAAE,CAAC,IAAI,KAAK,KAAK;gBAAE,OAAO,IAAI,CAAC;YACnC,IAAI,EAAE,CAAC,IAAI,KAAK,EAAE,IAAI,EAAE,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAChD,OAAO,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,eAAe,CAAC;YAC3C,CAAC;YACD,IAAI,EAAE,CAAC,IAAI,KAAK,EAAE,IAAI,EAAE,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;gBAC7C,OAAO,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,QAAQ,CAAC;YACpC,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAEjD,0BAA0B;YAC1B,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;gBAC1B,IAAI,EAAE,CAAC,IAAI,KAAK,KAAK;oBAAE,SAAS;gBAChC,IAAI,EAAE,CAAC,IAAI,KAAK,EAAE,IAAI,EAAE,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;oBAChD,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC,KAAK,CAAC;gBAClC,CAAC;qBAAM,IAAI,EAAE,CAAC,IAAI,KAAK,EAAE,IAAI,EAAE,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;oBACpD,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,KAAK,CAAC;gBAC3B,CAAC;YACH,CAAC;YAED,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,yCAAyC;YACzC,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;YACjC,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;YAC1B,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,MAAwB;QAC7C,MAAM,OAAO,GAAkB,EAAE,CAAC;QAClC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC1C,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvB,CAAC;QACD,OAAO,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAED,8BAA8B;IAEtB,KAAK,CAAC,MAAM,CAAC,QAAgB;QACnC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC7D,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,OAAe;QAC7B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;QAC/D,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,OAAe,EAAE,KAAa;QAC7C,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,OAAe,EAAE,KAAa;QAC5C,MAAM,OAAO,GAAkB,EAAE,CAAC;QAClC,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,IAAI,IAAI,GAAG,OAAO,CAAC;QAEnB,OAAO,SAAS,GAAG,CAAC,EAAE,CAAC;YACrB,MAAM,cAAc,GAAG,gBAAgB,GAAG,CAAC,IAAI,GAAG,gBAAgB,CAAC,CAAC;YACpE,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,cAAc,GAAG,CAAC,CAAC,CAAC;YAE3D,MAAM,IAAI,CAAC,gBAAgB,CAAC;gBAC1B,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,SAAS,GAAG,UAAU,CAAC;gBAC/C,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC;aAC9B,CAAC,CAAC;YAEH,IAAI,YAAY,GAAG,UAAU,CAAC;YAC9B,OAAO,YAAY,GAAG,CAAC,EAAE,CAAC;gBACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CACvB,YAAY,EACZ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,CACnC,CAAC;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;gBACtE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACrB,YAAY,IAAI,QAAQ,CAAC;YAC3B,CAAC;YAED,IAAI,IAAI,UAAU,GAAG,CAAC,CAAC;YACvB,SAAS,IAAI,UAAU,CAAC;QAC1B,CAAC;QAED,OAAO,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,OAAe,EAAE,MAAmB;QACnD,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,IAAI,GAAG,OAAO,CAAC;QAEnB,OAAO,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;YAC7B,MAAM,cAAc,GAAG,gBAAgB,GAAG,CAAC,IAAI,GAAG,gBAAgB,CAAC,CAAC;YACpE,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,KAAK,EAAE,cAAc,GAAG,CAAC,CAAC,CAAC;YACvE,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,UAAU,CAAC,CAAC;YAEtD,MAAM,IAAI,CAAC,gBAAgB,CAAC;gBAC1B,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,SAAS,GAAG,UAAU,CAAC;gBAC/C,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC;aAC9B,CAAC,CAAC;YAEH,IAAI,QAAQ,GAAG,CAAC,CAAC;YACjB,OAAO,QAAQ,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;gBAC/B,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAC1B,QAAQ,EACR,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,CAC9C,CAAC;gBACF,MAAM,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;gBACxD,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;YACjD,CAAC;YAED,IAAI,IAAI,UAAU,GAAG,CAAC,CAAC;YACvB,KAAK,IAAI,UAAU,CAAC;QACtB,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|