OMG RTC 1.0 — Spec-Coverage

PDF: docs/standards/cache/omg/rtc-1.0.pdf (~95 Seiten, OMG formal/2008-04-04).

Folgt dem Format aus docs/spec-coverage/PROCESS.md. Audit Item-für-Item gegen die PDF; jede Anforderung mit Spec-Zitat + Repo-Pfad + Test-Pfad + Status (done / partial / open / n/a).

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

ZeroDDS implementiert die Spec im Local PSM (§6.3) ohne CORBA-ORB. Das Local PSM ist explizit dafuer 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-Crate: crates/rtc/ (5 Module, 37 Tests gruen).


§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 vollstaendig (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) ueber crates/corba-ccm LwCCM-Filter + RTC-Adapter (siehe §6.4-Item). CORBA PSM (§6.5) ueber 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 primaere 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 fuer §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 ueber 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) — Zwoelf 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 fuer 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 muessen.

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 erfuellt 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 aequivalent 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-aequivalent — 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-Kompatibilitaet sind spec-aequivalent; kein separater Adapter-Layer noetig (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 ueber 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-aequivalente CORBA-PSM-Form; RTC-Components nutzen denselben CCM-zu-CORBA-Mapping-Pfad.


Annex A — RTC IDL

Annex A — Vollstaendige 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.

Offene Punkte: siehe omg-rtc-1.0.open.md.