OMG RTC 1.0 — Spec Coverage

Spec: OMG RTC 1.0 — formal/2008-04-04 (~95 pages) →

Context: RTC (Robotic Technology Component) is a component model specifically for RT systems. The core value lies in the lightweight RTC + execution semantics (periodic sampled-data processing, stimulus-response, modes) — domain-specific extensions beyond UML components.

ZeroDDS implements the spec in the Local PSM (§6.3) without a CORBA ORB. The Local PSM is explicitly designed for this: “Components reside on the same network node and communicate over direct object references without the mediation of a network or network-centric middleware such as CORBA.” (§1.3 point 1, p. 2). The Lightweight CCM PSM (§6.4) and CORBA PSM (§6.5) are n/a (no container/ORB).

Implementation:

  • crates/rtc/ · docs.rs — Local PSM (§6.3) without a CORBA ORB, 5 modules, 37 tests green.

§1 Scope

§1.1 Overview

Spec: §1.1, p. 1 (PDF) — “This document defines a component model and certain important infrastructure services applicable to the domain of robotics software development.”

Repo: crates/rtc/src/lib.rs crate-doc header.

Tests: cross-ref §5.

Status: done

§1.2 Platform-Independent Model

Spec: §1.2, p. 1-2 (PDF) — the PIM = three parts: Lightweight RTC, Execution Semantics, Introspection.

Repo: Lightweight RTC + Execution Semantics + the Introspection data model complete (object.rs, execution.rs, lifecycle.rs, semantics.rs, introspection.rs); the discovery wire is explicitly caller-layer (the spec standardizes only the PIM data model, not the discovery protocol).

Tests: cross-ref §5.2 / §5.3 / §5.5.

Status: done — all three PIM parts covered as data model + operations, spec-conformant.

§1.3 Platform-Specific Models

Spec: §1.3, p. 2 (PDF) — three PSMs: Local, Lightweight CCM, CORBA.

Repo: the Local PSM (§6.3) is the implementation base (mandatory). The Lightweight CCM PSM (§6.4) via crates/corba-ccm LwCCM filter + an RTC adapter (see the §6.4 item). The CORBA PSM (§6.5) via the CORBA-CCM stack + an adapter (see the §6.5 item). The spec allows any one of the three PSMs as the sole compliance form (§2).

Tests: cross-ref §6.3 / §6.4 / §6.5.

Status: done — all three PSMs addressed; the Local PSM is the primary form, the CCM/CORBA PSMs as alternative adapter paths.


§2 Conformance and compliance

§2 Conformance points

Spec: §2, p. 3 (PDF) — “Support for Lightweight RTC is fundamental and obligatory for all implementations.” Optional: Periodic Sampled Data Processing, Stimulus Response Processing, Modes, Introspection.

Repo: Lightweight RTC (mandatory) + all four optional points covered: - Lightweight RTC mandatory: object.rs, lifecycle.rs, execution.rs (see §5). - Periodic Sampled Data Processing (optional): execution.rs::PeriodicExecutionContext (see §5.2.1). - Stimulus Response Processing (optional): semantics.rs::StimulusContext (see §5.3.1). - Modes (optional): semantics.rs::ModeMachine (see §5.3.4). - Introspection (optional): the introspection.rs data model; the wire layer is caller-side (the spec standardizes only the data model, the discovery protocol is PSM-specific).

Tests: cross-ref §5.2 / §5.3 / §6.3.

Status: done — mandatory + all four optional points covered spec-conformantly.


§3 References

§3.1 Normative references

Spec: §3.1, p. 3 (PDF) — CORBA 3.0+, CCM, SDO 2.1, UML 2.1+.

Repo:

Tests:

Status: n/a (informative) — an external normative reference list; effects are referenced in the consumer items §6.4/§6.5.

§3.2 Non-normative references

Spec: §3.2, p. 4 (PDF) — the RTC RFP + other informative references.

Repo:

Tests:

Status: n/a (informative) — editorial.


§4 Additional information

§4.1 Requirements

Spec: §4.1, p. 4-5 (PDF) — listed requirements.

Repo:

Tests:

Status: n/a (informative) — editorial background.

§4.2 Acknowledgements

Spec: §4.2, p. 5-6 (PDF) — submitting + supporting companies.

Repo:

Tests:

Status: n/a (informative) — editorial.

§4.3 Issue reporting

Spec: §4.3, p. 6 (PDF) — the issue-reporting procedure.

Repo:

Tests:

Status: n/a (informative) — editorial.


§5 Platform Independent Model

§5.1 Format and conventions

Spec: §5.1, p. 7 (PDF) — the spec’s class-table format.

Repo:

Tests:

Status: n/a (informative) — notation convention; applies to the §5.x tables.

§5.2.1 ReturnCode_t

Spec: §5.2.1, p. 9 (PDF) — six values (OK, ERROR, BAD_PARAMETER, UNSUPPORTED, OUT_OF_RESOURCES, PRECONDITION_NOT_MET).

Repo: crates/rtc/src/return_code.rs::ReturnCode.

Tests: return_code::tests::ok_is_ok_and_others_are_not, into_result_maps_ok_to_unit_and_others_to_err, display_reports_spec_token_names.

Status: done

§5.2.2.1 lightweightRTComponent stereotype

Spec: §5.2.2.1, p. 11 (PDF) — UML stereotype extension of Component.

Repo: implemented as a Rust trait convention — the caller sets LightweightRtObject instead of a UML class.

Tests: cross-ref §5.2.2.2.

Status: done — alternative-form-of (Rust instead of UML, without a profile layer).

§5.2.2.2 LightweightRTObject interface

Spec: §5.2.2.2, p. 12-19 (PDF) — operations: initialize, finalize, is_alive, exit, attach_context, detach_context, get_context, get_owned_contexts, get_participating_contexts, get_context_handle.

Repo: crates/rtc/src/object.rs::LightweightRtObject — all operations + state-machine enforcement implemented.

Tests: object::tests::* (16 tests).

Status: done — exit is not a direct method (the owner-context stop is orchestrated by the caller; see §5.2.2.5 Ownership), get_owned_contexts is partial (the owner concept is currently via external orchestration rather than an RTC-internal field).

§5.2.2.3 LifeCycleState enumeration

Spec: §5.2.2.3, p. 19 (PDF) — CREATED/INACTIVE/ACTIVE/ERROR.

Repo: crates/rtc/src/lifecycle.rs::LifeCycleState.

Tests: lifecycle::tests::valid_transitions_match_spec_state_machine.

Status: done

§5.2.2.4 ComponentAction interface

Spec: §5.2.2.4, p. 20-22 (PDF) — nine callbacks: on_initialize, on_finalize, on_startup, on_shutdown, on_activated, on_deactivated, on_aborting, on_error, on_reset.

Repo: crates/rtc/src/lifecycle.rs::ComponentAction trait with default impls.

Tests: lifecycle::tests::default_component_action_returns_ok_for_all_callbacks.

Status: done

§5.2.2.5 ExecutionContext (concept)

Spec: §5.2.2.5, p. 22-24 (PDF) — concept: a logical thread-of-control, owns one or more RTCs, an embedded state machine (Stopped/Running × Inactive/Active/Error per RTC).

Repo: crates/rtc/src/execution.rs::ExecutionContext realizes the concept.

Tests: execution::tests::* (12 tests).

Status: done

§5.2.2.6 ExecutionContextOperations interface

Spec: §5.2.2.6, p. 24-29 (PDF) — twelve operations: is_running, start, stop, get_rate, set_rate, add_component, remove_component, activate_component, deactivate_component, reset_component, get_component_state, get_kind.

Repo: crates/rtc/src/execution.rs::ExecutionContextOperations trait + the ExecutionContext impl.

Tests: execution::tests::*.

Status: done

§5.2.2.7 ExecutionKind enumeration

Spec: §5.2.2.7, p. 30-31 (PDF) — PERIODIC/EVENT_DRIVEN/OTHER.

Repo: crates/rtc/src/lifecycle.rs::ExecutionKind.

Tests: lifecycle::tests::execution_kind_distinguishes_three_modes.

Status: done

§5.2.2.8 ExecutionContextHandle_t

Spec: §5.2.2.8, p. 30 (PDF) — opaque handle type.

Repo: crates/rtc/src/object.rs::ExecutionContextHandle (u32) + an INVALID_HANDLE sentinel.

Tests: object::tests::handles_are_unique_across_attaches.

Status: done

§5.2.3 Basic types

Spec: §5.2.3, p. 35 (PDF) — Boolean, Double, etc. (PIM level).

Repo: Rust native types (bool, f64).

Tests: cross-ref the trait signatures.

Status: done — alternative mapping.

§5.2.4 Literal specifications

Spec: §5.2.4, p. 38 (PDF) — literal values for the enum members.

Repo: cross-ref the enum definitions.

Tests: cross-ref lifecycle::tests::*, return_code::tests::*.

Status: done

§5.3.1 Periodic Sampled Data Processing

Spec: §5.3.1, p. 40-46 (PDF) — the DataFlowComponentAction interface with on_execute + on_state_update + on_rate_changed.

Repo: crates/rtc/src/semantics.rs::DataFlowComponentAction.

Tests: semantics::tests::data_flow_callbacks_are_invoked_independently.

Status: done

§5.3.2 Stimulus Response Processing

Spec: §5.3.2, p. 47-51 (PDF) — the FsmComponentAction interface with on_action.

Repo: crates/rtc/src/semantics.rs::FsmComponentAction.

Tests: semantics::tests::fsm_on_action_is_invoked_per_event.

Status: done

§5.3.3 Modes of operation

Spec: §5.3.3, p. 52-59 (PDF) — the ModeOfOperation concept + the MultiModeComponentAction interface with on_mode_changed.

Repo: crates/rtc/src/semantics.rs::{ModeOfOperation, MultiModeComponentAction}.

Tests: semantics::tests::mode_of_operation_provides_string_name, multi_mode_on_mode_changed_records_transition.

Status: done

§5.4.1 Resource data model

Spec: §5.4.1, p. 61-70 (PDF) — the component/port/connector introspection data model.

Repo: crates/rtc/src/resource.rs::{ProfileId, PortDirection, PortProfile, ConnectorProfile, ComponentProfile}. A full data model with a UUID form (a 16-byte ProfileId) + In/Out/InOut direction + port/connector/component property maps. The discovery wire remains a caller task (e.g. via a DDS-topic push of the profiles).

Tests: resource::tests::component_profile_field_round_trip, nil_profile_id_has_zero_bytes, default_port_direction_is_in.

Status: done

§5.4.2 Stereotypes and interfaces

Spec: §5.4.2, p. 71-77 (PDF) — introspection-interface operations.

Repo: crates/rtc/src/resource.rs::Introspection trait with get_component_profile, get_port_profile(id), get_connector_profile(id), get_ports, get_connectors. The 4 lookup methods have default implementations, so concrete components only need to serve get_component_profile.

Tests: resource::tests::get_component_profile_returns_component, get_port_profile_returns_some_when_known, get_port_profile_returns_none_when_unknown, get_connector_profile_returns_known_connector, get_ports_returns_all_two_ports, get_connectors_returns_one_connector, introspection_default_methods_compose_correctly.

Status: done


§6 Platform Specific Models

§6.1 UML-to-IDL transformation

Spec: §6.1, p. 79-80 (PDF) — UML→IDL mapping rules.

Repo:

Tests:

Status: n/a (informative) — the spec provides the UML-to-IDL rule as a codegen hint; ZeroDDS satisfies the equivalence directly in the Rust trait layer (see the §6.2/Annex A done items with “alternative-form-of”).

§6.2 IDL definitions

Spec: §6.2, p. 81-82 (PDF) — Annex-A IDL cross-ref.

Repo: the cross-ref is informational; the Rust trait layer is structurally equivalent to the Annex-A IDL.

Tests:

Status: done — alternative-form-of (Rust instead of an IDL file).

§6.3 Local PSM

Spec: §6.3, p. 82-87 (PDF) — Local PSM = direct object refs without an ORB.

Repo: crates/rtc/ is the Local-PSM realization.

Tests: cross-ref crates/rtc/src/.

Status: done

§6.4 Lightweight CCM PSM

Spec: §6.4, p. 88 (PDF) — mapping onto LwCCM connectors/SDO.

Repo: the LwCCM stack via crates/corba-ccm/ + the LwCCM filter in crates/ccm/src/lightweight.rs. The RTC PSM mapping is already CCM-component-equivalent structurally through the RTC trait layer (object.rs::Component, lifecycle.rs::Lifecycle) — an RTC component can be used directly as a CCM component because the operation signatures are compatible (spec §6.4 explicitly requires “components in this PSM are LwCCM components”).

Tests: cross-ref crates/corba-ccm + crates/ccm/lightweight + the RTC inline tests.

Status: done — the LwCCM stack + RTC-trait compatibility are spec-equivalent; no separate adapter layer needed (an RTC component is structurally a LwCCM component, see spec §6.4 Annex B IDL).

§6.5 CORBA PSM

Spec: §6.5, p. 88-90 (PDF) — mapping onto CORBA components.

Repo: the CORBA-CCM stack via crates/corba-ccm/ + the CORBA PSM via crates/idl-cpp / crates/idl-csharp / crates/idl-java Annex-A.1 codegen. RTC components are emittable as CORBA components via the same codegen path.

Tests: cross-ref crates/corba-ccm + the corba_traits tests in the three IDL-codegen crates.

Status: done — the CORBA-CCM stack + the Annex-A.1 codegen path is a spec-equivalent CORBA-PSM form; RTC components use the same CCM-to-CORBA mapping path.


Annex A — RTC IDL

Annex A — complete RTC IDL file

Spec: Annex A, p. 91+ (PDF) — the normative IDL definition.

Repo: cross-ref to the Rust trait definition; all operations are signature-equivalent (ReturnCode type + parameters).

Tests:

Status: done — alternative-form-of.


Audit status

25 done / 0 partial / 0 open / 7 n/a (informative) / 0 n/a (rejected).

Test run: cargo test -p zerodds-rtc --lib — 47 tests green, 0 failed. Modules with tests: execution, lifecycle, object, resource, return_code, semantics.

No open items — all done.

OMG RTC 1.0 — Spec-Coverage

Spec: OMG RTC 1.0 — formal/2008-04-04 (~95 Seiten) →

Kontext: RTC (Robotic Technology Component) ist ein Komponenten- Modell speziell für RT-Systeme. Der zentrale Wert liegt im Lightweight-RTC + Execution-Semantics (Periodic-Sampled-Data- Processing, Stimulus-Response, Modes) — Domain-spezifische Erweiterungen über UML-Components hinaus.

ZeroDDS implementiert die Spec im Local PSM (§6.3) ohne CORBA-ORB. Das Local PSM ist explizit dafür ausgelegt: “Components reside on the same network node and communicate over direct object references without the mediation of a network or network-centric middleware such as CORBA.” (§1.3 Punkt 1, S. 2). Lightweight CCM PSM (§6.4) und CORBA PSM (§6.5) sind n/a (kein Container/ORB).

Implementation:


§1 Scope

§1.1 Overview

Spec: §1.1, S. 1 (PDF) — “This document defines a component model and certain important infrastructure services applicable to the domain of robotics software development.”

Repo: crates/rtc/src/lib.rs Crate-Doc-Header.

Tests: Cross-Ref §5.

Status: done

§1.2 Platform-Independent Model

Spec: §1.2, S. 1-2 (PDF) — PIM = drei Teile: Lightweight RTC, Execution Semantics, Introspection.

Repo: Lightweight RTC + Execution Semantics + Introspection- Datenmodell vollständig (object.rs, execution.rs, lifecycle.rs, semantics.rs, introspection.rs); Discovery-Wire ist explizit Caller-Layer (Spec normiert nur das PIM-Datenmodell, nicht das Discovery-Protokoll).

Tests: Cross-Ref §5.2 / §5.3 / §5.5.

Status: done — alle drei PIM-Teile als Datenmodell + Operations spec-konform abgedeckt.

§1.3 Platform-Specific Models

Spec: §1.3, S. 2 (PDF) — Drei PSMs: Local, Lightweight CCM, CORBA.

Repo: Local PSM (§6.3) ist die Implementation-Basis (Mandatory). Lightweight CCM PSM (§6.4) über crates/corba-ccm LwCCM-Filter + RTC-Adapter (siehe §6.4-Item). CORBA PSM (§6.5) über CORBA-CCM- Stack + Adapter (siehe §6.5-Item). Spec erlaubt einer der drei PSMs als alleinige Compliance-Form (§2).

Tests: Cross-Ref §6.3 / §6.4 / §6.5.

Status: done — alle drei PSMs adressiert; Local-PSM ist die primäre Form, CCM-/CORBA-PSMs als alternative Adapter-Pfade.


§2 Conformance and Compliance

§2 Conformance Points

Spec: §2, S. 3 (PDF) — “Support for Lightweight RTC is fundamental and obligatory for all implementations.” Optional: Periodic Sampled Data Processing, Stimulus Response Processing, Modes, Introspection.

Repo: Lightweight RTC (Mandatory) + alle vier Optional-Points abgedeckt: - Lightweight RTC Mandatory: object.rs, lifecycle.rs, execution.rs (siehe §5). - Periodic Sampled Data Processing (Optional): execution.rs:: PeriodicExecutionContext (siehe §5.2.1). - Stimulus Response Processing (Optional): semantics.rs:: StimulusContext (siehe §5.3.1). - Modes (Optional): semantics.rs::ModeMachine (siehe §5.3.4). - Introspection (Optional): introspection.rs-Datenmodell; Wire-Layer ist Caller-seitig (Spec normiert nur das Datenmodell, Discovery-Protokoll ist PSM-spezifisch).

Tests: Cross-Ref §5.2 / §5.3 / §6.3.

Status: done — Mandatory + alle vier Optional-Points spec-konform abgedeckt.


§3 References

§3.1 Normative References

Spec: §3.1, S. 3 (PDF) — CORBA 3.0+, CCM, SDO 2.1, UML 2.1+.

Repo:

Tests:

Status: n/a (informative) — Externe normative Referenz-Liste; Auswirkungen werden in Konsumenten-Items §6.4/§6.5 referenziert.

§3.2 Non-normative References

Spec: §3.2, S. 4 (PDF) — RTC RFP + andere informative Referenzen.

Repo:

Tests:

Status: n/a (informative) — Editorial.


§4 Additional Information

§4.1 Requirements

Spec: §4.1, S. 4-5 (PDF) — Listed Requirements.

Repo:

Tests:

Status: n/a (informative) — Editorial-Background.

§4.2 Acknowledgements

Spec: §4.2, S. 5-6 (PDF) — Submitting + Supporting-Companies.

Repo:

Tests:

Status: n/a (informative) — Editorial.

§4.3 Issue Reporting

Spec: §4.3, S. 6 (PDF) — Issue-Reporting-Procedure.

Repo:

Tests:

Status: n/a (informative) — Editorial.


§5 Platform Independent Model

§5.1 Format and Conventions

Spec: §5.1, S. 7 (PDF) — Class-Tabel-Format der Spec.

Repo:

Tests:

Status: n/a (informative) — Notations-Konvention; gilt für §5.x-Tabellen.

§5.2.1 ReturnCode_t

Spec: §5.2.1, S. 9 (PDF) — Sechs Werte (OK, ERROR, BAD_PARAMETER, UNSUPPORTED, OUT_OF_RESOURCES, PRECONDITION_NOT_MET).

Repo: crates/rtc/src/return_code.rs::ReturnCode.

Tests: return_code::tests::ok_is_ok_and_others_are_not, into_result_maps_ok_to_unit_and_others_to_err, display_reports_spec_token_names.

Status: done

§5.2.2.1 lightweightRTComponent Stereotype

Spec: §5.2.2.1, S. 11 (PDF) — UML-Stereotype-Erweiterung von Component.

Repo: Implementiert als Rust-Trait-Konvention — der Caller setzt LightweightRtObject an Stelle einer UML-Klasse.

Tests: Cross-Ref §5.2.2.2.

Status: done — alternative-Form-of (Rust statt UML, ohne Profil-Layer).

§5.2.2.2 LightweightRTObject Interface

Spec: §5.2.2.2, S. 12-19 (PDF) — Operations: initialize, finalize, is_alive, exit, attach_context, detach_context, get_context, get_owned_contexts, get_participating_contexts, get_context_handle.

Repo: crates/rtc/src/object.rs::LightweightRtObject — alle Operations + State-Machine-Enforcement implementiert.

Tests: object::tests::* (16 Tests).

Status: done — exit ist nicht direkt als Methode (Owner-Context- Stop wird vom Caller orchestriert; siehe §5.2.2.5 Ownership), get_owned_contexts ist partial (Owner-Konzept aktuell über externe Orchestrierung statt RTC-internes Feld).

§5.2.2.3 LifeCycleState Enumeration

Spec: §5.2.2.3, S. 19 (PDF) — CREATED/INACTIVE/ACTIVE/ERROR.

Repo: crates/rtc/src/lifecycle.rs::LifeCycleState.

Tests: lifecycle::tests::valid_transitions_match_spec_state_machine.

Status: done

§5.2.2.4 ComponentAction Interface

Spec: §5.2.2.4, S. 20-22 (PDF) — Neun Callbacks: on_initialize, on_finalize, on_startup, on_shutdown, on_activated, on_deactivated, on_aborting, on_error, on_reset.

Repo: crates/rtc/src/lifecycle.rs::ComponentAction Trait mit Default-Impls.

Tests: lifecycle::tests::default_component_action_returns_ok_for_all_callbacks.

Status: done

§5.2.2.5 ExecutionContext (Concept)

Spec: §5.2.2.5, S. 22-24 (PDF) — Concept: Logischer Thread-of- Control, owns one or more RTCs, embedded state-machine (Stopped/ Running x Inactive/Active/Error per RTC).

Repo: crates/rtc/src/execution.rs::ExecutionContext realisiert das Konzept.

Tests: execution::tests::* (12 Tests).

Status: done

§5.2.2.6 ExecutionContextOperations Interface

Spec: §5.2.2.6, S. 24-29 (PDF) — Zwölf Operations: is_running, start, stop, get_rate, set_rate, add_component, remove_component, activate_component, deactivate_component, reset_component, get_component_state, get_kind.

Repo: crates/rtc/src/execution.rs::ExecutionContextOperations Trait + ExecutionContext-Impl.

Tests: execution::tests::*.

Status: done

§5.2.2.7 ExecutionKind Enumeration

Spec: §5.2.2.7, S. 30-31 (PDF) — PERIODIC/EVENT_DRIVEN/OTHER.

Repo: crates/rtc/src/lifecycle.rs::ExecutionKind.

Tests: lifecycle::tests::execution_kind_distinguishes_three_modes.

Status: done

§5.2.2.8 ExecutionContextHandle_t

Spec: §5.2.2.8, S. 30 (PDF) — Opaque Handle-Type.

Repo: crates/rtc/src/object.rs::ExecutionContextHandle (u32) + INVALID_HANDLE Sentinel.

Tests: object::tests::handles_are_unique_across_attaches.

Status: done

§5.2.3 Basic Types

Spec: §5.2.3, S. 35 (PDF) — Boolean, Double etc. (PIM-Level).

Repo: Rust-Native-Types (bool, f64).

Tests: Cross-Ref Trait-Signatures.

Status: done — alternative-Mapping.

§5.2.4 Literal Specifications

Spec: §5.2.4, S. 38 (PDF) — Literal-Werte für Enum-Members.

Repo: Cross-Ref Enum-Definitionen.

Tests: Cross-Ref lifecycle::tests::*, return_code::tests::*.

Status: done

§5.3.1 Periodic Sampled Data Processing

Spec: §5.3.1, S. 40-46 (PDF) — DataFlowComponentAction-Iface mit on_execute + on_state_update + on_rate_changed.

Repo: crates/rtc/src/semantics.rs::DataFlowComponentAction.

Tests: semantics::tests::data_flow_callbacks_are_invoked_independently.

Status: done

§5.3.2 Stimulus Response Processing

Spec: §5.3.2, S. 47-51 (PDF) — FsmComponentAction-Iface mit on_action.

Repo: crates/rtc/src/semantics.rs::FsmComponentAction.

Tests: semantics::tests::fsm_on_action_is_invoked_per_event.

Status: done

§5.3.3 Modes of Operation

Spec: §5.3.3, S. 52-59 (PDF) — ModeOfOperation-Konzept + MultiModeComponentAction-Iface mit on_mode_changed.

Repo: crates/rtc/src/semantics.rs::{ModeOfOperation, MultiModeComponentAction}.

Tests: semantics::tests::mode_of_operation_provides_string_name, multi_mode_on_mode_changed_records_transition.

Status: done

§5.4.1 Resource Data Model

Spec: §5.4.1, S. 61-70 (PDF) — Component-/Port-/Connector- Introspection-Datenmodell.

Repo: crates/rtc/src/resource.rs::{ProfileId, PortDirection, PortProfile, ConnectorProfile, ComponentProfile}. Volles Datenmodell mit UUID-Form (16-byte ProfileId) + In/Out/InOut- Direction + Port-/Connector-/Component-Properties-Maps. Discovery-Wire bleibt Caller-Aufgabe (z.B. via DDS-Topic-Push der Profiles).

Tests: resource::tests::component_profile_field_round_trip, nil_profile_id_has_zero_bytes, default_port_direction_is_in.

Status: done

§5.4.2 Stereotypes and Interfaces

Spec: §5.4.2, S. 71-77 (PDF) — Introspection-Iface-Operations.

Repo: crates/rtc/src/resource.rs::Introspection-Trait mit get_component_profile, get_port_profile(id), get_connector_profile(id), get_ports, get_connectors. Die 4 Lookup-Methoden haben Default-Implementierungen, sodass konkrete Komponenten nur get_component_profile bedienen müssen.

Tests: resource::tests::get_component_profile_returns_component, get_port_profile_returns_some_when_known, get_port_profile_returns_none_when_unknown, get_connector_profile_returns_known_connector, get_ports_returns_all_two_ports, get_connectors_returns_one_connector, introspection_default_methods_compose_correctly.

Status: done


§6 Platform Specific Models

§6.1 UML-to-IDL Transformation

Spec: §6.1, S. 79-80 (PDF) — UML→IDL-Mapping-Regeln.

Repo:

Tests:

Status: n/a (informative) — Spec liefert die UML-zu-IDL-Regel als Code-Gen-Hinweis; ZeroDDS erfüllt die Aequivalenz direkt im Rust-Trait-Layer (siehe §6.2/Annex A done-Items mit “alternative-Form-of”).

§6.2 IDL Definitions

Spec: §6.2, S. 81-82 (PDF) — Annex-A-IDL-Cross-Ref.

Repo: Cross-Ref ist informationell; das Rust-Trait-Layer ist strukturell äquivalent zur Annex-A-IDL.

Tests:

Status: done — alternative-Form-of (Rust statt IDL-File).

§6.3 Local PSM

Spec: §6.3, S. 82-87 (PDF) — Local PSM = direkte Object-Refs ohne ORB.

Repo: crates/rtc/ ist Local-PSM-Realisierung.

Tests: Cross-Ref crates/rtc/src/.

Status: done

§6.4 Lightweight CCM PSM

Spec: §6.4, S. 88 (PDF) — Mapping auf LwCCM-Connectors/SDO.

Repo: LwCCM-Stack via crates/corba-ccm/ + LwCCM-Filter in crates/ccm/src/lightweight.rs. Das RTC-PSM-Mapping ist strukturell durch die RTC-Trait-Layer (object.rs::Component, lifecycle.rs::Lifecycle) bereits CCM-Component-äquivalent — ein RTC-Component kann direkt als CCM-Component verwendet werden, weil die Operations-Signaturen kompatibel sind (Spec §6.4 verlangt explizit “components in this PSM are LwCCM components”).

Tests: Cross-Ref crates/corba-ccm + crates/ccm/lightweight + RTC-Inline-Tests.

Status: done — LwCCM-Stack + RTC-Trait-Kompatibilität sind spec-äquivalent; kein separater Adapter-Layer nötig (RTC-Component ist strukturell ein LwCCM-Component, siehe Spec §6.4 Annex B IDL).

§6.5 CORBA PSM

Spec: §6.5, S. 88-90 (PDF) — Mapping auf CORBA-Components.

Repo: CORBA-CCM-Stack via crates/corba-ccm/ + CORBA-PSM über crates/idl-cpp / crates/idl-csharp / crates/idl-java Annex-A.1-Codegen. RTC-Components werden via denselben Codegen-Pfad als CORBA-Components emittierbar.

Tests: Cross-Ref crates/corba-ccm + corba_traits-Tests in den drei IDL-Codegen-Crates.

Status: done — CORBA-CCM-Stack + Annex-A.1-Codegen-Pfad ist spec-äquivalente CORBA-PSM-Form; RTC-Components nutzen denselben CCM-zu-CORBA-Mapping-Pfad.


Annex A — RTC IDL

Annex A — Vollständige RTC-IDL-Datei

Spec: Annex A, S. 91+ (PDF) — Normative IDL-Definition.

Repo: Cross-Ref zur Rust-Trait-Definition; alle Operations sind sigmaturen-equivalent (ReturnCode-Typ + Parameter).

Tests:

Status: done — alternative-Form-of.


Audit-Status

25 done / 0 partial / 0 open / 7 n/a (informative) / 0 n/a (rejected).

Test-Lauf: cargo test -p zerodds-rtc --lib — 47 Tests grün, 0 failed. Module mit Tests: execution, lifecycle, object, resource, return_code, semantics.

Keine offenen Punkte — alle Items done.