Definiert die gemeinsamen AVTPDU-Kopfdatenfelder für IEEE-1722-Datagramme im Raw-Data-Stream-Modul.
Kontext
In der AUTOSAR Adaptive Platform stellt das Modul Raw Data Stream (RDS) Mechanismen für den effizienten Austausch unstrukturierter Datenströme und standardisierter Streaming-Protokolle bereit. Die Klasse ara::rds::IEEE1722DatagramAVTPDUCommonHeaderFields dient innerhalb dieses Moduls als grundlegende Repräsentation der gemeinsamen Kopfdatenfelder (Common Header Fields) von Audio/Video Transport Protocol Data Units (AVTPDUs) gemäß IEEE 1722, wie in SWS RawDataStream §1 „IEEE 1722 Datagram“ spezifiziert ist.
Die Struktur kapselt die wesentlichen Protokollfelder, die für AVTPDU-Datagramme im IEEE-1722-Standard definiert sind. Hierzu zählt das Attribut version vom Typ std::uint8_t ([SWS_RDS_90232]), welches die Protokollversion des AVTP-Standards abbildet. Weiterhin nimmt das Datenfeld avtpStreamDataSubtype vom Typ std::uint16_t ([SWS_RDS_90230]) den Subtyp der AVTP-Streaming-Nutzlast auf, um das spezifische Format der transportierten Datenströme zu identifizieren. Ergänzend speichert das Element headerSpecific als std::uint8_t ([SWS_RDS_90231]) protokoll- und formatspezifische Steuerbits und Flags des AVTPDU-Headers.
Sämtliche Nutzdatenfelder der Klasse werden unter dem Zugriffsmodifikator protected deklariert. Hieraus ergibt sich die Interpretation, dass ara::rds::IEEE1722DatagramAVTPDUCommonHeaderFields primär als fundamentale Basisklasse für spezialisierte IEEE-1722-Datagramm-Klassen innerhalb des RDS-Moduls konzipiert sein dürfte, statt als eigenständiges Wertobjekt von Anwendern direkt instanziiert zu werden. Frage Q-674fc96343869829 (offen)
Lebenszyklus
Der Lebenszyklus von ara::rds::IEEE1722DatagramAVTPDUCommonHeaderFields orientiert sich an der Rolle als fundamentale Header-Struktur. Die Instanziierung erfolgt im Verbund mit einer konkreten Spezialisierung, die von dieser Basisklasse erbt. Die Zuweisung und Initialisierung der geschützten Attribute version ([SWS_RDS_90232]), avtpStreamDataSubtype ([SWS_RDS_90230]) und headerSpecific ([SWS_RDS_90231]) wird üblicherweise im Konstruktor der abgeleiteten Klasse vorgenommen.
Für die Zerstörung von Instanzen stellt die Spezifikation explizit einen virtuellen Destruktor bereit: ~IEEE1722DatagramAVTPDUCommonHeaderFields() noexcept ([SWS_RDS_90233]). Das Vorhandensein dieses virtuellen Destruktors sichert ab, dass abgeleitete Datagramm-Objekte polymorph über Zeiger oder Referenzen auf die Basisklasse sicher zerstört werden können, ohne dass es zu undefiniertem Verhalten oder Ressourcenlecks kommt. Durch den Spezifizierer noexcept wird vertraglich zugesichert, dass während des Destruktionsvorgangs keine Ausnahmen ausgelöst werden können.
Hinsichtlich der Besitzverhältnisse und der Speicherverwaltung unterliegt die Klasse den allgemeinen Konventionen für Datentransferobjekte im RDS-Modul: Instanzen werden typischerweise entweder auf dem Stack einer verarbeitenden Funktion vorgehalten oder durch übergeordnete Datenpuffer und Stream-Handler verwaltet. In Bezug auf Nebenläufigkeit bietet die Datenstruktur keine internen Synchronisationsmechanismen. Interpretation: Der gleichzeitige Zugriff mehrerer Threads auf dieselbe Instanz erfordert daher vermutlich eine externe Synchronisation durch die aufrufende Anwendung oder das umgebende Laufzeitsystem. Frage (offen)
Nutzungspfad
Der typische Nutzungspfad gliedert sich in die Erstellung, Befüllung und Auswertung von Datagrammen im Rahmen von Streaming-Verbindungen. Da die Felder geschützt sind, greifen Entwickler über spezialisierte Unterklassen auf die Basisfelder zu.
Beim Senden eines IEEE-1722-Datenstroms instanziiert die Anwendung oder eine interne Pipeline des RDS-Moduls eine abgeleitete Datagramm-Klasse. Anschließend werden die gemeinsamen AVTPDU-Headerfelder belegt: Das Feld version ([SWS_RDS_90232]) wird auf den jeweils unterstützten Protokollversionsstand gesetzt. Das Feld avtpStreamDataSubtype ([SWS_RDS_90230]) wird mit dem Kennwert des spezifischen Nutzlasttyps versehen, um dem Empfänger die Dekodierung des Datenstroms zu ermöglichen. Schließlich konfiguriert die abgeleitete Implementierung das Feld headerSpecific ([SWS_RDS_90231]) mit den erforderlichen steuernden Kontrollbits gemäß IEEE-1722-Spezifikation.
Beim Empfang von Netzwerkpaketen über den Raw Data Stream erfolgt der umgekehrte Ablauf: Eingehende Rohdaten werden deserialisiert und in die entsprechenden Attribute der abgeleiteten Datagramm-Klasse übertragen. Übergeordnete Komponenten können anschließend über polymorphe Schnittstellen oder typisierte Zugriffsmethoden der Unterklasse die Header-Informationen prüfen. Nach erfolgreicher Verarbeitung und Weiterleitung der AVTPDU-Nutzlast an die Zielsenke wird das Datagramm freigegeben, wobei der virtuelle Destruktor ([SWS_RDS_90233]) die saubere Freigabe aller Ressourcen gewährleistet. Interpretation: Die serialisierte Übertragung über das Netzwerk erfolgt vermutlich über nachgelagerte Serialisierer des RDS-Stacks, die den Header konform zu IEEE 1722 im Bytestrom anordnen. Frage Q-7f31ac02b5e4facf (offen)
Fehlerszenarien
Fehlerszenarien bei der Arbeit mit ara::rds::IEEE1722DatagramAVTPDUCommonHeaderFields resultieren primär aus fehlerhaften Werten in den Headerfeldern oder unsachgemäßer Lebenszyklusverwaltung.
Auf Ebene der Datenelemente können ungültige Werte zu Protokollverletzungen führen. Wird beispielsweise für version ([SWS_RDS_90232]) ein von der Gegenstelle nicht unterstützter Versionswert übergeben, kann dies zum Verwerfen der gesamten AVTPDU durch den Kommunikationspartner führen. Ebenso führt ein fehlerhaft gesetztes Feld avtpStreamDataSubtype ([SWS_RDS_90230]) dazu, dass der Empfänger den Datenstrom nicht korrekt dem passenden Decoder zuordnen kann. Eine inkonsistente Belegung von headerSpecific ([SWS_RDS_90231]) kann wiederum Fehlinterpretationen bezüglich Synchronisationsflags oder Datenlängen nach sich ziehen.
Auf C++-Ebene schließt der virtuelle Destruktor ~IEEE1722DatagramAVTPDUCommonHeaderFields() noexcept ([SWS_RDS_90233]) Ausnahmen während des Zerstörungsvorgangs aus. Sollte eine abgeleitete Klasse während der Freigabe von Ressourcen eigene Fehlerbehandlungslogik ausführen, muss sichergestellt sein, dass auch dort keine Exceptions geworfen werden, um einen sofortigen Programmabbruch via std::terminate zu verhindern.
Dieser Leitfaden basiert auf der Spezifikation AUTOSAR Adaptive R25-11 und wurde automatisiert erstellt.
gemini-3.8-flash-medium· 2026-10-13