Skip to content

feat(js): add BLE GATT client to the ble module - #2972

Open
cursedsound-music wants to merge 2 commits into
BruceDevices:devfrom
cursedsound-music:ble-gatt-dev
Open

cursedsound-music wants to merge 2 commits into
BruceDevices:devfrom
cursedsound-music:ble-gatt-dev

Conversation

@cursedsound-music

Copy link
Copy Markdown

Adds a minimal GATT client to the bjs ble module so scripts can connect to a BLE peripheral and read/write its characteristics (NimBLE 2.x):

ble.connect(nameOrAddress, timeoutSec?) -> bool
ble.isConnected() -> bool
ble.read(serviceUUID, charUUID) -> Uint8Array | null
ble.write(serviceUUID, charUUID, Uint8Array|string, withResponse?) -> bool
ble.disconnect()

connect() scans for up to timeoutSec seconds and connects to the first device whose name starts with the given string (case-insensitive) or whose MAC matches. On NimBLE 1.x builds the new functions throw "not supported".

Includes sd_files/interpreter/crafty.js, an example remote for the Storz & Bickel CRAFTY/CRAFTY+ (target/boost temperature, heater on/off, battery), and the regenerated mqjs headers.

Proposed Changes

Types of Changes

Verification

Testing

Linked Issues

User-Facing Change


Further Comments

Adds a minimal GATT client to the bjs `ble` module so scripts can connect
to a BLE peripheral and read/write its characteristics (NimBLE 2.x):

  ble.connect(nameOrAddress, timeoutSec?) -> bool
  ble.isConnected() -> bool
  ble.read(serviceUUID, charUUID) -> Uint8Array | null
  ble.write(serviceUUID, charUUID, Uint8Array|string, withResponse?) -> bool
  ble.disconnect()

connect() scans for up to timeoutSec seconds and connects to the first device
whose name starts with the given string (case-insensitive) or whose MAC
matches. On NimBLE 1.x builds the new functions throw "not supported".

Includes sd_files/interpreter/crafty.js, an example remote for the
Storz & Bickel CRAFTY/CRAFTY+ (target/boost temperature, heater on/off,
battery), and the regenerated mqjs headers.
Ninja-jr pushed a commit to Ninja-jr/Bruce_firmware that referenced this pull request Oct 31, 2026

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant