@microbit/microbit-connection 0.9.0-apps.alpha.9 → 1.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +106 -27
- package/build/cjs/async-util.d.ts +3 -1
- package/build/cjs/async-util.js +5 -1
- package/build/cjs/async-util.js.map +1 -1
- package/build/cjs/availability.js.map +1 -1
- package/build/cjs/bluetooth/ble-error.d.ts +10 -0
- package/build/cjs/bluetooth/ble-error.js +47 -0
- package/build/cjs/bluetooth/ble-error.js.map +1 -0
- package/build/cjs/bluetooth/connection.d.ts +378 -0
- package/build/cjs/bluetooth/connection.js +623 -0
- package/build/cjs/bluetooth/connection.js.map +1 -0
- package/build/cjs/bluetooth/device-bond-state.d.ts +14 -0
- package/build/cjs/bluetooth/device-bond-state.js +26 -0
- package/build/cjs/bluetooth/device-bond-state.js.map +1 -0
- package/build/cjs/{bluetooth-device-wrapper.d.ts → bluetooth/device-wrapper.d.ts} +36 -21
- package/build/cjs/{bluetooth-device-wrapper.js → bluetooth/device-wrapper.js} +174 -147
- package/build/cjs/bluetooth/device-wrapper.js.map +1 -0
- package/build/{esm → cjs/bluetooth}/flashing/flashing-full.d.ts +2 -2
- package/build/cjs/{flashing → bluetooth/flashing}/flashing-full.js +6 -5
- package/build/cjs/bluetooth/flashing/flashing-full.js.map +1 -0
- package/build/cjs/bluetooth/flashing/flashing-makecode.d.ts +10 -0
- package/build/cjs/{flashing → bluetooth/flashing}/flashing-makecode.js +5 -2
- package/build/cjs/bluetooth/flashing/flashing-makecode.js.map +1 -0
- package/build/cjs/bluetooth/flashing/flashing-partial.d.ts +10 -0
- package/build/cjs/bluetooth/flashing/flashing-partial.js +145 -0
- package/build/cjs/bluetooth/flashing/flashing-partial.js.map +1 -0
- package/build/cjs/bluetooth/flashing/flashing-v1.js.map +1 -0
- package/build/cjs/{flashing → bluetooth/flashing}/nordic-dfu.d.ts +2 -2
- package/build/cjs/{flashing → bluetooth/flashing}/nordic-dfu.js +41 -15
- package/build/cjs/bluetooth/flashing/nordic-dfu.js.map +1 -0
- package/build/cjs/bluetooth/flashing/zip.js.map +1 -0
- package/build/cjs/bluetooth/index.d.ts +5 -0
- package/build/cjs/bluetooth/index.js +9 -0
- package/build/cjs/bluetooth/index.js.map +1 -0
- package/build/cjs/{bluetooth-profile.d.ts → bluetooth/profile.d.ts} +8 -0
- package/build/cjs/{bluetooth-profile.js → bluetooth/profile.js} +7 -1
- package/build/cjs/bluetooth/profile.js.map +1 -0
- package/build/cjs/{accelerometer-service.d.ts → bluetooth/services/accelerometer-service.d.ts} +2 -3
- package/build/cjs/{accelerometer-service.js → bluetooth/services/accelerometer-service.js} +17 -12
- package/build/cjs/bluetooth/services/accelerometer-service.js.map +1 -0
- package/build/{esm → cjs/bluetooth/services}/button-service.d.ts +2 -3
- package/build/cjs/{button-service.js → bluetooth/services/button-service.js} +24 -14
- package/build/cjs/bluetooth/services/button-service.js.map +1 -0
- package/build/{esm → cjs/bluetooth/services}/device-information-service.d.ts +1 -1
- package/build/cjs/bluetooth/services/device-information-service.js +29 -0
- package/build/cjs/bluetooth/services/device-information-service.js.map +1 -0
- package/build/cjs/{dfu-service.js → bluetooth/services/dfu-service.js} +2 -2
- package/build/cjs/bluetooth/services/dfu-service.js.map +1 -0
- package/build/cjs/bluetooth/services/event-service.d.ts +48 -0
- package/build/cjs/bluetooth/services/event-service.js +273 -0
- package/build/cjs/bluetooth/services/event-service.js.map +1 -0
- package/build/cjs/bluetooth/services/io-pin-service.d.ts +65 -0
- package/build/cjs/bluetooth/services/io-pin-service.js +173 -0
- package/build/cjs/bluetooth/services/io-pin-service.js.map +1 -0
- package/build/{esm → cjs/bluetooth/services}/led-service.d.ts +2 -3
- package/build/cjs/{led-service.js → bluetooth/services/led-service.js} +10 -7
- package/build/cjs/bluetooth/services/led-service.js.map +1 -0
- package/build/cjs/{magnetometer-service.d.ts → bluetooth/services/magnetometer-service.d.ts} +2 -3
- package/build/cjs/{magnetometer-service.js → bluetooth/services/magnetometer-service.js} +19 -14
- package/build/cjs/bluetooth/services/magnetometer-service.js.map +1 -0
- package/build/{esm → cjs/bluetooth/services}/partial-flashing-service.d.ts +1 -1
- package/build/cjs/{partial-flashing-service.js → bluetooth/services/partial-flashing-service.js} +8 -8
- package/build/cjs/bluetooth/services/partial-flashing-service.js.map +1 -0
- package/build/cjs/bluetooth/services/temperature-service.d.ts +14 -0
- package/build/cjs/bluetooth/services/temperature-service.js +80 -0
- package/build/cjs/bluetooth/services/temperature-service.js.map +1 -0
- package/build/cjs/{uart-service.d.ts → bluetooth/services/uart-service.d.ts} +2 -2
- package/build/cjs/{uart-service.js → bluetooth/services/uart-service.js} +21 -9
- package/build/cjs/bluetooth/services/uart-service.js.map +1 -0
- package/build/cjs/board-id.d.ts +1 -1
- package/build/cjs/board-id.js.map +1 -1
- package/build/cjs/device.d.ts +191 -101
- package/build/cjs/device.js +47 -110
- package/build/cjs/device.js.map +1 -1
- package/build/cjs/events.d.ts +8 -108
- package/build/cjs/events.js +27 -88
- package/build/cjs/events.js.map +1 -1
- package/build/cjs/hex-util.d.ts +1 -0
- package/build/cjs/hex-util.js +15 -0
- package/build/cjs/hex-util.js.map +1 -0
- package/build/cjs/index.d.ts +8 -16
- package/build/cjs/index.js +9 -28
- package/build/cjs/index.js.map +1 -1
- package/build/cjs/logging.js.map +1 -1
- package/build/cjs/microbit-events.d.ts +67 -0
- package/build/cjs/microbit-events.js +55 -0
- package/build/cjs/microbit-events.js.map +1 -0
- package/build/cjs/radio-bridge/connection.d.ts +52 -0
- package/build/cjs/{usb-radio-bridge.js → radio-bridge/connection.js} +84 -96
- package/build/cjs/radio-bridge/connection.js.map +1 -0
- package/build/cjs/radio-bridge/index.d.ts +4 -0
- package/build/cjs/radio-bridge/index.js +9 -0
- package/build/cjs/radio-bridge/index.js.map +1 -0
- package/build/cjs/{usb-serial-protocol.js → radio-bridge/serial-protocol.js} +1 -1
- package/build/cjs/radio-bridge/serial-protocol.js.map +1 -0
- package/build/cjs/service-events.d.ts +92 -15
- package/build/cjs/service-events.js +6 -36
- package/build/cjs/service-events.js.map +1 -1
- package/build/{esm/hex-flash-data-source.d.ts → cjs/universal-hex/flash-data-source.d.ts} +1 -1
- package/build/cjs/{hex-flash-data-source.js → universal-hex/flash-data-source.js} +6 -3
- package/build/cjs/universal-hex/flash-data-source.js.map +1 -0
- package/build/cjs/universal-hex/index.d.ts +4 -0
- package/build/cjs/universal-hex/index.js +9 -0
- package/build/cjs/universal-hex/index.js.map +1 -0
- package/build/cjs/usb/arm-debug.d.ts +137 -0
- package/build/cjs/usb/arm-debug.js +414 -0
- package/build/cjs/usb/arm-debug.js.map +1 -0
- package/build/{esm → cjs/usb}/board-serial-info.d.ts +2 -1
- package/build/cjs/{board-serial-info.js → usb/board-serial-info.js} +10 -7
- package/build/cjs/usb/board-serial-info.js.map +1 -0
- package/build/cjs/usb/cdc-saturation.d.ts +36 -0
- package/build/cjs/usb/cdc-saturation.js +151 -0
- package/build/cjs/usb/cdc-saturation.js.map +1 -0
- package/build/cjs/usb/cmsis-dap.d.ts +113 -0
- package/build/cjs/usb/cmsis-dap.js +349 -0
- package/build/cjs/usb/cmsis-dap.js.map +1 -0
- package/build/cjs/usb/connection.d.ts +96 -0
- package/build/cjs/{usb.js → usb/connection.js} +257 -173
- package/build/cjs/usb/connection.js.map +1 -0
- package/build/cjs/usb/cortex-m.d.ts +72 -0
- package/build/cjs/usb/cortex-m.js +165 -0
- package/build/cjs/usb/cortex-m.js.map +1 -0
- package/build/cjs/usb/daplink.d.ts +69 -0
- package/build/cjs/usb/daplink.js +238 -0
- package/build/cjs/usb/daplink.js.map +1 -0
- package/build/cjs/usb/device-wrapper.d.ts +34 -0
- package/build/cjs/usb/device-wrapper.js +102 -0
- package/build/cjs/usb/device-wrapper.js.map +1 -0
- package/build/cjs/usb/index.d.ts +5 -0
- package/build/cjs/usb/index.js +10 -0
- package/build/cjs/usb/index.js.map +1 -0
- package/build/{esm/usb-partial-flashing-utils.d.ts → cjs/usb/partial-flashing-utils.d.ts} +6 -9
- package/build/cjs/{usb-partial-flashing-utils.js → usb/partial-flashing-utils.js} +6 -49
- package/build/cjs/usb/partial-flashing-utils.js.map +1 -0
- package/build/{esm/usb-partial-flashing.d.ts → cjs/usb/partial-flashing.d.ts} +37 -11
- package/build/cjs/{usb-partial-flashing.js → usb/partial-flashing.js} +170 -134
- package/build/cjs/usb/partial-flashing.js.map +1 -0
- package/build/cjs/usb/promise-queue.js.map +1 -0
- package/build/cjs/usb/serial-events.d.ts +16 -0
- package/build/cjs/{led.js → usb/serial-events.js} +1 -1
- package/build/cjs/usb/serial-events.js.map +1 -0
- package/build/cjs/usb/transport.d.ts +42 -0
- package/build/cjs/usb/transport.js +155 -0
- package/build/cjs/usb/transport.js.map +1 -0
- package/build/esm/async-util.d.ts +3 -1
- package/build/esm/async-util.js +5 -1
- package/build/esm/async-util.js.map +1 -1
- package/build/esm/availability.js.map +1 -1
- package/build/esm/bluetooth/ble-error.d.ts +10 -0
- package/build/esm/bluetooth/ble-error.js +42 -0
- package/build/esm/bluetooth/ble-error.js.map +1 -0
- package/build/esm/bluetooth/connection.d.ts +378 -0
- package/build/esm/bluetooth/connection.js +593 -0
- package/build/esm/bluetooth/connection.js.map +1 -0
- package/build/esm/bluetooth/device-bond-state.d.ts +14 -0
- package/build/esm/bluetooth/device-bond-state.js +22 -0
- package/build/esm/bluetooth/device-bond-state.js.map +1 -0
- package/build/esm/{bluetooth-device-wrapper.d.ts → bluetooth/device-wrapper.d.ts} +36 -21
- package/build/esm/{bluetooth-device-wrapper.js → bluetooth/device-wrapper.js} +172 -146
- package/build/esm/bluetooth/device-wrapper.js.map +1 -0
- package/build/{cjs → esm/bluetooth}/flashing/flashing-full.d.ts +2 -2
- package/build/esm/{flashing → bluetooth/flashing}/flashing-full.js +6 -5
- package/build/esm/bluetooth/flashing/flashing-full.js.map +1 -0
- package/build/esm/bluetooth/flashing/flashing-makecode.d.ts +10 -0
- package/build/esm/{flashing → bluetooth/flashing}/flashing-makecode.js +5 -2
- package/build/esm/bluetooth/flashing/flashing-makecode.js.map +1 -0
- package/build/esm/bluetooth/flashing/flashing-partial.d.ts +10 -0
- package/build/esm/bluetooth/flashing/flashing-partial.js +142 -0
- package/build/esm/bluetooth/flashing/flashing-partial.js.map +1 -0
- package/build/esm/bluetooth/flashing/flashing-v1.js.map +1 -0
- package/build/esm/{flashing → bluetooth/flashing}/nordic-dfu.d.ts +2 -2
- package/build/esm/{flashing → bluetooth/flashing}/nordic-dfu.js +41 -15
- package/build/esm/bluetooth/flashing/nordic-dfu.js.map +1 -0
- package/build/esm/bluetooth/flashing/zip.js.map +1 -0
- package/build/esm/bluetooth/index.d.ts +5 -0
- package/build/esm/bluetooth/index.js +5 -0
- package/build/esm/bluetooth/index.js.map +1 -0
- package/build/esm/{bluetooth-profile.d.ts → bluetooth/profile.d.ts} +8 -0
- package/build/esm/{bluetooth-profile.js → bluetooth/profile.js} +7 -1
- package/build/{cjs/bluetooth-profile.js.map → esm/bluetooth/profile.js.map} +1 -1
- package/build/esm/{accelerometer-service.d.ts → bluetooth/services/accelerometer-service.d.ts} +2 -3
- package/build/esm/{accelerometer-service.js → bluetooth/services/accelerometer-service.js} +11 -6
- package/build/esm/bluetooth/services/accelerometer-service.js.map +1 -0
- package/build/{cjs → esm/bluetooth/services}/button-service.d.ts +2 -3
- package/build/esm/{button-service.js → bluetooth/services/button-service.js} +20 -10
- package/build/esm/bluetooth/services/button-service.js.map +1 -0
- package/build/{cjs → esm/bluetooth/services}/device-information-service.d.ts +1 -1
- package/build/esm/bluetooth/services/device-information-service.js +25 -0
- package/build/esm/bluetooth/services/device-information-service.js.map +1 -0
- package/build/esm/{dfu-service.js → bluetooth/services/dfu-service.js} +1 -1
- package/build/esm/bluetooth/services/dfu-service.js.map +1 -0
- package/build/esm/bluetooth/services/event-service.d.ts +48 -0
- package/build/esm/bluetooth/services/event-service.js +269 -0
- package/build/esm/bluetooth/services/event-service.js.map +1 -0
- package/build/esm/bluetooth/services/io-pin-service.d.ts +65 -0
- package/build/esm/bluetooth/services/io-pin-service.js +169 -0
- package/build/esm/bluetooth/services/io-pin-service.js.map +1 -0
- package/build/{cjs → esm/bluetooth/services}/led-service.d.ts +2 -3
- package/build/esm/{led-service.js → bluetooth/services/led-service.js} +4 -1
- package/build/esm/bluetooth/services/led-service.js.map +1 -0
- package/build/esm/{magnetometer-service.d.ts → bluetooth/services/magnetometer-service.d.ts} +2 -3
- package/build/esm/{magnetometer-service.js → bluetooth/services/magnetometer-service.js} +11 -6
- package/build/esm/bluetooth/services/magnetometer-service.js.map +1 -0
- package/build/{cjs → esm/bluetooth/services}/partial-flashing-service.d.ts +1 -1
- package/build/esm/{partial-flashing-service.js → bluetooth/services/partial-flashing-service.js} +4 -4
- package/build/esm/bluetooth/services/partial-flashing-service.js.map +1 -0
- package/build/esm/bluetooth/services/temperature-service.d.ts +14 -0
- package/build/esm/bluetooth/services/temperature-service.js +76 -0
- package/build/esm/bluetooth/services/temperature-service.js.map +1 -0
- package/build/esm/{uart-service.d.ts → bluetooth/services/uart-service.d.ts} +2 -2
- package/build/esm/{uart-service.js → bluetooth/services/uart-service.js} +18 -6
- package/build/esm/bluetooth/services/uart-service.js.map +1 -0
- package/build/esm/board-id.d.ts +1 -1
- package/build/esm/board-id.js.map +1 -1
- package/build/esm/device.d.ts +191 -101
- package/build/esm/device.js +45 -104
- package/build/esm/device.js.map +1 -1
- package/build/esm/events.d.ts +8 -108
- package/build/esm/events.js +26 -86
- package/build/esm/events.js.map +1 -1
- package/build/esm/hex-util.d.ts +1 -0
- package/build/esm/hex-util.js +11 -0
- package/build/esm/hex-util.js.map +1 -0
- package/build/esm/index.d.ts +8 -16
- package/build/esm/index.js +7 -11
- package/build/esm/index.js.map +1 -1
- package/build/esm/logging.js.map +1 -1
- package/build/esm/microbit-events.d.ts +67 -0
- package/build/esm/microbit-events.js +52 -0
- package/build/esm/microbit-events.js.map +1 -0
- package/build/esm/radio-bridge/connection.d.ts +52 -0
- package/build/esm/{usb-radio-bridge.js → radio-bridge/connection.js} +84 -96
- package/build/esm/radio-bridge/connection.js.map +1 -0
- package/build/esm/radio-bridge/index.d.ts +4 -0
- package/build/esm/radio-bridge/index.js +5 -0
- package/build/esm/radio-bridge/index.js.map +1 -0
- package/build/esm/{usb-serial-protocol.js → radio-bridge/serial-protocol.js} +1 -1
- package/build/esm/radio-bridge/serial-protocol.js.map +1 -0
- package/build/esm/service-events.d.ts +92 -15
- package/build/esm/service-events.js +5 -34
- package/build/esm/service-events.js.map +1 -1
- package/build/{cjs/hex-flash-data-source.d.ts → esm/universal-hex/flash-data-source.d.ts} +1 -1
- package/build/esm/{hex-flash-data-source.js → universal-hex/flash-data-source.js} +6 -3
- package/build/esm/universal-hex/flash-data-source.js.map +1 -0
- package/build/esm/universal-hex/index.d.ts +4 -0
- package/build/esm/universal-hex/index.js +5 -0
- package/build/esm/universal-hex/index.js.map +1 -0
- package/build/esm/usb/arm-debug.d.ts +137 -0
- package/build/esm/usb/arm-debug.js +409 -0
- package/build/esm/usb/arm-debug.js.map +1 -0
- package/build/{cjs → esm/usb}/board-serial-info.d.ts +2 -1
- package/build/esm/{board-serial-info.js → usb/board-serial-info.js} +10 -7
- package/build/esm/usb/board-serial-info.js.map +1 -0
- package/build/esm/usb/cdc-saturation.d.ts +36 -0
- package/build/esm/usb/cdc-saturation.js +148 -0
- package/build/esm/usb/cdc-saturation.js.map +1 -0
- package/build/esm/usb/cmsis-dap.d.ts +113 -0
- package/build/esm/usb/cmsis-dap.js +342 -0
- package/build/esm/usb/cmsis-dap.js.map +1 -0
- package/build/esm/usb/connection.d.ts +96 -0
- package/build/esm/{usb.js → usb/connection.js} +253 -168
- package/build/esm/usb/connection.js.map +1 -0
- package/build/esm/usb/cortex-m.d.ts +72 -0
- package/build/esm/usb/cortex-m.js +161 -0
- package/build/esm/usb/cortex-m.js.map +1 -0
- package/build/esm/usb/daplink.d.ts +69 -0
- package/build/esm/usb/daplink.js +231 -0
- package/build/esm/usb/daplink.js.map +1 -0
- package/build/esm/usb/device-wrapper.d.ts +34 -0
- package/build/esm/usb/device-wrapper.js +98 -0
- package/build/esm/usb/device-wrapper.js.map +1 -0
- package/build/esm/usb/index.d.ts +5 -0
- package/build/esm/usb/index.js +5 -0
- package/build/esm/usb/index.js.map +1 -0
- package/build/{cjs/usb-partial-flashing-utils.d.ts → esm/usb/partial-flashing-utils.d.ts} +6 -9
- package/build/esm/{usb-partial-flashing-utils.js → usb/partial-flashing-utils.js} +4 -44
- package/build/esm/usb/partial-flashing-utils.js.map +1 -0
- package/build/{cjs/usb-partial-flashing.d.ts → esm/usb/partial-flashing.d.ts} +37 -11
- package/build/esm/{usb-partial-flashing.js → usb/partial-flashing.js} +169 -110
- package/build/esm/usb/partial-flashing.js.map +1 -0
- package/build/esm/usb/promise-queue.js.map +1 -0
- package/build/esm/usb/serial-events.d.ts +16 -0
- package/build/esm/usb/serial-events.js +2 -0
- package/build/esm/usb/serial-events.js.map +1 -0
- package/build/esm/usb/transport.d.ts +42 -0
- package/build/esm/usb/transport.js +151 -0
- package/build/esm/usb/transport.js.map +1 -0
- package/package.json +61 -14
- package/build/cjs/accelerometer-service.js.map +0 -1
- package/build/cjs/accelerometer.d.ts +0 -9
- package/build/cjs/accelerometer.js +0 -16
- package/build/cjs/accelerometer.js.map +0 -1
- package/build/cjs/bluetooth-device-wrapper.js.map +0 -1
- package/build/cjs/bluetooth.d.ts +0 -112
- package/build/cjs/bluetooth.js +0 -457
- package/build/cjs/bluetooth.js.map +0 -1
- package/build/cjs/board-serial-info.js.map +0 -1
- package/build/cjs/button-service.js.map +0 -1
- package/build/cjs/buttons.d.ts +0 -10
- package/build/cjs/buttons.js +0 -22
- package/build/cjs/buttons.js.map +0 -1
- package/build/cjs/constants.d.ts +0 -48
- package/build/cjs/constants.js +0 -73
- package/build/cjs/constants.js.map +0 -1
- package/build/cjs/device-information-service.js +0 -34
- package/build/cjs/device-information-service.js.map +0 -1
- package/build/cjs/dfu-service.js.map +0 -1
- package/build/cjs/flashing/flashing-full.js.map +0 -1
- package/build/cjs/flashing/flashing-makecode.d.ts +0 -6
- package/build/cjs/flashing/flashing-makecode.js.map +0 -1
- package/build/cjs/flashing/flashing-partial.d.ts +0 -9
- package/build/cjs/flashing/flashing-partial.js +0 -98
- package/build/cjs/flashing/flashing-partial.js.map +0 -1
- package/build/cjs/flashing/flashing-v1.js.map +0 -1
- package/build/cjs/flashing/nordic-dfu.js.map +0 -1
- package/build/cjs/flashing/zip.js.map +0 -1
- package/build/cjs/hex-flash-data-source.js.map +0 -1
- package/build/cjs/led-service.js.map +0 -1
- package/build/cjs/led.d.ts +0 -6
- package/build/cjs/led.js.map +0 -1
- package/build/cjs/magnetometer-service.js.map +0 -1
- package/build/cjs/magnetometer.d.ts +0 -9
- package/build/cjs/magnetometer.js +0 -16
- package/build/cjs/magnetometer.js.map +0 -1
- package/build/cjs/partial-flashing-service.js.map +0 -1
- package/build/cjs/promise-queue.js.map +0 -1
- package/build/cjs/serial-events.d.ts +0 -20
- package/build/cjs/serial-events.js +0 -69
- package/build/cjs/serial-events.js.map +0 -1
- package/build/cjs/setupTests.d.ts +0 -6
- package/build/cjs/setupTests.js.map +0 -1
- package/build/cjs/uart-service.js.map +0 -1
- package/build/cjs/uart.d.ts +0 -4
- package/build/cjs/uart.js +0 -16
- package/build/cjs/uart.js.map +0 -1
- package/build/cjs/usb-device-wrapper.d.ts +0 -47
- package/build/cjs/usb-device-wrapper.js +0 -437
- package/build/cjs/usb-device-wrapper.js.map +0 -1
- package/build/cjs/usb-partial-flashing-utils.js.map +0 -1
- package/build/cjs/usb-partial-flashing.js.map +0 -1
- package/build/cjs/usb-radio-bridge.d.ts +0 -24
- package/build/cjs/usb-radio-bridge.js.map +0 -1
- package/build/cjs/usb-serial-protocol.js.map +0 -1
- package/build/cjs/usb.d.ts +0 -66
- package/build/cjs/usb.js.map +0 -1
- package/build/esm/accelerometer-service.js.map +0 -1
- package/build/esm/accelerometer.d.ts +0 -9
- package/build/esm/accelerometer.js +0 -12
- package/build/esm/accelerometer.js.map +0 -1
- package/build/esm/bluetooth-device-wrapper.js.map +0 -1
- package/build/esm/bluetooth-profile.js.map +0 -1
- package/build/esm/bluetooth.d.ts +0 -112
- package/build/esm/bluetooth.js +0 -427
- package/build/esm/bluetooth.js.map +0 -1
- package/build/esm/board-serial-info.js.map +0 -1
- package/build/esm/button-service.js.map +0 -1
- package/build/esm/buttons.d.ts +0 -10
- package/build/esm/buttons.js +0 -18
- package/build/esm/buttons.js.map +0 -1
- package/build/esm/constants.d.ts +0 -48
- package/build/esm/constants.js +0 -70
- package/build/esm/constants.js.map +0 -1
- package/build/esm/device-information-service.js +0 -30
- package/build/esm/device-information-service.js.map +0 -1
- package/build/esm/dfu-service.js.map +0 -1
- package/build/esm/flashing/flashing-full.js.map +0 -1
- package/build/esm/flashing/flashing-makecode.d.ts +0 -6
- package/build/esm/flashing/flashing-makecode.js.map +0 -1
- package/build/esm/flashing/flashing-partial.d.ts +0 -9
- package/build/esm/flashing/flashing-partial.js +0 -95
- package/build/esm/flashing/flashing-partial.js.map +0 -1
- package/build/esm/flashing/flashing-v1.js.map +0 -1
- package/build/esm/flashing/nordic-dfu.js.map +0 -1
- package/build/esm/flashing/zip.js.map +0 -1
- package/build/esm/hex-flash-data-source.js.map +0 -1
- package/build/esm/led-service.js.map +0 -1
- package/build/esm/led.d.ts +0 -6
- package/build/esm/led.js +0 -2
- package/build/esm/led.js.map +0 -1
- package/build/esm/magnetometer-service.js.map +0 -1
- package/build/esm/magnetometer.d.ts +0 -9
- package/build/esm/magnetometer.js +0 -12
- package/build/esm/magnetometer.js.map +0 -1
- package/build/esm/partial-flashing-service.js.map +0 -1
- package/build/esm/promise-queue.js.map +0 -1
- package/build/esm/serial-events.d.ts +0 -20
- package/build/esm/serial-events.js +0 -61
- package/build/esm/serial-events.js.map +0 -1
- package/build/esm/setupTests.d.ts +0 -6
- package/build/esm/setupTests.js.map +0 -1
- package/build/esm/uart-service.js.map +0 -1
- package/build/esm/uart.d.ts +0 -4
- package/build/esm/uart.js +0 -12
- package/build/esm/uart.js.map +0 -1
- package/build/esm/usb-device-wrapper.d.ts +0 -47
- package/build/esm/usb-device-wrapper.js +0 -410
- package/build/esm/usb-device-wrapper.js.map +0 -1
- package/build/esm/usb-partial-flashing-utils.js.map +0 -1
- package/build/esm/usb-partial-flashing.js.map +0 -1
- package/build/esm/usb-radio-bridge.d.ts +0 -24
- package/build/esm/usb-radio-bridge.js.map +0 -1
- package/build/esm/usb-serial-protocol.js.map +0 -1
- package/build/esm/usb.d.ts +0 -66
- package/build/esm/usb.js.map +0 -1
- package/typedoc.json +0 -14
- /package/build/cjs/{flashing → bluetooth/flashing}/flashing-v1.d.ts +0 -0
- /package/build/cjs/{flashing → bluetooth/flashing}/flashing-v1.js +0 -0
- /package/build/cjs/{flashing → bluetooth/flashing}/zip.d.ts +0 -0
- /package/build/cjs/{flashing → bluetooth/flashing}/zip.js +0 -0
- /package/build/cjs/{dfu-service.d.ts → bluetooth/services/dfu-service.d.ts} +0 -0
- /package/build/cjs/{usb-serial-protocol.d.ts → radio-bridge/serial-protocol.d.ts} +0 -0
- /package/build/cjs/{promise-queue.d.ts → usb/promise-queue.d.ts} +0 -0
- /package/build/cjs/{promise-queue.js → usb/promise-queue.js} +0 -0
- /package/build/esm/{flashing → bluetooth/flashing}/flashing-v1.d.ts +0 -0
- /package/build/esm/{flashing → bluetooth/flashing}/flashing-v1.js +0 -0
- /package/build/esm/{flashing → bluetooth/flashing}/zip.d.ts +0 -0
- /package/build/esm/{flashing → bluetooth/flashing}/zip.js +0 -0
- /package/build/esm/{dfu-service.d.ts → bluetooth/services/dfu-service.d.ts} +0 -0
- /package/build/esm/{usb-serial-protocol.d.ts → radio-bridge/serial-protocol.d.ts} +0 -0
- /package/build/esm/{promise-queue.d.ts → usb/promise-queue.d.ts} +0 -0
- /package/build/esm/{promise-queue.js → usb/promise-queue.js} +0 -0
|
@@ -4,17 +4,26 @@
|
|
|
4
4
|
* SPDX-License-Identifier: MIT
|
|
5
5
|
*/
|
|
6
6
|
import { BleDevice, TimeoutOptions } from "@capacitor-community/bluetooth-le";
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
7
|
+
import { BoardVersion, ConnectOptions } from "../device.js";
|
|
8
|
+
import { Logging, LoggingEvent } from "../logging.js";
|
|
9
|
+
import { ServiceConnectionEventMap, TypedServiceEvent, TypedServiceEventDispatcher } from "../service-events.js";
|
|
10
|
+
import { DeviceBondState } from "./device-bond-state.js";
|
|
11
|
+
import { AccelerometerService } from "./services/accelerometer-service.js";
|
|
12
|
+
import { ButtonService } from "./services/button-service.js";
|
|
13
|
+
import { DeviceInformationService } from "./services/device-information-service.js";
|
|
14
|
+
import { EventService } from "./services/event-service.js";
|
|
15
|
+
import { IoPinService } from "./services/io-pin-service.js";
|
|
16
|
+
import { LedService } from "./services/led-service.js";
|
|
17
|
+
import { MagnetometerService } from "./services/magnetometer-service.js";
|
|
18
|
+
import { TemperatureService } from "./services/temperature-service.js";
|
|
19
|
+
import { UARTService } from "./services/uart-service.js";
|
|
20
|
+
/**
|
|
21
|
+
* The @capacitor-community/bluetooth-le plugin throws this message when
|
|
22
|
+
* a characteristic UUID is not found in the device's GATT table.
|
|
23
|
+
*/
|
|
24
|
+
export declare const isCharacteristicNotFoundError: (e: unknown) => boolean;
|
|
16
25
|
export declare const bondingTimeoutInMs = 40000;
|
|
17
|
-
export declare const connectTimeoutInMs =
|
|
26
|
+
export declare const connectTimeoutInMs = 10000;
|
|
18
27
|
export declare const scanningTimeoutInMs = 10000;
|
|
19
28
|
export declare const isAndroid: () => boolean;
|
|
20
29
|
export interface Service {
|
|
@@ -25,24 +34,25 @@ export interface Service {
|
|
|
25
34
|
}
|
|
26
35
|
interface ConnectCallbacks {
|
|
27
36
|
onConnecting: () => void;
|
|
28
|
-
|
|
29
|
-
onFail: () => void;
|
|
37
|
+
onDisconnect: () => void;
|
|
30
38
|
onSuccess: () => void;
|
|
31
39
|
}
|
|
32
40
|
export declare class BluetoothDeviceWrapper implements Logging {
|
|
33
|
-
readonly
|
|
41
|
+
readonly bleDevice: BleDevice;
|
|
34
42
|
private logging;
|
|
43
|
+
private deviceBondState;
|
|
35
44
|
private currentEvents;
|
|
36
45
|
private callbacks;
|
|
37
|
-
|
|
38
|
-
private connected;
|
|
39
|
-
private isReconnect;
|
|
46
|
+
connected: boolean;
|
|
40
47
|
private serviceIds;
|
|
41
48
|
accelerometer: AccelerometerService;
|
|
42
49
|
buttons: ButtonService;
|
|
43
50
|
deviceInformation: DeviceInformationService;
|
|
51
|
+
events: EventService;
|
|
52
|
+
ioPin: IoPinService;
|
|
44
53
|
led: LedService;
|
|
45
54
|
magnetometer: MagnetometerService;
|
|
55
|
+
temperature: TemperatureService;
|
|
46
56
|
uart: UARTService;
|
|
47
57
|
/**
|
|
48
58
|
* Only defined after connection.
|
|
@@ -51,13 +61,13 @@ export declare class BluetoothDeviceWrapper implements Logging {
|
|
|
51
61
|
private services;
|
|
52
62
|
private waitingForDisconnectEventCallbacks;
|
|
53
63
|
private internalNotificationListeners;
|
|
54
|
-
constructor(
|
|
55
|
-
|
|
64
|
+
constructor(bleDevice: BleDevice, logging: Logging | undefined, deviceBondState: DeviceBondState | undefined, dispatchTypedEvent: TypedServiceEventDispatcher, currentEvents: () => Array<keyof ServiceConnectionEventMap>, callbacks: ConnectCallbacks);
|
|
65
|
+
setBonded(isBonded: boolean): void;
|
|
66
|
+
connect(options?: ConnectOptions): Promise<void>;
|
|
56
67
|
private connectInternal;
|
|
57
68
|
disconnect(): Promise<void>;
|
|
58
69
|
private disconnectInternal;
|
|
59
|
-
|
|
60
|
-
handleDisconnectEvent: () => Promise<void>;
|
|
70
|
+
handleDisconnectEvent: () => void;
|
|
61
71
|
getBoardVersion(): Promise<BoardVersion>;
|
|
62
72
|
startNotifications(type: TypedServiceEvent): Promise<void>;
|
|
63
73
|
stopNotifications(type: TypedServiceEvent): Promise<void>;
|
|
@@ -81,7 +91,6 @@ export declare class BluetoothDeviceWrapper implements Logging {
|
|
|
81
91
|
raceDisconnectAndTimeout<T>(promise: Promise<T>, options?: {
|
|
82
92
|
actionName?: string;
|
|
83
93
|
timeout?: number;
|
|
84
|
-
initiallyDisconnected?: boolean;
|
|
85
94
|
}): Promise<T>;
|
|
86
95
|
private disconnectErrorPromise;
|
|
87
96
|
event(event: LoggingEvent): void;
|
|
@@ -94,5 +103,11 @@ export declare class BluetoothDeviceWrapper implements Logging {
|
|
|
94
103
|
*/
|
|
95
104
|
private connectHandlingBond;
|
|
96
105
|
private bondConnectDeviceInternal;
|
|
106
|
+
/**
|
|
107
|
+
* On iOS, accessing an encrypted characteristic triggers the pairing dialog.
|
|
108
|
+
* Try each candidate characteristic in turn until one succeeds. The error is
|
|
109
|
+
* fast (local GATT cache lookup) so there's no meaningful delay from retries.
|
|
110
|
+
*/
|
|
111
|
+
private triggerIosPairing;
|
|
97
112
|
}
|
|
98
113
|
export {};
|
|
@@ -5,49 +5,37 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { BleClient, } from "@capacitor-community/bluetooth-le";
|
|
7
7
|
import { Capacitor } from "@capacitor/core";
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
8
|
+
import { DisconnectError, disconnectErrorCallback, TimeoutError, timeoutErrorAfter, } from "../async-util.js";
|
|
9
|
+
import { DeviceError, ProgressStage, } from "../device.js";
|
|
10
|
+
import { ConsoleLogging } from "../logging.js";
|
|
11
|
+
import { DefaultDeviceBondState, } from "./device-bond-state.js";
|
|
12
|
+
import { profile } from "./profile.js";
|
|
13
|
+
import { AccelerometerService } from "./services/accelerometer-service.js";
|
|
14
|
+
import { ButtonService } from "./services/button-service.js";
|
|
15
|
+
import { DeviceInformationService } from "./services/device-information-service.js";
|
|
16
|
+
import { EventService } from "./services/event-service.js";
|
|
17
|
+
import { IoPinService } from "./services/io-pin-service.js";
|
|
18
|
+
import { LedService } from "./services/led-service.js";
|
|
19
|
+
import { MagnetometerService } from "./services/magnetometer-service.js";
|
|
20
|
+
import { MicroBitMode, PartialFlashingService, } from "./services/partial-flashing-service.js";
|
|
21
|
+
import { TemperatureService } from "./services/temperature-service.js";
|
|
22
|
+
import { UARTService } from "./services/uart-service.js";
|
|
23
|
+
/**
|
|
24
|
+
* The @capacitor-community/bluetooth-le plugin throws this message when
|
|
25
|
+
* a characteristic UUID is not found in the device's GATT table.
|
|
26
|
+
*/
|
|
27
|
+
export const isCharacteristicNotFoundError = (e) => e instanceof Error && e.message === "Characteristic not found.";
|
|
18
28
|
export const bondingTimeoutInMs = 40_000;
|
|
19
|
-
export const connectTimeoutInMs =
|
|
29
|
+
export const connectTimeoutInMs = 10_000;
|
|
20
30
|
export const scanningTimeoutInMs = 10_000;
|
|
21
|
-
const connectionMaxAttempts = 4;
|
|
22
31
|
export const isAndroid = () => Capacitor.getPlatform() === "android";
|
|
23
|
-
// TODO: We've removed the support for these behaviours as we need to
|
|
24
|
-
// re-evaluate how best to support then via capacitor-ble (or reinstate
|
|
25
|
-
// the direct Web Bluetooth connection code.
|
|
26
|
-
//
|
|
27
|
-
// On ChromeOS and Mac there's no timeout and no clear way to abort
|
|
28
|
-
// device.gatt.connect(), so we accept that sometimes we'll still
|
|
29
|
-
// be trying to connect when we'd rather not be. If it succeeds when
|
|
30
|
-
// we no longer intend to be connected then we disconnect at that
|
|
31
|
-
// point. If we try to connect when a previous connection attempt is
|
|
32
|
-
// still around then we wait for it for our timeout period.
|
|
33
|
-
//
|
|
34
|
-
// On Windows it times out after 7s.
|
|
35
|
-
// https://bugs.chromium.org/p/chromium/issues/detail?id=684073
|
|
36
|
-
//
|
|
37
|
-
// Additionally we've remove the delay before trying to connect again
|
|
38
|
-
// on Windows.
|
|
39
|
-
//
|
|
40
|
-
// We also used to have a timeout around requestDevice that reloaded the page.
|
|
41
|
-
//
|
|
42
|
-
// > In some situations the Chrome device prompt simply doesn't appear so we time
|
|
43
|
-
// > this out after 30 seconds and reload the page
|
|
44
32
|
export class BluetoothDeviceWrapper {
|
|
45
|
-
constructor(
|
|
46
|
-
Object.defineProperty(this, "
|
|
33
|
+
constructor(bleDevice, logging = new ConsoleLogging(), deviceBondState = new DefaultDeviceBondState(), dispatchTypedEvent, currentEvents, callbacks) {
|
|
34
|
+
Object.defineProperty(this, "bleDevice", {
|
|
47
35
|
enumerable: true,
|
|
48
36
|
configurable: true,
|
|
49
37
|
writable: true,
|
|
50
|
-
value:
|
|
38
|
+
value: bleDevice
|
|
51
39
|
});
|
|
52
40
|
Object.defineProperty(this, "logging", {
|
|
53
41
|
enumerable: true,
|
|
@@ -55,25 +43,23 @@ export class BluetoothDeviceWrapper {
|
|
|
55
43
|
writable: true,
|
|
56
44
|
value: logging
|
|
57
45
|
});
|
|
58
|
-
Object.defineProperty(this, "
|
|
46
|
+
Object.defineProperty(this, "deviceBondState", {
|
|
59
47
|
enumerable: true,
|
|
60
48
|
configurable: true,
|
|
61
49
|
writable: true,
|
|
62
|
-
value:
|
|
50
|
+
value: deviceBondState
|
|
63
51
|
});
|
|
64
|
-
Object.defineProperty(this, "
|
|
52
|
+
Object.defineProperty(this, "currentEvents", {
|
|
65
53
|
enumerable: true,
|
|
66
54
|
configurable: true,
|
|
67
55
|
writable: true,
|
|
68
|
-
value:
|
|
56
|
+
value: currentEvents
|
|
69
57
|
});
|
|
70
|
-
|
|
71
|
-
// or reconnection itself.
|
|
72
|
-
Object.defineProperty(this, "duringExplicitConnectDisconnect", {
|
|
58
|
+
Object.defineProperty(this, "callbacks", {
|
|
73
59
|
enumerable: true,
|
|
74
60
|
configurable: true,
|
|
75
61
|
writable: true,
|
|
76
|
-
value:
|
|
62
|
+
value: callbacks
|
|
77
63
|
});
|
|
78
64
|
Object.defineProperty(this, "connected", {
|
|
79
65
|
enumerable: true,
|
|
@@ -81,12 +67,6 @@ export class BluetoothDeviceWrapper {
|
|
|
81
67
|
writable: true,
|
|
82
68
|
value: false
|
|
83
69
|
});
|
|
84
|
-
Object.defineProperty(this, "isReconnect", {
|
|
85
|
-
enumerable: true,
|
|
86
|
-
configurable: true,
|
|
87
|
-
writable: true,
|
|
88
|
-
value: false
|
|
89
|
-
});
|
|
90
70
|
// Only updated after the full connection flow completes not during bond handling.
|
|
91
71
|
Object.defineProperty(this, "serviceIds", {
|
|
92
72
|
enumerable: true,
|
|
@@ -112,6 +92,18 @@ export class BluetoothDeviceWrapper {
|
|
|
112
92
|
writable: true,
|
|
113
93
|
value: void 0
|
|
114
94
|
});
|
|
95
|
+
Object.defineProperty(this, "events", {
|
|
96
|
+
enumerable: true,
|
|
97
|
+
configurable: true,
|
|
98
|
+
writable: true,
|
|
99
|
+
value: void 0
|
|
100
|
+
});
|
|
101
|
+
Object.defineProperty(this, "ioPin", {
|
|
102
|
+
enumerable: true,
|
|
103
|
+
configurable: true,
|
|
104
|
+
writable: true,
|
|
105
|
+
value: void 0
|
|
106
|
+
});
|
|
115
107
|
Object.defineProperty(this, "led", {
|
|
116
108
|
enumerable: true,
|
|
117
109
|
configurable: true,
|
|
@@ -124,6 +116,12 @@ export class BluetoothDeviceWrapper {
|
|
|
124
116
|
writable: true,
|
|
125
117
|
value: void 0
|
|
126
118
|
});
|
|
119
|
+
Object.defineProperty(this, "temperature", {
|
|
120
|
+
enumerable: true,
|
|
121
|
+
configurable: true,
|
|
122
|
+
writable: true,
|
|
123
|
+
value: void 0
|
|
124
|
+
});
|
|
127
125
|
Object.defineProperty(this, "uart", {
|
|
128
126
|
enumerable: true,
|
|
129
127
|
configurable: true,
|
|
@@ -161,66 +159,64 @@ export class BluetoothDeviceWrapper {
|
|
|
161
159
|
enumerable: true,
|
|
162
160
|
configurable: true,
|
|
163
161
|
writable: true,
|
|
164
|
-
value:
|
|
162
|
+
value: () => {
|
|
165
163
|
this.waitingForDisconnectEventCallbacks.forEach((cb) => cb());
|
|
166
164
|
this.waitingForDisconnectEventCallbacks.length = 0;
|
|
167
165
|
this.connected = false;
|
|
168
|
-
|
|
169
|
-
if (!this.duringExplicitConnectDisconnect) {
|
|
170
|
-
this.logging.log("Bluetooth disconnected... automatically trying reconnect");
|
|
171
|
-
await this.reconnect();
|
|
172
|
-
}
|
|
173
|
-
else {
|
|
174
|
-
this.logging.log("Bluetooth disconnect ignored during explicit disconnect");
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
catch (e) {
|
|
178
|
-
this.logging.error("Bluetooth connect triggered by disconnect listener failed", e);
|
|
179
|
-
}
|
|
166
|
+
this.callbacks.onDisconnect();
|
|
180
167
|
}
|
|
181
168
|
});
|
|
182
|
-
this.accelerometer = new AccelerometerService(
|
|
183
|
-
this.buttons = new ButtonService(
|
|
184
|
-
this.deviceInformation = new DeviceInformationService(
|
|
185
|
-
this.
|
|
186
|
-
this.
|
|
187
|
-
this.
|
|
169
|
+
this.accelerometer = new AccelerometerService(bleDevice.deviceId, dispatchTypedEvent);
|
|
170
|
+
this.buttons = new ButtonService(bleDevice.deviceId, dispatchTypedEvent);
|
|
171
|
+
this.deviceInformation = new DeviceInformationService(bleDevice.deviceId);
|
|
172
|
+
this.events = new EventService(bleDevice.deviceId, dispatchTypedEvent, () => this.boardVersion);
|
|
173
|
+
this.ioPin = new IoPinService(bleDevice.deviceId, dispatchTypedEvent);
|
|
174
|
+
this.led = new LedService(bleDevice.deviceId);
|
|
175
|
+
this.magnetometer = new MagnetometerService(bleDevice.deviceId, dispatchTypedEvent);
|
|
176
|
+
this.temperature = new TemperatureService(bleDevice.deviceId, dispatchTypedEvent);
|
|
177
|
+
this.uart = new UARTService(bleDevice.deviceId, dispatchTypedEvent);
|
|
188
178
|
this.services = [
|
|
189
179
|
this.accelerometer,
|
|
190
180
|
this.buttons,
|
|
181
|
+
this.events,
|
|
182
|
+
this.ioPin,
|
|
191
183
|
this.led,
|
|
192
184
|
this.magnetometer,
|
|
185
|
+
this.temperature,
|
|
193
186
|
this.uart,
|
|
194
187
|
];
|
|
195
188
|
}
|
|
196
|
-
|
|
189
|
+
setBonded(isBonded) {
|
|
190
|
+
this.deviceBondState.setBonded(this.bleDevice.deviceId, isBonded);
|
|
191
|
+
}
|
|
192
|
+
async connect(options) {
|
|
193
|
+
const progress = options?.progress ?? (() => { });
|
|
197
194
|
this.logging.event({
|
|
198
|
-
type:
|
|
195
|
+
type: "Connect",
|
|
199
196
|
message: "Bluetooth connect start",
|
|
200
197
|
});
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
}
|
|
204
|
-
else {
|
|
205
|
-
this.callbacks.onConnecting();
|
|
206
|
-
}
|
|
207
|
-
this.duringExplicitConnectDisconnect++;
|
|
198
|
+
this.callbacks.onConnecting();
|
|
199
|
+
const bondMode = options?.bondMode ?? "pairing";
|
|
208
200
|
try {
|
|
209
|
-
if (Capacitor.isNativePlatform()) {
|
|
210
|
-
|
|
201
|
+
if (Capacitor.isNativePlatform() && bondMode !== "none") {
|
|
202
|
+
const isBonded = this.deviceBondState.isBonded(this.bleDevice.deviceId);
|
|
203
|
+
await this.connectHandlingBond(progress, isBonded ?? false, bondMode);
|
|
204
|
+
this.setBonded(true);
|
|
205
|
+
// We need this on Android for reconnecting after DFU.
|
|
206
|
+
await BleClient.discoverServices(this.bleDevice.deviceId);
|
|
211
207
|
}
|
|
212
208
|
else {
|
|
209
|
+
progress(ProgressStage.Connecting);
|
|
213
210
|
await this.connectInternal();
|
|
214
211
|
}
|
|
215
212
|
await this.getBoardVersion();
|
|
216
213
|
const events = this.currentEvents();
|
|
217
|
-
await BleClient.
|
|
218
|
-
const services = await BleClient.getServices(this.device.deviceId);
|
|
214
|
+
const services = await BleClient.getServices(this.bleDevice.deviceId);
|
|
219
215
|
this.serviceIds = new Set(services.map((s) => s.uuid));
|
|
220
216
|
this.logging.log(`Starting notifications for current events ${events}`);
|
|
221
217
|
events.forEach((e) => this.startNotifications(e));
|
|
222
218
|
this.logging.event({
|
|
223
|
-
type:
|
|
219
|
+
type: "Connect",
|
|
224
220
|
message: "Bluetooth connect success",
|
|
225
221
|
});
|
|
226
222
|
this.callbacks.onSuccess();
|
|
@@ -228,79 +224,53 @@ export class BluetoothDeviceWrapper {
|
|
|
228
224
|
catch (e) {
|
|
229
225
|
this.logging.error("Bluetooth connect error", e);
|
|
230
226
|
this.logging.event({
|
|
231
|
-
type:
|
|
227
|
+
type: "Connect",
|
|
232
228
|
message: "Bluetooth connect failed",
|
|
233
229
|
});
|
|
234
230
|
await this.disconnectInternal(false);
|
|
235
|
-
this.callbacks.
|
|
231
|
+
this.callbacks.onDisconnect();
|
|
236
232
|
if (e instanceof DeviceError) {
|
|
237
233
|
throw e;
|
|
238
234
|
}
|
|
239
|
-
|
|
235
|
+
this.setBonded(false);
|
|
236
|
+
if (
|
|
237
|
+
// Error thrown in iOS only.
|
|
238
|
+
e instanceof Error &&
|
|
239
|
+
e.message === "Peer removed pairing information") {
|
|
240
240
|
throw new DeviceError({
|
|
241
|
-
code: "
|
|
242
|
-
message: e
|
|
241
|
+
code: "pairing-information-lost",
|
|
242
|
+
message: e.message,
|
|
243
|
+
cause: e,
|
|
243
244
|
});
|
|
244
245
|
}
|
|
245
246
|
throw new DeviceError({
|
|
246
|
-
code: "
|
|
247
|
+
code: "connection-error",
|
|
247
248
|
message: e instanceof Error ? e.message : String(e),
|
|
249
|
+
cause: e,
|
|
248
250
|
});
|
|
249
251
|
}
|
|
250
|
-
finally {
|
|
251
|
-
this.duringExplicitConnectDisconnect--;
|
|
252
|
-
// Reset isReconnect for next time
|
|
253
|
-
this.isReconnect = false;
|
|
254
|
-
}
|
|
255
252
|
}
|
|
256
253
|
async connectInternal() {
|
|
257
254
|
this.waitingForDisconnectEventCallbacks.length = 0;
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
await this.raceDisconnectAndTimeout(BleClient.connect(this.device.deviceId, this.handleDisconnectEvent), {
|
|
263
|
-
actionName: "connect internal",
|
|
264
|
-
timeout: connectTimeoutInMs,
|
|
265
|
-
initiallyDisconnected: true,
|
|
266
|
-
});
|
|
267
|
-
this.connected = true;
|
|
268
|
-
return;
|
|
269
|
-
}
|
|
270
|
-
catch (error) {
|
|
271
|
-
const attempts = i + 1;
|
|
272
|
-
if (attempts === connectionMaxAttempts) {
|
|
273
|
-
throw error;
|
|
274
|
-
}
|
|
275
|
-
const delayDuration = Math.pow(2, i) * 1000; // 1s, 2s, 4s
|
|
276
|
-
this.logging.log(`Attempt ${attempts} failed, retrying in ${delayDuration}ms...`);
|
|
277
|
-
await delay(delayDuration);
|
|
278
|
-
}
|
|
279
|
-
}
|
|
255
|
+
await BleClient.connect(this.bleDevice.deviceId, this.handleDisconnectEvent, {
|
|
256
|
+
timeout: connectTimeoutInMs,
|
|
257
|
+
});
|
|
258
|
+
this.connected = true;
|
|
280
259
|
}
|
|
281
260
|
async disconnect() {
|
|
282
261
|
return this.disconnectInternal(true);
|
|
283
262
|
}
|
|
284
263
|
async disconnectInternal(userTriggered) {
|
|
285
264
|
this.logging.log(`Bluetooth disconnect ${userTriggered ? "(user triggered)" : "(programmatic)"}`);
|
|
286
|
-
this.duringExplicitConnectDisconnect++;
|
|
287
265
|
try {
|
|
288
266
|
if (this.connected) {
|
|
289
|
-
await BleClient.disconnect(this.
|
|
267
|
+
await BleClient.disconnect(this.bleDevice.deviceId);
|
|
290
268
|
}
|
|
291
269
|
}
|
|
292
270
|
catch (e) {
|
|
293
271
|
this.logging.error("Bluetooth GATT disconnect error (ignored)", e);
|
|
294
272
|
// We might have already lost the connection.
|
|
295
273
|
}
|
|
296
|
-
finally {
|
|
297
|
-
this.duringExplicitConnectDisconnect--;
|
|
298
|
-
}
|
|
299
|
-
}
|
|
300
|
-
async reconnect() {
|
|
301
|
-
this.logging.log("Bluetooth reconnect");
|
|
302
|
-
this.isReconnect = true;
|
|
303
|
-
await this.connect();
|
|
304
274
|
}
|
|
305
275
|
async getBoardVersion() {
|
|
306
276
|
// We read this when we connect and it won't change.
|
|
@@ -321,7 +291,7 @@ export class BluetoothDeviceWrapper {
|
|
|
321
291
|
}
|
|
322
292
|
async startInternalNotifications(serviceId, characteristicId, options) {
|
|
323
293
|
const key = this.getNotificationKey(serviceId, characteristicId);
|
|
324
|
-
await this.raceDisconnectAndTimeout(BleClient.startNotifications(this.
|
|
294
|
+
await this.raceDisconnectAndTimeout(BleClient.startNotifications(this.bleDevice.deviceId, serviceId, characteristicId, (value) => {
|
|
325
295
|
const bytes = new Uint8Array(value.buffer);
|
|
326
296
|
// Notify all registered callbacks.
|
|
327
297
|
this.internalNotificationListeners
|
|
@@ -341,7 +311,7 @@ export class BluetoothDeviceWrapper {
|
|
|
341
311
|
this.internalNotificationListeners.get(key)?.delete(callback);
|
|
342
312
|
}
|
|
343
313
|
async stopInternalNotifications(serviceId, characteristicId) {
|
|
344
|
-
await BleClient.stopNotifications(this.
|
|
314
|
+
await BleClient.stopNotifications(this.bleDevice.deviceId, serviceId, characteristicId);
|
|
345
315
|
const key = this.getNotificationKey(serviceId, characteristicId);
|
|
346
316
|
this.internalNotificationListeners.delete(key);
|
|
347
317
|
}
|
|
@@ -362,7 +332,7 @@ export class BluetoothDeviceWrapper {
|
|
|
362
332
|
this.subscribe(serviceId, characteristicId, notificationListener);
|
|
363
333
|
});
|
|
364
334
|
try {
|
|
365
|
-
await BleClient.writeWithoutResponse(this.
|
|
335
|
+
await BleClient.writeWithoutResponse(this.bleDevice.deviceId, serviceId, characteristicId, value);
|
|
366
336
|
return await this.raceDisconnectAndTimeout(notificationPromise, {
|
|
367
337
|
timeout: 3_000,
|
|
368
338
|
actionName: "flash notification wait",
|
|
@@ -400,7 +370,7 @@ export class BluetoothDeviceWrapper {
|
|
|
400
370
|
* and general disconnection
|
|
401
371
|
*/
|
|
402
372
|
async raceDisconnectAndTimeout(promise, options = {}) {
|
|
403
|
-
if (!this.connected
|
|
373
|
+
if (!this.connected) {
|
|
404
374
|
throw new DisconnectError();
|
|
405
375
|
}
|
|
406
376
|
const actionName = options.actionName ?? "action";
|
|
@@ -432,9 +402,10 @@ export class BluetoothDeviceWrapper {
|
|
|
432
402
|
* Bonds with device and handles the post-bond device state only returning
|
|
433
403
|
* when we can reattempt a connection with the device.
|
|
434
404
|
*/
|
|
435
|
-
async connectHandlingBond() {
|
|
405
|
+
async connectHandlingBond(progress, isAlreadyIosBonded, bondMode) {
|
|
406
|
+
progress(ProgressStage.CheckingBond);
|
|
436
407
|
const startTime = Date.now();
|
|
437
|
-
const maybeJustBonded = await this.bondConnectDeviceInternal();
|
|
408
|
+
const maybeJustBonded = await this.bondConnectDeviceInternal(isAlreadyIosBonded);
|
|
438
409
|
if (maybeJustBonded) {
|
|
439
410
|
// If we did just bond then the device disconnects after 2_000 and then
|
|
440
411
|
// resets after a further 13_000 In future we'd like a firmware change
|
|
@@ -461,18 +432,31 @@ export class BluetoothDeviceWrapper {
|
|
|
461
432
|
}
|
|
462
433
|
}
|
|
463
434
|
await this.connectInternal();
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
435
|
+
try {
|
|
436
|
+
const targetMode = bondMode === "pairing"
|
|
437
|
+
? MicroBitMode.Pairing
|
|
438
|
+
: MicroBitMode.Application;
|
|
439
|
+
progress(ProgressStage.ResettingDevice);
|
|
440
|
+
this.log(`Resetting to ${bondMode} mode`);
|
|
441
|
+
const pf = new PartialFlashingService(this);
|
|
442
|
+
await pf.resetToMode(targetMode);
|
|
443
|
+
await this.waitForDisconnect(10_000);
|
|
444
|
+
progress(ProgressStage.Connecting);
|
|
445
|
+
await this.connectInternal();
|
|
446
|
+
}
|
|
447
|
+
catch (e) {
|
|
448
|
+
if (isCharacteristicNotFoundError(e)) {
|
|
449
|
+
this.log("Partial flashing characteristic not found, skipping reset.");
|
|
450
|
+
}
|
|
451
|
+
else {
|
|
452
|
+
throw e;
|
|
453
|
+
}
|
|
454
|
+
}
|
|
472
455
|
}
|
|
456
|
+
this.log(`Connection ready; took ${Date.now() - startTime}`);
|
|
473
457
|
}
|
|
474
|
-
async bondConnectDeviceInternal() {
|
|
475
|
-
const { deviceId } = this.
|
|
458
|
+
async bondConnectDeviceInternal(isAlreadyIosBonded) {
|
|
459
|
+
const { deviceId } = this.bleDevice;
|
|
476
460
|
if (isAndroid()) {
|
|
477
461
|
let justBonded = false;
|
|
478
462
|
// This gets us a nicer pairing dialog than just going straight for the characteristic.
|
|
@@ -490,12 +474,54 @@ export class BluetoothDeviceWrapper {
|
|
|
490
474
|
// need to call startNotifications again. We need to be connected to
|
|
491
475
|
// startNotifications.
|
|
492
476
|
await this.connectInternal();
|
|
477
|
+
if (!isAlreadyIosBonded) {
|
|
478
|
+
await this.triggerIosPairing({ timeout: bondingTimeoutInMs });
|
|
479
|
+
}
|
|
480
|
+
return !isAlreadyIosBonded;
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
/**
|
|
484
|
+
* On iOS, accessing an encrypted characteristic triggers the pairing dialog.
|
|
485
|
+
* Try each candidate characteristic in turn until one succeeds. The error is
|
|
486
|
+
* fast (local GATT cache lookup) so there's no meaningful delay from retries.
|
|
487
|
+
*/
|
|
488
|
+
async triggerIosPairing(options) {
|
|
489
|
+
const { deviceId } = this.bleDevice;
|
|
490
|
+
// 1. Partial flashing notifications (most common case)
|
|
491
|
+
try {
|
|
493
492
|
const pf = new PartialFlashingService(this);
|
|
494
|
-
await pf.startNotifications(
|
|
495
|
-
// We just did it now to trigger pairing at a well defined point.
|
|
493
|
+
await pf.startNotifications(options);
|
|
496
494
|
await pf.stopNotifications();
|
|
497
|
-
return
|
|
495
|
+
return;
|
|
496
|
+
}
|
|
497
|
+
catch (e) {
|
|
498
|
+
if (!isCharacteristicNotFoundError(e)) {
|
|
499
|
+
throw e;
|
|
500
|
+
}
|
|
501
|
+
this.log("PF characteristic not found for pairing trigger, trying Secure DFU");
|
|
502
|
+
}
|
|
503
|
+
// 2. Nordic Secure DFU buttonless notifications (V2 without PF)
|
|
504
|
+
try {
|
|
505
|
+
await BleClient.startNotifications(deviceId, profile.nordicSecureDfu.id, profile.nordicSecureDfu.characteristics.buttonless.id, () => { }, options);
|
|
506
|
+
await BleClient.stopNotifications(deviceId, profile.nordicSecureDfu.id, profile.nordicSecureDfu.characteristics.buttonless.id);
|
|
507
|
+
return;
|
|
508
|
+
}
|
|
509
|
+
catch (e) {
|
|
510
|
+
if (!isCharacteristicNotFoundError(e)) {
|
|
511
|
+
throw e;
|
|
512
|
+
}
|
|
513
|
+
this.log("Secure DFU characteristic not found for pairing trigger, trying DFU control");
|
|
514
|
+
}
|
|
515
|
+
// 3. micro:bit DFU control read (V1 without PF)
|
|
516
|
+
try {
|
|
517
|
+
await BleClient.read(deviceId, profile.dfuControl.id, profile.dfuControl.characteristics.control.id, options);
|
|
518
|
+
}
|
|
519
|
+
catch (e) {
|
|
520
|
+
if (!isCharacteristicNotFoundError(e)) {
|
|
521
|
+
throw e;
|
|
522
|
+
}
|
|
523
|
+
this.log("No suitable characteristic found to trigger pairing");
|
|
498
524
|
}
|
|
499
525
|
}
|
|
500
526
|
}
|
|
501
|
-
//# sourceMappingURL=
|
|
527
|
+
//# sourceMappingURL=device-wrapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"device-wrapper.js","sourceRoot":"","sources":["../../../src/bluetooth/device-wrapper.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import MemoryMap from "nrf-intel-hex";
|
|
2
|
-
import { BoardVersion, ProgressCallback } from "
|
|
3
|
-
import { BluetoothDeviceWrapper } from "../
|
|
2
|
+
import { BoardVersion, ProgressCallback } from "../../device.js";
|
|
3
|
+
import { BluetoothDeviceWrapper } from "../device-wrapper.js";
|
|
4
4
|
/**
|
|
5
5
|
* Perform a full flash via Nordic's DFU service.
|
|
6
6
|
*
|