MCPcopy Index your code
hub / github.com/diondokter/device-driver

github.com/diondokter/device-driver @v1.0.9

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.0.9 ↗ · + Follow
609 symbols 1,193 edges 56 files 101 documented · 17% updated 5d agov1.0.9 · 2026-04-29★ 30230 open issues

Browse by type

Functions 461 Types & classes 148
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Device driver toolkit #![no_std] crates.io Documentation

A toolkit to write better device drivers, faster.

Read the book to learn about how to use the project to build your own device drivers.

Architecture

This toolkit consists of these parts:

  • device-driver: The main crate you as the writer of a driver should include in your project. It defines a set of types used by the generated code and (by default) reexports the macros.
  • device-driver-generation: The generation crate contains the device-driver compiler. It takes the tokentree or textual inputs and generates the device driver.
  • device-driver-macros: A small frontend to the generation crate. It can take the dsl token stream or open a text file and feed that to the compiler and it outputs the compiler output.
  • device-driver-cli: A small command line interface that uses the generation crate. It allows you to generate the driver in advance to reduce compile times.
  • dd-manifest-tree: A small abstraction over json, yaml and toml crates to unify their value types.
  • tests: A suite of tests that presents input files and compares the known output with the generated output.

Semver

Anything that can reasonably break user code will warrant a breaking semver bump.

The generation and macros crates are considered internal and so might not be as strict in their semver bumps. This is mostly to keep them somewhat in line with the version of the main crate.

If you depend on these crates directly, please let me know! If I know those have direct users, I will be stricter with the versions.

License

Licensed under either of

  • Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
  • MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Extension points exported contracts — how you extend this code

Core symbols most depended-on inside this repo

Shape

Method 257
Function 204
Class 92
Enum 40
Interface 16

Languages

Rust100%

Modules by API surface

generation/src/mir/mod.rs58 symbols
generation/src/dsl_hir/mod.rs57 symbols
tests/cases/compile_time_explosion/compile_time_explosion.rs39 symbols
tests/cases/fieldset_access/fieldset_access.rs29 symbols
generation/src/dsl_hir/mir_transform.rs28 symbols
generation/src/manifest/mod.rs26 symbols
tests/cases/description_string_escapes/description_string_escapes.rs23 symbols
tests/cases/basic_register/basic_register.rs23 symbols
tests/cases/basic_command/basic_command.rs23 symbols
tests/cases/address_types/address_types.rs23 symbols
device-driver/src/ops.rs20 symbols
dd-manifest-tree/src/lib.rs18 symbols

For agents

$ claude mcp add device-driver \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page