Stelt applicaties in staat tot statusgerelateerde bewaking, ontdendering en DTC-opvraag van diagnose-events.
DOOR AI GEGENEREERDongecontroleerdModel: gemini-3.8-flash-medium · Inspanning: medium · Temperatuur: niet regelbaar · Prompt: 2f3253efefb6HerkomstOpen vragen (2)
vertaald uit de Duitse handleidinggemini-3.8-flash-low · 2026-10-13 · Duits origineel
Stelt applicaties in staat tot statusgerelateerde bewaking, ontdendering en DTC-opvraag van diagnose-events.
De klasse ara::diag::Event stelt in AUTOSAR Adaptive operaties beschikbaar voor het bewaken van diagnostische events en de ontdenderings- en foutstatus daarvan. Applicaties instantiëren het object via een InstanceSpecifier, registreren optionele wijzigingsmeldingen en vragen diagnose- en DTC-informatie asynchroon op [SWS_DM_00647]. Als centrale randvoorwaarde is de instantie noch kopieerbaar noch verplaatsbaar, en de meeste opvraagmethoden vereisen bij gelijktijdige toegang synchronisatie aan de zijde van de applicatie wegens een gebrek aan thread-veiligheid [SWS_DM_00649].
Context
De klasse ara::diag::Event dient in het AUTOSAR Adaptive Platform als primaire interface voor de interactie met diagnose-events. Deze fungeert als schakel tussen de applicatiespecifieke software en het centrale diagnosebeheer. Via deze interface bewaken applicaties de actuele diagnose- en ontdenderingsstatus van een event of laten zij zich informeren over statuswijzigingen.
Bij de interactie zijn in de systeemcontext in hoofdzaak drie partijen betrokken:
Applicatiesoftware: Instantieert de klasse, initieert statusopvragingen en ontvangt asynchrone statusupdates.
ara::diag::Event: Kapselt de getypeerde diagnosepoort (PortPrototype van een DiagnosticEventInterface) in en stelt thread- resp. procesoverstijgende opvraagmethoden beschikbaar.
Diagnostic Management (DM): Voert aan de serverzijde foutdetectie, DTC-toewijzingen en het ontdendergedrag (debouncing) uit.
Contextdiagram: Positionering van de Event-klasse tussen applicatiesoftware en Diagnostic Management. Bronnen: [SWS_DM_00647], [SWS_DM_00653]
Levenscyclus
De instantiëring vindt expliciet plaats via het doorgeven van een ara::core::InstanceSpecifier[SWS_DM_00647]. De identificator moet verwijzen naar een PortPrototype dat via een DiagnosticEventInterface is getypeerd. De constructor is exception-safe en thread-safe [SWS_DM_00647].
Wat betreft eigendomsverhoudingen is ara::diag::Event gedefinieerd als een niet-kopieerbare en niet-verplaatsbare unieke instantie: zowel de copy-constructor [SWS_DM_01681] als de move-constructor [SWS_DM_01682] en de bijbehorende toewijzingsoperatoren ([SWS_DM_01679], [SWS_DM_01680]) zijn expliciet verwijderd (=delete). Een InstanceSpecifier mag per proces niet meervoudig worden geïnstantieerd [SWS_DM_00647].
De vernietiging vindt plaats via de destructor ~Event()[SWS_DM_00648]. In tegenstelling tot de constructor is de destructor niet thread-safe. Ook de overige memberfuncties (met uitzondering van GetDTCNumber) zijn als niet thread-safe gespecificeerd, waardoor parallelle aanroepen op dezelfde instantie aan de applicatiezijde gesynchroniseerd moeten worden. In release R25-11 werd de desbetreffende terminologie geharmoniseerd van Reentrancy naar Concurrency AUTOSAR_AP_SWS_Diagnostics §1 “Change History”.
Gebruikspad
Een typische use case is onderverdeeld in de volgende aanroepen:
Initialisatie: De applicatie maakt de instantie aan via haar InstanceSpecifier[SWS_DM_00647]. De binding brengt vermoedelijk tijdens initialisatietijd de verbinding met de diagnose-daemon tot stand. Vraag Q-78e4462a0d147cfb (open)
Notifier registreren: Voor bewaking wordt optioneel via SetEventStatusChangedNotifier een callback geregistreerd [SWS_DM_00650]. Een opeenvolgende aanroep overschrijft de eerder ingestelde notifier.
Toestandsopvragingen: Tijdens bedrijf vraagt de applicatie diagnosedata asynchroon op via ara::core::Future:
GetEventStatus() bepaalt de actuele statusbyte [SWS_DM_00649].
GetDebouncingStatus() retourneert de actuele ontdendertoestand [SWS_DM_00654].
GetFaultDetectionCounter() vraagt de foutdetectieteller (FDC) op [SWS_DM_00656].
GetTestComplete() controleert of de test is voltooid (FDC bereikt -128 of 127) [SWS_DM_00655].
GetDTCNumber(dtcFormat) levert het bijbehorende DTC-nummer in het geselecteerde formaat op en is thread-safe uitgevoerd [SWS_DM_00653].
Register a notifier function which is called if a diagnostic event is changed. A consecutive call of this method will overwrite the previous registered notifier.
InstanceSpeci- InstanceSpecifier either cannot be resolved in the model in the fierMappingIn- context of your executable, or it refers to a model element other tegrityViolation than a PortPrototype. PortInterfaceMap- A PortPrototype that is referenced by a pingViolation DiagnosticEventPortMapping needs to be typed by a DiagnosticEventInterface. ProcessMappingVio- Matching InstanceRef exists, but no matching (modelled) Process lation found that matches the (runtime) process. InstanceSpecifier- Violation message that is sent in case a constructor in the ara AlreadyInUseViola- framework was called with an InstanceSpecifier already in use in tion this process.
Parameter (in)
Parameter
Beschreibung
specifier
InstanceSpecifier to a PortPrototype of a DiagnosticEventInterface.
Request a governed re-review of this record. The record is not changed immediately.
Register a notifier function which is called if a diagnostic event is changed. A consecutive call of this method will overwrite the previous registered notifier.
DOOR AI GEGENEREERDongecontroleerdModel: gemini-3.8-flash-medium · Inspanning: medium · Temperatuur: niet regelbaar · Prompt: 07bc53ae711cHerkomstOpen vragen (1)
vertaald uit de Duitse handleidinggemini-3.8-flash-low · 2026-10-13 · Duits origineel
Via de methode [SWS_DM_00650] van de klasse ara::diag::Event (headerbestand ara/diag/event.h) registreert een Adaptive Application een callback-functie van het type EventStatusByteNotifier. Na succesvolle registratie roept Diagnostic Management (DM) deze notifier aan bij elke statuswijziging van het bijbehorende diagnose-event [SWS_DM_01029]. Een opeenvolgende aanroep van de methode overschrijft de eerder geregistreerde notifier [SWS_DM_00650]. De functie heeft de signatuur ara::core::Result<void> SetEventStatusChangedNotifier(EventStatusByteNotifier notifier) noexcept en retourneert bij succes een leeg resultaat [SWS_DM_00650].
Treedt er bij de verwerking een fout op, dan levert de methode de foutcode DiagErrc::kInvalidArgument terug [SWS_DM_00650]. De interface is weliswaar gedeclareerd als uitzonderingsveilig (exception safe), maar geldt expliciet als niet-thread-safe (not thread-safe) [SWS_DM_00650]. Interpretatie: concurrerende toegangen tot dezelfde instantie moeten aan de applicatiezijde worden gesynchroniseerd; vermoedelijk moet de registratie daarom bij voorkeur tijdens de initialisatiefase van de applicatie worden uitgevoerd. Vraag Q-d8ed099eaed6b197 (open)
gemini-3.8-flash-low· 2026-10-13 · Duits origineel