Definiert ein geschlossenes Byte-Werteintervall für Diagnose-Dienstmuster in dynamischen Zugriffslisten.
Kontext
Die Klasse ara::diag::DynamicAccessListDiagServiceBuilder::ByteRange repräsentiert ein geschlossenes Byte-Werteintervall innerhalb eines Diagnose-Dienstmusters [SWS_DM_01182]. Im Rahmen der dynamischen Zugriffsverwaltung (DynamicAccessList) fungiert sie als elementarer Baustein, um Kriterien und Wertebereiche einzelner Bytes für Diagnoseanfragen präzise festzulegen AUTOSAR_AP_SWS_Diagnostics §8.15.2 „Class: ByteRange“.
Als verschachtelter Wertetyp agiert ByteRange in direkter Zusammenarbeit mit dem übergeordneten DynamicAccessListDiagServiceBuilder. Während die Diagnoseanwendung Instanzen mit spezifischen Schwellenwerten erzeugt, konsumiert der Builder diese Objekte über Methoden wie Add [SWS_DM_01177] oder EndsWith [SWS_DM_01180], um sequenzielle Byte-Musterfolgen für Diagnose-Dienste aufzubauen. Ergänzend ermöglicht die Klasse das Auslesen der konfigurierten Grenzen über GetMin [SWS_DM_01189] und GetMax [SWS_DM_01190].
Lebenszyklus
Instanzen von ByteRange entstehen regulär über den parametrisierten Konstruktor, der den Minimal- (min) und Maximalwert (max) als geschlossenes Werteintervall entgegennimmt [SWS_DM_01183]. Da es sich um ein zustandsloses Wertobjekt ohne dynamische Ressourcenbindung handelt, existieren keine komplexen internen Betriebsphasen.
Die Klasse implementiert standardkonforme Wertesemantik: Sie stellt sowohl einen Copy-Konstruktor [SWS_DM_01184] als auch einen Move-Konstruktor [SWS_DM_01185] bereit, wodurch Exemplare problemlos per Kopie oder per Verschiebung an Builder-Methoden übergeben werden können. Analog dazu stehen der Kopierzuweisungsoperator [SWS_DM_01186] und der Move-Zuweisungsoperator [SWS_DM_01187] zur Verfügung. Der Lebenszyklus schließt mit dem Destruktor [SWS_DM_01188] ab.
In Bezug auf die Nebenläufigkeit spezifiziert AUTOSAR differenzierte Anforderungen: Konstruktoren und lesende Operationen sind als threadsicher eingestuft, wohingegen die Zuweisungsoperatoren operator= ([SWS_DM_01186], [SWS_DM_01187]) und der Destruktor [SWS_DM_01188] ausdrücklich nicht threadsicher sind. Modifizierende Operationen an derselben Instanz erfordern daher synchronisierende Maßnahmen auf Aufruferebene.
Nutzungspfad
Die typische Verwendung von ByteRange erfolgt im Rahmen der sequenziellen Konfiguration von Dienstmustern über den Builder:
- Die Anwendung erzeugt ein
ByteRange-Objekt unter Angabe der Schranken min und max [SWS_DM_01183].
- Das Intervall wird an
DynamicAccessListDiagServiceBuilder::Add übergeben, um das Muster an der aktuellen Position zu erweitern [SWS_DM_01177].
- Mit
EndsWith kann ein finales Intervall definiert werden, das den Abschluss des Musters bildet [SWS_DM_01180].
- Bei Bedarf liest die Anwendung die Grenzwerte über
GetMin [SWS_DM_01189] und GetMax [SWS_DM_01190] zur Verifikation aus.
Sequenzdiagramm: Typische Interaktion bei der Definition eines Diagnose-Musters mit ByteRange. Quellen: [SWS_DM_01183], [SWS_DM_01177], [SWS_DM_01180], [SWS_DM_01189], [SWS_DM_01190].
Fehlerszenarien
Alle Elementfunktionen der Klasse sind mit noexcept deklariert und damit vollständig ausnahmesicher (exception safe) [SWS_DM_01183]. Weder die Konstruktion noch Zuweisungen oder Abfragen werfen C++-Ausnahmen.
Mögliche Fehlersituationen betreffen primär logische Parametrierungsfehler: Übergibt eine Anwendung einen Minimalwert min, der größer ist als der Maximalwert max, definiert die Spezifikation kein explizites Fehlerverhalten (Interpretation: ein solches ungültiges Wertepaar dürfte vermutlich erst bei der anschließenden Musterverarbeitung im Builder zurückgewiesen werden oder zu einem leeren Treffermuster führen). Frage Q-ea9c65d175d48946 (offen) Ein weiteres Fehlerrisiko liegt im ungeschützten Zuweisen über operator= bei nebenläufigem Zugriff mehrerer Threads auf dasselbe Objekt, da Zuweisungen nicht threadsicher sind [SWS_DM_01186].
Dieser Klassen-Leitfaden basiert auf der AUTOSAR-Adaptive-Spezifikation R25-11 für das Modul diag.
gemini-3.8-flash-medium· 2026-10-13