Skip to main content

Crate zerodds_opcua_gateway

Crate zerodds_opcua_gateway 

Source
Expand description

OMG DDS-OPCUA Gateway 1.0 — Type-System + AddressSpace Mapping.

Crate zerodds-opcua-gateway. Safety classification: STANDARD. Spec formal/2020-01-01 (docs/standards/cache/omg/dds-opcua-1.0.pdf).

§Scope

We implement the type-system-mapping layer from Spec §8.2 (OPC-UA → DDS) + §9.2 (DDS → OPC-UA) as a pure-Rust no_std+alloc library:

  • BuiltinTypeKind enum with all 25 OPC-UA built-in type IDs (Spec §8.2 Tab 8.1).
  • Primitive-Type-Mapping (Boolean, SByte/Byte, Int16/UInt16, Int32/UInt32, Int64/UInt64, Float, Double, String) — Spec Tab 8.1.
  • NodeId with all 4 identifier kinds (Numeric, String, Guid, Opaque) — Spec §8.2.2 Tab 8.2.
  • ExpandedNodeId with namespace URI + server index — Spec §8.2.2.
  • NodeClass enum (8 values) — Spec §8.3.1 Tab 8.3.
  • StatusCode + Guid + ByteString + LocalizedText + QualifiedName models — Spec Tab 8.2.
  • BodyEncoding + ExtensionObject + Variant + DataValue — Spec Tab 8.2.
  • AddressSpace-Mapping: DDS Domain → OPC-UA ObjectNode + DDS Topic → OPC-UA ObjectNode + DDS Sample → OPC-UA Variable — Spec §9.3.

§What is not covered

  • OPC-UA Binary Wire-Encoding (Spec OPCUA-06 Mappings) — the caller layer (typically an external OPC-UA stack like opcua or open62541).
  • Subscription Service Set Behavior (Spec §8.4.3) — runtime logic; the mapping model is exposed, the actual polling/ notification is the caller’s.
  • Historical Access (Spec §8.3.4 + §9.3.4) — requires a historical-server backend.

Re-exports§

pub use address_space::DomainNode;
pub use address_space::InstanceNode;
pub use address_space::SampleVariable;
pub use address_space::TopicNode;
pub use address_space::build_sample_instance;
pub use address_space::mangle_topic_node_browse_name;
pub use conformance::ConformancePoint;
pub use conformance::DECLARED_CONFORMANCE;
pub use conformance::declares;
pub use conformance::is_multi_point_conformant;
pub use data_value::DataValue;
pub use data_value::ExtensionObject;
pub use data_value::Variant;
pub use data_value::VariantValue;
pub use node_id::ExpandedNodeId;
pub use node_id::NodeId;
pub use node_id::NodeIdentifier;
pub use types::BuiltinTypeKind;
pub use types::ByteString;
pub use types::Guid;
pub use types::LocalizedText;
pub use types::NodeClass;
pub use types::QualifiedName;
pub use types::StatusCode;
pub use types::map_primitive_to_dds;
pub use xml::BridgeDef;
pub use xml::ConnectionDirection;
pub use xml::GatewayConfig;
pub use xml::OpcuaXmlError;
pub use xml::OpcuaXmlError as XmlError;
pub use xml::UaConnection;
pub use xml::parse_gateway_config;

Modules§

address_space
AddressSpace-Mapping DDS ↔ OPC UA — Spec §9.3.
conformance
Spec §2 — declared OPC UA/DDS Gateway conformance points.
data_value
Variant + DataValue + ExtensionObject — Spec §8.2.2 Tab 8.2.
dds_to_ua
DDS → OPC UA Type Mapping — Spec §9.2.
historical
Historical Data Reading — Spec §9.3.4.4.
node_id
NodeId + ExpandedNodeId — Spec §8.2.2 Tab 8.2.
service_sets
OPC UA Service Sets Mapping — Spec §8.3.
subscription_mapping
OPC-UA Subscription Model Mapping — Spec §8.4.
types
OPC-UA Built-in Types + Primitive-Type-Mapping zu DDS — Spec §8.2.
xml
DDS-OPCUA Gateway XML Configuration Loader (Spec §10).