How uneidel/ioddengine works
IODD Engine is a Rust toolkit for loading IO-Link device descriptions, interpreting and encoding process data, browsing device menus, and interacting with IFM IoTCore masters. Its workflow runs from CLI or library input through catalog lookup and XML parsing, then uses the parsed device model to decode values or resolve menus; encoding supports writing values back. The README also documents direct parameter access and multilingual text. Some CLI-to-library links are documented rather than visible in sampled handler source, so those edges cite the README.
Main entry points: engine.rs Data Engine · main.rs CLI Dispatcher · DeviceFunction.rs Device Functions · eval.rs Live Evaluation
Components 22
CLI
- CLI Dispatcher
ioddcli/src/main.rs - Live Evaluation
ioddcli/src/functions/eval.rs - Parse Commands
ioddcli/src/functions/parse.rs - Variable Commands
ioddcli/src/functions/variable.rs - Menu Commands
ioddcli/src/functions/menu.rs - Parameter Commands
ioddcli/src/functions/parameter.rs
IODD Core
- IODD Catalog
ioddengine/src/catalog.rs - XML Parser
ioddengine/src/parser.rs - Data Engine
ioddengine/src/engine.rs - PD Decoder
ioddengine/src/utils/decoder.rs - Value Encoder
ioddengine/src/utils/encoder.rs - Standards Data
ioddengine/src/standards/mod.rs - Language Text
ioddengine/src/ioddmodel11/ExternalTextCollection.rs
Device Access
- IoTCore Client
iotcoreconnect/src/iotcoreclient.rs
IODD Model
- Device Description
ioddengine/src/ioddmodel11/IODevice.rs - Device Functions
ioddengine/src/ioddmodel11/ProfileBody/DeviceFunction.rs - Process Data Schema
ioddengine/src/ioddmodel11/ProfileBody/ProcessDataCollection.rs - Variable Schema
ioddengine/src/ioddmodel11/ProfileBody/VariableCollection.rs - Menu Schema
ioddengine/src/ioddmodel11/ProfileBody/MenuCollection.rs
Other components
- User
- IODD Finder
- IFM IoTCore Master
Connections 25
- User → CLI Dispatcher: invokes
- CLI Dispatcher → Live Evaluation: dispatches
- CLI Dispatcher → Parse Commands: dispatches
- CLI Dispatcher → Variable Commands: dispatches
- CLI Dispatcher → Menu Commands: dispatches
- CLI Dispatcher → Parameter Commands: dispatches
- User → IODD Catalog: requests device
- IODD Catalog → IODD Finder: queries
- IODD Catalog → XML Parser: provides files
- XML Parser → Device Description: parses into
ioddengine/src/parser.rs - XML Parser → Language Text: loads languages
ioddengine/src/parser.rs - Device Description → Device Functions: contains schema
ioddengine/src/ioddmodel11/IODevice.rs - Device Functions → Process Data Schema: defines
ioddengine/src/ioddmodel11/ProfileBody/DeviceFunction.rs - Device Functions → Variable Schema: defines
ioddengine/src/ioddmodel11/ProfileBody/DeviceFunction.rs - Device Functions → Menu Schema: defines
ioddengine/src/ioddmodel11/ProfileBody/DeviceFunction.rs - Live Evaluation → Data Engine: decodes data
- Data Engine → PD Decoder: calls
ioddengine/src/engine.rs - Data Engine → Standards Data: uses
ioddengine/src/engine.rs - Data Engine → Menu Schema: resolves menus
ioddengine/src/engine.rs - Variable Commands → Data Engine: encodes values
- Data Engine → Value Encoder: implements encoding
ioddengine/src/utils/encoder.rs - Menu Commands → Data Engine: browses menus
- Live Evaluation → IoTCore Client: reads live data
- Parameter Commands → IoTCore Client: reads and writes
- IoTCore Client → IFM IoTCore Master: HTTP requests