Stellt dem Diagnose-Management den aktuellen DoIP-Energiemodus des Fahrzeugs über eine Callback-Schnittstelle bereit.
Kontext
Die abstrakte Klasse ara::diag::DoIPPowerMode definiert die Schnittstelle für die Bereitstellung des aktuellen DoIP-Energiemodus gegenüber dem Diagnose-Management (DM). In Fahrzeugarchitekturen, die Diagnose über Internet Protocol (DoIP) nutzen, muss das Kommunikationsprotokoll über den Betriebszustand des Fahrzeugnetzwerks bzw. die Spannungsversorgung informiert sein. Die Anwendungssoftware leitet eine konkrete Handler-Klasse von ara::diag::DoIPPowerMode ab und implementiert die Abfrage des Energiemodus [SWS_DM_00734]. Interaktionspartner sind die bereitstellende Diagnoseanwendung, die das Interface anbietet, sowie das DM-Laufzeitsystem, welches eingehende Anforderungen an diesen Handler delegiert [SWS_DM_00735].
Lebenszyklus
Instanzen von ara::diag::DoIPPowerMode werden anwendungsintern erzeugt und über einen Port-Prototyp identifiziert, der durch einen ara::core::InstanceSpecifier referenziert wird [SWS_DM_00732]. Beim Aufruf des Konstruktors wird über das Argument ConcurrencyType festgelegt, ob die Callback-Methode GetDoIPPowerMode() threadsicher (kConcurrent) oder nicht threadsicher (kNotConcurrent) ausgeführt werden muss [SWS_DM_00732]. Der Konstruktor selbst ist threadsicher ausgeführt [SWS_DM_00732].
Gemäß Spezifikation handelt es sich um eine unkopierbare und nicht verschiebbare Instanz: Sowohl der Kopierkonstruktor [SWS_DM_01645] als auch der Verschiebekonstruktor [SWS_DM_01646] sowie die entsprechenden Zuweisungsoperatoren [SWS_DM_01643], [SWS_DM_01644] sind explizit gelöscht (=delete).
Nach der Instanziierung muss der Handler über Offer() aktiviert werden, damit das DM Anfragen weiterleiten kann [SWS_DM_00735]. Um die Weiterleitung von Anfragen zu beenden, wird StopOffer() aufgerufen [SWS_DM_00736]. Der virtuelle Destruktor ~DoIPPowerMode() [SWS_DM_00733] sowie Offer() und StopOffer() sind als nicht threadsicher spezifiziert. Vermutlich sollte vor dem Aufruf des Destruktors stets StopOffer() ausgeführt werden, um ausstehende Interaktionen mit dem DM ordnungsgemäß abzutrennen. Frage Q-85ede935aa303c45 (offen)
Nutzungspfad
Die typische Verwendung von ara::diag::DoIPPowerMode folgt einer festen Abfolge aus Initialisierung, Service-Registrierung, zyklischer bzw. ereignisbasierter Modusabfrage und Deregistrierung:
- Die Anwendung instanziiert ihre abgeleitete Klasse mit dem passenden
InstanceSpecifier und dem gewünschten ConcurrencyType [SWS_DM_00732].
- Die Anwendung registriert den Handler aktiv mittels
Offer() beim Diagnose-Management [SWS_DM_00735].
- Sobald das DoIP-Protokoll den Status benötigt, ruft das DM die rein virtuelle Funktion
GetDoIPPowerMode() auf [SWS_DM_00734]. Die Implementierung liefert ein ara::core::Future<PowerModeType> zurück, welches asynchron aufgelöst wird [SWS_DM_00734].
- Bei der Beendigung des Betriebs ruft die Anwendung
StopOffer() auf, um keine weiteren Anforderungen mehr entgegenzunehmen [SWS_DM_00736].
- Die Instanz wird über den Destruktor freigegeben [SWS_DM_00733].
Sequenzdiagramm: Typischer Ablauf von Registrierung, asynchroner Statusabfrage und Abmeldung für DoIPPowerMode. Quellen: [SWS_DM_00732], [SWS_DM_00734], [SWS_DM_00735], [SWS_DM_00736], AUTOSAR_AP_SWS_Diagnostics §8.2 „DoIP Power Mode“.
Fehlerszenarien
Beim Aufruf des Konstruktors können Modell- und Zuordnungsverletzungen auftreten, die dokumentiert sind [SWS_DM_00732]:
InstanceSpecifierMappingIntegrityViolation: Der Bezeichner kann im Kontext des Executables nicht aufgelöst werden oder referenziert kein PortPrototype-Element [SWS_DM_00732].
PortInterfaceMappingViolation: Das referenzierte PortPrototype ist nicht durch ein DiagnosticDoIPPowerModeInterface typisiert [SWS_DM_00732].
ProcessMappingViolation: Es existiert eine Instanzreferenz, jedoch kein passender modellierter Prozess zur Laufzeitumgebung [SWS_DM_00732].
InstanceSpecifierAlreadyInUseViolation: Der InstanceSpecifier wurde innerhalb desselben Prozesses bereits für eine andere Instanz verwendet [SWS_DM_00732].
Wird Offer() aufgerufen, während der Dienst bereits aktiv angeboten wird, liefert die Methode über das ara::core::Result den Fehlercode DiagOfferErrc::kAlreadyOffered zurück [SWS_DM_00735]. Die Methode GetDoIPPowerMode() definiert dagegen keine standardisierten Fehlercodes [SWS_DM_00734].
Dieser Leitfaden basiert auf der AUTOSAR-Spezifikation für die Adaptive Platform (Release R25-11). Alle Angaben und Fehlercodes stützen sich auf die referenzierten SWS-Anforderungen.
gemini-3.8-flash-medium· 2026-10-13