How vtouchio/wizpr-ring-sdk works
WizprRingSDK is a cross-platform Rust SDK for discovering WIZPR Rings, connecting over BLE, and delivering decoded audio and ring events. The principal workflow is application scan → candidate selection → connection → notification dispatch → audio/event channels. The portable core also provides ADPCM decoding, optional audio cleanup, protocol constants, and WAV serialization; the README documents a desktop capture example and host-managed input locking. Some connection internals and the desktop example were not sampled, so uncertain wiring is omitted.
Main entry points: scanner.rs Ring scanner · connection.rs Ring connection · main.rs Desktop capture · processing.rs Audio processing
Components 16
Device discovery
- Ring scanner
crates/wizpr-ring/src/scanner.rs - Ring candidate
crates/wizpr-ring/src/scanner.rs
BLE transport
- Ring connection
crates/wizpr-ring/src/connection.rs - Notification dispatcher
crates/wizpr-ring/src/connection.rs - Audio channel
crates/wizpr-ring/src/connection.rs - Event channel
crates/wizpr-ring/src/connection.rs
Portable core
- BLE protocol constants
crates/wizpr-ring-core/src/constants.rs - IMA ADPCM codec
crates/wizpr-ring-core/src/codec.rs - Audio processing
crates/wizpr-ring-core/src/processing.rs - Audio chunks
crates/wizpr-ring-core/src/audio.rs - Ring event parser
crates/wizpr-ring-core/src/events.rs - WAV writer
crates/wizpr-ring-core/src/audio.rs
Application integration
- Desktop capture
examples/desktop/src/main.rs - WAV recordings
Other components
- Application
- Bluetooth adapter
Connections 17
- Application → Ring scanner: scans for rings
README.md - Ring scanner → Bluetooth adapter: scans through
crates/wizpr-ring/src/scanner.rs - Ring scanner → Ring candidate: returns candidates
crates/wizpr-ring/src/scanner.rs - Application → Ring candidate: selects candidate
README.md - Ring candidate → Ring connection: connects
crates/wizpr-ring/src/scanner.rs - Ring connection → Bluetooth adapter: connects and subscribes
crates/wizpr-ring/src/connection.rs - Ring connection → Notification dispatcher: starts
crates/wizpr-ring/src/connection.rs - Notification dispatcher → Audio channel: sends chunks
crates/wizpr-ring/src/connection.rs - Notification dispatcher → Event channel: sends events
crates/wizpr-ring/src/connection.rs - Audio processing → IMA ADPCM codec: decodes with
crates/wizpr-ring-core/src/processing.rs - Application → Audio channel: receives audio
README.md - Application → Event channel: receives events
README.md - Application → Audio processing: selects cleanup mode
README.md - Desktop capture → Ring scanner: scans and connects
- Desktop capture → WAV writer: saves recordings
README.md - WAV writer → WAV recordings: writes WAV
crates/wizpr-ring-core/src/audio.rs - Application → Ring connection: requests input lock
README.md