No project description provided
Project description
brainsync Rust SDK
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
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fed7dfb795be122ac8201a3679c3d82461e998920bc1d136287ddd27194c52eb
|
|
| MD5 |
b79f9b4124e4204629e260b4d5669656
|
|
| BLAKE2b-256 |
e15129907df89ab50d11ba380c905515babdaa025487c66a2c99a29a6f579463
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c1383d2ac9ee6c46c87323db1022151ca89c27be0632962acf7ab61467d1a2f7
|
|
| MD5 |
8f9647960b8cff9c5b90281561741e0a
|
|
| BLAKE2b-256 |
38eb0d1f4476c27f32c24de45649e94d523e726c89d139d108ff9de42191fc26
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6c532f7ed837be12ad166dcc2ad6877b7aae7d7259eaacf889ef2b4d98204cbb
|
|
| MD5 |
db19f0c41a9aa6319a2e7dbc8d978165
|
|
| BLAKE2b-256 |
8481c49d6937fffcca8960ff471a0e62299b79240c1f528f7511c3cc66206d64
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b6b15e9bac92913039829b983fa4d9ced0d43ae07ac8962672aca16c7d8a0537
|
|
| MD5 |
d4c1498779977cbdb160b740e1e2fc26
|
|
| BLAKE2b-256 |
9086a8f12aed382a233c56a7106a1b4f5b097cb840461b061ebda56157a3821c
|