Skip to content

Latest commit

 

History

History
35 lines (24 loc) · 1.77 KB

README.md

File metadata and controls

35 lines (24 loc) · 1.77 KB

Python packages

The Python workspace contains three packages built on the shared Rust protocol. Only the client performs device I/O; firmware inspection is read-only.

Package Purpose
soundcore-d3200 Async recorder client over Bluetooth LE, optional Wi-Fi, and caller-supplied Classic Bluetooth transport. Start here to talk to a D3200.
soundcore-d3200-core Transport-free protocol bindings: framing, commands, crypto, file parsing, and Ogg output.
bestechnic-ota Read-only Bestechnic OTA image inspection. Does not install firmware.

soundcore-d3200 depends on soundcore-d3200-core, which uses the Rust protocol crate. Building the native bindings from source requires Rust; installing published wheels may not. Python 3.12+ is required.

Install

For an application using the recorder:

uv add soundcore-d3200            # Bluetooth LE
uv add 'soundcore-d3200[wifi]'    # optional Wi-Fi transfers

See the client guide for a working example, pairing, downloads, and transport limitations.

Develop

The Python project and uv.lock live at the repository root, while Python's mise tools and tasks live in mise.toml. From the root:

mise -C python install     # uv; Rust comes from the root mise.toml
mise -C python run test    # all Python tests, no recorder required
mise -C python run lint    # Ruff
mise -C python run check:boundaries  # build and import wheels in isolation

The root entry points (mise run test:python, mise run lint, and mise run ci) delegate to these tasks. The tests use synthetic and recorded protocol frames; no Bluetooth hardware is needed.