az-device-contract-codegen
Generate deterministic Modbus contract artifacts from typed service definitions.
- Crate:
az-device-contract-codegen - Local path:
creates/az-device-contract-codegen - Install:
cargo add az-device-contract-codegen
The crate plans a Modbus address layout, then emits a stable artifact bundle for:
- C headers and sources for RTU/TCP handlers
- Markdown protocol documents
- Rust client code built around
tokio-modbus
Minimal usage
use ;
Typical output paths:
Core/Inc/generated/modbus/*.hCore/Src/generated/modbus/**/*.cDocs/generated/modbus/protocols/*.mdDocs/generated/modbus/rust/*.rs
Default mapping rules
STATIC_READdefaults to input registers (0x04)RUNTIME_READ- all-boolean DTO/scalar reads default to discrete inputs (
0x02) - everything else defaults to input registers (
0x04)
- all-boolean DTO/scalar reads default to discrete inputs (
WRITE- all-boolean parameters default to coils (
0x05/0x0F) - everything else defaults to holding registers (
0x06/0x10)
- all-boolean parameters default to coils (
readArea and writeArea can override those defaults explicitly.
Notes
- The crate itself does not write files; it returns
GeneratedArtifactvalues. - Generated Rust clients assume the consumer compiles them with
tokio-modbusandserialport. - Generated filenames and helper symbols currently use the existing
okm_*naming line used by this repository.