uiharu
A streaming protocol decode engine for logic analyzer software, automated tests and waveform tools. Written in Rust and licensed under Apache-2.0.
Decoders process blocks of logic samples, exchange typed events through bounded queues with backpressure, and compose into a checked decode graph. Events within each output stream are independent of block boundaries and reader pauses.
Using a published crate requires Rust 1.90 or newer. Node/pnpm is needed only to develop the TypeScript decoders in a source checkout; published packages already contain the generated Rust.
A typed SPI pipeline
use Arc;
use ;
use ;
#
The complete SPI example generates and decodes a transaction. Add another decoder to consume the SPI events, for example SPI NOR flash, SD cards or an nRF24L01+ radio.
Features
| Feature | Default | Provides |
|---|---|---|
protocols |
Yes | Built-in decoders under uiharu::protocols |
registry |
No | Named decoders, UI metadata, JSON pipeline descriptions and runtime IR loading under uiharu::registry |
testing |
No | Decoder acceptance harnesses under uiharu::testing, intended for dev-dependencies |
With default-features = false, only the core runtime is included. For a configurable
application, run cargo add uiharu --features registry.
Command line
Documentation and compatibility
- Engine guide and protocol coverage
- Architecture
- Writing decoders
- TypeScript DSL and versioned IR
- Release and compatibility policy
The uiharu-* crates share a release version independent of the HSync application.
Before 1.0, a minor version may introduce incompatible API changes; patch releases
preserve API compatibility. IR format compatibility is identified separately by
the module's ir field and uiharu_ir::IR_VERSION.