Skip to main content

No project description provided

Project description

brainsync Rust SDK

Rust License

brainsync 设备的 Rust SDK,提供简单、类型安全、高性能的 API。

🚀 快速开始

一行代码初始化

use brainsync_sdk::serial::open_brainsync_serial;

let device_api = open_brainsync_serial().await?;

就这么简单!device_api 已经完全配置好,支持所有功能。

完整示例

use brainsync_sdk::serial::open_brainsync_serial;
use brainsync_sdk::api::{EegSampleRate, EegGain};
use tokio::time::{sleep, Duration};

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    // 1. 初始化设备
    let device_api = open_brainsync_serial().await?;
    
    // 2. 获取固件版本
    let version = device_api.ota().get_version().await?;
    println!("Version: {}", version);
    
    // 3. 配置 EEG
    device_api.eeg()
        .batch_configure()
        .sample_rate(EegSampleRate::Hz500)
        .gain(EegGain::Gain24)
        .apply()
        .await?;
    
    // 4. 订阅数据
    device_api.subscribe_eeg_data(|packet| {
        let uv = packet.to_microvolts(EegGain::Gain24);
        println!("CH0: {:.2} µV", uv[0]);
    }).await;
    
    // 5. 启用传输
    device_api.eeg().set_transfer(true).await?;
    
    // 6. 运行
    sleep(Duration::from_secs(10)).await;
    
    // 7. 停止
    device_api.eeg().set_transfer(false).await?;
    
    Ok(())
}

📚 文档

核心文档

专题文档

🎯 核心功能

模块 API

模块 功能 文档
EEG 脑电信号采集和配置 API 参考
IMU 惯性测量单元 API 参考
OTA 固件升级 OTA 指南
Magnetometer 磁力计 API 参考
ADC 模数转换器 API 参考
Stimulation 电刺激 API 参考

数据流订阅

// EEG 数据流
device_api.subscribe_eeg_data(|packet| {
    println!("EEG: {:?}", packet.channel_data);
}).await;

// IMU 数据流
device_api.subscribe_imu_data(|packets| {
    for packet in packets {
        println!("IMU: {:?}", packet);
    }
}).await;

// 磁力计数据流
device_api.subscribe_mag_data(|packets| {
    println!("MAG: {} packets", packets.len());
}).await;

// ADC 数据流
device_api.subscribe_adc_data(|packet| {
    println!("Battery: {:.2}V", packet.bat_vol_det_voltage());
}).await;

三种配置方式

1. 基础 API(简单直接)

device_api.eeg().set_sample_rate(EegSampleRate::Hz500).await?;
device_api.eeg().set_gain(EegGain::Gain24).await?;

2. Builder 模式(结构化)

let config = EegConfig::builder()
    .sample_rate(EegSampleRate::Hz500)
    .gain(EegGain::Gain24)
    .build();
device_api.eeg().configure(config).await?;

3. 批量配置(推荐)

device_api.eeg()
    .batch_configure()
    .sample_rate(EegSampleRate::Hz500)
    .gain(EegGain::Gain24)
    .apply()
    .await?;

📦 示例程序

运行示例

# 串口通信示例
cargo run --example serial_example --features "examples serial"

# OTA 固件升级
cargo run --example ota_example --features "examples serial"

# 串口 DFU
cargo run --example serial_dfu --features "examples serial"

# 丢包检测
cargo run --example packet_loss_example --features "examples serial"

示例列表

示例 功能 文件
serial_example 完整功能演示 serial_example.rs
ota_example OTA 升级演示 ota_example.rs
serial_dfu 完整 DFU 流程 serial_dfu.rs
packet_loss_example 丢包检测 packet_loss_example.rs

🏗️ 架构

用户代码 (1行)
    ↓
open_brainsync_serial()
    ↓
Arc<DeviceApi> ← 完整功能
    ├── ota()     → OTA 升级
    ├── eeg()     → EEG 配置
    ├── imu()     → IMU 配置
    └── subscribe_*() → 数据流
    ↓
协议层 (帧编解码)
    ↓
传输层 (串口/蓝牙)
    ↓
硬件设备

详细架构请查看 架构总览

🎨 设计特点

简单性

// 一行代码开始
let device_api = open_brainsync_serial().await?;

类型安全

// 编译时检查,避免运行时错误
device_api.eeg().set_sample_rate(EegSampleRate::Hz500).await?;

异步优先

// 所有 I/O 操作都是异步的
let version = device_api.ota().get_version().await?;

零拷贝

// 直接从字节流解析,避免内存分配
let packet = EegDataPacket::parse(data)?;

共享状态

// 所有模块 API 共享同一个 DeviceApi
let eeg = device_api.eeg();
let ota = device_api.ota();
// 请求-响应正确匹配

🔧 Feature Flags

[dependencies]
brainsync-sdk = { path = "sdk", features = ["serial"] }

可用 features:

  • serial - 串口通信(推荐)
  • ble - 蓝牙通信(开发中)
  • examples - 示例程序

📊 性能

  • 零开销抽象 - 泛型 + 静态分发
  • 查表法 CRC8 - 预计算 CRC 表
  • 原子操作 - 无锁丢包检测
  • 异步 I/O - 基于 Tokio

🧪 测试

# 运行所有测试
cargo test

# 运行特定模块测试
cargo test --lib protocol
cargo test --lib model

# 运行示例作为集成测试
cargo run --example serial_example --features "examples serial"

🤝 贡献

欢迎贡献!请查看 贡献指南

📄 许可证

MIT 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 Distributions

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

brainsync_sdk-0.1.2-cp39-abi3-win_amd64.whl (999.6 kB view details)

Uploaded CPython 3.9+Windows x86-64

brainsync_sdk-0.1.2-cp39-abi3-manylinux_2_34_x86_64.whl (3.0 MB view details)

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

brainsync_sdk-0.1.2-cp39-abi3-manylinux_2_34_aarch64.whl (2.9 MB view details)

Uploaded CPython 3.9+manylinux: glibc 2.34+ ARM64

brainsync_sdk-0.1.2-cp39-abi3-macosx_11_0_arm64.whl (948.5 kB view details)

Uploaded CPython 3.9+macOS 11.0+ ARM64

File details

Details for the file brainsync_sdk-0.1.2-cp39-abi3-win_amd64.whl.

File metadata

  • Download URL: brainsync_sdk-0.1.2-cp39-abi3-win_amd64.whl
  • Upload date:
  • Size: 999.6 kB
  • Tags: CPython 3.9+, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for brainsync_sdk-0.1.2-cp39-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 fed7dfb795be122ac8201a3679c3d82461e998920bc1d136287ddd27194c52eb
MD5 b79f9b4124e4204629e260b4d5669656
BLAKE2b-256 e15129907df89ab50d11ba380c905515babdaa025487c66a2c99a29a6f579463

See more details on using hashes here.

File details

Details for the file brainsync_sdk-0.1.2-cp39-abi3-manylinux_2_34_x86_64.whl.

File metadata

  • Download URL: brainsync_sdk-0.1.2-cp39-abi3-manylinux_2_34_x86_64.whl
  • Upload date:
  • Size: 3.0 MB
  • Tags: CPython 3.9+, manylinux: glibc 2.34+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for brainsync_sdk-0.1.2-cp39-abi3-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 c1383d2ac9ee6c46c87323db1022151ca89c27be0632962acf7ab61467d1a2f7
MD5 8f9647960b8cff9c5b90281561741e0a
BLAKE2b-256 38eb0d1f4476c27f32c24de45649e94d523e726c89d139d108ff9de42191fc26

See more details on using hashes here.

File details

Details for the file brainsync_sdk-0.1.2-cp39-abi3-manylinux_2_34_aarch64.whl.

File metadata

  • Download URL: brainsync_sdk-0.1.2-cp39-abi3-manylinux_2_34_aarch64.whl
  • Upload date:
  • Size: 2.9 MB
  • Tags: CPython 3.9+, manylinux: glibc 2.34+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for brainsync_sdk-0.1.2-cp39-abi3-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 6c532f7ed837be12ad166dcc2ad6877b7aae7d7259eaacf889ef2b4d98204cbb
MD5 db19f0c41a9aa6319a2e7dbc8d978165
BLAKE2b-256 8481c49d6937fffcca8960ff471a0e62299b79240c1f528f7511c3cc66206d64

See more details on using hashes here.

File details

Details for the file brainsync_sdk-0.1.2-cp39-abi3-macosx_11_0_arm64.whl.

File metadata

  • Download URL: brainsync_sdk-0.1.2-cp39-abi3-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 948.5 kB
  • Tags: CPython 3.9+, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.11 {"installer":{"name":"uv","version":"0.10.11","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for brainsync_sdk-0.1.2-cp39-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b6b15e9bac92913039829b983fa4d9ced0d43ae07ac8962672aca16c7d8a0537
MD5 d4c1498779977cbdb160b740e1e2fc26
BLAKE2b-256 9086a8f12aed382a233c56a7106a1b4f5b097cb840461b061ebda56157a3821c

See more details on using hashes here.

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