Building block view¶
arc42 §4 — the building blocks that realise the toolchain, one crate per block. The dependency graph is Toolchain layering (crate d... (ARCH_0070); this page records each crate’s job, public surface, and the dependencies it is and is not allowed to carry.
The diagram below reads the same crates as a public-API pipeline: each layer’s output type is the next layer’s input, from EDS bytes through to the runtime trait surface the generated drivers implement.
graph LR
ini["EDS INI<br/>&str"]
odc["BB_0080 fieldbus-od-core<br/>Identity, DictEntry,<br/>PdoEntry, PdoMap"]
p["BB_0081 canopen-eds<br/>parse() → EdsFile IR"]
g["BB_0082 canopen-eds-codegen<br/>generate<B>(IR, &B) → TokenStream<br/>naming + dedup + collision policy"]
b["BB_0083 -codegen-taktora<br/>CodegenBackend impl<br/>(sole canopen-eds-rt dep)"]
rt["BB_0084 canopen-eds-rt<br/>CanOpenDevice / CanOpenConfigurable<br/>(no transport dep)"]
build["BB_0085 canopen-eds-build<br/>build.rs → prettyplease → $OUT_DIR"]
cli["BB_0086 canopen-eds-cli<br/>cargo eds expand / list"]
ver["BB_0087 canopen-eds-verify<br/>verify(eds, dump) → VerifyReport"]
adapter["BB_0088 connector CanOpenDevice adapter (follow-on)"]
ini -->|"parse()"| p
odc -.->|"OD types"| p
p -->|EdsFile| g
g -->|CodegenBackend| b
b -->|implements| rt
g -->|TokenStream| build
g -->|TokenStream| cli
p -->|EdsFile| ver
rt --> adapter
The shared OD types lifted out of |
INI parser front-end. |
Codegen IR + |
The opinionated concrete backend. Emits one device struct per
EDS, sum-typed RPDO / TPDO enums (one variant per declared
mapping), an |
The runtime trait crate. |
|
|
Offline EDS vs JSON SDO-dump diff. Consumes the same |
Out-of-scope for this round. A thin adapter that maps any
|