Gateway Driver Components
This note records the driver component choices for the expanded southbound gateway surface.
| Target | Component choice | Status in this repo | Runtime boundary | Notes |
|---|---|---|---|---|
| OPC UA | OPC Foundation UA .NET Standard (OPCFoundation.NetStandard.Opc.Ua.Client and OPCFoundation.NetStandard.Opc.Ua.Configuration) |
Implemented as opc-ua |
Cross-platform .NET 8 | Supports scalar node read/write and batch read/write through the unified driver contract. Addresses are OPC UA NodeIds such as ns=2;s=Device.Temperature. |
| OPC DA | Optional Windows adapter, candidate TitaniumAS.Opc.Client |
Registered as guarded opc-da placeholder |
Windows COM/DCOM only | Keep out of the cross-platform gateway package unless we split a Windows-only adapter. A safer deployment path is bridging OPC DA to OPC UA. |
| MT CNC | MTConnect HTTP/XML current endpoint | Implemented as mt-cnc |
Cross-platform HTTP | Treats "MT CNC" as MTConnect. Reads data items from /current; writes are rejected because MTConnect current is read-only. |
| Fanuc CNC | Fanuc FOCAS (fwlib32/fwlib64) native SDK boundary |
Registered as guarded fanuc-cnc placeholder |
Native vendor runtime | Requires Fanuc FOCAS licensing/runtime, bitness handling, and machine validation. It should live in an optional adapter assembly. |
Connection Shapes
opc-ua:
endpoint:opc.tcp://host:4840useSecurity:trueorfalsesecurityMode:Auto,None,Sign,SignAndEncryptsecurityPolicy:Auto,None,Basic256Sha256,Aes128_Sha256_RsaOaep,Aes256_Sha256_RsaPssusername/password: optional user identitytimeout,sessionTimeout,autoAcceptUntrustedCertificates
mt-cnc:
baseUrl: MTConnect agent base URLdevice: optional device path segmentpath: defaults tocurrenttimeout: HTTP timeout in milliseconds
opc-da and fanuc-cnc are intentionally explicit placeholders. Their metadata is visible in the driver catalog so the platform can model them, but runtime access returns a clear error until a Windows/native adapter is added.
BASIC Runtime AOT Split
The BASIC runtime follows the same split:
- core language, parser, evaluator, BCL-backed helpers, and MQTT/serial/Modbus/PLC helpers stay in
IoTEdge.BasicRuntime - gateway-specific bridges such as driver read/write, transform apply, and upload live in
IoTEdge.RuntimeExtensions build.ps1 -MustAotor-p:EdgeAot=truedisables the gateway bridge project so it is not referenced or injected