From a63b3351494f16cc489e7a74dcf0930d19de479f Mon Sep 17 00:00:00 2001 From: Gilles Boccon-Gibod Date: Sun, 29 Oct 2023 09:36:17 -0700 Subject: [PATCH] wip --- .vscode/settings.json | 1 + docs/mkdocs/src/hive/index.md | 25 ++++++++++++++++---- docs/mkdocs/src/hive/web/scanner/scanner.css | 1 + docs/mkdocs/src/hive/web/scanner/scanner.js | 1 + web/ui.js | 4 ++-- 5 files changed, 25 insertions(+), 7 deletions(-) create mode 120000 docs/mkdocs/src/hive/web/scanner/scanner.css create mode 120000 docs/mkdocs/src/hive/web/scanner/scanner.js diff --git a/.vscode/settings.json b/.vscode/settings.json index 57e682a..04a7f40 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -47,6 +47,7 @@ "protobuf", "psms", "pyee", + "Pyodide", "pyusb", "rfcomm", "ROHC", diff --git a/docs/mkdocs/src/hive/index.md b/docs/mkdocs/src/hive/index.md index de6c966..7d6ffed 100644 --- a/docs/mkdocs/src/hive/index.md +++ b/docs/mkdocs/src/hive/index.md @@ -3,18 +3,33 @@ HIVE Welcome to the Bumble Hive. This is a collection of apps and virtual devices that can run entirely in a browser page. -The code for the apps and devices, as well as the Bumble runtime code, runs via [Pyiodide](https://pyodide.org/). +The code for the apps and devices, as well as the Bumble runtime code, runs via [Pyodide](https://pyodide.org/). Pyodide is a Python distribution for the browser and Node.js based on WebAssembly. The Bumble stack uses a WebSocket to exchange HCI packets with a virtual or physical Bluetooth controller. -The apps and devices in the hive can be accessed by following the links below. Each +The apps and devices in the hive can be accessed by following the links below. Each page has a settings button that may be used to configure the WebSocket URL to use for -the virutal HCI connection. This will typically be the WebSocket URL for a `netsim` +the virtual HCI connection. This will typically be the WebSocket URL for a `netsim` daemon. -There is also a [TOML index](index.toml) that can be used by tools to know at which URL to access -each of the apps and devices, as well as their names and short desciptions. +There is also a [TOML index](index.toml) that can be used by tools to know at which URL to access +each of the apps and devices, as well as their names and short descriptions. + +!!! tip "Using `netsim`" + When the `netsimd` daemon is running (for example when using the Android Emulator that + is included in Android Studio), the daemon listens for connections on a TCP port. + To find out what this TCP port is, you can read the `netsim.ini` file that `netsimd` + creates, it includes a line with `web.port=` (for example `web.port=7681`) + +!!! tip "Using a local radio" + You can connect the hive virtual apps and devices to a local Bluetooth radio, like, + for example, a USB dongle. + For that, you need to run a local HCI bridge to bridge a local HCI device to a WebSocket + that a web page can connect to. + Use the `bumble-hci-bridge` app, with the host transport set to a WebSocket server on an + available port (ex: `ws-server:_:7682`) and the controller transport set to the transport + name for the radio you want to use (ex: `usb:0` for the first USB dongle) Applications diff --git a/docs/mkdocs/src/hive/web/scanner/scanner.css b/docs/mkdocs/src/hive/web/scanner/scanner.css new file mode 120000 index 0000000..acc0f9e --- /dev/null +++ b/docs/mkdocs/src/hive/web/scanner/scanner.css @@ -0,0 +1 @@ +../../../../../../web/scanner/scanner.css \ No newline at end of file diff --git a/docs/mkdocs/src/hive/web/scanner/scanner.js b/docs/mkdocs/src/hive/web/scanner/scanner.js new file mode 120000 index 0000000..4d270f4 --- /dev/null +++ b/docs/mkdocs/src/hive/web/scanner/scanner.js @@ -0,0 +1 @@ +../../../../../../web/scanner/scanner.js \ No newline at end of file diff --git a/web/ui.js b/web/ui.js index a72ab67..6e8d877 100644 --- a/web/ui.js +++ b/web/ui.js @@ -59,8 +59,8 @@ class BumbleControls extends LitElement { if (hciUrl) { this.settingsHciUrlInput.value = hciUrl; } else { - // Start with a template. - this.settingsHciUrlInput.value = "ws://localhost:XYZW/v1/websocket/bt" + // Start with default, assuming port 7681. + this.settingsHciUrlInput.value = "ws://localhost:7681/v1/websocket/bt" } this.settingsDialog.showModal(); }