@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
|
@@ -1,15 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { LedMatrix } from "
|
|
4
|
-
import { Logging } from "./logging.js";
|
|
5
|
-
import { MagnetometerData } from "./magnetometer.js";
|
|
6
|
-
import { ServiceConnectionEventMap } from "./service-events.js";
|
|
1
|
+
import { DeviceConnection, FlashDataSource, FlashOptions } from "../device.js";
|
|
2
|
+
import { Logging } from "../logging.js";
|
|
3
|
+
import { AccelerometerData, LedMatrix, MagnetometerData, ServiceConnectionEventMap } from "../service-events.js";
|
|
7
4
|
import { DeviceBondState } from "./device-bond-state.js";
|
|
8
|
-
export interface
|
|
5
|
+
export interface MicrobitBluetoothConnectionOptions {
|
|
9
6
|
logging?: Logging;
|
|
10
7
|
deviceBondState?: DeviceBondState;
|
|
11
8
|
}
|
|
12
|
-
export interface
|
|
9
|
+
export interface MicrobitBluetoothConnection extends DeviceConnection<ServiceConnectionEventMap> {
|
|
13
10
|
/**
|
|
14
11
|
* Sets micro:bit name filter for device requesting.
|
|
15
12
|
*
|
|
@@ -19,96 +16,103 @@ export interface MicrobitWebBluetoothConnection extends DeviceConnection<Service
|
|
|
19
16
|
/**
|
|
20
17
|
* Gets micro:bit accelerometer data.
|
|
21
18
|
*
|
|
22
|
-
* @returns accelerometer data
|
|
19
|
+
* @returns accelerometer data.
|
|
20
|
+
* @throws {DeviceError} with code `not-connected` if there is no connection.
|
|
23
21
|
*/
|
|
24
|
-
getAccelerometerData(): Promise<AccelerometerData
|
|
22
|
+
getAccelerometerData(): Promise<AccelerometerData>;
|
|
25
23
|
/**
|
|
26
24
|
* Gets micro:bit accelerometer period.
|
|
27
25
|
*
|
|
28
|
-
* @returns accelerometer period
|
|
26
|
+
* @returns accelerometer period.
|
|
27
|
+
* @throws {DeviceError} with code `not-connected` if there is no connection.
|
|
29
28
|
*/
|
|
30
|
-
getAccelerometerPeriod(): Promise<number
|
|
29
|
+
getAccelerometerPeriod(): Promise<number>;
|
|
31
30
|
/**
|
|
32
31
|
* Sets micro:bit accelerometer period.
|
|
33
32
|
*
|
|
34
33
|
* @param value The accelerometer period.
|
|
34
|
+
* @throws {DeviceError} with code `not-connected` if there is no connection.
|
|
35
35
|
*/
|
|
36
36
|
setAccelerometerPeriod(value: number): Promise<void>;
|
|
37
37
|
/**
|
|
38
38
|
* Sets micro:bit LED text.
|
|
39
39
|
*
|
|
40
40
|
* @param text The text displayed on micro:bit LED.
|
|
41
|
+
* @throws {DeviceError} with code `not-connected` if there is no connection.
|
|
41
42
|
*/
|
|
42
43
|
setLedText(text: string): Promise<void>;
|
|
43
44
|
/**
|
|
44
45
|
* Gets micro:bit LED scrolling delay.
|
|
45
46
|
*
|
|
46
47
|
* @returns LED scrolling delay in milliseconds.
|
|
48
|
+
* @throws {DeviceError} with code `not-connected` if there is no connection.
|
|
47
49
|
*/
|
|
48
|
-
getLedScrollingDelay(): Promise<number
|
|
50
|
+
getLedScrollingDelay(): Promise<number>;
|
|
49
51
|
/**
|
|
50
52
|
* Sets micro:bit LED scrolling delay.
|
|
51
53
|
*
|
|
52
54
|
* @param delayInMillis LED scrolling delay in milliseconds.
|
|
55
|
+
* @throws {DeviceError} with code `not-connected` if there is no connection.
|
|
53
56
|
*/
|
|
54
57
|
setLedScrollingDelay(delayInMillis: number): Promise<void>;
|
|
55
58
|
/**
|
|
56
59
|
* Gets micro:bit LED matrix.
|
|
57
60
|
*
|
|
58
61
|
* @returns a boolean matrix representing the micro:bit LED display.
|
|
62
|
+
* @throws {DeviceError} with code `not-connected` if there is no connection.
|
|
59
63
|
*/
|
|
60
|
-
getLedMatrix(): Promise<LedMatrix
|
|
64
|
+
getLedMatrix(): Promise<LedMatrix>;
|
|
61
65
|
/**
|
|
62
66
|
* Sets micro:bit LED matrix.
|
|
63
67
|
*
|
|
64
68
|
* @param matrix an boolean matrix representing the micro:bit LED display.
|
|
69
|
+
* @throws {DeviceError} with code `not-connected` if there is no connection.
|
|
65
70
|
*/
|
|
66
71
|
setLedMatrix(matrix: LedMatrix): Promise<void>;
|
|
67
72
|
/**
|
|
68
73
|
* Gets micro:bit magnetometer data.
|
|
69
74
|
*
|
|
70
75
|
* @returns magnetometer data.
|
|
76
|
+
* @throws {DeviceError} with code `not-connected` if there is no connection.
|
|
71
77
|
*/
|
|
72
|
-
getMagnetometerData(): Promise<MagnetometerData
|
|
78
|
+
getMagnetometerData(): Promise<MagnetometerData>;
|
|
73
79
|
/**
|
|
74
80
|
* Gets micro:bit magnetometer bearing.
|
|
75
81
|
*
|
|
76
82
|
* @returns magnetometer bearing.
|
|
83
|
+
* @throws {DeviceError} with code `not-connected` if there is no connection.
|
|
77
84
|
*/
|
|
78
|
-
getMagnetometerBearing(): Promise<number
|
|
85
|
+
getMagnetometerBearing(): Promise<number>;
|
|
79
86
|
/**
|
|
80
87
|
* Gets micro:bit magnetometer period.
|
|
81
88
|
*
|
|
82
89
|
* @returns magnetometer period.
|
|
90
|
+
* @throws {DeviceError} with code `not-connected` if there is no connection.
|
|
83
91
|
*/
|
|
84
|
-
getMagnetometerPeriod(): Promise<number
|
|
92
|
+
getMagnetometerPeriod(): Promise<number>;
|
|
85
93
|
/**
|
|
86
94
|
* Sets micro:bit magnetometer period.
|
|
87
95
|
*
|
|
88
96
|
* @param value magnetometer period.
|
|
97
|
+
* @throws {DeviceError} with code `not-connected` if there is no connection.
|
|
89
98
|
*/
|
|
90
99
|
setMagnetometerPeriod(value: number): Promise<void>;
|
|
91
100
|
/**
|
|
92
101
|
* Triggers micro:bit magnetometer calibration.
|
|
102
|
+
*
|
|
103
|
+
* @throws {DeviceError} with code `not-connected` if there is no connection.
|
|
93
104
|
*/
|
|
94
105
|
triggerMagnetometerCalibration(): Promise<void>;
|
|
95
106
|
/**
|
|
96
107
|
* Write UART messages.
|
|
97
108
|
*
|
|
98
109
|
* @param data UART message.
|
|
110
|
+
* @throws {DeviceError} with code `not-connected` if there is no connection.
|
|
99
111
|
*/
|
|
100
112
|
uartWrite(data: Uint8Array): Promise<void>;
|
|
101
|
-
/**
|
|
102
|
-
* Flash the micro:bit.
|
|
103
|
-
*
|
|
104
|
-
* @param dataSource The data to use.
|
|
105
|
-
* @param options Flash options and progress callback.
|
|
106
|
-
* @throws {DeviceError} On flash failure. The error.code property indicates the failure type.
|
|
107
|
-
* @throws {FlashDataError} If data preparation fails.
|
|
108
|
-
*/
|
|
109
113
|
flash(dataSource: FlashDataSource, options: FlashOptions): Promise<void>;
|
|
110
114
|
}
|
|
111
115
|
/**
|
|
112
116
|
* A Bluetooth connection factory.
|
|
113
117
|
*/
|
|
114
|
-
export declare const
|
|
118
|
+
export declare const createBluetoothConnection: (options?: MicrobitBluetoothConnectionOptions) => MicrobitBluetoothConnection;
|
|
@@ -26,7 +26,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
26
26
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
27
|
};
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.
|
|
29
|
+
exports.createBluetoothConnection = void 0;
|
|
30
30
|
/**
|
|
31
31
|
* (c) 2021, Micro:bit Educational Foundation and contributors
|
|
32
32
|
*
|
|
@@ -35,40 +35,40 @@ exports.createWebBluetoothConnection = void 0;
|
|
|
35
35
|
const bluetooth_le_1 = require("@capacitor-community/bluetooth-le");
|
|
36
36
|
const core_1 = require("@capacitor/core");
|
|
37
37
|
const nrf_intel_hex_1 = __importDefault(require("nrf-intel-hex"));
|
|
38
|
-
const
|
|
39
|
-
const
|
|
40
|
-
const device_js_1 = require("
|
|
41
|
-
const events_js_1 = require("
|
|
42
|
-
const logging_js_1 = require("
|
|
38
|
+
const device_wrapper_js_1 = require("./device-wrapper.js");
|
|
39
|
+
const profile_js_1 = require("./profile.js");
|
|
40
|
+
const device_js_1 = require("../device.js");
|
|
41
|
+
const events_js_1 = require("../events.js");
|
|
42
|
+
const logging_js_1 = require("../logging.js");
|
|
43
43
|
const flashing_full_js_1 = require("./flashing/flashing-full.js");
|
|
44
44
|
const flashing_partial_js_1 = __importStar(require("./flashing/flashing-partial.js"));
|
|
45
|
-
const availability_js_1 = require("
|
|
46
|
-
const
|
|
45
|
+
const availability_js_1 = require("../availability.js");
|
|
46
|
+
const hex_util_js_1 = require("../hex-util.js");
|
|
47
47
|
const device_bond_state_js_1 = require("./device-bond-state.js");
|
|
48
|
-
const async_util_js_1 = require("
|
|
48
|
+
const async_util_js_1 = require("../async-util.js");
|
|
49
49
|
let bleClientInitialized = false;
|
|
50
50
|
/**
|
|
51
51
|
* A Bluetooth connection factory.
|
|
52
52
|
*/
|
|
53
|
-
const
|
|
54
|
-
exports.
|
|
53
|
+
const createBluetoothConnection = (options) => new MicrobitBluetoothConnectionImpl(options);
|
|
54
|
+
exports.createBluetoothConnection = createBluetoothConnection;
|
|
55
55
|
/**
|
|
56
56
|
* A Bluetooth connection to a micro:bit device.
|
|
57
57
|
*/
|
|
58
|
-
class
|
|
58
|
+
class MicrobitBluetoothConnectionImpl extends events_js_1.TypedEventTarget {
|
|
59
59
|
constructor(options = {}) {
|
|
60
60
|
super();
|
|
61
61
|
Object.defineProperty(this, "status", {
|
|
62
62
|
enumerable: true,
|
|
63
63
|
configurable: true,
|
|
64
64
|
writable: true,
|
|
65
|
-
value: device_js_1.ConnectionStatus.
|
|
65
|
+
value: device_js_1.ConnectionStatus.NoAuthorizedDevice
|
|
66
66
|
});
|
|
67
67
|
/**
|
|
68
|
-
* The
|
|
68
|
+
* The BLE device we last connected to.
|
|
69
69
|
* Cleared if it is disconnected.
|
|
70
70
|
*/
|
|
71
|
-
Object.defineProperty(this, "
|
|
71
|
+
Object.defineProperty(this, "bleDevice", {
|
|
72
72
|
enumerable: true,
|
|
73
73
|
configurable: true,
|
|
74
74
|
writable: true,
|
|
@@ -86,7 +86,19 @@ class MicrobitWebBluetoothConnectionImpl extends events_js_1.TypedEventTarget {
|
|
|
86
86
|
writable: true,
|
|
87
87
|
value: void 0
|
|
88
88
|
});
|
|
89
|
-
|
|
89
|
+
/**
|
|
90
|
+
* Device-specific state. Created on connect, cleared on disconnect.
|
|
91
|
+
*/
|
|
92
|
+
Object.defineProperty(this, "device", {
|
|
93
|
+
enumerable: true,
|
|
94
|
+
configurable: true,
|
|
95
|
+
writable: true,
|
|
96
|
+
value: void 0
|
|
97
|
+
});
|
|
98
|
+
/**
|
|
99
|
+
* Cached device property that persists across reconnections until clearDevice.
|
|
100
|
+
*/
|
|
101
|
+
Object.defineProperty(this, "cachedBoardVersion", {
|
|
90
102
|
enumerable: true,
|
|
91
103
|
configurable: true,
|
|
92
104
|
writable: true,
|
|
@@ -115,10 +127,10 @@ class MicrobitWebBluetoothConnectionImpl extends events_js_1.TypedEventTarget {
|
|
|
115
127
|
options.deviceBondState || new device_bond_state_js_1.DefaultDeviceBondState();
|
|
116
128
|
}
|
|
117
129
|
eventActivated(type) {
|
|
118
|
-
this.
|
|
130
|
+
this.device?.startNotifications(type);
|
|
119
131
|
}
|
|
120
132
|
eventDeactivated(type) {
|
|
121
|
-
this.
|
|
133
|
+
this.device?.stopNotifications(type);
|
|
122
134
|
}
|
|
123
135
|
log(v) {
|
|
124
136
|
this.logging.log(v);
|
|
@@ -151,7 +163,7 @@ class MicrobitWebBluetoothConnectionImpl extends events_js_1.TypedEventTarget {
|
|
|
151
163
|
// On Android, check if location services are enabled. This is only
|
|
152
164
|
// required on Android < 12 (API < 31), but isLocationEnabled() returns
|
|
153
165
|
// true on newer Android, so we can always check it.
|
|
154
|
-
if ((0,
|
|
166
|
+
if ((0, device_wrapper_js_1.isAndroid)()) {
|
|
155
167
|
const isLocationEnabled = await bluetooth_le_1.BleClient.isLocationEnabled();
|
|
156
168
|
if (!isLocationEnabled) {
|
|
157
169
|
return "location-disabled";
|
|
@@ -186,7 +198,8 @@ class MicrobitWebBluetoothConnectionImpl extends events_js_1.TypedEventTarget {
|
|
|
186
198
|
}
|
|
187
199
|
}
|
|
188
200
|
getBoardVersion() {
|
|
189
|
-
|
|
201
|
+
(0, device_js_1.assertConnected)(this.cachedBoardVersion);
|
|
202
|
+
return this.cachedBoardVersion;
|
|
190
203
|
}
|
|
191
204
|
async connect(options) {
|
|
192
205
|
const progress = options?.progress ?? (() => { });
|
|
@@ -198,21 +211,22 @@ class MicrobitWebBluetoothConnectionImpl extends events_js_1.TypedEventTarget {
|
|
|
198
211
|
// disconnect before attempting to connect.
|
|
199
212
|
this.waitForPostFlashDisconnectPromise &&
|
|
200
213
|
(await this.waitForPostFlashDisconnectPromise);
|
|
201
|
-
if (!this.
|
|
214
|
+
if (!this.bleDevice || !this.device) {
|
|
202
215
|
progress(device_js_1.ProgressStage.FindingDevice);
|
|
203
216
|
const device = await this.requestDevice(options?.signal);
|
|
204
|
-
this.
|
|
205
|
-
onConnecting: () => this.setStatus(device_js_1.ConnectionStatus.
|
|
206
|
-
onSuccess: () => this.setStatus(device_js_1.ConnectionStatus.
|
|
207
|
-
onDisconnect: () => this.setStatus(device_js_1.ConnectionStatus.
|
|
217
|
+
this.device = new device_wrapper_js_1.BluetoothDeviceWrapper(device, this.logging, this.deviceBondState, this.dispatchEvent.bind(this), () => this.getActiveEvents(), {
|
|
218
|
+
onConnecting: () => this.setStatus(device_js_1.ConnectionStatus.Connecting),
|
|
219
|
+
onSuccess: () => this.setStatus(device_js_1.ConnectionStatus.Connected),
|
|
220
|
+
onDisconnect: () => this.setStatus(device_js_1.ConnectionStatus.Disconnected),
|
|
208
221
|
});
|
|
209
222
|
}
|
|
210
|
-
await this.
|
|
223
|
+
await this.device.connect(options);
|
|
224
|
+
this.cachedBoardVersion = this.device.boardVersion;
|
|
211
225
|
}
|
|
212
226
|
async disconnect() {
|
|
213
227
|
try {
|
|
214
|
-
if (this.
|
|
215
|
-
await this.
|
|
228
|
+
if (this.device) {
|
|
229
|
+
await this.device.disconnect();
|
|
216
230
|
}
|
|
217
231
|
}
|
|
218
232
|
catch (e) {
|
|
@@ -222,7 +236,7 @@ class MicrobitWebBluetoothConnectionImpl extends events_js_1.TypedEventTarget {
|
|
|
222
236
|
});
|
|
223
237
|
}
|
|
224
238
|
finally {
|
|
225
|
-
this.setStatus(device_js_1.ConnectionStatus.
|
|
239
|
+
this.setStatus(device_js_1.ConnectionStatus.Disconnected);
|
|
226
240
|
this.logging.event({
|
|
227
241
|
type: "Bluetooth-info",
|
|
228
242
|
message: "disconnected",
|
|
@@ -234,105 +248,118 @@ class MicrobitWebBluetoothConnectionImpl extends events_js_1.TypedEventTarget {
|
|
|
234
248
|
this.status = newStatus;
|
|
235
249
|
this.log("Bluetooth connection status " + newStatus);
|
|
236
250
|
if (this.deferredUpdatesPreviousStatus === undefined) {
|
|
237
|
-
this.
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
if (this.connection) {
|
|
242
|
-
// TODO
|
|
251
|
+
this.dispatchEvent("status", {
|
|
252
|
+
status: newStatus,
|
|
253
|
+
previousStatus,
|
|
254
|
+
});
|
|
243
255
|
}
|
|
244
|
-
return Promise.resolve();
|
|
245
256
|
}
|
|
246
257
|
async clearDevice() {
|
|
247
258
|
await this.disconnect();
|
|
248
|
-
this.
|
|
249
|
-
this.
|
|
259
|
+
this.bleDevice = undefined;
|
|
260
|
+
this.cachedBoardVersion = undefined;
|
|
261
|
+
this.setStatus(device_js_1.ConnectionStatus.NoAuthorizedDevice);
|
|
250
262
|
}
|
|
251
263
|
setNameFilter(name) {
|
|
252
264
|
this.nameFilter = name;
|
|
253
265
|
}
|
|
254
266
|
async requestDevice(signal) {
|
|
255
|
-
//
|
|
267
|
+
// Support both the default "BBC micro:bit" name and the shorter "uBit"
|
|
268
|
+
// name used by some MakeCode extensions (e.g. bsiever/microbit-pxt-blehid).
|
|
256
269
|
// See https://github.com/bsiever/microbit-pxt-blehid/issues/31
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
const namePrefix = this.nameFilter
|
|
261
|
-
? `BBC micro:bit [${this.nameFilter}]`
|
|
262
|
-
: "BBC micro:bit";
|
|
270
|
+
const namePrefixes = this.nameFilter
|
|
271
|
+
? [`BBC micro:bit [${this.nameFilter}]`, `uBit [${this.nameFilter}]`]
|
|
272
|
+
: ["BBC micro:bit", "uBit"];
|
|
263
273
|
// If we have a cached device, check if it still matches the current filter.
|
|
264
274
|
// If not, clear it so we find a new device.
|
|
265
|
-
if (this.
|
|
266
|
-
if (this.
|
|
267
|
-
return this.
|
|
275
|
+
if (this.bleDevice) {
|
|
276
|
+
if (namePrefixes.some((p) => this.bleDevice.name?.startsWith(p))) {
|
|
277
|
+
return this.bleDevice;
|
|
268
278
|
}
|
|
269
|
-
this.log(`Cached device "${this.
|
|
279
|
+
this.log(`Cached device "${this.bleDevice.name}" doesn't match filters "${namePrefixes.join(", ")}", clearing`);
|
|
270
280
|
await this.clearDevice();
|
|
271
281
|
}
|
|
272
|
-
this.
|
|
282
|
+
this.dispatchEvent("beforerequestdevice");
|
|
273
283
|
try {
|
|
274
|
-
this.
|
|
275
|
-
? await this.requestDeviceNative(
|
|
276
|
-
: await this.requestDeviceWeb(
|
|
277
|
-
if (!this.
|
|
278
|
-
this.setStatus(device_js_1.ConnectionStatus.
|
|
284
|
+
this.bleDevice = core_1.Capacitor.isNativePlatform()
|
|
285
|
+
? await this.requestDeviceNative(namePrefixes, signal)
|
|
286
|
+
: await this.requestDeviceWeb(namePrefixes);
|
|
287
|
+
if (!this.bleDevice) {
|
|
288
|
+
this.setStatus(device_js_1.ConnectionStatus.NoAuthorizedDevice);
|
|
279
289
|
throw new device_js_1.DeviceError({
|
|
280
290
|
code: "no-device-selected",
|
|
281
291
|
message: "No device selected",
|
|
282
292
|
});
|
|
283
293
|
}
|
|
284
|
-
return this.
|
|
294
|
+
return this.bleDevice;
|
|
285
295
|
}
|
|
286
296
|
finally {
|
|
287
|
-
this.
|
|
297
|
+
this.dispatchEvent("afterrequestdevice");
|
|
288
298
|
}
|
|
289
299
|
}
|
|
290
300
|
async getAccelerometerData() {
|
|
291
|
-
|
|
301
|
+
(0, device_js_1.assertConnected)(this.device);
|
|
302
|
+
return this.device.accelerometer.getData();
|
|
292
303
|
}
|
|
293
304
|
async getAccelerometerPeriod() {
|
|
294
|
-
|
|
305
|
+
(0, device_js_1.assertConnected)(this.device);
|
|
306
|
+
return this.device.accelerometer.getPeriod();
|
|
295
307
|
}
|
|
296
308
|
async setAccelerometerPeriod(value) {
|
|
297
|
-
|
|
309
|
+
(0, device_js_1.assertConnected)(this.device);
|
|
310
|
+
return this.device.accelerometer.setPeriod(value);
|
|
298
311
|
}
|
|
299
312
|
async setLedText(text) {
|
|
300
|
-
|
|
313
|
+
(0, device_js_1.assertConnected)(this.device);
|
|
314
|
+
return this.device.led.setText(text);
|
|
301
315
|
}
|
|
302
316
|
async getLedScrollingDelay() {
|
|
303
|
-
|
|
317
|
+
(0, device_js_1.assertConnected)(this.device);
|
|
318
|
+
return this.device.led.getScrollingDelay();
|
|
304
319
|
}
|
|
305
320
|
async setLedScrollingDelay(delayInMillis) {
|
|
306
|
-
|
|
321
|
+
(0, device_js_1.assertConnected)(this.device);
|
|
322
|
+
await this.device.led.setScrollingDelay(delayInMillis);
|
|
307
323
|
}
|
|
308
324
|
async getLedMatrix() {
|
|
309
|
-
|
|
325
|
+
(0, device_js_1.assertConnected)(this.device);
|
|
326
|
+
return await this.device.led.getLedMatrix();
|
|
310
327
|
}
|
|
311
328
|
async setLedMatrix(matrix) {
|
|
312
|
-
|
|
329
|
+
(0, device_js_1.assertConnected)(this.device);
|
|
330
|
+
await this.device.led.setLedMatrix(matrix);
|
|
313
331
|
}
|
|
314
332
|
async getMagnetometerData() {
|
|
315
|
-
|
|
333
|
+
(0, device_js_1.assertConnected)(this.device);
|
|
334
|
+
return this.device.magnetometer.getData();
|
|
316
335
|
}
|
|
317
336
|
async getMagnetometerPeriod() {
|
|
318
|
-
|
|
337
|
+
(0, device_js_1.assertConnected)(this.device);
|
|
338
|
+
return this.device.magnetometer.getPeriod();
|
|
319
339
|
}
|
|
320
340
|
async setMagnetometerPeriod(value) {
|
|
321
|
-
|
|
341
|
+
(0, device_js_1.assertConnected)(this.device);
|
|
342
|
+
return this.device.magnetometer.setPeriod(value);
|
|
322
343
|
}
|
|
323
344
|
async getMagnetometerBearing() {
|
|
324
|
-
|
|
345
|
+
(0, device_js_1.assertConnected)(this.device);
|
|
346
|
+
return this.device.magnetometer.getBearing();
|
|
325
347
|
}
|
|
326
348
|
async triggerMagnetometerCalibration() {
|
|
327
|
-
|
|
349
|
+
(0, device_js_1.assertConnected)(this.device);
|
|
350
|
+
await this.device.magnetometer.triggerCalibration();
|
|
328
351
|
}
|
|
329
352
|
async uartWrite(data) {
|
|
330
|
-
|
|
353
|
+
(0, device_js_1.assertConnected)(this.device);
|
|
354
|
+
await this.device.uart.writeData(data);
|
|
331
355
|
}
|
|
332
356
|
/**
|
|
333
357
|
* Flash the micro:bit.
|
|
334
358
|
*
|
|
335
|
-
*
|
|
359
|
+
* Always leaves the connection in {@link ConnectionStatus.Disconnected} state.
|
|
360
|
+
* Bluetooth connects directly to the application processor, which reboots
|
|
361
|
+
* after flashing, so the connection is necessarily lost. Call {@link connect}
|
|
362
|
+
* again after flashing to reconnect.
|
|
336
363
|
*
|
|
337
364
|
* @param dataSource The data to use.
|
|
338
365
|
* @param options Flash options and progress callback.
|
|
@@ -342,10 +369,10 @@ class MicrobitWebBluetoothConnectionImpl extends events_js_1.TypedEventTarget {
|
|
|
342
369
|
try {
|
|
343
370
|
// We'll disconnect/reconnect multiple times due to device resets, but reporting this is unhelpful.
|
|
344
371
|
this.deferredUpdatesPreviousStatus = this.status;
|
|
345
|
-
if (this.status !== device_js_1.ConnectionStatus.
|
|
372
|
+
if (this.status !== device_js_1.ConnectionStatus.Connected) {
|
|
346
373
|
await this.connect({ progress, signal: options.signal });
|
|
347
374
|
}
|
|
348
|
-
const connection = this.
|
|
375
|
+
const connection = this.device;
|
|
349
376
|
try {
|
|
350
377
|
const boardVersion = connection.boardVersion;
|
|
351
378
|
if (!boardVersion) {
|
|
@@ -358,7 +385,7 @@ class MicrobitWebBluetoothConnectionImpl extends events_js_1.TypedEventTarget {
|
|
|
358
385
|
if (!memoryMap) {
|
|
359
386
|
throw new device_js_1.FlashDataError("Could not convert hex to memory map");
|
|
360
387
|
}
|
|
361
|
-
if (!this.
|
|
388
|
+
if (!this.bleDevice) {
|
|
362
389
|
throw new device_js_1.DeviceError({
|
|
363
390
|
code: "device-disconnected",
|
|
364
391
|
message: "No device",
|
|
@@ -369,7 +396,8 @@ class MicrobitWebBluetoothConnectionImpl extends events_js_1.TypedEventTarget {
|
|
|
369
396
|
if (partialFlashResult === flashing_partial_js_1.PartialFlashResult.AttemptFullFlash) {
|
|
370
397
|
await (0, flashing_full_js_1.fullFlash)(connection, boardVersion, memoryMap, progress);
|
|
371
398
|
}
|
|
372
|
-
|
|
399
|
+
this.dispatchEvent("flash");
|
|
400
|
+
if (partialFlashResult === flashing_partial_js_1.PartialFlashResult.AlreadyUpToDate ||
|
|
373
401
|
partialFlashResult === flashing_partial_js_1.PartialFlashResult.Success) {
|
|
374
402
|
this.waitForPostFlashDisconnectPromise = (async () => {
|
|
375
403
|
try {
|
|
@@ -393,7 +421,7 @@ class MicrobitWebBluetoothConnectionImpl extends events_js_1.TypedEventTarget {
|
|
|
393
421
|
}
|
|
394
422
|
}
|
|
395
423
|
})();
|
|
396
|
-
this.setStatus(device_js_1.ConnectionStatus.
|
|
424
|
+
this.setStatus(device_js_1.ConnectionStatus.Disconnected);
|
|
397
425
|
}
|
|
398
426
|
}
|
|
399
427
|
catch (e) {
|
|
@@ -409,7 +437,10 @@ class MicrobitWebBluetoothConnectionImpl extends events_js_1.TypedEventTarget {
|
|
|
409
437
|
finally {
|
|
410
438
|
const previousStatus = this.deferredUpdatesPreviousStatus;
|
|
411
439
|
this.deferredUpdatesPreviousStatus = undefined;
|
|
412
|
-
this.
|
|
440
|
+
this.dispatchEvent("status", {
|
|
441
|
+
status: this.status,
|
|
442
|
+
previousStatus,
|
|
443
|
+
});
|
|
413
444
|
}
|
|
414
445
|
}
|
|
415
446
|
/**
|
|
@@ -417,22 +448,33 @@ class MicrobitWebBluetoothConnectionImpl extends events_js_1.TypedEventTarget {
|
|
|
417
448
|
*
|
|
418
449
|
* @returns device or undefined if user cancels.
|
|
419
450
|
*/
|
|
420
|
-
async requestDeviceWeb(
|
|
451
|
+
async requestDeviceWeb(namePrefixes) {
|
|
452
|
+
const optionalServices = [
|
|
453
|
+
profile_js_1.profile.accelerometer.id,
|
|
454
|
+
profile_js_1.profile.button.id,
|
|
455
|
+
profile_js_1.profile.deviceInformation.id,
|
|
456
|
+
profile_js_1.profile.dfuControl.id,
|
|
457
|
+
profile_js_1.profile.event.id,
|
|
458
|
+
profile_js_1.profile.ioPin.id,
|
|
459
|
+
profile_js_1.profile.led.id,
|
|
460
|
+
profile_js_1.profile.magnetometer.id,
|
|
461
|
+
profile_js_1.profile.temperature.id,
|
|
462
|
+
profile_js_1.profile.uart.id,
|
|
463
|
+
];
|
|
464
|
+
// Temporarily patch navigator.bluetooth.requestDevice to support multiple
|
|
465
|
+
// name prefix filters. The capacitor-ble plugin only supports a single
|
|
466
|
+
// namePrefix, but the Web Bluetooth API supports a filters array.
|
|
467
|
+
// By patching at this level the plugin's internal deviceMap is populated
|
|
468
|
+
// naturally when its own requestDevice completes.
|
|
469
|
+
const orig = navigator.bluetooth.requestDevice.bind(navigator.bluetooth);
|
|
421
470
|
try {
|
|
471
|
+
navigator.bluetooth.requestDevice = (options) => orig({
|
|
472
|
+
...options,
|
|
473
|
+
filters: namePrefixes.map((namePrefix) => ({ namePrefix })),
|
|
474
|
+
});
|
|
422
475
|
return await bluetooth_le_1.BleClient.requestDevice({
|
|
423
|
-
namePrefix,
|
|
424
|
-
optionalServices
|
|
425
|
-
bluetooth_profile_js_1.profile.accelerometer.id,
|
|
426
|
-
bluetooth_profile_js_1.profile.button.id,
|
|
427
|
-
bluetooth_profile_js_1.profile.deviceInformation.id,
|
|
428
|
-
bluetooth_profile_js_1.profile.dfuControl.id,
|
|
429
|
-
bluetooth_profile_js_1.profile.event.id,
|
|
430
|
-
bluetooth_profile_js_1.profile.ioPin.id,
|
|
431
|
-
bluetooth_profile_js_1.profile.led.id,
|
|
432
|
-
bluetooth_profile_js_1.profile.magnetometer.id,
|
|
433
|
-
bluetooth_profile_js_1.profile.temperature.id,
|
|
434
|
-
bluetooth_profile_js_1.profile.uart.id,
|
|
435
|
-
],
|
|
476
|
+
namePrefix: namePrefixes[0],
|
|
477
|
+
optionalServices,
|
|
436
478
|
});
|
|
437
479
|
}
|
|
438
480
|
catch (e) {
|
|
@@ -441,6 +483,9 @@ class MicrobitWebBluetoothConnectionImpl extends events_js_1.TypedEventTarget {
|
|
|
441
483
|
}
|
|
442
484
|
throw e;
|
|
443
485
|
}
|
|
486
|
+
finally {
|
|
487
|
+
navigator.bluetooth.requestDevice = orig;
|
|
488
|
+
}
|
|
444
489
|
}
|
|
445
490
|
/**
|
|
446
491
|
* Finds device with specified name prefix.
|
|
@@ -448,19 +493,17 @@ class MicrobitWebBluetoothConnectionImpl extends events_js_1.TypedEventTarget {
|
|
|
448
493
|
* @returns device or undefined if none can be found.
|
|
449
494
|
* @throws DeviceError with code "aborted" if signal is aborted.
|
|
450
495
|
*/
|
|
451
|
-
async requestDeviceNative(
|
|
496
|
+
async requestDeviceNative(namePrefixes, signal) {
|
|
452
497
|
if (signal?.aborted) {
|
|
453
498
|
throw new device_js_1.DeviceError({ code: "aborted", message: "Connection aborted" });
|
|
454
499
|
}
|
|
500
|
+
const matchesAnyPrefix = (name) => !!name && namePrefixes.some((p) => name.startsWith(p));
|
|
455
501
|
// Check for existing bonded devices.
|
|
456
|
-
const bonded = await this.checkBondedDevices((device) =>
|
|
457
|
-
const name = device.name;
|
|
458
|
-
return !!name && name.startsWith(namePrefix);
|
|
459
|
-
});
|
|
502
|
+
const bonded = await this.checkBondedDevices((device) => matchesAnyPrefix(device.name));
|
|
460
503
|
if (bonded) {
|
|
461
504
|
return bonded;
|
|
462
505
|
}
|
|
463
|
-
this.log(`Scanning for device - ${
|
|
506
|
+
this.log(`Scanning for device - ${namePrefixes.join(", ")}`);
|
|
464
507
|
let found = false;
|
|
465
508
|
let aborted = false;
|
|
466
509
|
const scanPromise = new Promise((resolve) =>
|
|
@@ -470,8 +513,8 @@ class MicrobitWebBluetoothConnectionImpl extends events_js_1.TypedEventTarget {
|
|
|
470
513
|
// isn't matched by the name filter but the advertising name is in the
|
|
471
514
|
// localName on the device. So we filter here instead. This happens on
|
|
472
515
|
// iOS if DFU fails / is interrupted.
|
|
473
|
-
if (result.device.name
|
|
474
|
-
result.localName
|
|
516
|
+
if (matchesAnyPrefix(result.device.name) ||
|
|
517
|
+
matchesAnyPrefix(result.localName)) {
|
|
475
518
|
found = true;
|
|
476
519
|
await bluetooth_le_1.BleClient.stopLEScan();
|
|
477
520
|
resolve(result.device);
|
|
@@ -491,11 +534,11 @@ class MicrobitWebBluetoothConnectionImpl extends events_js_1.TypedEventTarget {
|
|
|
491
534
|
this.log("Timeout scanning for device");
|
|
492
535
|
resolve(undefined);
|
|
493
536
|
}
|
|
494
|
-
},
|
|
537
|
+
}, device_wrapper_js_1.scanningTimeoutInMs));
|
|
495
538
|
return await Promise.race([scanPromise, scanTimeoutPromise, abortPromise]);
|
|
496
539
|
}
|
|
497
540
|
async checkBondedDevices(predicate) {
|
|
498
|
-
if (!(0,
|
|
541
|
+
if (!(0, device_wrapper_js_1.isAndroid)()) {
|
|
499
542
|
// Not supported.
|
|
500
543
|
return undefined;
|
|
501
544
|
}
|
|
@@ -514,6 +557,6 @@ const convertDataToMemoryMap = (data) => {
|
|
|
514
557
|
if (data instanceof Uint8Array) {
|
|
515
558
|
return nrf_intel_hex_1.default.fromPaddedUint8Array(data);
|
|
516
559
|
}
|
|
517
|
-
return nrf_intel_hex_1.default.fromHex((0,
|
|
560
|
+
return nrf_intel_hex_1.default.fromHex((0, hex_util_js_1.truncateHexAfterEof)(data));
|
|
518
561
|
};
|
|
519
|
-
//# sourceMappingURL=
|
|
562
|
+
//# sourceMappingURL=connection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../../src/bluetooth/connection.ts"],"names":[],"mappings":"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"}
|