Skip to main content

Add your description here

Project description

bitalino-rs

Rust driver and Python bindings for BITalino biosignal acquisition devices. This project automates Bluetooth pairing/connection (RFCOMM), exposes a safe Rust API, and ships Python wheels for easy use in data pipelines.

Quick Links

  • Docs: tleygue.github.io/bitalino_rs (published via GitHub Pages; sources in docs/)
  • Python package: bitalino_rs (built with maturin, published from tags)
  • Crate: bitalino-rs (Rust library)

Features

  • Connect to BITalino over Bluetooth without root privileges (automatic pair + bind).
  • High-level Rust API plus generated Python bindings via PyO3/maturin.
  • Timing-aware reads with sequence numbers, CRC tracking, and batch timestamps.
  • Minimal dependencies; Ubuntu support verified in CI.

Project Layout

  • src/ – Rust library (Bluetooth, driver, Python bindings)
  • bitalino_rs/ – Python package stub for maturin builds
  • docs/ – User/developer docs (mkdocs)
  • .github/workflows/ – CI, release, PyPI publish

Install

Python (from PyPI, when released)

uv pip install bitalino-rs

Python (from source)

Requirements: Rust (stable), Python 3.11+, system deps (libdbus-1-dev libudev-dev on Ubuntu).

# in repo root
uv sync

Rust crate (from source)

cargo build --release

Usage

Rust

use bitalino_rs::{Bitalino, SamplingRate};

fn main() -> Result<(), Box<dyn std::error::Error>> {
		let mut dev = Bitalino::connect("7E:91:2B:C4:AF:08", "1234")?;
		dev.start(SamplingRate::Hz1000 as u16, Some(vec![0, 1, 2]))?;
		let frames = dev.read_frames(100)?;
		println!("read {} frames", frames.len());
		dev.stop()?;
		Ok(())
}

Python

from bitalino_rs import Bitalino

dev = Bitalino.connect("7E:91:2B:C4:AF:08")
dev.start(rate=1000, channels=[0, 1, 2])
batch = dev.read_timed(200)
print(batch.timestamp_us, batch.sequence_gaps)
dev.stop()

Development

  • Rust toolchain: rustup toolchain install stable (CI uses stable with rustfmt/clippy)
  • System deps (Linux): sudo apt-get install -y pkg-config libdbus-1-dev libudev-dev
  • Lint/format: pre-commit run --all-files
  • Commit style: Conventional Commits (checked in CI)
  • Tests: cargo test --all-features --all-targets

License

Apache License 2.0. See LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bitalino_rs-0.1.7-cp39-abi3-manylinux_2_28_x86_64.whl (1.6 MB view details)

Uploaded CPython 3.9+manylinux: glibc 2.28+ x86-64

File details

Details for the file bitalino_rs-0.1.7-cp39-abi3-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for bitalino_rs-0.1.7-cp39-abi3-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 892c5f8306eae8201be73f3f6de8caa11656d4b5bd5407f7b147bed60cba88f0
MD5 e2db6d656b1ec1926ea11d105a2db3d4
BLAKE2b-256 70c7d2b97fa0026e2dea80e4844b68f2667308ca2d4962dd32accd0747c69e28

See more details on using hashes here.

Provenance

The following attestation bundles were made for bitalino_rs-0.1.7-cp39-abi3-manylinux_2_28_x86_64.whl:

Publisher: release.yml on tleygue/bitalino_rs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page